diff --git a/.codex/hooks.json b/.codex/hooks.json new file mode 100644 index 00000000..d689ffa1 --- /dev/null +++ b/.codex/hooks.json @@ -0,0 +1,16 @@ +{ + "hooks": { + "PreToolUse": [ + { + "matcher": "Bash", + "hooks": [ + { + "type": "command", + "command": "/usr/bin/python3 \"$(git rev-parse --show-toplevel)/.codex/hooks/pre_tool_use_mcc_build_guard.py\"", + "statusMessage": "Checking MCC build command policy" + } + ] + } + ] + } +} diff --git a/.codex/hooks/pre_tool_use_mcc_build_guard.py b/.codex/hooks/pre_tool_use_mcc_build_guard.py new file mode 100644 index 00000000..fb6d3c1b --- /dev/null +++ b/.codex/hooks/pre_tool_use_mcc_build_guard.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +import json +import re +import sys + + +RAW_DOTNET_BUILD_RE = re.compile(r"(^|[\s;&|()])dotnet\s+build(\s|$)") +ABSOLUTE_DOTNET_BUILD_RE = re.compile(r"(^|[\s;&|()])/\S*dotnet\s+build(\s|$)") +RAW_DOTNET_PUBLISH_RE = re.compile(r"(^|[\s;&|()])dotnet\s+publish(\s|$)") +ABSOLUTE_DOTNET_PUBLISH_RE = re.compile(r"(^|[\s;&|()])/\S*dotnet\s+publish(\s|$)") + + +def main() -> int: + try: + payload = json.load(sys.stdin) + except json.JSONDecodeError: + return 0 + + command = payload.get("tool_input", {}).get("command", "") + if not isinstance(command, str) or not command: + return 0 + + if ABSOLUTE_DOTNET_BUILD_RE.search(command) or ABSOLUTE_DOTNET_PUBLISH_RE.search(command): + return 0 + + if RAW_DOTNET_BUILD_RE.search(command): + response = { + "hookSpecificOutput": { + "hookEventName": "PreToolUse", + "permissionDecision": "deny", + "permissionDecisionReason": ( + "Raw 'dotnet build' is blocked in this repository. " + "Use 'source tools/mcc-env.sh && mcc-build' instead so MCC temp-build routing stays active. " + "If you intentionally need the raw .NET CLI, call it by absolute path such as '/usr/bin/dotnet build ...' to bypass this guard." + ), + }, + "systemMessage": ( + "Blocked raw 'dotnet build'. Use 'source tools/mcc-env.sh && mcc-build'. " + "If you intentionally need raw .NET CLI behavior, call '/usr/bin/dotnet build ...' explicitly." + ), + } + json.dump(response, sys.stdout) + sys.stdout.write("\n") + elif RAW_DOTNET_PUBLISH_RE.search(command): + response = { + "hookSpecificOutput": { + "hookEventName": "PreToolUse", + "permissionDecision": "deny", + "permissionDecisionReason": ( + "Raw 'dotnet publish' is blocked in this repository. " + "Use 'source tools/mcc-env.sh && mcc-publish --rid ' instead so MCC publish defaults stay aligned with the repo workflow. " + "If you intentionally need the raw .NET CLI, call it by absolute path such as '/usr/bin/dotnet publish ...' to bypass this guard." + ), + }, + "systemMessage": ( + "Blocked raw 'dotnet publish'. Use 'source tools/mcc-env.sh && mcc-publish --rid '. " + "If you intentionally need raw .NET CLI behavior, call '/usr/bin/dotnet publish ...' explicitly." + ), + } + json.dump(response, sys.stdout) + sys.stdout.write("\n") + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index 8649102c..6c667ae1 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -73,7 +73,7 @@ jobs: uses: crowdin/github-action@v2.4.0 if: steps.cache-check.outputs.cache-hit != 'true' && steps.crowdin-check.outputs.available == 'true' with: - upload_sources: false + upload_sources: ${{ github.repository == 'MCCTeam/Minecraft-Console-Client' }} upload_translations: false download_translations: true @@ -193,7 +193,7 @@ jobs: sed -i -e 's|SentryDSN = "";|SentryDSN = "${{ secrets.SENTRY_DSN }}";|g' ${{ env.project-path }}/Program.cs - name: Build Target - run: dotnet publish ${{ env.project-path }}.sln -f ${{ env.target-version }} -r ${{ matrix.target }} ${{ env.compile-flags }} + run: dotnet publish ${{ env.project-path }}/${{ env.PROJECT }}.csproj -f ${{ env.target-version }} -r ${{ matrix.target }} ${{ env.compile-flags }} env: DOTNET_NOLOGO: true diff --git a/.github/workflows/deploy-doc-only.yml b/.github/workflows/deploy-doc-only.yml index 5777fce3..ba457093 100644 --- a/.github/workflows/deploy-doc-only.yml +++ b/.github/workflows/deploy-doc-only.yml @@ -6,8 +6,27 @@ on: workflow_dispatch: jobs: + check-secrets: + runs-on: ubuntu-latest + outputs: + has-deploy-token: ${{ steps.check.outputs.has-deploy-token }} + steps: + - name: Check required secrets + id: check + run: | + if [ -z "$GH_PAGES_TOKEN" ]; then + echo "has-deploy-token=false" >> $GITHUB_OUTPUT + echo "::warning::GH_PAGES_TOKEN is not set, skipping documentation deployment." + else + echo "has-deploy-token=true" >> $GITHUB_OUTPUT + fi + env: + GH_PAGES_TOKEN: ${{ secrets.GH_PAGES_TOKEN }} + Build: runs-on: ubuntu-latest + needs: check-secrets + if: ${{ needs.check-secrets.outputs.has-deploy-token == 'true' }} steps: @@ -17,8 +36,22 @@ jobs: fetch-depth: 0 submodules: 'true' + - name: Check Crowdin secrets + id: crowdin-check + run: | + if [ -z "$CROWDIN_PROJECT_ID" ] || [ -z "$CROWDIN_PERSONAL_TOKEN" ]; then + echo "available=false" >> $GITHUB_OUTPUT + echo "::warning::Crowdin secrets not set, skipping translation download." + else + echo "available=true" >> $GITHUB_OUTPUT + fi + env: + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_TOKEN }} + - name: Download translations from crowdin - uses: crowdin/github-action@v1.6.0 + if: ${{ steps.crowdin-check.outputs.available == 'true' }} + uses: crowdin/github-action@v2.4.0 with: upload_sources: false upload_translations: false @@ -40,7 +73,7 @@ jobs: ACCESS_TOKEN: ${{ secrets.GH_PAGES_TOKEN }} TARGET_REPO: MCCTeam/MCCTeam.github.io TARGET_BRANCH: master - BUILD_SCRIPT: yarn --cwd ./docs/ && yarn --cwd ./docs/ docs:build + BUILD_SCRIPT: export NODE_OPTIONS=--max-old-space-size=8192 && yarn --cwd ./docs/ && yarn --cwd ./docs/ docs:build BUILD_DIR: docs/.vuepress/dist COMMIT_MESSAGE: Build from ${{ github.sha }} CNAME: https://mccteam.github.io diff --git a/.gitignore b/.gitignore index 7d0e131b..8116dfed 100644 --- a/.gitignore +++ b/.gitignore @@ -423,6 +423,7 @@ FodyWeavers.xsd /docs/l10n/ /docs/.vuepress/public/MCC-README/ +/docs/superpowers/ # Floder to store the decompiled Minecraft official source code /MinecraftOfficial/ @@ -441,3 +442,6 @@ FodyWeavers.xsd /Sentry/ /downloads/ server.pid + +# Crowdin translation automation working directory +/.crowdin-translate/ diff --git a/.skills/csharp-best-practices/SKILL.md b/.skills/csharp-best-practices/SKILL.md index 27c67ad4..c5b168d7 100644 --- a/.skills/csharp-best-practices/SKILL.md +++ b/.skills/csharp-best-practices/SKILL.md @@ -1,14 +1,46 @@ --- -name: csharp-best-practices +name: dotnet-csharp-best-practices description: > - C# 14 / .NET 10 coding conventions, idiomatic patterns, and performance best practices - for the Minecraft Console Client codebase. Use when writing, reviewing, or modifying C# code. + C# coding conventions, idiomatic patterns, performance, and async best practices for both .NET 8 (C# 12) and .NET 10 (C# 14). Use when writing, reviewing, refactoring, or designing C# code — including async code that uses Task, Task, ValueTask, CancellationToken, Task.WhenAll/WhenAny, Task.Run, ConfigureAwait, async void, or fire-and-forget. Trigger on `.Result`, `.Wait()`, deadlocks, cancellation propagation, ASP.NET Core background work, UI responsiveness, exception flow, and performance-sensitive async API design. +metadata: + category: technique + platform: ".NET 8 (C# 12) and .NET 10 (C# 14)" + triggers: + - c# + - csharp + - .net + - .net 8 + - .net 10 + - async + - task + - valuetask + - cancellationtoken + - configureawait + - .result + - .wait() + - async void + - fire-and-forget + - task.run + - whenall + - whenany + - asp.net core + - deadlock --- -# C# 14 / .NET 10 Best Practices +# C# Best Practices — .NET 8 + .NET 10 -Target: **.NET 10**, **C# 14**, nullable enabled. -Sources: [MS C# Conventions](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions) · [.NET Runtime Style](https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/coding-style.md) · [C# 14 Proposals](https://github.com/dotnet/csharplang/blob/main/Language-Version-History.md) · [C# 13 Docs](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-13) +Target: **.NET 8 (C# 12)** *and* **.NET 10 (C# 14)**, nullable enabled. GrECo has no .NET 9 projects. + +## Step 0 — Detect the target framework + +**Before** emitting code, follow `../../references/detect-target-framework.md`. The detection result decides which examples below apply: + +- `net8.0` → emit the **.NET 8 / C# 12** code block in every side-by-side pair; **never** use the C# 14-only syntax (`field`, `extension(...)`, `?.` assignment, partial constructors) or .NET 10-only APIs (`HybridCache`, `AddValidation`, EF Core named filters, first-party `Microsoft.AspNetCore.OpenApi`, Identity passkeys). +- `net10.0` → prefer the **.NET 10 / C# 14** code block. +- Multi-target (`net8.0;net10.0`) → emit the .NET 8 version, or wrap .NET 10-only code in `#if NET10_0_OR_GREATER`. +- Unknown → ask the user. + +Sources: [MS C# Conventions](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions) · [.NET Runtime Style](https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/coding-style.md) · [C# language versioning](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-versioning) · [C# 14 What's New](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-14) · [C# 12 What's New](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12) ## Naming @@ -21,7 +53,7 @@ Sources: [MS C# Conventions](https://learn.microsoft.com/en-us/dotnet/csharp/fun | Thread-static field | `t_camelCase` | `t_cachedBuffer` | | Local, parameter | camelCase | `packetId` | | Type parameter | `T` + PascalCase | `TResult` | -| Namespace | PascalCase | `MinecraftClient.Protocol` | +| Namespace | PascalCase | `SomeNamespace.SomeClasses` | | Async methods | Suffix `Async` | `ConnectAsync()`, `ReadPacketAsync()` | ```csharp @@ -40,14 +72,16 @@ public int packet_count { get; set; } // snake_case public async Task Connect(CancellationToken ct) { } // missing Async suffix ``` -## C# 14 Features +## C# 14 Features (.NET 10 only — with .NET 8 / C# 12 fallbacks) -### Extension Members (C# 14) +Every feature in this section requires `net10.0`. On `net8.0` use the fallback shown alongside. Authoritative reference: [C# 14 what's new](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-14). -Declare extension methods, properties, and operators inside `extension(...)` blocks. Replaces `this`-parameter pattern for new extensions. +### Extension Members + +Declare extension methods, properties, and operators inside `extension(...)` blocks. ```csharp -// CORRECT: extension property + method (C# 14) +// .NET 10 / C# 14 — extension property + method public static class EntityExtensions { extension(Entity entity) @@ -63,19 +97,27 @@ public static class EntityExtensions ``` ```csharp -// WRONG: classic extension method when C# 14 extension block is available -public static bool IsAlive(this Entity entity) => entity.Health > 0; +// .NET 8 / C# 12 — classic static extension class (only option) +public static class EntityExtensions +{ + public static bool IsAlive(this Entity entity) => entity.Health > 0; + public static void Heal(this Entity entity, int amount) + => entity.Health = Math.Min(entity.Health + amount, 20); + + public static bool IsEmpty(this IEnumerable items) + => !items.GetEnumerator().MoveNext(); +} +// Extension properties do not exist in C# 12 — expose them as methods or compute inline. ``` -### `field` Keyword in Properties (C# 14) +### `field` Keyword in Properties -Access the auto-generated backing field without declaring it. Mix auto and full accessors. +Access the auto-generated backing field without declaring it. ```csharp -// CORRECT: lazy init with field keyword +// .NET 10 / C# 14 — field keyword public string DisplayName => field ??= ComputeDisplayName(); -// CORRECT: INotifyPropertyChanged pattern public bool IsConnected { get; @@ -89,128 +131,170 @@ public bool IsConnected ``` ```csharp -// WRONG: manual backing field when field keyword suffices +// .NET 8 / C# 12 — manual backing field (only option) private string? _displayName; public string DisplayName => _displayName ??= ComputeDisplayName(); + +private bool _isConnected; +public bool IsConnected +{ + get => _isConnected; + set + { + if (_isConnected == value) return; + _isConnected = value; + OnPropertyChanged(); + } +} ``` -### Null-Conditional Assignment (C# 14) - -Assign through `?.` — RHS is only evaluated when receiver is non-null. +### Null-Conditional Assignment ```csharp -// CORRECT: null-conditional assignment +// .NET 10 / C# 14 — assign / compound-assign through ?. player?.Health = 20; connection?.OnDisconnect += HandleDisconnect; inventory?[slot] = newItem; ``` ```csharp -// WRONG: manual null check for simple assignment -if (player is not null) - player.Health = 20; +// .NET 8 / C# 12 — manual null check +if (player is not null) player.Health = 20; +if (connection is not null) connection.OnDisconnect += HandleDisconnect; +if (inventory is not null) inventory[slot] = newItem; ``` -### Simple Lambda Parameters with Modifiers (C# 14) - -Omit types on lambda parameters while still applying modifiers. +### Simple Lambda Parameters with Modifiers ```csharp -// CORRECT: modifiers without explicit types +// .NET 10 / C# 14 — modifiers without explicit types TryParse parse = (text, out result) => int.TryParse(text, out result); -ReadOnlySpan data = [1, 2, 3]; ProcessSpan((scoped span) => span.Length); ``` ```csharp -// WRONG: fully explicit types just for a modifier +// .NET 8 / C# 12 — full parameter types required when modifiers are present TryParse parse = (string text, out int result) => int.TryParse(text, out result); +ProcessSpan((scoped ReadOnlySpan span) => span.Length); ``` -### First-Class Span Types (C# 14) - -Implicit conversions between `T[]`, `Span`, and `ReadOnlySpan` — no explicit cast needed. Extension methods on `ReadOnlySpan` apply to arrays and spans automatically. +### First-Class Span Types ```csharp -// CORRECT: pass array where ReadOnlySpan is expected (C# 14) +// .NET 10 / C# 14 — implicit T[] → ReadOnlySpan int[] data = [1, 2, 3]; -bool found = data.StartsWith(1); // ReadOnlySpan extension resolved +bool found = data.StartsWith(1); // ReadOnlySpan extension auto-resolves ReadOnlySpan span = stackalloc byte[4]; ``` -### Unbound Generics in `nameof` (C# 14) +```csharp +// .NET 8 / C# 12 — call .AsSpan() explicitly at the boundary +int[] data = [1, 2, 3]; +bool found = data.AsSpan().StartsWith(stackalloc int[] { 1 }); // explicit conversion +ReadOnlySpan span = stackalloc byte[4]; // stackalloc → ReadOnlySpan already works +``` + +### Unbound Generics in `nameof` ```csharp -// CORRECT: no need to pick a dummy type argument -string name = nameof(Dictionary<,>); // "Dictionary" -string prop = nameof(List<>.Count); // "Count" +// .NET 10 / C# 14 +string name = nameof(Dictionary<,>); // "Dictionary" +string prop = nameof(List<>.Count); // "Count" ``` ```csharp -// WRONG: arbitrary type argument just to satisfy nameof -string name = nameof(Dictionary); +// .NET 8 / C# 12 — pick any closed type argument +string name = nameof(Dictionary); // "Dictionary" +string prop = nameof(List.Count); // "Count" ``` -### Partial Events and Constructors (C# 14) - -Separate declaration from implementation for source-generator scenarios. +### Partial Events and Constructors ```csharp -// CORRECT: partial constructor for source-gen interop +// .NET 10 / C# 14 — partial constructor for source-gen interop partial class ServerConnection { partial ServerConnection(string host, int port); } partial class ServerConnection { - partial ServerConnection(string host, int port) { /* generated */ } + partial ServerConnection(string host, int port) { /* generated body */ } } ``` -### `#:` Ignored Directives (C# 14) +```csharp +// .NET 8 / C# 12 — partial constructors do not exist. +// Either declare a regular constructor and call a private generated helper, +// or put the constructor body in a single file: +partial class ServerConnection +{ + public ServerConnection(string host, int port) => InitGenerated(host, port); + private partial void InitGenerated(string host, int port); // partial methods are C# 9+ +} +partial class ServerConnection +{ + private partial void InitGenerated(string host, int port) { /* generated body */ } +} +``` -For file-based `dotnet run app.cs` programs — ignored by the compiler. +### `#:` Ignored Directives / file-based programs + +C# 14 / .NET 10 SDK only — no .NET 8 equivalent. `dotnet run app.cs` requires the .NET 10 SDK. ```csharp +// .NET 10 only — file-based program with inline package reference #!/usr/bin/dotnet run #:package System.CommandLine@2.0.0-* Console.WriteLine("Hello"); ``` -## C# 13 Features +```csharp +// .NET 8 — create a full project (dotnet new console -f net8.0) and reference +// System.CommandLine in the .csproj. There is no inline-package syntax. +``` -### `Lock` Object (C# 13) +## C# 13 Features — require .NET 9+ (NOT available on .NET 8) -Use `System.Threading.Lock` instead of `lock(obj)` on arbitrary objects. +GrECo has no .NET 9 projects, so the only way to use C# 13 features in production is to be on .NET 10. On .NET 8, use the .NET 8 fallback shown below. + +### `Lock` Object ```csharp -// CORRECT: dedicated Lock type -private readonly Lock _lock = new(); -public void Enqueue(ChatMessage msg) { lock (_lock) _queue.Add(msg); } +// .NET 10 / C# 13+ — dedicated System.Threading.Lock type +private readonly Lock _gate = new(); +public void Enqueue(ChatMessage msg) { lock (_gate) _queue.Add(msg); } ``` ```csharp -// WRONG: locking on an object reference -private readonly object _syncRoot = new(); -lock (_syncRoot) { } +// .NET 8 / C# 12 — lock on a plain object reference (the only option) +private readonly object _gate = new(); +public void Enqueue(ChatMessage msg) { lock (_gate) _queue.Add(msg); } ``` -### `params` Collections (C# 13) +### `params` Collections (`params ReadOnlySpan`) -`params` now works with `ReadOnlySpan`, `Span`, `IEnumerable`, and other collection types. +The runtime overloads accepting `params ReadOnlySpan` ship in the .NET 9 BCL. On .NET 8 use `params T[]`. ```csharp -// CORRECT: params span avoids array allocation +// .NET 10 / C# 13+ — params span avoids the array allocation public void Log(params ReadOnlySpan messages) { foreach (var msg in messages) Console.WriteLine(msg); } ``` -### Partial Properties (C# 13) +```csharp +// .NET 8 / C# 12 — params array (one heap allocation per call) +public void Log(params string[] messages) +{ + foreach (var msg in messages) Console.WriteLine(msg); +} +``` + +### Partial Properties ```csharp -// CORRECT: partial property for source generators +// .NET 10 / C# 13+ — partial property for source generators partial class Config { public partial string Host { get; set; } @@ -222,7 +306,16 @@ partial class Config } ``` -## C# 12 Features +```csharp +// .NET 8 / C# 12 — partial properties do not exist; declare a normal property +// and let the source generator emit the backing field or a helper method. +partial class Config +{ + public string Host { get; set; } = ""; +} +``` + +## C# 12 Features (.NET 8+ — available on both targets) ### Primary Constructors @@ -292,16 +385,16 @@ var greet = (string name, string prefix = "Player") => $"{prefix} {name}"; ```csharp // CORRECT: file-scoped namespace — one per file, less nesting -namespace MinecraftClient.ChatBots; +namespace SomeNamespace.SomeClasses; -public class MyBot : ChatBot { } +public class SomeClass : SomeInterface { } ``` ```csharp // WRONG: block-scoped namespace adds unnecessary nesting -namespace MinecraftClient.ChatBots +namespace SomeNamespace.SomeClasses { - public class MyBot : ChatBot { } + public class SomeClass : SomeInterface { } } ``` @@ -512,6 +605,34 @@ public string GetName(Player? player) ## Async / Await + +1. correctness and cancellation semantics +2. context-specific API design (library vs app, UI vs ASP.NET Core) +3. concurrency behavior and failure handling +4. performance tuning only when the hot path is real + + +Treat blanket advice as suspect. Separate official runtime behavior from expert interpretation and from your own recommendation for the case at hand. + +### Review defaults + +Start from these defaults unless case-specific evidence says otherwise: + +| Topic | Default judgment | +|---|---| +| Blocking on async (`.Result`, `.Wait`, `GetAwaiter().GetResult()`) | usually a defect or interop boundary smell | +| `async void` | only acceptable for event handlers | +| `ValueTask` | avoid by default; justify with measurements or a very hot path | +| `ConfigureAwait(false)` | good library default, not an app-wide default | +| `Task.Run` | use to offload CPU work when needed, not to fake async I/O | +| Fire-and-forget | assume unsafe until lifecycle, scope, and exception handling are explicit | +| `Task.WhenAll` | prefer for independent concurrent operations | +| `Task.WhenAny` | always inspect the winner task and define what happens to losers | +| Cancellation | accept and propagate the token until the point of no cancellation | +| Method naming | `Async` suffix for awaitable-returning methods (unless an interface/event contract dictates otherwise) | + +### Concrete patterns + ```csharp // CORRECT: propagate CancellationToken through every async I/O call public async Task FetchDataAsync(Uri uri, CancellationToken ct = default) @@ -531,13 +652,16 @@ public async Task FetchDataAsync(Uri uri) ``` ```csharp -// CORRECT: ValueTask when result is often available synchronously +// CORRECT: ValueTask when result is often available synchronously and the call is on a hot path public ValueTask GetCachedCountAsync() { if (_cache.TryGetValue("count", out int count)) return ValueTask.FromResult(count); return new ValueTask(LoadCountFromDbAsync()); } + +// Note: do not await the same ValueTask twice, do not call AsTask() multiple times, +// and do not mix consumption techniques on the same instance — undefined behavior. ``` ```csharp @@ -551,19 +675,15 @@ public async Task GetCachedCountAsync() ``` ```csharp -// CORRECT: async Task for async event handlers +// CORRECT: async Task for async event handlers exposed as awaitable public async Task HandleEventAsync(GameEvent e, CancellationToken ct) -{ - await notificationService.SendAsync(e.PlayerId, ct); -} + => await notificationService.SendAsync(e.PlayerId, ct); ``` ```csharp // WRONG: async void — exceptions are unobservable, cannot be awaited public async void HandleEvent(GameEvent e) -{ - await notificationService.SendAsync(e.PlayerId, default); -} + => await notificationService.SendAsync(e.PlayerId, default); ``` ```csharp @@ -572,15 +692,25 @@ var packet = await reader.ReadPacketAsync(ct); ``` ```csharp -// WRONG: .Result / .Wait() causes deadlocks +// WRONG: .Result / .Wait() / GetAwaiter().GetResult() — deadlocks and thread pool starvation var packet = reader.ReadPacketAsync(ct).Result; var packet2 = reader.ReadPacketAsync(ct).GetAwaiter().GetResult(); ``` ```csharp -// CORRECT: ConfigureAwait(false) in library code +// CORRECT: ConfigureAwait(false) in general-purpose library code var data = await stream.ReadAsync(buffer, ct).ConfigureAwait(false); +``` +```csharp +// CORRECT: Task.WhenAll for independent concurrent I/O +var userTask = repo.GetUserAsync(id, ct); +var ordersTask = repo.GetOrdersAsync(id, ct); +await Task.WhenAll(userTask, ordersTask); +return new Dashboard(await userTask, await ordersTask); +``` + +```csharp // CORRECT: IAsyncEnumerable for streaming public async IAsyncEnumerable ReadChatStreamAsync( [EnumeratorCancellation] CancellationToken ct = default) @@ -593,6 +723,53 @@ public async IAsyncEnumerable ReadChatStreamAsync( await using var conn = new McConnection(host, port); ``` +### Common traps + +- Calling `.Result`, `.Wait()`, or `GetAwaiter().GetResult()` inside normal async-capable code +- Recommending `ConfigureAwait(false)` everywhere because "it is .NET Core" or "it prevents deadlocks" +- Recommending `Task.Run` inside ASP.NET Core request code just to make code "more async" — request code already runs on the thread pool +- Recommending `ValueTask` for every hot-looking method without checking completion behavior, call frequency, or single-consumer assumptions +- Ignoring cancellation after plumbing a `CancellationToken` (accepting it but never checking or propagating) +- Using `Task.WhenAny` without awaiting the returned winner task or handling the remaining tasks +- Treating fire-and-forget as harmless when it touches scoped services, `HttpContext`, or unobserved failures +- Awaiting the same `ValueTask` twice, or mixing `AsTask()` with `await` on the same instance + +### Rationalization traps + +| Rationalization | Better reasoning | +|---|---| +| "It works, so `.Result` is fine." | Lack of failure under one context does not make blocking safe or scalable. | +| "`ValueTask` is always faster." | It trades simplicity for niche allocation wins and stricter consumption rules. | +| "`ConfigureAwait(false)` everywhere is modern guidance." | Library and app code have different constraints. Blanket rules are weak. | +| "`Task.Run` makes server code asynchronous." | It only queues work; it does not turn blocking I/O into true async I/O. | +| "Fire-and-forget is okay because logging exists." | Logging does not solve scope lifetime, shutdown, retries, or error propagation. | + +### Hard boundaries + +- Do not endorse sync-over-async as a normal design choice +- Do not suggest `async void` except for event handlers +- Do not suggest `ValueTask` unless single-consumer / hot-path / measurement constraints are met +- Do not claim `ConfigureAwait(false)` is always needed or always unnecessary +- Do not approve fire-and-forget unless ownership, exception handling, and lifetime are explicit + +### Output contract for review and design + +When you review or design async code, label your reasoning: + +- **Fact** — official runtime or API behavior +- **Expert guidance** — interpretation from strong experts (Stephen Toub, Stephen Cleary, Andrew Arnott) when it adds design meaning +- **Synthesis** — your recommendation for this exact case + +Do not present contextual advice as a universal law. + +### References for deep async work + +Load on demand: + +- [references/async-core-guidance.md](references/async-core-guidance.md) — fact / expert / synthesis for `Task` vs `ValueTask`, blocking, cancellation, exception flow, `WhenAll` / `WhenAny` +- [references/async-context-and-tradeoffs.md](references/async-context-and-tradeoffs.md) — library vs app, UI vs ASP.NET Core, `Task.Run` boundaries, fire-and-forget alternatives, `ConfigureAwait` strong vs weak recommendations, throttling +- [references/async-source-notes.md](references/async-source-notes.md) — source attribution and authority breakdown + ## LINQ ### Prefer Method Syntax for Most Operations @@ -699,7 +876,11 @@ for (int i = 0; i < data.Length; i++) int found = data.ToArray().Count(b => b == target); ``` -## Performance (.NET 8+) +## Performance (.NET 8+ — works on both targets) + +All APIs below ship in .NET 8 and continued unchanged in .NET 10. For benchmarks and rationale see Stephen Toub's deep dives: +[Performance Improvements in .NET 8](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/) · +[Performance Improvements in .NET 10](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-10/) (covers JIT array-interface devirtualisation that speeds up many LINQ paths in .NET 10). ### Span\ / Memory\ @@ -803,7 +984,7 @@ foreach (var s in items) combined += s + ", "; | Immutable snapshots | `ImmutableDictionary` | Persistent structure | | Membership test | `HashSet` / `FrozenSet` | FrozenSet for static | | Priority queue | `PriorityQueue` | .NET 6+ | -| Synchronization | `System.Threading.Lock` | C# 13; prefer over `lock(obj)` | +| Synchronization | `System.Threading.Lock` / `lock(object)` | `Lock` is .NET 9+ only — on .NET 8 use `private readonly object _gate = new();` | | Producer-consumer | `Channel` | Over `BlockingCollection` | | Temp buffer | `ArrayPool` / `stackalloc` | Zero/low alloc | @@ -960,10 +1141,14 @@ public bool IsAlive => Health > 0; _ = int.TryParse(s, out int result); (_, int y, _) = GetCoordinates(); -// CORRECT: nameof for resilient refactoring (unbound generics in C# 14) +// CORRECT: nameof for resilient refactoring throw new ArgumentException("Invalid value", nameof(packetId)); LogToConsole($"{nameof(AutoEat)}: eating {item.Name}"); -string typeName = nameof(Dictionary<,>); // "Dictionary" + +// .NET 10 / C# 14 — unbound generic in nameof +string typeName10 = nameof(Dictionary<,>); // "Dictionary" +// .NET 8 / C# 12 — use any closed generic instead +string typeName8 = nameof(Dictionary); // "Dictionary" // CORRECT: static lambdas prevent accidental closure allocations list.Sort(static (a, b) => a.Id.CompareTo(b.Id)); diff --git a/.skills/csharp-best-practices/references/async-context-and-tradeoffs.md b/.skills/csharp-best-practices/references/async-context-and-tradeoffs.md new file mode 100644 index 00000000..f6bdaedb --- /dev/null +++ b/.skills/csharp-best-practices/references/async-context-and-tradeoffs.md @@ -0,0 +1,82 @@ +--- +description: >- + Context-specific async guidance for library code, ui apps, asp.net core, + background work, task.run, configureawait, and performance-sensitive design. +metadata: + tags: [configureawait, task.run, asp.net core, ui, library, performance] + source: mixed +--- + +# Context and Tradeoffs + +## Library code versus app code + +### General-purpose library code +- Prefer APIs that expose true async for I/O-bound work. +- Do not add async wrappers around purely compute-bound methods just to look modern. Expose sync compute APIs and let callers decide whether to offload. +- `ConfigureAwait(false)` is a strong default when the library does not need the caller’s context. +- Avoid ambient assumptions about a UI thread, request context, or test framework behavior. + +### App code +- Prefer the style that fits the app model. +- UI code often needs the original context after `await`. +- ASP.NET Core request code normally does not need `Task.Run` just to stay responsive, because it already runs on thread pool threads. +- Do not present “ASP.NET Core has no synchronization context” as proof that every `ConfigureAwait(false)` discussion is obsolete. + +## `Task.Run` boundaries + +### Good uses +- Offload CPU-bound work so a UI thread can stay responsive. +- Offload CPU work from a caller when that scheduling boundary is deliberate. + +### Weak uses +- Wrapping synchronous I/O to pretend it is true async I/O. +- Calling `Task.Run` and immediately awaiting it in ASP.NET Core request handling when no CPU offload goal exists. +- Using `Task.Run` to hide blocking APIs instead of fixing the underlying API choice. + +## Fire-and-forget + +### Assume unsafe until proven otherwise +A background task needs answers for all of these: +- Who owns its lifetime? +- How are exceptions observed? +- How does shutdown cancel it? +- Does it touch scoped services or request-bound objects? +- Does work need retries, backpressure, or queueing? + +### Safer alternatives +- Await the task normally. +- Queue work to an owned background component. +- In ASP.NET Core, prefer hosted services or a dedicated background queue pattern for long-lived work. +- If scoped services are required in background processing, create an explicit scope instead of capturing request scope objects. + +## `ConfigureAwait` + +### Strong recommendation +- In general-purpose libraries, use `ConfigureAwait(false)` unless the continuation must run in the captured context. + +### Weak recommendation +- “Always use it in app code.” +- “Never use it on .NET Core.” +- “Use it once at the first await and you are done.” + +### Review note +If code after the `await` needs a specific context, say so explicitly. If it does not, the recommendation depends on whether the code is app-level or general-purpose library code. + +## Performance guidance + +### Correctness first +Do not trade API clarity for speculative micro-optimizations. + +### `ValueTask` is performance-specialized +Recommend it only when most of these are true: +1. the method is called very frequently +2. it often completes synchronously or from a reusable source +3. allocation reduction matters on measurements +4. consumers can respect single-consumer semantics +5. task combinator ergonomics are not central to the API + +### Throttling and concurrency control +- `Task.WhenAll` expresses concurrency; it does not limit it. +- For bounded concurrency, use an async gate such as `SemaphoreSlim.WaitAsync`, or platform helpers such as `Parallel.ForEachAsync` when the workload fits. +- Always define what happens to remaining work after the first completion or first failure. diff --git a/.skills/csharp-best-practices/references/async-core-guidance.md b/.skills/csharp-best-practices/references/async-core-guidance.md new file mode 100644 index 00000000..114ad50d --- /dev/null +++ b/.skills/csharp-best-practices/references/async-core-guidance.md @@ -0,0 +1,105 @@ +--- +description: >- + Source-backed core guidance for task, valuetask, cancellation, exception flow, + blocking, and concurrency in c# async code reviews and implementations. +metadata: + tags: [csharp, async, task, valuetask, cancellation, exceptions, concurrency] + source: mixed +--- + +# Core Guidance + +## Facts from official .NET documentation + +### 1. Return types and `async void` +- Async methods should normally return `Task` or `Task`. +- `async void` is intended for event handlers; callers cannot await it and exception handling differs. +- TAP methods that return awaitable types conventionally use the `Async` suffix. + +### 2. Blocking on async +- `Task.Result` is blocking. Prefer `await` in most cases. +- Blocking can deadlock in context-bound environments and reduces scalability even when it does not deadlock. +- `await` on a faulted task rethrows one exception directly; `.Wait()` and `.Result` wrap failures in `AggregateException`. + +### 3. `Task` versus `ValueTask` +- Default to `Task` or `Task` unless there is a demonstrated reason not to. +- `ValueTask` has stricter usage rules. A given instance should generally be awaited only once. +- Do not await the same `ValueTask` multiple times, call `AsTask()` multiple times, or mix consumption techniques on the same instance. +- For synchronously successful `Task`-returning methods, `Task.CompletedTask` is the normal zero-result completion value. + +### 4. Cancellation +- If a TAP method supports cancellation, expose a `CancellationToken`. +- Pass the token to nested operations that should participate in cancellation. +- If an async method throws `OperationCanceledException` associated with the method’s token, the returned task transitions to `Canceled`. +- After a method has completed its work successfully, do not report cancellation instead of success. + +### 5. Exception flow and task combinators +- `Task.WhenAll` does not block the calling thread. +- If any supplied task faults, the `WhenAll` task faults and aggregates the unwrapped exceptions from the component tasks. +- If none fault and at least one is canceled, the `WhenAll` task is canceled. +- `Task.WhenAny` returns a task that completes successfully with the first completed task as its result, even when that winning task itself is faulted or canceled. +- After `WhenAny`, await the returned winner task to propagate its outcome. +- The remaining tasks continue unless you cancel or otherwise handle them. + +## Expert guidance that is strong and technically grounded + +### Stephen Toub +- Use `ConfigureAwait(false)` as the general default for general-purpose library code, because library code should not depend on an app model’s context. +- App-level code is different. UI code often needs the captured context. ASP.NET Core also changes the deadlock discussion because it does not install the classic ASP.NET style synchronization context, but that does not make blanket `ConfigureAwait` advice strong. +- `ValueTask` exists mainly to avoid allocations on frequently synchronous success paths. It is not a general replacement for `Task` because `Task` is more flexible for multiple awaits, caching, and combinators. + +### Andrew Arnott +- Propagate the token until the point of no cancellation. +- Validate arguments before cancellation checks when argument validation should always run. +- Prefer catching `OperationCanceledException` rather than `TaskCanceledException` in general-purpose logic. +- Keep `CancellationToken` last in the parameter list; make it optional mainly on public APIs, not necessarily on internal methods. + +### Stephen Cleary +- “Async all the way” is a strong design guideline, not an absolute law of physics. Sync bridges exist, but they are specialized boundary decisions, not a normal code review recommendation. +- `async void` and sync-over-async both create real observability and composition problems even when a sample appears to work. + +## Naming and testability + +### Naming +- TAP methods that return awaitable types conventionally use the `Async` suffix. Do not force renames when an interface, base class, or event pattern already dictates the name. + +### Testability +- Favor awaitable APIs over hidden work so tests can await completion, assert faults, and drive cancellation deterministically. +- Prefer explicit background components, injected clocks, and owned queues over ad hoc fire-and-forget logic that tests cannot observe. + +## Synthesis for agents + +### Code review defaults +- Treat `.Result`, `.Wait()`, and `GetAwaiter().GetResult()` as likely defects unless the code is a deliberate sync boundary and the caller explicitly cannot be async. +- Prefer `Task`/`Task` for API design. Require an explicit reason before recommending `ValueTask`. +- Require cancellation behavior to be coherent: accepted, propagated, and not silently dropped. +- Prefer `await Task.WhenAll(...)` for independent operations started before awaiting. +- Treat `Task.WhenAny(...)` as incomplete until the winner is awaited and losers are canceled, observed, or intentionally left running. + +### Minimal examples + +#### Avoid sync-over-async +```csharp +// bad +var user = client.GetUserAsync(id).Result; + +// better +var user = await client.GetUserAsync(id); +``` + +#### Use `Task.WhenAll` for parallel I/O +```csharp +var userTask = repo.GetUserAsync(id, ct); +var ordersTask = repo.GetOrdersAsync(id, ct); +await Task.WhenAll(userTask, ordersTask); +return new Dashboard(await userTask, await ordersTask); +``` + +#### Be conservative with `ValueTask` +```csharp +// default +Task GetAsync(string key, CancellationToken ct); + +// specialized hot path only when justified +ValueTask TryGetCachedAsync(string key); +``` diff --git a/.skills/csharp-best-practices/references/async-source-notes.md b/.skills/csharp-best-practices/references/async-source-notes.md new file mode 100644 index 00000000..0d34589d --- /dev/null +++ b/.skills/csharp-best-practices/references/async-source-notes.md @@ -0,0 +1,59 @@ +--- +description: >- + Authority notes and citations for the c# async best practices skill, separating + official documentation, expert interpretation, and synthesized guidance. +metadata: + tags: [sources, citations, authority, notes] + source: external +--- + +# Source Notes + +## Official facts + +- Microsoft Learn, "Implementing the Task-based Asynchronous Pattern" + - https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern + - Return types, cancellation behavior, `Task.Run` boundaries, and TAP implementation guidance. +- Microsoft Learn, "Consuming the Task-based Asynchronous Pattern" + - https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern + - `await`, `WhenAll`, `WhenAny`, cancellation propagation, and exception behavior. +- Microsoft Learn, "Async return types" + - https://learn.microsoft.com/en-us/dotnet/csharp/asynchronous-programming/async-return-types + - `Task`, `Task`, `async void`, generalized async return types. +- Microsoft Learn, `ValueTask` API reference + - https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.valuetask + - single-consumer warnings and default-to-`Task` guidance. +- Microsoft Learn, ASP.NET Core best practices + - https://learn.microsoft.com/en-us/aspnet/core/fundamentals/best-practices + - avoid blocking calls, avoid unnecessary `Task.Run`, background-work cautions. +- Microsoft Learn, hosted services in ASP.NET Core + - https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services + - safe long-lived background work and cancellation during shutdown. + +## Expert guidance used only when technically grounded + +- Stephen Toub, ".NET Blog: ConfigureAwait FAQ" + - https://devblogs.microsoft.com/dotnet/configureawait-faq/ + - best source for context capture semantics and library-vs-app guidance. +- Stephen Toub, ".NET Blog: Understanding the Whys, Whats, and Whens of ValueTask" + - https://devblogs.microsoft.com/dotnet/understanding-the-whys-whats-and-whens-of-valuetask/ + - performance rationale and tradeoffs behind `ValueTask`. +- Stephen Toub, ".NET Blog: Await, and UI, and deadlocks! Oh my!" + - https://devblogs.microsoft.com/dotnet/await-and-ui-and-deadlocks-oh-my/ + - canonical deadlock explanation for context-bound code. +- Stephen Toub, ".NET Blog: Task Exception Handling in .NET 4.5" + - https://devblogs.microsoft.com/dotnet/task-exception-handling-in-net-4-5/ + - explains `await` versus blocking exception shape and why `WhenAll` matters. +- Andrew Arnott, "Recommended patterns for CancellationToken" + - https://devblogs.microsoft.com/premier-developer/recommended-patterns-for-cancellationtoken/ + - practical cancellation design heuristics; useful, but not treated as a language/runtime spec. +- Stephen Cleary, "Async/Await - Best Practices in Asynchronous Programming" + - https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/march/async-await-best-practices-in-asynchronous-programming + - useful design interpretation, but older and treated as contextual guidance rather than current official policy. + +## Where the skill is intentionally cautious + +- `ConfigureAwait`: strong guidance exists for libraries, weaker guidance for app code. Blanket rules are rejected. +- `Task.Run`: valid for deliberate CPU offload, weak as a server-side patch for blocking I/O. +- `ValueTask`: supported and useful, but easy to misuse. The skill defaults to `Task` unless evidence is present. +- Fire-and-forget: acceptable only with explicit ownership and lifecycle design, especially in server code. diff --git a/.skills/csharp-dotnet-cli-optimization/SKILL.md b/.skills/csharp-dotnet-cli-optimization/SKILL.md deleted file mode 100644 index 7691da85..00000000 --- a/.skills/csharp-dotnet-cli-optimization/SKILL.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -name: csharp-dotnet-cli-optimization -description: >- - Use when diagnosing or optimizing generic C#/.NET performance, GC pressure, - allocations, heap or stack usage, LINQ overhead, boxing, Span/Memory, - stackalloc, pooling, or hot-path code with CLI-first tools such as - dotnet-counters, dotnet-trace, dotnet-stack, dotnet-gcdump, dotnet-dump, or - BenchmarkDotNet. -metadata: - category: technique - triggers: - - dotnet-counters - - dotnet-trace - - dotnet-dump - - dotnet-gcdump - - dotnet-stack - - benchmarkdotnet - - allocations - - gc pressure - - memory leak - - hot path - - linq - - stackalloc - - span - - memory - - boxing - - heap - - stack - - latency - - throughput - - slow - - hang - - deadlock ---- - -# C#/.NET CLI Optimization - -CLI-first guidance for generic C# 14 / .NET 10 performance work. -Use the references on demand: - -- Read [references/memory-model-gc.md](references/memory-model-gc.md) for stack vs heap, generations, LOH, pinning, server vs workstation GC, and GC tuning limits. -- Read [references/code-patterns.md](references/code-patterns.md) for LINQ, Span/Memory, stackalloc, structs, boxing, pooling, strings, and analyzer-backed code patterns. -- Read [references/README.md](references/README.md) for dated sources and freshness notes. - -## When to Use - -- A .NET process is slow, allocation-heavy, CPU-heavy, or memory-hungry -- A live process appears stuck, hung, or deadlocked -- The user asks how heap, stack, GC, boxing, or LINQ overhead actually works in .NET -- The user wants concrete bad vs good code patterns after measurement has identified a hot path -- The task needs a decision between counters, traces, stacks, GC dumps, dumps, or a benchmark - -**NOT for:** -- ASP.NET Core, EF Core, MAUI, Orleans, Unity, Avalonia, WPF, WinForms, Blazor, or other framework-specific playbooks -- Visual Studio, Rider, VS Code, PerfView, speedscope, or any GUI-first workflow -- speculative rewrites such as "replace everything with Span" before measurement - -## Iron Rule - -ALWAYS measure first, change second, and re-measure third. - -NEVER claim an optimization without before/after evidence from the same scenario. - -| Rationalization | Reality | -|---|---| -| "This is obviously slow" | The runtime, JIT, and libraries often invalidate intuition. | -| "struct means stack" | Value types are stored inline. They are not "always on the stack". | -| "All LINQ is slow" | .NET 10 improved many LINQ paths. Measure before rewriting. | -| "GC.Collect will fix it" | Forced collection usually treats symptoms, not cause. | - -## Investigation Order - -1. Use `dotnet-counters` for live triage. -2. If the process is stuck, capture `dotnet-stack` immediately. -3. If CPU or allocation hot paths matter, collect `dotnet-trace`. -4. If heap growth matters more than call paths, collect `dotnet-gcdump`. -5. If you need SOS heap inspection or a postmortem, collect `dotnet-dump`. -6. Only after live evidence points to a candidate routine, apply patterns from the reference docs. -7. If the change is truly local and isolated, use BenchmarkDotNet to compare implementations. -8. Re-run the original live capture to prove the real workload improved. - -## Which Reference to Load - -| User question | Read first | -|---|---| -| "How do stack and heap really work in .NET?" | `references/memory-model-gc.md` | -| "Why is GC pausing or why is LOH churn hurting us?" | `references/memory-model-gc.md` | -| "How should I optimize this LINQ?" | `references/code-patterns.md` | -| "Can I move this to the stack with stackalloc or Span?" | `references/code-patterns.md` | -| "Should this be a struct, ref struct, readonly struct, or class?" | `references/code-patterns.md` and `references/memory-model-gc.md` | -| "Why is this boxing?" | `references/code-patterns.md` | - -## Tool Selection - -| Question | Tool | What it answers | Typical next step | -|---|---|---|---| -| Is the live process allocating, GCing, or saturating CPU? | `dotnet-counters` | Live counters and trend direction | Capture a trace or GC dump if suspicious | -| Is the process hung or deadlocked right now? | `dotnet-stack` | Current managed stack snapshot | Collect a dump if you need deeper postmortem evidence | -| Which call paths consume CPU or allocate heavily? | `dotnet-trace` | Sampled execution and runtime events | Confirm hot paths, then isolate code | -| Which object types dominate managed heap usage? | `dotnet-gcdump` | Heap composition and type totals | Decide whether to redesign lifetimes or collect a full dump | -| Do I need SOS heap inspection or thread state? | `dotnet-dump` | Full dump plus CLI analysis | Run `analyze -c` commands | -| Did a code change improve one isolated routine? | BenchmarkDotNet | Reproducible microbenchmark comparison | Re-run live diagnostics in the real scenario | - -## Pattern Guardrails - -- Do not answer "put it on the stack" as a blanket goal. Explain lifetime, copies, boxing, and escape rules instead. -- Do not suggest `stackalloc` for unbounded sizes, large buffers, or loop-carried allocations. -- Do not recommend `Span` for data that must cross `await`, escape to the heap, or live in object fields. Switch to `Memory` or `ReadOnlyMemory` for that. -- Do not recommend converting every `class` to a `struct`. Large, mutable, identity-bearing, or frequently boxed types often get worse. -- Do not blanket-rewrite LINQ to loops. Use analyzer-backed fixes first, and remember .NET 10 substantially improved many LINQ paths. -- Do not recommend pooling without ownership rules. Returned pooled arrays must not be reused by the caller. -- Do not recommend `GC.Collect()` except for rare, justified lifecycle boundaries, and only with measurement. - -## Analyzer Radar - -When performance diagnostics point to code patterns rather than runtime configuration, consult the current performance analyzers, especially: - -- `CA1826`, `CA1827`, `CA1829`, `CA1836`, `CA1851`, `CA1860` for LINQ and enumeration -- `CA1845`, `CA1846`, `CA1858` for string and span-friendly APIs -- `CA1834`, `CA1865-CA1867` for `StringBuilder` char overloads -- `CA1870` for cached `SearchValues` - -These rules are clues, not goals. Apply them where the measured hot path justifies it. - -## Minimal Commands - -```bash -dnx dotnet-counters monitor --process-id -dotnet-counters monitor -p --counters System.Runtime -dotnet-stack report -p -dotnet-trace collect -p --duration 00:00:30 -dotnet-trace report topN -dotnet-gcdump collect -p -dotnet-gcdump report -dotnet-dump collect -p --type Heap -dotnet-dump analyze -c "dumpheap -stat" -c "exit" -``` - -Minimal BenchmarkDotNet pattern: - -```csharp -using BenchmarkDotNet.Attributes; - -[MemoryDiagnoser] -public class CandidateBench -{ - [Benchmark(Baseline = true)] - public int Original() => OriginalImpl(); - - [Benchmark] - public int Candidate() => CandidateImpl(); -} -``` - -```bash -dotnet run -c Release -``` - -## Output - -When using this skill, report: - -- the measured symptom and the evidence used to identify it -- the chosen tool or code pattern and why it fits this bottleneck -- the relevant tradeoff, such as allocation vs copy cost, deferred vs eager execution, or stack vs pool -- the before/after result, or say explicitly if the recommendation is still unverified diff --git a/.skills/csharp-dotnet-cli-optimization/references/README.md b/.skills/csharp-dotnet-cli-optimization/references/README.md deleted file mode 100644 index b1c634b7..00000000 --- a/.skills/csharp-dotnet-cli-optimization/references/README.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -description: Dated source ledger for csharp-dotnet-cli-optimization. -metadata: - tags: [sources, diagnostics, gc, linq, span, stackalloc, boxing] ---- - -# Sources - -## Current primary sources - -- [dotnet-counters](https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters), Microsoft Learn, updated `2025-10-02` - - Canonical CLI docs for live counters, `monitor`, `collect`, and `dnx` one-shot execution on .NET 10.0.100+. -- [dotnet-trace](https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-trace), Microsoft Learn, updated `2026-03-20` - - Canonical CLI docs for `collect`, `report`, and the preview `collect-linux` path plus its limits. -- [dotnet-dump](https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump), Microsoft Learn, updated `2026-03-04` - - Canonical CLI docs for dump collection, dump types, and `analyze -c`. -- [dotnet-gcdump](https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-gcdump), Microsoft Learn, updated `2025-12-17` - - Canonical CLI docs for GC dump collection, `report`, and the induced full Gen 2 GC caveat. -- [Fundamentals of garbage collection](https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals), Microsoft Learn, updated `2025-10-22` - - Current official overview of generations, allocation, and managed heap behavior. -- [Runtime configuration options for garbage collection](https://learn.microsoft.com/en-us/dotnet/core/runtime-config/garbage-collector), Microsoft Learn, updated `2025-11-22` - - Current official source for server vs workstation GC, background GC, heap limits, LOH threshold, and modern GC configuration behavior. -- [stackalloc expression](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/stackalloc), Microsoft Learn, updated `2026-01-24` - - Current official guidance for stack allocation limits, loop avoidance, initialization, and Span-based usage. -- [ref struct types](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/ref-struct), Microsoft Learn, updated `2026-01-20` - - Current official guidance for stack-only semantics and escape restrictions. -- [Structure types](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/struct), Microsoft Learn, updated `2026-01-14` - - Current official source for readonly structs, pass-by-reference guidance, and boxing conversions. -- [Value types](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-types), Microsoft Learn, updated `2026-01-20` - - Current official source for copy semantics and inline storage behavior. -- [Boxing and Unboxing](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/types/boxing-and-unboxing), Microsoft Learn, updated `2025-10-13` - - Current official source for boxing semantics and cost. -- [Memory and Span usage guidelines](https://learn.microsoft.com/en-us/dotnet/standard/memory-and-spans/memory-t-usage-guidelines), Microsoft Learn, updated `2025-04-11` - - Current official guidance for choosing `Span` vs `Memory` and ownership rules. -- [Lambda expressions](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/lambda-expressions), Microsoft Learn, updated `2026-01-24` - - Current official source for capture semantics and `static` lambdas. -- [What's new in C# 14](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-14), Microsoft Learn, updated `2025-11-19` - - Current official confirmation of first-class span conversions in C# 14. -- [Performance rules](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/performance-warnings), Microsoft Learn, updated `2025-10-29` - - Current official index of analyzer-backed performance rules, including `CA1870`. -- [Performance Improvements in .NET 10](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-10/), Stephen Toub, published `2025-09-10` - - High-trust expert source showing real .NET 10 runtime and LINQ improvements. Use it to avoid stale folklore such as "all LINQ is slow". - -## Specific analyzer pages used for code-pattern guidance - -- [CA1827](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1827), updated `2023-11-14` -- [CA1845](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1845), updated `2024-11-12` -- [CA1846](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1846), updated `2023-12-16` -- [CA1851](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1851), updated `2023-11-14` -- [CA1858](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1858), current official analyzer page -- [CA1860](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1860), current official analyzer page - -## Older but still canonical sources used cautiously - -- [Reduce memory allocations using new C# features](https://learn.microsoft.com/en-us/dotnet/csharp/advanced-topics/performance/), Microsoft Learn, updated `2023-10-17` - - Still useful for `ref`, `in`, readonly struct, and copy-avoidance guidance, but older than the core 2025-2026 docs. -- [Intermediate materialization](https://learn.microsoft.com/en-us/dotnet/standard/linq/intermediate-materialization), Microsoft Learn, updated `2022-09-02` - - Still canonical for LINQ materialization semantics. -- [Deferred execution and lazy evaluation](https://learn.microsoft.com/en-us/dotnet/standard/linq/deferred-execution-lazy-evaluation), Microsoft Learn, updated `2022-09-29` - - Still canonical for LINQ deferred-execution semantics. -- [dotnet-stack](https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-stack), Microsoft Learn, updated `2023-03-14` - - Used only for narrow stack-snapshot guidance because the page is stale compared to the other diagnostics docs. - -## Explicit exclusions - -- Framework-specific tutorials were intentionally excluded. -- GUI-first analysis flows were intentionally excluded. -- MCC-specific paths, code, and hot-path examples were intentionally excluded. diff --git a/.skills/csharp-optimization/SKILL.md b/.skills/csharp-optimization/SKILL.md deleted file mode 100644 index 9caf92f9..00000000 --- a/.skills/csharp-optimization/SKILL.md +++ /dev/null @@ -1,267 +0,0 @@ ---- -name: csharp-optimization -description: >- - Use when optimizing C# code in MCC, reducing GC pressure, profiling hot paths, - fixing latency spikes, or reviewing code for allocation or throughput issues. -metadata: - category: technique - triggers: performance, allocations, GC, hot path, latency, throughput, - memory pressure, optimize, slow, freeze, lag spike, packet processing speed ---- - -# C# Performance Optimization for MCC - -Hands-on optimization recipes for Minecraft Console Client hot paths. -Complements `csharp-best-practices` (conventions) with measurement-driven -performance work. - -## When to Use - -- Profiling or reducing GC pressure in a running MCC session -- Optimizing per-packet code (`Protocol18.HandlePacket`, `DataTypes.ReadNext*`) -- Optimizing per-tick code (`PlayerPhysics.Tick`, `CollisionDetector.Collide`) -- Speeding up chunk decoding (`Protocol18Terrain.ProcessChunkColumnData`) -- Improving A* pathfinding (`Movement.CalculatePath`) -- Reviewing any code change for allocation or throughput regressions - -**NOT for:** -- Login, config parsing, or one-shot command handlers (prefer clarity there) -- Style/convention questions (use `csharp-best-practices` instead) - ---- - -## Iron Rule: Measure First - -**NEVER optimize without profiling data.** - -Guessing which code is slow is wrong more often than right. Measure, change, -re-measure. If you cannot show a before/after number, the optimization is not -justified. - -| Rationalization | Reality | -|-----------------|---------| -| "This is obviously slow" | Obvious to you is not obvious to the JIT. Measure. | -| "I'll profile later" | Later never comes. Profile now or don't optimize. | -| "It's just one allocation" | On a 20 TPS tick, one allocation = 20 per second = GC pressure. Measure. | -| "AggressiveInlining everywhere" | The JIT already inlines small methods. Prove it helps before adding. | - ---- - -## MCC Hot-Path Map - -Know which code runs at which frequency before deciding where to invest: - -| Frequency | Key paths (actual files) | Priority | -|---|---|---| -| Per-packet (100s/sec) | `Protocol/Handlers/Protocol18.cs` HandlePacket, `Protocol/Handlers/DataTypes.cs` ReadNext* | **High** | -| Per-tick (20/sec) | `Physics/PlayerPhysics.cs` Tick, `Physics/CollisionDetector.cs` Collide, ChatBot `Update()` | **High** | -| Per-chunk-load | `Protocol/Handlers/Protocol18Terrain.cs` ProcessChunkColumnData, ReadBlockStatesField | Medium | -| Per-pathfind | `Mapping/Movement.cs` CalculatePath (A*) | Medium | -| Per-connection | Login, registry sync, config | Low | -| Per-user-action | Commands, chat | Low | - ---- - -## Profiling Recipes - -### 1. Live GC monitoring - -```bash -dotnet-counters ps # find MinecraftClient PID -dotnet-counters monitor --process-id \ - --counters System.Runtime[gen-0-gc-count,gen-1-gc-count,gen-2-gc-count,alloc-rate] -``` - -Healthy idle MCC: near-zero Gen-1/Gen-2 collections. Frequent Gen-0 during idle -means a hot-path allocation needs attention. - -### 2. Allocation tracking - -```bash -dotnet-trace collect --process-id \ - --providers Microsoft-Windows-DotNETRuntime:0x1:5 -``` - -Open `.nettrace` in PerfView to find top-allocated types and call stacks. - -### 3. Isolated benchmarks (BenchmarkDotNet) - -Extract the hot method, add `[MemoryDiagnoser]`. Key columns: **Mean**, -**Allocated**, **Gen0**. - ---- - -## Allocation Reduction (Highest Impact) - -Reducing GC pressure directly reduces latency spikes in a long-running client. - -### Pattern: Reuse per-tick buffers - -```csharp -// BEFORE: new List every tick (20 allocations/sec) -var result = new List(); - -// AFTER: thread-local reuse (0 allocations/sec) -[ThreadStatic] private static List? t_buf; -var result = t_buf ??= new List(64); -result.Clear(); -``` - -`[ThreadStatic]` works when single-threaded and non-reentrant (physics tick). -If reentrant: use `ObjectPool`. If cross-thread: use `ArrayPool`. - -### Pattern: stackalloc for small fixed buffers - -MCC already does this in `DataTypes.cs` for endian-swapped reads: - -```csharp -Span rawValue = stackalloc byte[8]; -for (int i = 7; i >= 0; --i) rawValue[i] = cache.Dequeue(); -return BitConverter.ToDouble(rawValue); -``` - -Rules: under 512 bytes, known size at compile time, never inside loops or recursion. - -### Pattern: Span slicing instead of array copies - -```csharp -// BEFORE: allocates -byte[] sub = new byte[length]; -Array.Copy(source, offset, sub, 0, length); - -// AFTER: zero-copy -ReadOnlySpan sub = source.AsSpan(offset, length); -``` - -Critical in packet parsing where many fields are sliced from one buffer. - ---- - -## Hot-Path Tuning - -### MethodImpl attributes - -MCC uses `[MethodImpl]` on its hottest paths. Match the attribute to the method: - -| Attribute | When | MCC examples | -|---|---|---| -| `AggressiveInlining` | Tiny methods (< ~32 bytes IL), called millions of times | `Vec3d.Add`, `Aabb.Intersects`, `Chunk.SetWithoutCheck` | -| `AggressiveOptimization` | Larger critical-path methods | `ReadBlockStatesField`, `ProcessChunkColumnData` | -| Both | Medium methods, very high frequency | `DataTypes.ReadNextVarInt`, `ReadDataReverse` | -| Neither | Infrequent code | Login, config, commands | - -**Do not scatter `AggressiveInlining` without profiling evidence.** The JIT -already inlines small methods. - -### BinaryPrimitives over BitConverter - -```csharp -// BEFORE: manual endian swap -(buf[0], buf[3]) = (buf[3], buf[0]); -int val = BitConverter.ToInt32(buf); - -// AFTER: direct big-endian read, no branch -int val = BinaryPrimitives.ReadInt32BigEndian(buf); -``` - -### MemoryMarshal for bulk reads - -Already used in chunk decoding for zero-copy packed-long reads: -```csharp -ReadOnlySpan longs = MemoryMarshal.Cast(entryData); -``` - ---- - -## Data Structure Selection - -### Frozen collections for palettes - -Palette maps are built once and read millions of times. `FrozenDictionary` -gives ~50% faster reads than `Dictionary`: - -```csharp -private static readonly FrozenDictionary s_palette = - new Dictionary { ... }.ToFrozenDictionary(); -``` - -Apply to: `BlockPalettes/*.cs`, `EntityPalettes/*.cs`, `ItemPalettes/*.cs`, -`PacketPalettes/*.cs`, any `static readonly Dictionary` populated once. - -### PriorityQueue for A* - -`Movement.cs` has a custom `BinaryHeap`. The built-in `PriorityQueue` (.NET 6+) is well-optimized and avoids maintenance burden. - -### ConcurrentDictionary sizing - -Pre-size `World.chunks` to avoid rehashing: -```csharp -new ConcurrentDictionary<(int, int), ChunkColumn>( - concurrencyLevel: Environment.ProcessorCount, capacity: 1024); -``` - ---- - -## Threading - -### Minimize lock scope - -Copy data out under the lock, process outside: -```csharp -List snapshot; -lock (_lock) { snapshot = [.. _items]; } -foreach (var item in snapshot) ExpensiveProcess(item); -``` - -### Batch InvokeOnMainThread - -Each `InvokeOnMainThread()` call blocks until the main thread runs it. -In loops, batch into a single call: -```csharp -handler.InvokeOnMainThread(() => -{ - foreach (var entity in entities) UpdateEntity(entity); -}); -``` - -### Channel\ over BlockingCollection\ - -Lower overhead, async-friendly: -```csharp -var ch = Channel.CreateUnbounded<(int Id, Memory Data)>( - new UnboundedChannelOptions { SingleReader = true }); -``` - ---- - -## Common Optimization Anti-Patterns - -These are things agents (and humans) rationalize doing. Every one of them -makes performance worse or wastes effort. - -| Anti-pattern | Why it's wrong | -|---|---| -| Adding `AggressiveInlining` to large methods | Bloats call sites, causes more cache misses, makes code *slower* | -| Optimizing login/config code | Runs once per session; clarity matters more than speed | -| Using `ConcurrentDictionary` where a plain `Dictionary` + lock suffices | Concurrent overhead on uncontested paths costs more than a lock | -| Replacing LINQ with manual loops on cold paths | No measurable gain, worse readability | -| Caching mutable state to avoid re-reads | Stale cache bugs are harder to diagnose than the perf hit | -| `Task.Result` / `.Wait()` on hot paths | Deadlock risk and thread-pool starvation | - ---- - -## Pre-Commit Checklist - -ALWAYS verify before submitting a performance change: - -- [ ] Hot path identified with profiling data, not guesswork -- [ ] Before/after measurements recorded (allocation count, throughput, or latency) -- [ ] No new allocations inside per-tick or per-packet methods -- [ ] `[MethodImpl]` attributes match method call frequency and IL size -- [ ] Frozen collections used for any static lookup table -- [ ] Lock scopes contain no I/O or expensive work -- [ ] No `Task.Result`, `.Wait()`, or `GetAwaiter().GetResult()` on hot paths -- [ ] Thread safety preserved (checked existing lock/concurrent patterns) -- [ ] Optimization comments explain non-obvious choices -- [ ] Code still compiles and passes all existing checks diff --git a/.skills/dotnet-performance-profiling-and-optimization/SKILL.md b/.skills/dotnet-performance-profiling-and-optimization/SKILL.md new file mode 100644 index 00000000..ec1da9a2 --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/SKILL.md @@ -0,0 +1,342 @@ +--- +name: dotnet-performance-profiling-and-optimization +description: >- + Use when a .NET process is slow, hung, memory-heavy, or deadlocked, or when + analyzing C#/ASP.NET Core code for performance anti-patterns across memory, + async, LINQ, database, JSON, caching, DI, concurrency, HttpClient, exceptions, + response, strings, startup, and metrics. +metadata: + category: technique + triggers: + - dotnet-counters + - dotnet-trace + - dotnet-dump + - dotnet-gcdump + - dotnet-stack + - benchmarkdotnet + - allocations + - gc pressure + - memory leak + - hot path + - linq + - stackalloc + - span + - boxing + - heap + - latency + - throughput + - slow + - hang + - deadlock + - optimize + - performance + - async + - caching + - di lifetime + - ef core + - cosmosdb + - json serialization + - httpclient + - middleware +version: 1.1.0 +platform: ".NET 8 and .NET 10 (no .NET 9 projects in scope)" +--- + +# .NET Performance: Diagnostic & Code Review + +Unified C#/.NET performance skill targeting **.NET 8 and .NET 10**. Two modes: live process diagnostics (Mode A) and static code optimization review with fixes (Mode B). + +## Step 0 — Detect the target framework + +Before recommending APIs, follow `../../references/detect-target-framework.md`. Many .NET 9+ APIs (`HybridCache`, `MemoryExtensions.Split` for spans, `Dictionary.GetAlternateLookup`, `params ReadOnlySpan`) do **not** exist on .NET 8 — the references below mark the floor for each pattern, and you must downgrade to the .NET 8 fallback when the target is `net8.0`. Stephen Toub's posts are the primary benchmark source: +[Performance Improvements in .NET 8](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/) · +[Performance Improvements in .NET 10](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-10/). + +## References + +Load on demand: +- [references/memory-model-gc.md](references/memory-model-gc.md) — stack vs heap, generations, LOH, boxing, GC tuning +- [references/code-patterns.md](references/code-patterns.md) — LINQ, Span/Memory, stackalloc, structs, boxing, pooling, strings (conceptual framing) +- [references/categories.md](references/categories.md) — 14 optimization category definitions with checks and grep patterns (Mode B spine) +- [references/grep-patterns.md](references/grep-patterns.md) — consolidated anti-pattern grep library for Phase 1 scanning +- [references/measurement-guide.md](references/measurement-guide.md) — BenchmarkDotNet, k6, dotnet-counters, KPI targets, CI/CD + +Pattern catalogs (with measured impact numbers, ❌/✅ pairs, and per-topic Detection recipes): +- [references/critical-patterns.md](references/critical-patterns.md) — 17 🔴 patterns: deadlocks, order-of-magnitude regressions, excessive allocations +- [references/async-patterns.md](references/async-patterns.md) — sync-over-async, ValueTask hot paths, Channels, false sharing +- [references/memory-and-strings.md](references/memory-and-strings.md) — `u8` literals, `Span.Split`/`TryWrite`, compound `+=`, chained `.Replace()` +- [references/collections-and-linq.md](references/collections-and-linq.md) — `FrozenDictionary`, `GetAlternateLookup`, `CollectionsMarshal.GetValueRefOrAddDefault`, hoisting static data +- [references/regex-patterns.md](references/regex-patterns.md) — `[GeneratedRegex]`, `IsMatch`, `EnumerateMatches`, `NonBacktracking` +- [references/io-and-serialization.md](references/io-and-serialization.md) — `HttpCompletionOption.ResponseHeadersRead`, `useAsync` `FileStream`, `Memory` overloads +- [references/structural-patterns.md](references/structural-patterns.md) — sealed-class devirtualization (absence pattern, scale-based severity) + +Reference loading guide for Mode B by signal: + +| Signal in Code | Load | +|---|---| +| `async`, `await`, `Task`, `ValueTask` | `async-patterns.md` | +| `Span<`, `Memory<`, `stackalloc`, `string.Substring`, `+=` in loops, `params` | `memory-and-strings.md` | +| `Regex`, `[GeneratedRegex]`, `Regex.Match`, `RegexOptions.Compiled` | `regex-patterns.md` | +| `Dictionary<`, `List<`, `.ToList()`, LINQ chains, `static readonly Dictionary<` | `collections-and-linq.md` | +| `JsonSerializer`, `HttpClient`, `Stream`, `FileStream` | `io-and-serialization.md` | +| Any code review on a hot path | always check `critical-patterns.md` first | +| Codebase-wide scans (sealed classes, static `Dictionary` → `FrozenDictionary`) | `structural-patterns.md` | + +## Iron Rule + +**Always measure first, change second, and re-measure third.** + +Never claim an optimization without before/after evidence from the same scenario. + +| Rationalization | Reality | +|---|---| +| "This is obviously slow" | The runtime, JIT, and libraries often invalidate intuition. | +| "struct means stack" | Value types are stored inline — not always on the stack. | +| "All LINQ is slow" | .NET 9+ improved many LINQ paths. Measure before rewriting. | +| "GC.Collect will fix it" | Forced collection treats symptoms, not cause. | +| "Too small to matter" | MEDIUM+ impact is cumulative across the request pipeline. | +| "I'll change the DI lifetime while I'm here" | DI lifetime changes require explicit user approval. | +| "Need to refactor to optimize" | Optimization fixes must be surgical. Refactoring is a separate task. | +| "Tests pass so fix is correct" | Tests passing = behavior preserved. Still verify the metric improved. | + +## Mode Selection + +| Situation | Mode | +|---|---| +| Live process: slow, high CPU/memory, hung, deadlocked, GC pauses | **A – Diagnostic** | +| Asking how GC, heap, boxing, or LINQ overhead works in .NET | **A – Diagnostic** (conceptual) | +| Code to analyze for anti-patterns, then fix | **B – Code Review** | +| Both a running process AND code to fix | Start with **A**, then **B** on hot paths identified | + +**Not for:** Visual Studio, Rider, PerfView, speedscope, or GUI-first workflows. + +--- + +## Mode A: Diagnostic (Live Process) + +### Investigation Order + +1. **`dotnet-counters`** — always start here for live triage. +2. **`dotnet-stack`** — immediately if process is stuck, hung, or deadlocked. +3. **`dotnet-trace`** — if CPU or allocation hot paths matter. +4. **`dotnet-gcdump`** — if heap growth matters more than call paths. +5. **`dotnet-dump`** — if SOS heap inspection or postmortem analysis is needed. +6. After live evidence identifies a candidate routine, apply patterns from [references/code-patterns.md](references/code-patterns.md) and [references/memory-model-gc.md](references/memory-model-gc.md). +7. Use BenchmarkDotNet if the change is isolated and needs microbenchmark comparison. +8. Re-run the original live capture to prove the real workload improved. + +### CLI Tool Selection + +| Question | Tool | What it answers | +|---|---|---| +| Is the process allocating, GCing, or saturating CPU? | `dotnet-counters` | Live counters and trend direction | +| Is the process hung or deadlocked right now? | `dotnet-stack` | Current managed stack snapshot | +| Which call paths consume CPU or allocate heavily? | `dotnet-trace` | Sampled execution and runtime events | +| Which object types dominate managed heap? | `dotnet-gcdump` | Heap composition and type totals | +| Need SOS heap inspection or thread state? | `dotnet-dump` | Full dump plus CLI analysis | +| Did a code change improve an isolated routine? | BenchmarkDotNet | Reproducible microbenchmark comparison | + +### Minimal CLI Commands + +```bash +dotnet-counters monitor -p --counters System.Runtime +dotnet-counters monitor -n --counters System.Runtime,Microsoft.AspNetCore.Hosting +dotnet-stack report -p +dotnet-trace collect -p --duration 00:00:30 +dotnet-trace report topN +dotnet-gcdump collect -p +dotnet-gcdump report +dotnet-dump collect -p --type Heap +dotnet-dump analyze -c "dumpheap -stat" -c "exit" +``` + +Minimal BenchmarkDotNet pattern: +```csharp +[MemoryDiagnoser] +[SimpleJob(RuntimeMoniker.Net90)] +public class CandidateBench +{ + [Benchmark(Baseline = true)] + public int Original() => OriginalImpl(); + + [Benchmark] + public int Candidate() => CandidateImpl(); +} +``` +```bash +dotnet run -c Release +``` + +### Reference Loading Guide + +| User question | Load first | +|---|---| +| "How do stack and heap really work in .NET?" | `references/memory-model-gc.md` | +| "Why is GC pausing or why is LOH churn hurting us?" | `references/memory-model-gc.md` | +| "How should I optimize this LINQ?" | `references/code-patterns.md` | +| "Can I move this to the stack with stackalloc or Span?" | `references/code-patterns.md` | +| "Should this be a struct, ref struct, readonly struct, or class?" | Both | +| "Why is this boxing?" | `references/code-patterns.md` | + +### Diagnostic Output + +Report: measured symptom + evidence (counter values, trace hotspots, heap stats) · chosen tool and why · relevant tradeoff (allocation vs copy, deferred vs eager, stack vs pool) · before/after result, or explicitly state if still unverified. + +--- + +## Mode B: Code Review (Static Analysis) + +### Target + +`$ARGUMENTS` is the optimization target: +- **File path**: Analyze that file and its close dependencies. +- **Directory**: Analyze all C# files in that directory. +- **"all"**: Scan the solution with Grep, deep-dive the worst offenders. +- **`--fix`** anywhere: Skip confirmation and apply fixes after analysis. +- **Empty**: Check `git diff --name-only HEAD~5 -- '*.cs'` for recently changed files. If none, ask the user. + +### Phase 1: Discovery + +1. **Glob** to find `.cs` files matching the target. +2. **Read** file contents. For files under 500 lines, read the whole file first — visual inspection catches patterns faster than grep, then grep confirms counts. +3. **Detect signals** in the code (async, Span, Regex, Dictionary, JsonSerializer, etc.) and **load matching pattern catalogs** from the per-topic references listed at the top of this file. +4. **Grep** for anti-patterns. Run the recipes in [references/grep-patterns.md](references/grep-patterns.md) plus the per-topic Detection sections in the catalogs you loaded. +5. **Emit a scan execution checklist** before classifying — list each recipe and the hit count. **0 hits is valid and valuable** (confirms good practice). + +### Phase 2: Analysis (Read-Only) + +Check each file against all 14 categories. Record per finding: **file path, line number, current pattern, recommended pattern, impact level, category**. + +Read [references/categories.md](references/categories.md) for detailed check definitions. + +#### Compound Allocation Check + +Single-line grep recipes miss multi-allocation patterns. After running scan recipes, look for: + +1. **Branched `.Replace()` chains** — methods that call `.Replace()` across multiple `if/else` branches. Report total allocation count across all branches, not just per-line. +2. **Cross-method chaining** — public method A calls B (which does 3 regex replaces) then calls C (which allocates). Report the total chain cost as one finding, not per-method. +3. **Compound `+=` with embedded allocating calls** — `result += $"...{Foo().ToLower()}"` is 2+ allocations (interpolation + `ToLower` + concatenation). Flag the compound cost, not just `.ToLower()`. +4. **`string.Format` specificity** — distinguish resource-loaded format strings (not fixable) from compile-time literal format strings (fixable with interpolation). Enumerate only the actionable sites. + +#### Cross-File Consistency Check + +If an optimized pattern is found in one file, check whether sibling files (same directory, same interface, same base class) use the un-optimized equivalent. Flag as MEDIUM with the optimized file as evidence. + +#### Verify-the-Inverse Rule + +For absence patterns (e.g., unsealed classes, static `Dictionary` not converted to `FrozenDictionary`, `RegexOptions.Compiled` not migrated to `[GeneratedRegex]`), always count both sides and report the **N-of-M ratio**, not just the count of bad cases. The ratio determines severity: + +- 0/185 sealed → systematic codebase-wide issue +- 12/15 sealed → consistency fix on the remaining 3 +- 50/100 sealed → mid-migration; flag the laggards + +| # | Category | Code | Focus | +|---|---|---|---| +| 1 | Memory Allocation | MEM | Span, ArrayPool, pooling, stackalloc, string optimization, collections | +| 2 | Async Anti-Patterns | ASYNC | Blocking, ValueTask, CancellationToken, IAsyncEnumerable, Channel | +| 3 | LINQ Inefficiencies | LINQ | Count vs Any, multiple enumeration, filter/project order | +| 4 | Database | DB | EF Core, CosmosDB patterns, N+1, partition keys, RU cost | +| 5 | JSON Serialization | JSON | Options reuse, source generators, serializer boundaries | +| 6 | Caching | CACHE | HybridCache, stampede protection, output cache, size limits | +| 7 | DI Lifetimes | DI | Captive dependencies, lifetime mismatches, IOptions patterns | +| 8 | Concurrency | CONC | Lock contention, throttling, thread safety, Channel patterns | +| 9 | HttpClient | HTTP | IHttpClientFactory, resilience, response disposal | +| 10 | Exception Control Flow | EXC | Try/catch for expected paths, broad catches | +| 11 | Response Optimization | RESP | Compression, pagination, ETags | +| 12 | String Optimization | STR | Concatenation loops, ToLower/ToUpper, String.Format | +| 13 | Startup & Pipeline | STARTUP | Middleware ordering, compression, health checks, PGO | +| 14 | Metrics & Observability | METRICS | IMeterFactory, histograms, tag cardinality, OpenTelemetry | + +### Phase 3: Report + +``` +## Performance Analysis Report + +### Summary +- Files analyzed: N +- Total findings: N +- Critical (HIGH): N | Moderate (MEDIUM): N | Minor (LOW): N + +### Findings by Category + +#### [CATEGORY_NAME] (N findings) + +| # | Impact | File:Line | Issue | Recommendation | +|---|--------|-----------|-------|----------------| +| 1 | HIGH | `path/File.cs:42` | Current anti-pattern | Recommended fix | + +### Prioritized Action List +1. [HIGH] Fix blocking async calls in X — thread pool starvation risk +2. [MEDIUM] Switch to ArrayPool in Z — reduces GC pressure on upload path +``` + +**Impact levels:** +- **HIGH**: Measurable gain, prevents starvation, fixes correctness, reduces P95 latency. Examples: blocking async, missing CancellationToken, N+1 queries, captive dependencies. +- **MEDIUM**: Reduces allocations, GC pressure, or unnecessary work. Examples: ArrayPool, StringBuilder, FrozenDictionary. +- **LOW**: Minor improvements, cold-path optimizations. Examples: initial collection capacity, Count() vs Any(). + +**Scale-based severity escalation.** When the same anti-pattern appears across many instances, escalate: + +- 1–10 instances → report at the pattern's base severity +- 11–50 instances → escalate LOW patterns to MEDIUM +- 50+ instances → MEDIUM with elevated priority; flag as a codebase-wide systematic issue + +Always report **exact counts from scan recipes**, not estimates. Group findings by severity (HIGH → MEDIUM → LOW), not by file. Merge related findings that share the same fix (e.g., all `.ToLower()` calls in one finding, not split per file). + +### Phase 4: Optimization (Apply Fixes) + +After presenting the report: +- If `--fix` in `$ARGUMENTS`, proceed directly. +- Otherwise ask: "Would you like me to apply these optimizations? I'll work one category at a time, starting with HIGH impact. You can specify categories or findings (e.g., 'fix ASYNC and MEM' or 'fix #1, #3')." + +**Before any fix:** +1. **Read actual code context** around the grep match — false positives exist (`.Result` in `Task.FromResult` is NOT blocking). +2. Confirm the finding is real. If uncertain, flag as "needs manual review." + +**Applying fixes:** +1. One category at a time, highest impact first. Use Edit tool with brief before/after summary. +2. After each category: `dotnet build --no-restore` +3. After all changes: `dotnet test` +4. If build or tests fail, diagnose before continuing. + +--- + +## Analyzer Radar + +- `CA1826`, `CA1827`, `CA1829`, `CA1836`, `CA1851`, `CA1860` — LINQ and enumeration +- `CA1845`, `CA1846`, `CA1858` — string and span-friendly APIs +- `CA1834`, `CA1865`–`CA1867` — StringBuilder char overloads +- `CA1870` — cached `SearchValues` + +These are clues, not goals. Apply where measured hot paths justify it. + +## Pattern Guardrails + +- Do not say "put it on the stack" as a blanket goal. Explain lifetime, copies, boxing, and escape rules. +- Do not suggest `stackalloc` for unbounded sizes, large buffers, or loop-carried allocations. +- Do not recommend `Span` for data that crosses `await`, escapes to the heap, or lives in object fields — use `Memory`. +- Do not recommend converting every `class` to a `struct` — large, mutable, or frequently boxed types often get worse. +- Do not blanket-rewrite LINQ to loops — use analyzer-backed fixes first. +- Do not recommend pooling without ownership rules — returned pooled arrays must not be reused by the caller. +- Do not recommend `GC.Collect()` except for rare justified lifecycle boundaries with measurement. + +## Red Flags — STOP and Confirm + +Stop and ask before: +- Changing `Program.cs` or the middleware pipeline +- Adding a new NuGet package +- Changing any DI service lifetime registration +- Replacing the serializer in the HTTP pipeline +- Modifying API response shapes or route patterns +- Changing error handling patterns + +## Constraints + +- NEVER add NuGet packages without user approval +- NEVER change DI lifetimes without explaining implications and getting confirmation +- NEVER modify `Program.cs` or middleware pipeline without explicit approval +- NEVER change API contracts, route patterns, or response shapes +- ALWAYS preserve existing tests; update only if behavior intentionally changes +- ALWAYS use the Grep tool for searches, never bash `grep` or `find` + +Consult the project's CLAUDE.md or AGENTS.md for project-specific rules and constraints. diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/async-patterns.md b/.skills/dotnet-performance-profiling-and-optimization/references/async-patterns.md new file mode 100644 index 00000000..88cb211f --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/async-patterns.md @@ -0,0 +1,112 @@ +# Async & Concurrency Patterns + +### Don't Expose Async Wrappers for Sync Methods +🟡 **AVOID** wrapping sync methods with `Task.Run` in libraries | .NET Core+ + +❌ +```csharp +public Task ComputeHashAsync(byte[] data) => + Task.Run(() => ComputeHash(data)); +``` +✅ +```csharp +public int ComputeHash(byte[] data) { /* CPU-bound work */ } +// Consumer decides: var hash = await Task.Run(() => lib.ComputeHash(data)); +``` + +**Impact: Eliminates unnecessary thread pool queue/dequeue overhead per call.** + +### Don't Expose Sync Wrappers for Async Methods +🟡 **AVOID** creating sync wrappers that block on async implementations | .NET Core+ + +❌ +```csharp +public string GetData() => GetDataAsync().Result; +``` +✅ +```csharp +public async Task GetDataAsync() { /* ... */ } +``` + +**Impact: Prevents deadlocks and thread pool starvation from hidden sync-over-async blocking.** + +### Use ValueTask for Hot Paths with Frequent Sync Completion +🟡 **DO** use `ValueTask` on hot paths where sync completion is common | .NET Core 2.1+ + +❌ +```csharp +public async Task ReadAsync(Memory buffer) +{ + if (_bufferedCount > 0) + return ReadFromBuffer(buffer.Span); + return await ReadAsyncCore(buffer); +} +``` +✅ +```csharp +public ValueTask ReadAsync(Memory buffer) +{ + if (_bufferedCount > 0) + return new ValueTask(ReadFromBuffer(buffer.Span)); + return new ValueTask(ReadAsyncCore(buffer)); +} +``` + +**Impact: Eliminates Task\ allocation on synchronous completion — the struct stores results inline.** + +### Use Channels for Producer/Consumer +🟡 **DO** use `System.Threading.Channels` for producer-consumer patterns | .NET Core 3.0+ + +❌ +```csharp +var queue = new BlockingCollection(); +var item = queue.Take(); +``` +✅ +```csharp +var channel = Channel.CreateUnbounded(); + +// Producer +await channel.Writer.WriteAsync(item); + +// Consumer +await foreach (var item in channel.Reader.ReadAllAsync()) + Process(item); +``` + +**Impact: ~25% faster, ~95% fewer GC collections vs manual approaches.** + +### Avoid False Sharing with Thread-Local State +🟡 **AVOID** adjacent mutable fields written by different threads | .NET 7+ + +❌ +```csharp +class SharedCounters +{ + public long Counter1; + public long Counter2; +} +``` +✅ +```csharp +[StructLayout(LayoutKind.Explicit, Size = 128)] +struct PaddedCounter +{ + [FieldOffset(0)] public long Value; +} +``` + +**Impact: Eliminates cross-core cache invalidation — can improve multi-threaded throughput by 10x+.** + +## Detection + +Scan recipes for async anti-patterns. Run these and report exact counts. + +```bash +# async void methods (correctness issue — crashes on exception) +grep -rn --include='*.cs' 'async void' --exclude-dir=bin --exclude-dir=obj . | grep -v 'event' | wc -l +``` + +### Patterns Requiring Manual Review + +- **Sync-over-async** (`.Result`, `.Wait()`): `.Result` matches any property named Result — needs type context to confirm it's `Task.Result` diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/categories.md b/.skills/dotnet-performance-profiling-and-optimization/references/categories.md new file mode 100644 index 00000000..a04416a4 --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/categories.md @@ -0,0 +1,297 @@ +# Optimization Category Definitions + +Complete check definitions for all 14 optimization categories. Each category lists specific checks to perform, with grep patterns at the end for automated scanning. + +--- + +## Category 1: Memory Allocation (MEM) + +Checks: + +- **Unnecessary string allocations**: `Substring()` calls that could use `Span` or `AsSpan()`. String concatenation with `+` inside loops (should use `StringBuilder` or `string.Create`). +- **Missing ArrayPool/MemoryPool usage**: `new byte[...]` for temporary buffers, especially in I/O paths. Should use `ArrayPool.Shared.Rent()` with try/finally Return. +- **Large Object Heap triggers**: Allocations of objects >= 85,000 bytes (arrays, large strings, `MemoryStream` without `RecyclableMemoryStream`). +- **Missing object pooling**: Frequently created/disposed objects (like `StringBuilder`) that could use `ObjectPool`. +- **Record class vs record struct**: Small, immutable DTOs that are `record class` but could be `readonly record struct` to avoid heap allocation. +- **Boxing**: Value types cast to `object` or non-generic interfaces. Structs without `IEquatable`. +- **Collection inefficiencies**: `new List()` or `new Dictionary()` without initial capacity when size is known or estimable. Double-lookup patterns (`TryGetValue` + indexer set) that could use `CollectionsMarshal.GetValueRefOrAddDefault`. Read-only dictionaries populated once that could be `FrozenDictionary` (.NET 8+). +- **stackalloc for small buffers**: Flag `new byte[N]` where N <= 256 in synchronous methods. Recommend `Span buffer = stackalloc byte[N]` for short-lived stack allocation with zero GC pressure. +- **string.Create for pre-sized construction**: When output string length is known at call time, `string.Create(length, state, action)` avoids intermediate allocations by writing directly into the final buffer. +- **Interpolated strings in logging** *(Impact: LOW — only matters when the log level is inactive at runtime)*: `_logger.LogXxx($"...")` allocates the interpolated string even when the log level is disabled. Use structured logging parameters `_logger.LogXxx("Message {Param}", value)` or the `[LoggerMessage]` source generator for high-frequency hot paths. +- **ReadOnlySpan for string parsing**: Flag `.Split()` and `.Substring()` in hot paths where `AsSpan()` slicing avoids allocation. Common in string parsing, normalization, and URL handling. +- **CollectionsMarshal.GetValueRefOrAddDefault**: Flag the TryGetValue + indexer set double-lookup pattern. Single-lookup alternative reduces dictionary operations by 50%. +- **RecyclableMemoryStream**: Flag `new MemoryStream()` in I/O-heavy paths (blob upload/download, log writes). `Microsoft.IO.RecyclableMemoryStream` pools internal buffers and avoids LOH fragmentation. + +Grep patterns: +``` +\.Substring\( +new byte\[ +new MemoryStream\(\) +new StringBuilder\(\) +new List<.*>\(\) +new Dictionary<.*>\(\) +_logger\.Log(Debug|Trace|Information|Warning|Error|Critical)\(\$" +\.Split\( +``` + +--- + +## Category 2: Async Anti-Patterns (ASYNC) + +Checks: + +- **Blocking async calls**: `.Result`, `.Wait()`, `.GetAwaiter().GetResult()` -- causes thread pool starvation. CRITICAL finding. +- **async void**: Methods declared `async void` (except event handlers) -- swallows exceptions and cannot be awaited. +- **Missing CancellationToken**: Async methods that do not accept or propagate `CancellationToken`. Every async method should have `CancellationToken cancellationToken = default`. +- **Missing ValueTask**: Methods that frequently return cached/synchronous results but use `Task` instead of `ValueTask`. Look for `if (cache.TryGetValue(...)) return Task.FromResult(...)`. Benchmark data: ValueTask 7.41ns/0B vs Task 15.23ns/72B. +- **Sequential awaits that could parallelize**: Multiple independent `await` calls in sequence that could use `Task.WhenAll`. +- **Async over sync**: Methods that use `Task.Run` to wrap synchronous code in an ASP.NET Core context (unnecessary and wastes a thread). +- **ConfigureAwait(false) in library projects**: LOW/INFO level. Not required in ASP.NET Core (no sync context), but recommended if library assemblies may be reused outside ASP.NET Core. +- **IAsyncEnumerable opportunities**: Methods returning `Task>` where the caller iterates sequentially. If the caller processes items one-by-one, `IAsyncEnumerable` reduces memory and improves time-to-first-byte. +- **Channel verification**: Verify `BoundedChannelOptions` has `SingleReader`/`SingleWriter` hints set for performance. Verify `CancellationToken` is propagated on `WriteAsync` and `ReadAllAsync`. + +Grep patterns: +``` +\.Result[^s] +\.Wait\(\) +\.GetAwaiter\(\)\.GetResult\(\) +async void +Task\.Run\( +\.WriteAsync\([^,]*\) +``` + +--- + +## Category 3: LINQ Inefficiencies (LINQ) + +Checks: + +- **Count() > 0 or Count() == 0**: Should use `Any()` or `!Any()`. `Count()` may enumerate the entire collection. +- **Multiple enumeration**: An `IEnumerable` variable used more than once without materializing. +- **Filter after projection**: `.Select(...).Where(...)` -- should filter first, then project. +- **ToList() too early**: `.ToList().Where(...)` or `.ToList().Select(...)` -- materializes before filtering. +- **OrderBy before Where**: Sorting the full collection before filtering it down. + +Grep patterns: +``` +\.Count\(\) [><=!] +\.ToList\(\)\.Where\( +\.ToList\(\)\.Select\( +\.Select\(.*\)\.Where\( +\.OrderBy.*\.Where\( +``` + +--- + +## Category 4: Database (DB) + +Check for both EF Core and CosmosDB patterns depending on what the project uses. Consult the project's CLAUDE.md or AGENTS.md for the data access strategy. + +Checks: + +- **N+1 queries**: Loops that call the database inside each iteration. +- **Missing AsNoTracking**: EF Core read-only queries without `.AsNoTracking()`. +- **Missing compiled queries**: Frequently executed EF Core queries on hot paths without `EF.CompileAsyncQuery`. +- **Full entity loading**: Fetching entire entities when only a few fields are needed (should project to DTOs). +- **Missing AsSplitQuery**: EF Core queries with multiple `.Include()` calls without `.AsSplitQuery()`. +- **CosmosDB partition key misuse**: Operations not specifying the partition key, or using cross-partition queries unnecessarily. +- **CosmosDB point reads**: Using queries instead of `ReadItemAsync` when both `id` and partition key are known. +- **RU cost awareness**: Flag discarded `ItemResponse` without logging `RequestCharge`. Recommend tracking RU cost via metrics for cost visibility. +- **Cross-partition query detection**: `GetItemLinqQueryable()` without partition key option leads to fan-out queries. Verify all LINQ queryables specify the partition key. +- **Indexing policy review**: Flag if queries filter on fields that likely lack composite indexes. +- **Redundant round-trips**: Flag patterns where a query fetches an ID, then a separate point read fetches the full document. Recommend a single query. +- **EnableContentResponseOnWrite = false**: On write operations where the response body is not needed, setting this option reduces RU cost. + +Grep patterns: +``` +\.Include\(.*\.Include\( +await.*foreach.*await.*Async +ReadItemAsync +GetItemQueryIterator +GetItemLinqQueryable +\.RequestCharge +``` + +--- + +## Category 5: JSON Serialization (JSON) + +Checks: + +- **New JsonSerializerOptions per call**: `new JsonSerializerOptions { ... }` inside method bodies -- rebuilds the metadata cache every time. Should use a static readonly instance. +- **Missing source generators**: High-throughput serialization paths without `[JsonSerializable]` source generation context. +- **Newtonsoft.Json in hot paths**: If the project uses Newtonsoft.Json for MVC, flag any hot-path internal serialization that could benefit from `System.Text.Json` with source generators. NEVER suggest replacing the controller/DTO serializer without checking the project's documented constraints. +- **System.Text.Json source generators for internal serialization**: Internal paths (database serialization, audit logs, blob metadata) that don't affect API contracts are candidates for `System.Text.Json` with source generators. +- **JsonSerializerSettings singleton**: Flag `new JsonSerializerSettings()` in method bodies. The contract resolver cache is rebuilt each time. Use a static readonly instance or inject via DI. +- **CosmosDB SDK serializer**: The Cosmos SDK supports custom serializers. `CosmosSystemTextJsonSerializer` with source generators reduces allocation on read/write operations. + +Grep patterns: +``` +new JsonSerializerOptions +JsonConvert\.Serialize +JsonConvert\.Deserialize +new JsonSerializer +new JsonSerializerSettings +``` + +--- + +## Category 6: Caching (CACHE) + +Checks: + +- **Repeated expensive calls without caching**: Service methods that call external APIs on every request without caching the result. +- **Missing HybridCache pattern**: Look for manual cache-aside patterns that could use `HybridCache` for built-in stampede protection, two-level caching (L1 memory + L2 distributed), and tag invalidation. **HybridCache requires .NET 10 (or .NET 9) — the `Microsoft.Extensions.Caching.Hybrid` package does not target .NET 8.** On .NET 8 implement `IMemoryCache` (L1) + `IDistributedCache` (L2) manually with a `SemaphoreSlim` keyed by cache key for stampede protection. See [HybridCache GA announcement](https://devblogs.microsoft.com/dotnet/hybrid-cache-is-now-ga/). +- **Static data fetched repeatedly**: Configuration, taxonomies, or lookup data fetched from external APIs that rarely changes. +- **Missing output caching**: Read-only GET endpoints that return the same data for all callers -- candidates for `[OutputCache]`. +- **HybridCache upgrade path (.NET 10 only)**: Manual L1+L2 caching with `SemaphoreSlim` stampede protection can migrate to `HybridCache` `GetOrCreateAsync` with built-in stampede protection and tag invalidation **when the project target is `net10.0`**. On `net8.0` the manual pattern is the correct end state, not a stepping stone. +- **Cache stampede detection**: Cache-aside without locking -- `TryGetValue` followed by expensive call followed by `Set` without `SemaphoreSlim` or equivalent stampede guard. +- **Tag-based invalidation with RemoveByTagAsync**: When using HybridCache, group related entries by tag for efficient bulk invalidation instead of tracking individual keys. +- **IMemoryCache size limits**: Flag `AddMemoryCache()` without `SizeLimit` in `MemoryCacheOptions`. Unbounded in-memory cache can grow until the process runs out of memory. + +Grep patterns: +``` +GetAsync\( +SendAsync\( +_cache\.TryGetValue +DistributedCache +AddMemoryCache\(\) +``` + +--- + +## Category 7: DI Lifetime Issues (DI) + +Consult the project's CLAUDE.md or AGENTS.md for the expected DI lifetime registrations. + +Checks: + +- **Transient services that should be Singleton**: Stateless, thread-safe services registered as Transient that have no per-request state (could be Singleton for zero allocation). +- **Scoped injected into Singleton**: A Scoped service captured in a Singleton constructor -- captive dependency bug. +- **IOptions vs IOptionsMonitor vs IOptionsSnapshot**: `IOptions` in Singleton services that need to react to config changes should use `IOptionsMonitor`. `IOptionsSnapshot` in Singleton is a captive dependency. + +--- + +## Category 8: Concurrency Issues (CONC) + +Checks: + +- **Lock contention**: `lock` statements that guard async operations (should use `SemaphoreSlim`). +- **Missing throttling**: Unbounded parallel calls to external APIs without `SemaphoreSlim` or concurrency limits. +- **Thread-unsafe patterns**: Shared mutable state without synchronization. `HttpContext` accessed from background threads. +- **Channel usage patterns**: If the project uses `Channel` for background tasks, verify `SingleReader`/`SingleWriter` hints are set correctly for performance. + +Grep patterns: +``` +lock\s*\( +new SemaphoreSlim +HttpContext.*Task\.Run +``` + +--- + +## Category 9: HttpClient Misuse (HTTP) + +Checks: + +- **new HttpClient()**: Direct instantiation instead of `IHttpClientFactory`. Causes socket exhaustion and DNS caching issues. +- **Missing resilience**: HTTP calls without retry/circuit-breaker policies. Verify `Microsoft.Extensions.Http.Resilience` or Polly is applied to external API clients. +- **Missing response disposal**: `HttpResponseMessage` not disposed after reading. + +Grep patterns: +``` +new HttpClient\( +new HttpClient\b +``` + +--- + +## Category 10: Exception-Driven Control Flow (EXC) + +Checks: + +- **Try/catch for expected paths**: Using exceptions for normal control flow (e.g., catching `KeyNotFoundException` instead of `TryGetValue`, catching `FormatException` instead of `TryParse`). +- **Broad catch blocks**: `catch (Exception)` that swallow errors or use exceptions as branching logic. +- **Exception allocation in hot paths**: Throwing exceptions on paths that execute frequently. + +Grep patterns: +``` +catch\s*\(Exception\b +catch\s*\(KeyNotFoundException +catch\s*\(FormatException +catch\s*\(InvalidOperationException +``` + +--- + +## Category 11: Response Optimization (RESP) + +Checks: + +- **Missing compression**: No response compression middleware, or JSON responses served uncompressed. +- **Missing pagination**: Endpoints returning unbounded collections. +- **Missing ETags for conditional requests**: GET endpoints without ETag support where the data has a natural version (e.g., database ETags or row versions). + +--- + +## Category 12: String Optimization (STR) + +Checks: + +- **String concatenation in loops**: `+=` on strings inside `for`/`foreach`/`while` loops. +- **String.Format in hot paths**: Could use interpolated string handlers or `StringBuilder`. +- **Repeated string operations**: Multiple `ToLower()`/`ToUpper()` calls on the same value. Should use `StringComparison.OrdinalIgnoreCase` instead. + +Grep patterns: +``` +\+= " +\+= \$" +\.ToLower\(\) +\.ToUpper\(\) +String\.Format\( +``` + +--- + +## Category 13: Startup & Pipeline Optimization (STARTUP) + +Checks: + +- **Middleware ordering**: Verify Program.cs follows the recommended sequence: ExceptionHandler, ResponseCompression, OutputCache, Routing, RateLimiter, CORS, Authentication, Authorization, MapControllers. Incorrect ordering degrades performance (e.g., compression after routing skips static responses). +- **Response compression**: Flag missing `AddResponseCompression`/`UseResponseCompression`. Without it, all JSON responses are uncompressed. Recommend Brotli (optimal ratio) + GZip (compatibility) providers with `EnableForHttps = true`. +- **Health check optimization**: `.ShortCircuit()` (.NET 8+) bypasses the entire middleware pipeline for health endpoints. `.DisableHttpMetrics()` prevents health check traffic from skewing request duration metrics. +- **PGO/ReadyToRun**: Check .csproj for `true` (dynamic PGO for runtime hot-path optimization) and `true` (pre-compiled code for faster startup). Both should be present for production builds. +- **Warm-up pattern**: `ApplicationStarted` callback to warm expensive singletons (database connections, cache, external API health). Cold-start latency without warm-up can spike P99 for the first requests after deployment. + +Grep patterns: +``` +UseResponseCompression +AddResponseCompression +ShortCircuit +AddOutputCache +UseOutputCache +TieredPGO +PublishReadyToRun +ApplicationStarted +``` + +--- + +## Category 14: Metrics & Observability (METRICS) + +Checks: + +- **IMeterFactory vs static new Meter()**: Services should inject `IMeterFactory` from DI rather than using `new Meter(...)`. `IMeterFactory` enables testability with `MetricCollector` and proper meter lifecycle management. +- **Missing histograms**: If the project only has `Counter` instruments, recommend `Histogram` for request processing duration, external API latency, and database query duration. Histograms enable percentile analysis (P50/P95/P99). +- **Tag cardinality**: Verify metric tags have bounded cardinality. NEVER use request IDs, user IDs, or unbounded strings as metric tags. Tags like `operation_name`, `status_code`, `endpoint` are acceptable (bounded). Unbounded tags cause metric explosion and memory issues. +- **OpenTelemetry AddMeter() registration**: Verify custom meter names are registered with `.AddMeter("YourMeterName")` in the OpenTelemetry metrics configuration. Without this, custom counters are silently dropped. + +Grep patterns: +``` +new Meter\( +CreateCounter +CreateHistogram +AddMeter +\.Record\( +\.Add\( +``` diff --git a/.skills/csharp-dotnet-cli-optimization/references/code-patterns.md b/.skills/dotnet-performance-profiling-and-optimization/references/code-patterns.md similarity index 84% rename from .skills/csharp-dotnet-cli-optimization/references/code-patterns.md rename to .skills/dotnet-performance-profiling-and-optimization/references/code-patterns.md index 4e18edea..743b29f4 100644 --- a/.skills/csharp-dotnet-cli-optimization/references/code-patterns.md +++ b/.skills/dotnet-performance-profiling-and-optimization/references/code-patterns.md @@ -6,6 +6,8 @@ metadata: # Code Patterns +> **See also:** for pattern-by-pattern detection recipes with measured impact numbers and ❌/✅ pairs, see the topic catalogs: [critical-patterns.md](critical-patterns.md), [async-patterns.md](async-patterns.md), [memory-and-strings.md](memory-and-strings.md), [collections-and-linq.md](collections-and-linq.md), [regex-patterns.md](regex-patterns.md), [io-and-serialization.md](io-and-serialization.md), [structural-patterns.md](structural-patterns.md). This file covers the conceptual framing (when/why), those files cover the catalog (what/how-much). + Use this reference after a profile or benchmark identifies a hot path. Do not apply these patterns speculatively. ## Table Of Contents @@ -99,9 +101,10 @@ Keep deferred execution unless you need a snapshot, repeated traversal, indexing ### Do not blanket-rewrite LINQ to loops -- .NET 10 improved many LINQ operations substantially. +- .NET 10 improved many LINQ operations substantially through JIT array-interface devirtualisation — operations like `Skip`/`Take`/`Sum` on arrays and `ReadOnlyCollection` got roughly 50% faster *for free*. See Stephen Toub, [Performance Improvements in .NET 10](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-10/). +- On `net8.0` LINQ has the historical performance characteristics described in [Performance Improvements in .NET 8](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/) — fast paths exist for `Count`, `ToList`, `ToArray` on `ICollection`, but indexed access via `ElementAt`/`Skip`/`Take` is not as cheap as on .NET 10. - Start with analyzer-backed fixes and measurement. -- Replace LINQ with hand-written loops only when a benchmark or trace shows that the remaining cost matters. +- Replace LINQ with hand-written loops only when a benchmark or trace shows that the remaining cost matters — on either target. ### Use `TryGetNonEnumeratedCount` when count is optional diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/collections-and-linq.md b/.skills/dotnet-performance-profiling-and-optimization/references/collections-and-linq.md new file mode 100644 index 00000000..09c58b06 --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/collections-and-linq.md @@ -0,0 +1,217 @@ +# Collections & LINQ Patterns + +### Use FrozenDictionary/FrozenSet for Read-Heavy Lookup Tables +🟡 **DO** use `FrozenDictionary`/`FrozenSet` for collections created once and read many times | .NET 8+ + +❌ +```csharp +private static readonly Dictionary s_statusCodes = new() +{ + ["OK"] = 200, ["NotFound"] = 404, ["InternalServerError"] = 500 +}; +``` +✅ +```csharp +private static readonly FrozenDictionary s_statusCodes = + new Dictionary + { + ["OK"] = 200, ["NotFound"] = 404, ["InternalServerError"] = 500 + }.ToFrozenDictionary(); +``` + +**Impact: ~50% faster lookups than Dictionary, ~14x faster than ImmutableDictionary.** + +### Use Dictionary Alternate Lookup for Span-Based Keys +🟡 **DO** use `GetAlternateLookup>()` to avoid string allocation on lookups | **.NET 10 (or .NET 9) only — NOT available on .NET 8** + +❌ (allocates on every lookup; the only option on .NET 8) +```csharp +string key = headerLine.Substring(0, colonIndex); +if (s_dict.TryGetValue(key, out int value)) { /* ... */ } +``` +✅ .NET 10 / C# 14 +```csharp +var lookup = s_dict.GetAlternateLookup>(); +ReadOnlySpan key = headerLine.AsSpan(0, colonIndex); +if (lookup.TryGetValue(key, out int value)) { } +``` +✅ .NET 8 fallback — keep the allocation but minimise it +```csharp +// On net8.0 GetAlternateLookup does not exist (added in .NET 9 BCL). +// Pre-intern frequent keys, or accept the allocation. If the hot path is +// truly critical, store keys as ReadOnlyMemory and write a custom +// IEqualityComparer that compares against a span via string.Compare. +string key = headerLine.Substring(0, colonIndex); +if (s_dict.TryGetValue(key, out int value)) { /* ... */ } +``` + +**Impact: Avoids string allocation per lookup on .NET 10 — especially valuable in parser/protocol hot paths.** + +### Use CollectionsMarshal.GetValueRefOrNullRef for Lookup-and-Update +🟡 **DO** use `CollectionsMarshal.GetValueRefOrAddDefault` for dictionary update patterns | .NET 6+ + +❌ +```csharp +_counts.TryGetValue(key, out int count); +_counts[key] = count + 1; +``` +✅ +```csharp +ref int count = ref CollectionsMarshal.GetValueRefOrAddDefault(_counts, key, out _); +count++; +``` + +**Impact: ~48% faster for lookup-and-update patterns (95µs → 49µs).** + +### Use Collection Expressions [] for Zero-Allocation Span Creation +🟡 **DO** use collection expressions for `Span` targets | C# 12 / .NET 8+ + +❌ +```csharp +int[] values = new int[] { a, b, c, d }; +``` +✅ +```csharp +Span values = [a, b, c, d]; +ReadOnlySpan daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +``` + +**Impact: Zero heap allocation for span-targeted collection expressions.** + +### Use EnsureCapacity on List/Stack/Queue Before Bulk Adds +🟡 **DO** call `EnsureCapacity` before bulk insertions | .NET 6+ + +❌ +```csharp +var list = new List(); +for (int i = 0; i < 10000; i++) + list.Add(i); +``` +✅ +```csharp +var list = new List(); +list.EnsureCapacity(10000); +for (int i = 0; i < 10000; i++) + list.Add(i); +``` + +**Impact: Reduces reallocations and array copies during bulk operations.** + +### Use TryGetNonEnumeratedCount for Pre-Sizing +🟡 **DO** use `TryGetNonEnumeratedCount` to pre-size destination collections | .NET 6+ + +❌ +```csharp +var results = new List(); +foreach (var item in source) + results.Add(Transform(item)); +``` +✅ +```csharp +var results = source.TryGetNonEnumeratedCount(out int count) + ? new List(count) + : new List(); +foreach (var item in source) + results.Add(Transform(item)); +``` + +**Impact: Avoids O(n) enumeration for counting; eliminates resizing allocations.** + +### Hoist Static Data Out of Method Bodies +🟡 **AVOID** creating collections with static/deterministic data inside method bodies | .NET Core+ + +❌ +```csharp +public string Convert(long number) +{ + var groupsMap = new Dictionary> + { + { 1_000_000_000, n => $"{Convert(n)} billion" }, + { 1_000_000, n => $"{Convert(n)} million" }, + { 1_000, n => $"{Convert(n)} thousand" }, + }; +} +``` +✅ +```csharp +private static readonly FrozenDictionary> s_groupsMap = + new Dictionary> + { + { 1_000_000_000, n => $"{Convert(n)} billion" }, + { 1_000_000, n => $"{Convert(n)} million" }, + { 1_000, n => $"{Convert(n)} thousand" }, + }.ToFrozenDictionary(); + +public string Convert(long number) +{ + // ... use s_groupsMap +} +``` + +**Impact: Eliminates collection + internal storage + closure allocations per call. For a Dictionary with N entries, saves ~N+3 allocations per invocation.** + +### Add Overloads to Avoid params Array Allocation +🟡 **DO** add 1- and 2-argument overloads for methods that accept `params T[]`. On .NET 10 also expose a `params ReadOnlySpan` overload | works on .NET 8 and .NET 10 + +❌ (single `params T[]` overload allocates a new array on every call, including the common 1-argument case) +```csharp +public static string Transform(this string input, params IStringTransformer[] transformers) => + transformers.Aggregate(input, (current, t) => t.Transform(current)); + +"hello".Transform(To.TitleCase); +``` +✅ Option A — explicit overloads for common arities (works on .NET 8 and .NET 10) +```csharp +public static string Transform(this string input, IStringTransformer transformer) => + transformer.Transform(input); + +public static string Transform(this string input, IStringTransformer t1, IStringTransformer t2) => + t2.Transform(t1.Transform(input)); + +public static string Transform(this string input, params IStringTransformer[] transformers) => + transformers.Aggregate(input, (current, t) => t.Transform(current)); +``` +✅ Option B — `.NET 10 / C# 14` adds a span overload (eliminates the allocation for all arities) +```csharp +public static string Transform(this string input, params ReadOnlySpan transformers) +{ + foreach (var t in transformers) + input = t.Transform(input); + return input; +} +``` +⚠️ Option B does **not** compile on `net8.0`: `params ReadOnlySpan` requires C# 13 (default on .NET 9+). On .NET 8 ship only Option A. + +**Impact: Option A eliminates the array allocation for 1- and 2-argument calls on every target. Option B eliminates it for all arities on .NET 10.** + +## Detection + +Scan recipes for collection and LINQ anti-patterns. Run these and report exact counts. + +```bash +# Static Dictionary not using FrozenDictionary (read-only after init) +grep -rn --include='*.cs' 'static readonly Dictionary<' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# Static FrozenDictionary (already optimized — verify the inverse) +grep -rn --include='*.cs' 'static readonly FrozenDictionary<' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# Per-call List allocation (inside method bodies, not static/readonly fields) +grep -rn --include='*.cs' 'new List<' --exclude-dir=bin --exclude-dir=obj . | grep -v 'static\|readonly' | wc -l + +# Per-call Dictionary allocation (inside method bodies, not static/readonly fields) +grep -rn --include='*.cs' 'new Dictionary<' --exclude-dir=bin --exclude-dir=obj . | grep -v 'static\|readonly' | wc -l + +# StringComparer.CurrentCulture usage (almost always wrong in library code — use Ordinal) +grep -rn --include='*.cs' 'StringComparer.CurrentCulture' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# LINQ chains in extension/hot-path files (.Select, .Where, .Cast, .Take, .Aggregate) +grep -rn --include='*.cs' -E '\.(Select|Where|Cast|Take|Aggregate)\(' --exclude-dir=bin --exclude-dir=obj . | wc -l +``` + +For the LINQ chain recipe: any hit in a file whose name ends in `Extensions.cs`, `Formatter.cs`, or implements a method called from a public extension method is a hot-path candidate. Inspect each hit in these files and flag LINQ chains that allocate delegates, enumerators, or intermediate collections on every call. Hits in localization converters or one-time initialization are lower priority. + +### Patterns Requiring Manual Review + +- **ContainsKey + indexer double-lookup**: Requires verifying the same key is used in a subsequent indexer access — multi-line/multi-statement context +- **LINQ on hot paths**: The LINQ chain recipe above catches call sites, but distinguishing hot-path from cold-path requires context. Prioritize hits in `*Extensions.cs` and `*Formatter.cs` files, which are typically called on every user invocation +- **`new Dictionary/List<` in method bodies vs fields**: The grep heuristic (`grep -v 'static\|readonly'`) catches most cases but may include false positives from field initializers without `static`/`readonly` — spot-check flagged lines diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/critical-patterns.md b/.skills/dotnet-performance-profiling-and-optimization/references/critical-patterns.md new file mode 100644 index 00000000..c25a6e43 --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/critical-patterns.md @@ -0,0 +1,288 @@ +# Critical .NET Performance Anti-Patterns + +17 patterns that cause deadlocks, order-of-magnitude regressions, or excessive allocations. + +## Async / Tasks + +### Never Block on Async (Sync-over-Async) +🔴 **AVOID** | .NET Core+ + +❌ +```csharp +public string GetData() + => GetDataAsync().Result; +``` +✅ +```csharp +public async Task GetDataAsync() + => await GetDataInternalAsync(); +``` +**Impact: Deadlocks or thread pool starvation; wastes threads, destroys scalability.** + +### Never Await a ValueTask Multiple Times +🔴 **AVOID** | .NET Core 2.1+ + +❌ +```csharp +ValueTask vt = SomeMethodAsync(); +int a = await vt; +int b = await vt; +``` +✅ +```csharp +int result = await SomeMethodAsync(); +``` +**Impact: Undefined behavior — silent data corruption or exceptions.** + +## Memory / Allocation + +### Use Span\ / AsSpan Instead of Substring for Slicing +🔴 **DO** | .NET Core 2.1+ + +❌ +```csharp +string sub = input.Substring(5, 10); +``` +✅ +```csharp +ReadOnlySpan sub = input.AsSpan(5, 10); +``` +**Impact: Eliminates per-slice allocations; 2-4x faster via vectorization.** + +### Use ArrayPool\ for Temporary Buffers +🔴 **DO** | .NET Core+ + +❌ +```csharp +byte[] buf = new byte[4096]; +``` +✅ +```csharp +byte[] buf = ArrayPool.Shared.Rent(4096); +Process(buf); +ArrayPool.Shared.Return(buf); +``` +**Impact: Dramatically reduces GC pressure for buffer-heavy workloads.** + +### Avoid stackalloc in Loops +🔴 **AVOID** | .NET 5+ + +❌ +```csharp +for (int i = 0; i < 10_000; i++) + Span buf = stackalloc byte[1024]; +``` +✅ +```csharp +Span buf = stackalloc byte[1024]; +for (int i = 0; i < 10_000; i++) { Process(buf); } +``` +**Impact: StackOverflowException — unrecoverable, no catch possible.** + +### Avoid Boxing Value Types +🔴 **AVOID** | .NET 6+ + +❌ +```csharp +string s = string.Format("{0}.{1}", major, minor); +``` +✅ +```csharp +string s = $"{major}.{minor}"; +``` +**Impact: When replacing `string.Format` with C# 10+ interpolation, typical improvements are ~40% faster with significantly less allocation. Actual gains vary by call site.** + +## Strings + +### Use StringComparison.Ordinal for Non-Linguistic Comparisons +🔴 **DO** | .NET Core+ + +❌ +```csharp +bool found = text.IndexOf("Content-Type") >= 0; +``` +✅ +```csharp +bool found = text.Contains("Content-Type", StringComparison.Ordinal); +``` +**Impact: 2-3x faster; OrdinalIgnoreCase hash codes ~3.3x faster.** + +### Use AsSpan Instead of Substring +🔴 **DO** | .NET Core 2.1+ + +❌ +```csharp +int val = int.Parse(str.Substring(5, 3)); +``` +✅ +```csharp +int val = int.Parse(str.AsSpan(5, 3)); +``` +**Impact: Eliminates one string allocation per parse operation.** + +## Regular Expressions + +### Use Source-Generated Regex [GeneratedRegex] +🔴 **ALWAYS** use `[GeneratedRegex]` for all static regex patterns | .NET 7+ + +❌ +```csharp +private static readonly Regex s_re = + new(@"\w+@\w+\.\w+", RegexOptions.Compiled); +``` +✅ +```csharp +[GeneratedRegex(@"\w+@\w+\.\w+")] +private static partial Regex EmailRegex(); +``` +**Impact: Always beneficial or neutral for static patterns — near-zero startup, better throughput, and required for AOT/trimming scenarios.** + +### Avoid Nested Quantifiers (Catastrophic Backtracking) +🔴 **AVOID** | .NET Core+ + +❌ +```csharp +var r = new Regex(@"^(\w+)+$"); +``` +✅ +```csharp +var r = new Regex(@"^\w+$", RegexOptions.NonBacktracking); +``` +**Impact: Can hang process indefinitely on crafted input.** + +### Use TryGetValue Instead of ContainsKey + Indexer +🔴 **DO** | .NET Core+ + +❌ +```csharp +if (dict.ContainsKey(key)) + Use(dict[key]); +``` +✅ +```csharp +if (dict.TryGetValue(key, out var value)) + Use(value); +``` +**Impact: ~2x faster (50% reduction in lookup time).** + +### Avoid LINQ in Hot Paths +🔴 **AVOID** | .NET Core+ + +❌ +```csharp +bool found = items.Any(x => x.Name == target); +``` +✅ +```csharp +bool found = false; +foreach (var item in items) + if (item.Name == target) { found = true; break; } +``` +**Impact: Eliminates 1-3 allocations per call; measurable in tight loops.** + +### Don't Iterate IEnumerable Multiple Times +🔴 **AVOID** | .NET Core+ + +❌ +```csharp +foreach (Type t in types) { Validate(t); } +_types = types.ToArray(); +``` +✅ +```csharp +Type[] arr = types.ToArray(); +foreach (Type t in arr) { Validate(t); } +_types = arr; +``` +**Impact: Halves enumeration cost; prevents bugs from re-executing deferred queries.** + +## JSON Serialization + +### Use System.Text.Json Source Generator +🔴 **DO** | .NET 6+ + +❌ +```csharp +string json = JsonSerializer.Serialize(post); +``` +✅ +```csharp +[JsonSerializable(typeof(BlogPost))] +internal partial class AppJsonCtx : JsonSerializerContext { } +string json = JsonSerializer.Serialize(post, AppJsonCtx.Default.BlogPost); +``` +**Impact: 37-44% faster; enables trimming and Native AOT.** + +### Cache JsonSerializerOptions +🔴 **DO** | .NET 5+ + +❌ +```csharp +JsonSerializer.Serialize(obj, new JsonSerializerOptions()); +``` +✅ +```csharp +private static readonly JsonSerializerOptions s_opts = new(); +JsonSerializer.Serialize(obj, s_opts); +``` +**Impact: Up to 592x slower without caching (.NET 6); always cache or use defaults.** + +## Networking + +### Reuse HttpClient Instances +🔴 **DO** | .NET Core 2.1+ + +❌ +```csharp +using var client = new HttpClient(); +await client.GetStringAsync(url); +``` +✅ +```csharp +private static readonly HttpClient s_http = new(new SocketsHttpHandler +{ PooledConnectionLifetime = TimeSpan.FromMinutes(5) }); +await s_http.GetStringAsync(url); +``` +**Impact: Prevents socket exhaustion; 6-12x faster concurrent HTTPS.** + +## General + +### Use SearchValues\ for Repeated Set Searches +🔴 **DO** | .NET 8+ (works on both targets; .NET 10 adds multi-string overloads) + +❌ +```csharp +int pos = text.IndexOfAny("ABCDEF".ToCharArray()); +``` +✅ (.NET 8 and .NET 10 — `SearchValues` is the same API on both) +```csharp +private static readonly SearchValues s_hex = SearchValues.Create("ABCDEF"); +int pos = text.AsSpan().IndexOfAny(s_hex); +``` +✅ (.NET 10 only — multi-string `SearchValues`) +```csharp +private static readonly SearchValues s_keywords = + SearchValues.Create(["error", "warning", "fatal"], StringComparison.OrdinalIgnoreCase); +int pos = log.AsSpan().IndexOfAny(s_keywords); // SearchValues overload is .NET 9+ BCL +``` +On `net8.0` use a `SearchValues` with the first letter of each keyword and then fall back to `string.IndexOf(StringComparison.Ordinal)`. + +**Impact: 2-10x faster for chars (both targets); 10-30x faster for multi-string on .NET 10.** + +## Detection + +Scan recipes for critical anti-patterns. Run these and report exact counts of issues found in each case. + +```bash +# .IndexOf(string) without StringComparison (culture-aware, 2-3x slower) +grep -rn --include='*.cs' -E '\.IndexOf\("[^"]+"\)' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# .Substring( calls (allocates new string — consider AsSpan) +grep -rn --include='*.cs' '\.Substring(' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# .StartsWith/.EndsWith without StringComparison (culture-aware, 2-3x slower) +grep -rn --include='*.cs' -E '\.(StartsWith|EndsWith)\("[^"]+"\)' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# .Contains(string) without StringComparison — NOTE: will also match collection .Contains() calls; filter to string receivers +grep -rn --include='*.cs' -E '\.Contains\("[^"]+"\)' --exclude-dir=bin --exclude-dir=obj . | wc -l +``` diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/grep-patterns.md b/.skills/dotnet-performance-profiling-and-optimization/references/grep-patterns.md new file mode 100644 index 00000000..9b38163f --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/grep-patterns.md @@ -0,0 +1,165 @@ +# Anti-Pattern Grep Library + +Consolidated grep patterns for automated scanning. Run these with the Grep tool using `type: "cs"` filter. + +All patterns use ripgrep regex syntax. Run during Phase 1 (Discovery) broad scan. + +> **See also:** each topic catalog ([critical-patterns.md](critical-patterns.md), [async-patterns.md](async-patterns.md), [memory-and-strings.md](memory-and-strings.md), [collections-and-linq.md](collections-and-linq.md), [regex-patterns.md](regex-patterns.md), [io-and-serialization.md](io-and-serialization.md), [structural-patterns.md](structural-patterns.md)) has its own Detection section with topic-specific recipes and ratio-counting guidance. This file is the consolidated cross-cutting library; load topic files when their signals are present. + +--- + +## ASYNC anti-patterns (CRITICAL) + +``` +\.Result\b +\.Wait\(\) +\.GetAwaiter\(\)\.GetResult\(\) +async void\b +Task\.Run\( +\.WriteAsync\([^,]*\) +``` + +**False positive note**: `.Result` matches `Task.FromResult` -- verify actual blocking before flagging. + +--- + +## Memory anti-patterns (MEM) + +``` +new byte\[\d{4,}\] +new byte\[ +new MemoryStream\(\) +\.Substring\( +new StringBuilder\(\) +new List<.*>\(\) +new Dictionary<.*>\(\) +_logger\.Log(Debug|Trace|Information|Warning|Error|Critical)\(\$" +\.Split\( +``` + +--- + +## LINQ anti-patterns + +``` +\.Count\(\)\s*[><=!] +\.ToList\(\)\.Where\( +\.ToList\(\)\.Select\( +\.Select\(.*\)\.Where\( +\.OrderBy.*\.Where\( +``` + +--- + +## Database / CosmosDB anti-patterns (DB) + +``` +\.Include\(.*\.Include\( +await.*foreach.*await.*Async +ReadItemAsync +GetItemQueryIterator +GetItemLinqQueryable +\.RequestCharge +``` + +--- + +## JSON anti-patterns + +``` +new JsonSerializerOptions +new JsonSerializerSettings +JsonConvert\.Serialize +JsonConvert\.Deserialize +new JsonSerializer +``` + +--- + +## Caching anti-patterns (CACHE) + +``` +GetAsync\( +SendAsync\( +_cache\.TryGetValue +DistributedCache +AddMemoryCache\(\) +``` + +--- + +## HttpClient misuse (HTTP) + +``` +new HttpClient\( +new HttpClient\b +``` + +--- + +## Exception control flow (EXC) + +``` +catch\s*\(Exception\b +catch\s*\(KeyNotFoundException +catch\s*\(FormatException +catch\s*\(InvalidOperationException +``` + +--- + +## String anti-patterns (STR) + +``` +\+= " +\+= \$" +\.ToLower\(\) +\.ToUpper\(\) +String\.Format\( +``` + +--- + +## Concurrency anti-patterns (CONC) + +``` +lock\s*\( +new SemaphoreSlim +HttpContext.*Task\.Run +``` + +--- + +## Startup & Pipeline (STARTUP) + +``` +UseResponseCompression +AddResponseCompression +ShortCircuit +AddOutputCache +UseOutputCache +TieredPGO +PublishReadyToRun +ApplicationStarted +``` + +--- + +## Metrics & Observability (METRICS) + +``` +new Meter\( +CreateCounter +CreateHistogram +AddMeter +``` + +--- + +## CancellationToken coverage + +``` +async Task[<\s].*\)\s*$ +``` + +This pattern finds async methods whose signature ends without a CancellationToken parameter. Verify each match -- some may be interface implementations where the token is propagated differently. diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/io-and-serialization.md b/.skills/dotnet-performance-profiling-and-optimization/references/io-and-serialization.md new file mode 100644 index 00000000..8ff904c5 --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/io-and-serialization.md @@ -0,0 +1,124 @@ +# I/O, Serialization & General Patterns + +### Use HttpCompletionOption.ResponseHeadersRead for Streaming +🟡 **DO** use `ResponseHeadersRead` when downloading large responses | .NET Core 3.0+ + +❌ +```csharp +var response = await client.GetAsync(uri); +``` +✅ +```csharp +using var response = await client.GetAsync(uri, HttpCompletionOption.ResponseHeadersRead); +using var stream = await response.Content.ReadAsStreamAsync(); +await stream.CopyToAsync(destinationStream); +``` + +**Impact: ~2x faster for large downloads (10MB+), dramatically reduced memory usage.** + +### Use Async FileStream Operations +🟡 **DO** use `FileStream` with `useAsync: true` for scalable file I/O | .NET 6+ + +❌ +```csharp +using var fs = new FileStream(path, FileMode.Open); +``` +✅ +```csharp +await using var fs = new FileStream(path, FileMode.Open, FileAccess.Read, + FileShare.Read, bufferSize: 4096, useAsync: true); + +byte[] buffer = new byte[1024]; +while (await fs.ReadAsync(buffer) != 0) { /* process */ } +``` + +**Impact: Up to 3x faster async reads; allocation reduced from megabytes to hundreds of bytes.** + +### Use Memory\ Overloads for Stream.ReadAsync/WriteAsync +🟡 **DO** use `Memory`-based stream overloads instead of `byte[]` overloads | .NET 5+ + +❌ +```csharp +await stream.ReadAsync(buffer, 0, buffer.Length); +await stream.WriteAsync(buffer, 0, buffer.Length); +``` +✅ +```csharp +await stream.ReadAsync(buffer.AsMemory()); +await stream.WriteAsync(buffer.AsMemory()); +``` + +**Impact: Eliminates ~72 KB allocation per 1,000 read/write pairs on NetworkStream.** + +### Use Span-Based TryFormat for Number Formatting +🟡 **DO** use `TryFormat` to format numbers into `Span` buffers | .NET Core 2.1+ + +❌ +```csharp +string formatted = value.ToString(); +destination.Write(formatted); +``` +✅ +```csharp +Span buffer = stackalloc char[20]; +if (value.TryFormat(buffer, out int charsWritten)) + destination.Write(buffer[..charsWritten]); +``` + +**Impact: Int32.ToString() ~2x faster in .NET Core 2.1, Int32 parsing ~5x faster in .NET Core 3.0.** + +### Use static readonly for Runtime Devirtualization +🟡 **DO** store implementations in `static readonly` fields for JIT devirtualization | .NET Core 3.0+ + +❌ +```csharp +private static Base s_impl = new DerivedImpl(); +s_impl.Process(); +``` +✅ +```csharp +private static readonly Base s_impl = new DerivedImpl(); +s_impl.Process(); + +private static readonly bool s_feature = + Environment.GetEnvironmentVariable("Feature") == "1"; +``` + +**Impact: Virtual call eliminated entirely — can be inlined to zero overhead. Dead code elimination in tier 1.** + +### Avoid Explicit Static Constructors — Use Field Initializers +🟡 **AVOID** explicit `static` constructors when field initializers suffice | .NET Core 3.0+ + +❌ +```csharp +class Foo +{ + static readonly int s_value; + static Foo() { s_value = ComputeValue(); } +} +``` +✅ +```csharp +class Foo +{ + static readonly int s_value = ComputeValue(); +} +``` + +**Impact: Enables better JIT optimization and reduces potential lock overhead on static method access.** + +## Detection + +Scan recipes for I/O and serialization anti-patterns. Run these and report exact counts. + +```bash +# new HttpClient() (socket exhaustion risk) +grep -rn --include='*.cs' 'new HttpClient(' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# new JsonSerializerOptions() not cached (592x slower in .NET 6) +grep -rn --include='*.cs' 'new JsonSerializerOptions' --exclude-dir=bin --exclude-dir=obj . | grep -v 'static\|readonly' | wc -l +``` + +### Patterns Requiring Manual Review + +- **`JsonSerializer.Serialize/Deserialize` without source-gen context**: Can't determine from grep if a context parameter is passed diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/measurement-guide.md b/.skills/dotnet-performance-profiling-and-optimization/references/measurement-guide.md new file mode 100644 index 00000000..9e67e8cd --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/measurement-guide.md @@ -0,0 +1,193 @@ +--- +description: >- + Performance measurement guide for dotnet-performance skill. Covers tool + selection per category, KPI targets, BenchmarkDotNet, k6 load testing, + CI/CD integration, and live process CLI commands. +metadata: + tags: [measurement, benchmarkdotnet, k6, dotnet-counters, kpi] +--- + +# Measurement Guide + +How to measure performance before and after applying optimizations. Never optimize without baseline data. + +--- + +## Tool Selection Decision Table + +Map each optimization category to the appropriate measurement tools: + +| Category | Primary Tool | Secondary Tool | What to Measure | +|---|---|---|---| +| MEM | `dotnet-counters` (gc-heap-size, alloc-rate) | `dotnet-gcdump` comparison | Allocation rate reduction, GC collection frequency | +| ASYNC | `dotnet-counters` (threadpool-queue-length, thread-count) | App Insights dependency tracking | Thread pool starvation, blocked threads | +| LINQ | BenchmarkDotNet `[MemoryDiagnoser]` | `dotnet-trace` hot path | Allocation per operation, throughput | +| DB | `response.RequestCharge` logging | App Insights DB dependency | RU cost per operation, query latency | +| JSON | BenchmarkDotNet serialization benchmark | `dotnet-counters` alloc-rate | Throughput (ops/sec), bytes allocated | +| CACHE | App Insights dependency duration | Custom hit ratio counter | Cache hit rate, dependency call reduction | +| DI | `dotnet-counters` alloc-rate | Load test comparison | Object creation overhead | +| CONC | `dotnet-counters` (monitor-lock-contention-count) | `dotnet-trace` contention events | Lock wait time, throughput under load | +| HTTP | `dotnet-counters` Microsoft.AspNetCore.Hosting | k6/NBomber load test | Request duration, throughput | +| EXC | `dotnet-counters` exception-count | App Insights exceptions | Exception rate per interval | +| RESP | Network tab / curl with timing | k6 response size check | Response size (bytes), transfer time | +| STR | BenchmarkDotNet `[MemoryDiagnoser]` | `dotnet-counters` alloc-rate | String allocations per operation | +| STARTUP | Startup time measurement | `dotnet-trace` startup events | Time to first request, cold start latency | +| METRICS | `MetricCollector` in tests | Prometheus/Grafana dashboard | Metric emission, cardinality | + +--- + +## KPI Targets + +Standard targets for ASP.NET Core APIs. Use as thresholds when evaluating optimization impact: + +| Metric | Target | Red Flag | +|---|---|---| +| P50 response time | < 100ms | > 200ms | +| P95 response time | < 500ms | > 1000ms | +| P99 response time | < 1000ms | > 2000ms | +| Error rate (5xx) | < 0.1% | > 1% | +| CPU utilization | < 70% sustained | > 85% | +| Memory working set | < 80% | > 90% | +| Thread pool queue length | < 10 sustained | > 50 | +| GC time percentage | < 10% | > 20% | +| Allocation rate | Trend down after optimization | Sustained increase | + +--- + +## BenchmarkDotNet Guidance + +Use for micro-optimizations on hot paths (MEM, LINQ, JSON, STR categories). + +**When to benchmark**: Hot-path changes where the difference is in nanoseconds or bytes allocated. Not needed for architectural changes (caching, DI lifetime) — use load testing instead. + +**Minimum setup**: +```csharp +[MemoryDiagnoser] +[SimpleJob(RuntimeMoniker.Net90)] +public class MyBenchmark +{ + [Benchmark(Baseline = true)] + public void Original() { /* original code */ } + + [Benchmark] + public void Optimized() { /* optimized code */ } +} +``` + +**Run command**: `dotnet run -c Release --project path/to/benchmark` + +**Common pitfalls**: +- Running in Debug mode (JIT optimizations disabled, results meaningless) +- Not returning computed values (JIT eliminates dead code) +- Ignoring allocation metrics (throughput may improve but allocations increase) +- Benchmarking with a debugger attached +- Including setup costs in the measured method + +--- + +## Load Testing + +For HIGH-impact optimizations, perform before/after load testing to validate real-world improvement. + +**k6 template**: +```javascript +import http from 'k6/http'; +import { check, sleep } from 'k6'; + +export const options = { + stages: [ + { duration: '30s', target: 20 }, + { duration: '1m', target: 20 }, + { duration: '10s', target: 0 }, + ], + thresholds: { + http_req_duration: ['p(50)<100', 'p(95)<500', 'p(99)<1000'], + http_req_failed: ['rate<0.01'], + }, +}; + +export default function () { + const res = http.get('http://localhost:5000/your-endpoint'); + check(res, { + 'status is 200': (r) => r.status === 200, + 'p95 under 500ms': (r) => r.timings.duration < 500, + }); + sleep(1); +} +``` + +**While load testing, monitor simultaneously**: +```bash +dotnet-counters monitor -n --counters System.Runtime,Microsoft.AspNetCore.Hosting +``` + +--- + +## CI/CD Integration + +For PR regression detection, use `benchmark-action/github-action-benchmark`: + +```yaml +- uses: benchmark-action/github-action-benchmark@v1 + with: + tool: 'benchmarkdotnet' + output-file-path: BenchmarkDotNet.Artifacts/results/*.json + alert-threshold: '150%' + comment-on-alert: true + fail-on-alert: true +``` + +This fails the PR if any benchmark regresses by more than 50% compared to the baseline. + +--- + +## Code Review Mode: Quick Reference Commands + +```bash +# Baseline runtime health +dotnet-counters monitor -n --counters System.Runtime + +# ASP.NET Core request metrics +dotnet-counters monitor -n --counters Microsoft.AspNetCore.Hosting + +# Full monitoring (runtime + HTTP + custom meters) +dotnet-counters monitor -n --counters System.Runtime,Microsoft.AspNetCore.Hosting,Microsoft.AspNetCore.Server.Kestrel + +# GC heap snapshot for before/after comparison +dotnet-gcdump collect -n -o before.gcdump +# ... apply optimization ... +dotnet-gcdump collect -n -o after.gcdump + +# 30-second CPU trace +dotnet-trace collect -n --duration 00:00:30 +dotnet-trace convert trace.nettrace --format speedscope +``` + +--- + +## Diagnostic Mode: Full CLI Commands + +When profiling a live process (Mode A), use these commands by investigation stage: + +```bash +# Stage 1: Live triage +dotnet-counters monitor -p --counters System.Runtime +dotnet-counters monitor -n --counters System.Runtime,Microsoft.AspNetCore.Hosting,Microsoft.AspNetCore.Server.Kestrel + +# Stage 2: Stuck/hung process — get stacks immediately +dotnet-stack report -p + +# Stage 3: CPU + allocation hot paths +dotnet-trace collect -p --duration 00:00:30 +dotnet-trace report topN + +# Stage 4: Heap composition +dotnet-gcdump collect -p -o before.gcdump +# ... apply optimization ... +dotnet-gcdump collect -p -o after.gcdump +dotnet-gcdump report + +# Stage 5: Full dump for SOS analysis +dotnet-dump collect -p --type Heap +dotnet-dump analyze -c "dumpheap -stat" -c "exit" +``` diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/memory-and-strings.md b/.skills/dotnet-performance-profiling-and-optimization/references/memory-and-strings.md new file mode 100644 index 00000000..3f1be338 --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/memory-and-strings.md @@ -0,0 +1,223 @@ +# Memory & String Patterns + +### Use ReadOnlySpan\ for Constant Byte Data +🟡 **DO** assign constant byte arrays to `ReadOnlySpan` | .NET 5+ + +❌ +```csharp +byte[] data = new byte[] { 0x48, 0x65, 0x6C, 0x6C, 0x6F }; +``` +✅ +```csharp +ReadOnlySpan data = [0x48, 0x65, 0x6C, 0x6C, 0x6F]; +ReadOnlySpan primes = [2, 3, 5, 7, 11, 13]; +``` + +**Impact: ~100x faster access than static byte[] field, zero allocation.** + +### Use stackalloc for Small Temporary Buffers +🟡 **DO** use `stackalloc` for small, fixed-size temporary buffers | .NET Core+ + +❌ +```csharp +char[] buffer = new char[64]; +guid.TryFormat(buffer, out int written); +``` +✅ +```csharp +Span buffer = stackalloc char[64]; +guid.TryFormat(buffer, out int written); +``` + +**Impact: Zero heap allocation, no GC pressure, instant alloc/dealloc.** + +### Use Span.TryWrite for Allocation-Free Interpolation +🟡 **DO** use `MemoryExtensions.TryWrite` to format into `Span` buffers | .NET 6+ + +❌ +```csharp +string formatted = $"Date: {dt:R}"; +destination.Write(formatted); +``` +✅ +```csharp +Span buffer = stackalloc char[64]; +buffer.TryWrite($"Date: {dt:R}", out int charsWritten); +``` + +**Impact: Zero heap allocation for formatting operations.** + +### Use Span.Split() for Zero-Allocation Splitting +🟡 **DO** use `MemoryExtensions.Split` for allocation-free string splitting | **.NET 10 (or .NET 9) only — NOT available on .NET 8** + +❌ (allocates `string[]` — the only built-in option on .NET 8) +```csharp +string[] parts = input.Split(','); +``` +✅ .NET 10 +```csharp +foreach (Range range in input.AsSpan().Split(',')) +{ + ReadOnlySpan segment = input.AsSpan(range); +} +``` +✅ .NET 8 fallback — manual `IndexOf` loop on the span (no allocation) +```csharp +ReadOnlySpan remaining = input.AsSpan(); +while (!remaining.IsEmpty) +{ + int idx = remaining.IndexOf(','); + ReadOnlySpan segment = idx < 0 ? remaining : remaining[..idx]; + // ... use segment ... + remaining = idx < 0 ? default : remaining[(idx + 1)..]; +} +``` + +**Impact: 208 bytes → 0 bytes per split, 2x faster on .NET 10. The manual .NET 8 loop is also zero-allocation but more verbose.** + +### Use UTF8 String Literals (u8 suffix) +🟡 **DO** use the `u8` suffix for compile-time UTF8 `ReadOnlySpan` | .NET 7+ + +❌ +```csharp +byte[] header = Encoding.UTF8.GetBytes("Content-Type"); +``` +✅ +```csharp +ReadOnlySpan header = "Content-Type"u8; +``` + +**Impact: 17ns → 0.006ns — eliminates runtime transcoding entirely.** + +### Use ReadOnlySpan\ Pattern Matching with switch +🟡 **DO** use `switch` on `ReadOnlySpan` for allocation-free string matching | C# 11+ + +❌ +```csharp +switch (attr.Value.Trim()) { case "preserve": /* ... */ break; } +``` +✅ +```csharp +switch (attr.Value.AsSpan().Trim()) +{ + case "preserve": return Preserve; + case "default": return Default; +} +``` + +**Impact: Eliminates string allocation from Trim() in switch-based dispatch.** + +### Use params ReadOnlySpan\ to Eliminate Array Allocations +🟡 **DO** add `params ReadOnlySpan` overloads to library methods | **.NET 10 (or .NET 9) only — requires C# 13** + +❌ (the only option on .NET 8 — accept the array allocation, or add explicit 1/2/3-argument overloads) +```csharp +public static void Log(params string[] messages) { /* ... */ } +Log("Starting", "Processing", "Done"); +``` +✅ .NET 10 +```csharp +public static void Log(params ReadOnlySpan messages) { /* ... */ } +Log("Starting", "Processing", "Done"); +``` +✅ .NET 8 fallback — keep `params string[]` and add fixed-arity overloads for the hot common cases +```csharp +public static void Log(string m) { /* ... */ } +public static void Log(string m1, string m2) { /* ... */ } +public static void Log(string m1, string m2, string m3) { /* ... */ } +public static void Log(params string[] messages) { /* fallback for 4+ args */ } +``` + +**Impact: Eliminates params array allocation on .NET 10. On .NET 8 fixed-arity overloads cover the hot 1–3 argument cases.** + +### Avoid Chained String-Returning Operations +🟡 **AVOID** chains of 3+ string-returning method calls that each allocate intermediates | .NET Core+ + +**Pattern 1: Chained .Replace() calls** + +❌ +```csharp +string result = input.Replace("a", "b").Replace("c", "d").Replace("e", "f"); +``` +✅ +```csharp +var sb = new StringBuilder(input.Length); +// single pass replacing all patterns +``` + +**Pattern 2: Chained Regex.Replace() calls** + +❌ +```csharp +public static string Underscore(this string input) => + Regex3.Replace(Regex2.Replace(Regex1.Replace(input, "$1_$2"), "$1_$2"), "_").ToLower(); +``` +✅ +```csharp +return string.Create(totalLength, state, (span, s) => { /* write directly */ }); +``` + +**Pattern 3: += string concatenation in loops** + +❌ +```csharp +string result = ""; +foreach (var part in parts) + result += separator + part; +``` +✅ +```csharp +var sb = new StringBuilder(); +foreach (var part in parts) + sb.Append(separator).Append(part); +return sb.ToString(); +``` + +**Impact: Eliminates N-1 intermediate string allocations per chain. For `+=` in loops, eliminates O(n²) total allocation.** + +### Cache char.ToString() for Known Character Sets +🟡 **DO** cache `char.ToString()` results when the set of characters is small and known | .NET Core+ + +❌ +```csharp +return symbol.ToString(); + +foreach (var prefix in UnitPrefixes) + input = input.Replace(prefix.Value.Name, prefix.Key.ToString()); +``` +✅ +```csharp +private static readonly FrozenDictionary s_charStrings = + new Dictionary + { + ['k'] = "k", ['M'] = "M", ['G'] = "G", + }.ToFrozenDictionary(); + +return s_charStrings[symbol]; +``` + +**Impact: Eliminates one string allocation per char.ToString() call. Significant when called in loops or on hot paths.** + +## Detection + +Scan recipes for memory and string anti-patterns. Run these and report exact counts. + +```bash +# .ToLower()/.ToUpper() without culture parameter (allocates + culture-sensitive) +grep -rn --include='*.cs' -E '\.(ToLower|ToUpper)\(\)' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# Chained .Replace( calls (3+ on one line — intermediate string allocations) +grep -rn --include='*.cs' '\.Replace(.*\.Replace(.*\.Replace(' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# params in method signatures (array allocation per call) +grep -rn --include='*.cs' 'params ' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# LINQ on strings — .All/.Any on IEnumerable (replace with foreach loop) +grep -rn --include='*.cs' -E '\.(All|Any)\(char\.' --exclude-dir=bin --exclude-dir=obj . | wc -l +``` + +### Patterns Requiring Manual Review + +- **Boxing via string.Format**: Can't determine argument types from grep — needs type analysis +- **`+=` string concatenation in loops**: `+=` matches all types (int, list, event, string) — needs type context to confirm string +- **`char.ToString()`**: Requires knowing the variable type is `char` — not reliably greppable diff --git a/.skills/csharp-dotnet-cli-optimization/references/memory-model-gc.md b/.skills/dotnet-performance-profiling-and-optimization/references/memory-model-gc.md similarity index 100% rename from .skills/csharp-dotnet-cli-optimization/references/memory-model-gc.md rename to .skills/dotnet-performance-profiling-and-optimization/references/memory-model-gc.md diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/regex-patterns.md b/.skills/dotnet-performance-profiling-and-optimization/references/regex-patterns.md new file mode 100644 index 00000000..940a1b66 --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/regex-patterns.md @@ -0,0 +1,95 @@ +# Regex Patterns + +### Choose the Right Regex Engine Mode +🟡 **DO** use `[GeneratedRegex]` for all static regex patterns, but never remove `NonBacktracking` if present | .NET 7+ + +❌ +```csharp +var r = new Regex(dynamicPattern, RegexOptions.Compiled); +``` +✅ +```csharp +[GeneratedRegex("pattern")] +private static partial Regex MyRegex(); + +var safe = new Regex(untrustedPattern, RegexOptions.NonBacktracking); + +var oneOff = new Regex("pattern"); +``` + +**Impact: Source generator is always beneficial for static patterns. NonBacktracking prevents O(2^N) worst case — never remove it if present.** + +### Use IsMatch When You Only Need a Boolean Result +🟡 **DO** use `IsMatch` instead of `Match(...).Success` | .NET 7+ + +❌ +```csharp +bool found = Regex.Match(input, pattern).Success; +``` +✅ +```csharp +bool found = Regex.IsMatch(input, pattern); +``` + +**Impact: Avoids Match object allocation; with NonBacktracking, ~3x faster by skipping capture computation.** + +### Use Regex.Count/EnumerateMatches Instead of Matches +🟡 **DO** use `Count()` and `EnumerateMatches()` for allocation-free match processing | .NET 7+ + +❌ +```csharp +int count = 0; +Match m = regex.Match(text); +while (m.Success) { count++; m = m.NextMatch(); } +``` +✅ +```csharp +int count = regex.Count(text); + +foreach (ValueMatch m in Regex.EnumerateMatches(text, @"\b\w+\b")) +{ + ReadOnlySpan word = text.AsSpan(m.Index, m.Length); +} +``` + +**Impact: ~3x faster than Match/NextMatch with NonBacktracking. Zero allocations for both Count and EnumerateMatches.** + +### Use Span-Based Regex APIs for Allocation-Free Matching +🟡 **DO** use `ReadOnlySpan` overloads for regex matching on spans | .NET 7+ + +❌ +```csharp +string sub = largeBuffer.Substring(start, length); +bool found = Regex.IsMatch(sub, pattern); +``` +✅ +```csharp +ReadOnlySpan text = largeBuffer.AsSpan(start, length); +foreach (ValueMatch m in Regex.EnumerateMatches(text, @"\b\w+\b")) +{ + ReadOnlySpan word = text.Slice(m.Index, m.Length); +} +``` + +**Impact: Eliminates string allocations when working with spans — particularly valuable in high-throughput parsing pipelines.** + +## Detection + +Scan recipes for regex anti-patterns. Run these and report exact counts. + +```bash +# Compiled regex count (startup cost budget — compare ratio to GeneratedRegex) +grep -rn --include='*.cs' 'RegexOptions.Compiled' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# GeneratedRegex count (already optimized — verify the inverse) +grep -rn --include='*.cs' 'GeneratedRegex' --exclude-dir=bin --exclude-dir=obj . | wc -l + +# Uncached new Regex() calls (construction cost per call) +grep -rn --include='*.cs' 'new Regex(' --exclude-dir=bin --exclude-dir=obj . | wc -l +``` + +When `RegexOptions.Compiled` appears inside a class constructor or field initializer of an instantiated class (not a static singleton), count how many instances of that class are created at startup to determine total compiled regex budget. For example, if a `Rule` class compiles a regex in its constructor and 122 rules are registered, that is 122 compiled regexes at startup. + +### Patterns Requiring Manual Review + +- **`new Regex(` uncached**: Field assignment may span multiple lines — grep on one line is unreliable. Verify that matched instances are stored in `static readonly` fields or `[GeneratedRegex]`. diff --git a/.skills/dotnet-performance-profiling-and-optimization/references/structural-patterns.md b/.skills/dotnet-performance-profiling-and-optimization/references/structural-patterns.md new file mode 100644 index 00000000..9cf41b28 --- /dev/null +++ b/.skills/dotnet-performance-profiling-and-optimization/references/structural-patterns.md @@ -0,0 +1,38 @@ +# Structural Patterns + +Patterns detected by the **absence** of a keyword or interface. These require codebase-wide counting scans, not single-file matching. + +### Seal Classes for Devirtualization +🟡 **DO** seal all leaf classes (those not subclassed) | .NET Core 3.0+ + +Sealing lets the JIT devirtualize/inline virtual calls and use pointer comparison for type checks. Every non-abstract, non-static class that is not subclassed should be sealed. + +**Detection:** This is an absence pattern — scan for classes that are NOT sealed. + +```bash +# Count unsealed (non-abstract, non-static) classes +grep -rn --include='*.cs' -E '^\s*((public|internal|private|protected|file)\s+)?(partial\s+)?class ' --exclude-dir=bin --exclude-dir=obj . | grep -v 'sealed' | grep -v 'abstract' | grep -v 'static' | wc -l + +# Count already-sealed classes (verify the inverse) +grep -rn --include='*.cs' 'sealed class' --exclude-dir=bin --exclude-dir=obj . | wc -l +``` + +**Exclusions:** Do not seal classes that are subclassed elsewhere in the codebase. Identifying base classes requires manual review — grep for `: ClassName` patterns and cross-reference, but expect false positives from interface implementations and generic constraints. + +❌ +```csharp +internal class MyHandler : Base +{ public override int Run() => 42; } +``` +✅ +```csharp +internal sealed class MyHandler : Base +{ public override int Run() => 42; } +``` + +**Impact: Virtual calls up to 500x faster; type checks ~25x faster. Severity scales with count.** + +**Scale-based severity:** +- 1-10 unsealed leaf classes → ℹ️ Info +- 11-50 unsealed leaf classes → 🟡 Moderate +- 50+ unsealed leaf classes → 🟡 Moderate (elevated priority) diff --git a/.skills/dotnet-security-review/SKILL.md b/.skills/dotnet-security-review/SKILL.md new file mode 100644 index 00000000..f4b1f811 --- /dev/null +++ b/.skills/dotnet-security-review/SKILL.md @@ -0,0 +1,145 @@ +--- +name: dotnet-security-review +description: >- + Performs a systematic C#/ASP.NET Core security code review on .NET 8 (C# 12) + and .NET 10 (C# 14) codebases. Covers OWASP Top 10, authentication/authorization + audit, input validation, cryptography, dependency vulnerabilities, security + headers, middleware pipeline, and CI/CD security posture. +metadata: + platform: ".NET 8 and .NET 10 (no .NET 9 projects in scope)" +--- + +# Security Code Review for C# / ASP.NET Core (.NET 8 + .NET 10) + +You are a security auditor performing a thorough, evidence-based code review. Every finding MUST include file path, line number, severity, impact, and a concrete fix. + +## Step 0 — Detect the target framework + +Before scoring findings, follow `../../references/detect-target-framework.md`. The security guidance below applies to **both** .NET 8 and .NET 10 unless explicitly marked. A few items are .NET 10-only — when reviewing a .NET 8 project, don't recommend them as "fixes": + +- **ASP.NET Core Identity passkeys** (`AddPasskeys()`) — .NET 10 only. On .NET 8, recommend external IdP / `Fido2NetLib` or password+TOTP. +- **Minimal-API built-in validation** (`AddValidation()`) — .NET 10 only. On .NET 8, FluentValidation + `IEndpointFilter` is the safe equivalent. +- **First-party `Microsoft.AspNetCore.OpenApi`** — .NET 9+ only. On .NET 8 the project should use `Swashbuckle.AspNetCore`; flag missing OpenAPI security schemes accordingly. +- **`HybridCache`** — .NET 9+ only. On .NET 8 verify `IDistributedCache` configurations (encryption-at-rest, key prefixing, TLS to Redis) directly. +- The C# 14 `field` keyword, `extension(...)` blocks, null-conditional assignment, and partial constructors **do not compile on net8.0** — never propose security fixes that introduce them on a .NET 8 project. + +All cryptography, JWT, authorization-policy, header, and middleware guidance applies identically on both targets. + +## Target Selection + +The user's arguments are in `$ARGUMENTS`. + +- If `$ARGUMENTS` contains a file path or directory, review that target. +- If `$ARGUMENTS` is "all", review the entire codebase starting from the solution root. +- If `$ARGUMENTS` is empty, run `git diff --name-only HEAD~5` to find recently changed `.cs` files. If none, ask the user what to review. + +When reviewing a directory or "all", use Glob to find `**/*.cs` files, then prioritize: +1. Controllers, filters, middleware (`*Controller.cs`, `*Filter.cs`, `Program.cs`) +2. Auth handlers and delegating handlers (`*Handler.cs`, `*DelegatingHandler.cs`) +3. Service implementations handling external input or secrets +4. Repository and data access code +5. Configuration and DI registration (`*Extensions.cs`, `*Options.cs`) +6. Validators + +## Review Process + +Execute each phase sequentially. Use the Read tool for files and the Grep tool for pattern searches. NEVER use bash `grep` or `rg` -- always use the Grep tool. + +### Phase 1: Automated Pattern Scanning + +Read `references/scanning-patterns.md` for the full pattern catalog. Run all Grep searches in parallel across `.cs` files in the target scope. Each pattern targets a specific vulnerability class: injection, deserialization, cryptography, async anti-patterns, data exposure, SSRF, missing controls, ReDoS, log injection, open redirect, cookie security, file upload, claims safety, and thread safety. + +### Phase 2: File-by-File Deep Review + +Read `references/deep-review-categories.md` for the complete checklist (Categories A through L). For each file in scope (or top ~20 most security-relevant files when reviewing "all"), check all applicable categories: + +- **A**: Authentication & Authorization (JWT validation, auth schemes, IDOR) +- **B**: Input Validation +- **C**: Error Handling & Information Leakage +- **D**: Cryptography & Secrets +- **E**: Data Protection & PII +- **F**: Concurrency & State Safety +- **G**: CancellationToken Propagation +- **H**: HTTP Client Security (resilience handlers, DNS refresh) +- **I**: Configuration Security +- **J**: Logging & Monitoring Security +- **K**: Output Encoding & Response Security +- **L**: Supply Chain & Build Security + +### Phase 3: Architecture & Project-Specific Checks + +Read `references/architecture-checks.md` for checks tailored to common ASP.NET Core project patterns. These cover endpoint authorization verification, anonymous endpoint abuse potential, OTP/MFA security, exception handling coverage, optimistic concurrency, state expiry, blob storage SAS security, message queue security, JSON serialization settings, background task queue safety, rate limiting, security headers, middleware ordering, and NuGet audit configuration. + +Read the project's CLAUDE.md or AGENTS.md for project-specific architecture details to inform these checks. + +### Phase 4: Dependency Vulnerability Check + +Read `references/dependencies-and-headers.md` (Phase 4 section) for dependency scanning patterns. Check `.csproj` files for known-vulnerable versions and NuGet audit configuration. + +### Phase 5: Security Headers & Middleware Pipeline + +Read `references/dependencies-and-headers.md` (Phase 5 section) for the 14-item headers checklist and middleware ordering verification. + +## Output Format + +### Security Review Report + +**Scope:** [files/directories reviewed] +**Date:** [current date] +**Risk Summary:** [X CRITICAL, Y HIGH, Z MEDIUM, W LOW, V INFO] + +#### Findings + +For each finding: + +**[SEVERITY] [SHORT-TITLE]** +- **Location:** `file/path.cs:LINE` +- **Category:** [OWASP category or security domain] +- **Description:** [What the vulnerability is and why it matters] +- **Impact:** [What an attacker could achieve] +- **Recommendation:** [Specific fix with code example] + +#### Summary Table + +| # | Severity | Category | File | Description | +|---|----------|----------|------|-------------| +| 1 | CRITICAL | ... | ... | ... | + +#### Recommendations + +1. Immediate fixes (CRITICAL/HIGH) +2. Short-term improvements (MEDIUM) +3. Long-term hardening (LOW/INFO) +4. Tooling recommendations (NuGet audit, SAST integration, etc.) + +## Severity + +Use standard severity: CRITICAL > HIGH > MEDIUM > LOW > INFO. CRITICAL = actively exploitable, HIGH = significant with effort, MEDIUM = increased attack surface, LOW = minor improvement, INFO = hardening suggestion. + +## Anti-Rationalization Table + +| Rationalization | Reality | +|---|---| +| "This is just a test file" | Test code handling secrets or auth IS production-relevant. Report as INFO. | +| "Probably a false positive" | ALWAYS read surrounding code before dismissing. If you cannot prove it safe, report it. | +| "The framework handles this" | Verify the protection is actually enabled and configured. Defaults can be overridden. | +| "Internal API, not public-facing" | Internal APIs are attacked via SSRF, supply chain, lateral movement. | +| "No one would exploit this" | Threat models change. Report it; let the team decide risk acceptance. | + +## Red Flags + +STOP and investigate deeper if you encounter any of these: +- Any endpoint without an explicit auth attribute (`[Authorize]` or `[AllowAnonymous]`) +- Any `catch` block returning raw exception data to the client +- Any hardcoded key, token, password, or connection string literal +- Any `new HttpClient()` (should use `IHttpClientFactory`) +- Any `TypeNameHandling` value other than `None` + +## Important Guidelines + +1. Only report real findings with evidence (file path and line number). Do not speculate. +2. If a pattern search returns no results, note "No issues found" and move on. +3. For false positives (e.g., `System.Random` in tests, not production), note as INFO with explanation. +4. Prioritize production code over test code. +5. When reviewing "all", cap the report at the 30 most significant findings. +6. ALWAYS verify context before reporting -- a pattern match alone is not a finding. Read the surrounding code. diff --git a/.skills/dotnet-security-review/references/architecture-checks.md b/.skills/dotnet-security-review/references/architecture-checks.md new file mode 100644 index 00000000..361c9fd0 --- /dev/null +++ b/.skills/dotnet-security-review/references/architecture-checks.md @@ -0,0 +1,134 @@ +# Architecture & Project-Specific Checks Reference +# Phase 3 checks for common ASP.NET Core project patterns. Read the project's CLAUDE.md +# or AGENTS.md for project-specific details (endpoint list, service names, DI registrations) +# to inform these checks. + +## Check 1: Endpoint Auth Matrix Verification + +Cross-reference the controller's actual `[Authorize]`/`[AllowAnonymous]` attributes against the project's documented auth requirements. Read CLAUDE.md or AGENTS.md for the expected auth matrix. Any mismatch is CRITICAL. + +For projects with multiple auth schemes (e.g., Azure AD + custom JWT), verify each endpoint uses the correct scheme/policy. + +## Check 2: Anonymous Endpoint Abuse Potential + +For each `[AllowAnonymous]` endpoint, verify: +- Rate limiting or throttling exists for sensitive operations (e.g., code generation, login attempts) +- Enumeration attacks are mitigated (IDs are GUIDs or non-sequential, not auto-increment) +- No state modification without prior authentication or verification (e.g., OTP first) + +## Check 3: OTP / MFA Security Review + +If the project implements OTP or MFA, read the service implementation and verify: +- Code length is sufficient (6+ characters) +- Codes are generated with `RandomNumberGenerator` +- Hash is SHA-256 or stronger (not MD5/SHA1) +- Expiry is enforced (typically 5-10 minutes) +- Wrong attempt counter increments correctly and triggers lockout after a threshold +- No timing side-channel in hash comparison + +## Check 4: Exception Handling Coverage + +Grep for `throw new` statements. Verify that all thrown exceptions are either: +- The project's structured error type (e.g., `ApiException`, `DomainException`, or the project's custom base exception), OR +- Known typed exceptions for external service failures + +Any unstructured exception thrown from handler/service code may bypass error filters and leak internal details. + +## Check 5: Optimistic Concurrency on State Writes + +If using a database with optimistic concurrency (ETags, row versions): +- Verify every write/update operation passes the concurrency token +- Verify the concurrency token store/tracking mechanism is consulted on every read/write cycle + +## Check 6: Expired State Handling + +If the project uses application-level state expiry (not DB TTL): +- Verify expired records are deleted or excluded on read (not returned to callers) +- Verify callers cannot act on expired data + +## Check 7: Blob Storage SAS URL Security + +If the project generates SAS URLs for blob storage: +- SAS token expiry is short-lived (minutes, not days) +- Permission is read-only (not write/delete) +- Scoped to the specific blob (not container-level) + +## Check 8: Message Queue Security + +If the project uses message queues (Service Bus, RabbitMQ, etc.): +- Messages do not contain secrets or unnecessary PII +- Queue connections use managed identity or connection strings from secret stores + +## Check 9: JSON Serialization Settings + +Check that `TypeNameHandling` is set to `None` (default) and not `Auto`/`All` anywhere. This applies to both Newtonsoft.Json and any custom serializer configuration. + +## Check 10: Background Task Queue Safety + +If the project uses a background task queue: +- Bounded capacity prevents unbounded memory growth +- Backpressure is handled correctly (not silently dropping critical events like audit logs) +- Task failures are observed and logged/metered + +## Check 11: Custom Token / JWT Security + +If the project issues its own JWTs (not just validating external tokens): +- **Algorithm**: HMAC-SHA256 or stronger (RSA for distributed validation) +- **Signing key source**: Key loaded from configuration/secret store, NOT hardcoded +- **Signing key length**: Minimum 256 bits (32 bytes) for HMAC-SHA256 +- **Token expiry**: Appropriately capped (tokens should not outlive the session/resource they protect) +- **Claims validation**: Custom claims (e.g., resource IDs) are validated against route parameters by an authorization handler +- **TokenValidationParameters**: `ValidateIssuer`, `ValidateAudience`, `ValidateLifetime`, `ValidateIssuerSigningKey` all `true` +- **ClockSkew**: Tightened from default 5 minutes to 2 minutes or less + +## Check 12: Response Data Sanitization + +If the project sanitizes response data (e.g., stripping internal paths or fields): +- Sanitization handles malformed input gracefully (does not throw/crash) +- Only known sensitive fields are stripped (no over-stripping that breaks functionality) +- Sanitization is applied on every code path returning the data (not just the happy path) + +## Check 13: Rate Limiting + +Verify rate limiting posture: +- Grep for `AddRateLimiter` and `UseRateLimiter` -- if absent, note as finding +- Application-level throttling exists for sensitive operations (e.g., SMS/code generation resend limits) +- Brute force protection exists for verification endpoints (wrong attempt lockout) +- **Recommendation**: Add ASP.NET Core `System.Threading.RateLimiting` middleware for IP-based throttling on public endpoints + +## Check 14: Security Headers Completeness + +Check Program.cs / middleware for these headers (report missing ones): +- `X-Content-Type-Options: nosniff` +- `X-Frame-Options: DENY` +- `Referrer-Policy: strict-origin-when-cross-origin` +- `Permissions-Policy: camera=(), microphone=(), geolocation=()` +- `X-XSS-Protection: 0` (disable legacy XSS filter; CSP is the modern replacement) +- `Content-Security-Policy` (at minimum for APIs: `default-src 'none'`) +- `Server` header removed +- `X-Powered-By` header removed + +## Check 15: Middleware Pipeline Ordering + +Read Program.cs and verify correct middleware order: +1. `UseExceptionHandler` (outermost -- catches everything) +2. `UseHsts` (non-development only) +3. `UseHttpsRedirection` +4. Security headers middleware +5. `UseRateLimiter` (if present) +6. `UseRouting` (if explicit) +7. `UseCors` +8. `UseAuthentication` +9. `UseAuthorization` +10. `MapControllers` / endpoints + +Authentication MUST come before Authorization. CORS MUST come before Authentication. ExceptionHandler MUST be first. + +## Check 16: NuGet Audit & Build Security + +Check for build-level security configuration: +- Does `Directory.Build.props` exist? If so, verify `NuGetAudit`, `NuGetAuditMode`, `NuGetAuditLevel` settings. +- Are Roslyn security analyzer packages referenced? (`SecurityCodeScan.VS2019`, `SonarAnalyzer.CSharp`, `Meziantou.Analyzer`) +- Are `AnalysisLevel` / `AnalysisMode` set in `.csproj` or `Directory.Build.props`? +- Run Grep for floating versions: `Version="[^"]*\*"` in `.csproj` files +- Recommend `dotnet list package --vulnerable --include-transitive` as a CI step diff --git a/.skills/dotnet-security-review/references/deep-review-categories.md b/.skills/dotnet-security-review/references/deep-review-categories.md new file mode 100644 index 00000000..64f5926f --- /dev/null +++ b/.skills/dotnet-security-review/references/deep-review-categories.md @@ -0,0 +1,107 @@ +# Deep Review Categories Reference +# File-by-file review checklist for Phase 2. For each file in scope (or top ~20 most +# security-relevant files when reviewing "all"), read the file and check each applicable category. + +## Category A: Authentication & Authorization + +1. Every controller action has either `[Authorize]` (class or method level) or `[AllowAnonymous]` explicitly. +2. No IDOR: when accessing resources by ID, verify the handler checks that the caller owns or is authorized to access that resource. +3. JWT validation settings are strict: issuer, audience, lifetime, algorithm all validated. +4. Token acquisition uses correct flow: app tokens for backend-to-backend, OBO only where user context is needed. +5. No `[AllowAnonymous]` on endpoints that modify sensitive state without alternative authentication (e.g., OTP verification first). +6. **Multiple auth scheme verification**: If the project uses multiple auth schemes (e.g., Azure AD + custom JWT), verify correct scheme is applied per endpoint. No scheme confusion between internal and client-facing endpoints. +7. **JWT `alg:none` rejection**: Verify `TokenValidationParameters` does NOT allow `alg:none`. All schemes must validate the signing algorithm (`ValidateIssuerSigningKey = true`). +8. **HMAC signing key minimum length**: If using HMAC-SHA256 for JWT signing, the key must be at least 256 bits (32 bytes). Check options validation. +9. **Structured error responses on auth failure**: `OnChallenge` (401) and `OnForbidden` (403) events should return structured JSON error responses, not default HTML/empty responses. + +## Category B: Input Validation + +1. All DTOs accepted by handlers have corresponding FluentValidation validators registered. +2. Route parameters are validated for format before use (e.g., GUID format, positive integers). +3. File uploads are validated for content type, size, and extension (not just extension). +4. No unvalidated user input flows into file paths, URLs, SQL, commands, or log messages. +5. Phone numbers, emails, and other PII are validated and normalized before processing. + +## Category C: Error Handling & Information Leakage + +1. All expected errors use a structured error type -- never return raw exception details to clients. +2. Exception filters catch known exception types and return only safe error payloads. +3. Unknown exceptions are wrapped as generic 500 errors without stack traces or internal details. +4. Error messages returned to clients do not reveal internal architecture, database schema, or file paths. +5. Catch blocks never silently swallow exceptions -- they must log or rethrow. + +## Category D: Cryptography & Secrets + +1. OTP/MFA codes use `RandomNumberGenerator` (not `System.Random`). +2. Hash comparison uses constant-time comparison to prevent timing attacks. +3. Hash storage uses a secure algorithm (SHA-256 minimum; bcrypt/Argon2 for passwords). +4. No secrets, connection strings, or API keys appear in source code or `appsettings.json` committed to git. +5. Options validation (`ValidateOnStart()`) is configured to reject placeholder secrets in production. + +## Category E: Data Protection & PII + +1. Sensitive fields (phone numbers, etc.) are masked before returning to unauthenticated callers. +2. PII (names, addresses, phone numbers, emails) is not logged in full -- use masking. +3. Sensitive internal fields (hash values, internal IDs) are excluded from API responses. +4. Blob/file storage SAS URLs have appropriate expiry times and permissions (read-only, short-lived). +5. Audit logs do not contain raw PII that violates data protection requirements. + +## Category F: Concurrency & State Safety + +1. Database state mutations use optimistic concurrency (ETags, row versions, or equivalent). +2. Concurrency exceptions are caught and retried appropriately in handlers. +3. Multi-step validation flows (OTP, MFA) handle concurrent attempts correctly. +4. Counter increments (e.g., wrong attempt counts) are atomic or protected against race conditions. +5. Scheduled/delayed operations do not race with in-progress workflows. + +## Category G: CancellationToken Propagation + +1. Every `async` method in the call chain accepts `CancellationToken cancellationToken = default`. +2. The token is passed to every awaited call: HTTP calls, DB queries, blob operations, queue sends. +3. The controller passes `HttpContext.RequestAborted` to handlers. +4. Missing propagation is a DoS vector (abandoned requests hold resources). + +## Category H: HTTP Client Security + +1. HttpClient instances have timeouts configured (not infinite). +2. Delegating handlers do not log tokens or authorization headers. +3. SSL/TLS validation is not disabled (`ServerCertificateCustomValidationCallback` returning true). +4. Retry policies do not retry on authentication failures (401/403). +5. External API clients have adequate timeout and error handling even without resilience middleware. +6. **Standard resilience handler**: Verify `AddStandardResilienceHandler()` or equivalent resilience pipeline is configured on named HttpClients. +7. **Retry-After header respect**: Retry policies should honor `Retry-After` headers from downstream APIs to avoid cascading failures. +8. **DNS refresh**: Verify `SocketsHttpHandler.PooledConnectionLifetime` is set (recommended 2-5 min) to handle DNS changes. + +## Category I: Configuration Security + +1. CORS policy does not use `AllowAnyOrigin()` in production. +2. Swagger UI is disabled in production (or restricted to authorized users). +3. Health check endpoints do not expose sensitive information. +4. `X-Powered-By` and `Server` headers are removed. +5. HTTPS redirection and HSTS are configured for production. + +## Category J: Logging & Monitoring Security + +1. Authentication events are logged (both success and failure) for audit trail. +2. Authorization failures are logged with sufficient context (user, endpoint, reason). +3. Input validation failures are logged (not just returned as 400 responses). +4. Structured logging used throughout -- no string interpolation in log method calls (use message templates). +5. Sensitive data (passwords, tokens, PII, hash values) is NEVER logged at any log level. +6. Correlation IDs are included in all error log entries for traceability. +7. Log output is not accessible to API clients (no endpoint returns log data). + +## Category K: Output Encoding & Response Security + +1. No internal file paths, class names, or assembly names leak in API responses (check error messages, headers). +2. Razor templates are verified for `@Html.Raw()` usage -- must be justified and input-sanitized. +3. `TypeNameHandling.None` verified for Newtonsoft.Json serialization (prevents type injection). +4. `Content-Type` headers are explicitly set on all responses (no browser MIME-sniffing). +5. Response sanitization logic handles malformed input gracefully (no crashes on invalid JSON/data). + +## Category L: Supply Chain & Build Security + +1. `Directory.Build.props` exists with NuGet audit settings (`NuGetAudit`, `NuGetAuditMode`, `NuGetAuditLevel`). +2. Package versions are pinned (no floating versions like `Version="1.*"`). +3. `AnalysisLevel` and `AnalysisMode` are set to `latest-Recommended` / `Recommended` in build configuration. +4. Security analyzers included in packages (SecurityCodeScan, SonarAnalyzer.CSharp, or Meziantou.Analyzer). +5. No known-vulnerable version ranges in `.csproj` files (check Newtonsoft.Json >= 13.0.1, Microsoft.Identity.Web >= 2.x, System.Text.Json >= 8.0.5). diff --git a/.skills/dotnet-security-review/references/dependencies-and-headers.md b/.skills/dotnet-security-review/references/dependencies-and-headers.md new file mode 100644 index 00000000..03bc671e --- /dev/null +++ b/.skills/dotnet-security-review/references/dependencies-and-headers.md @@ -0,0 +1,92 @@ +# Dependencies & Headers Reference +# Combined Phase 4 (dependency vulnerability checks) and Phase 5 (headers/middleware) content. + +## Phase 4: Dependency Vulnerability Check + +### Automated Grep Checks + +Run these Grep patterns against `.csproj` files to detect known-vulnerable version ranges: + +| Pattern | Risk | +|---------|------| +| `Newtonsoft\.Json.*Version="([0-9]+)` where major < 13 | CVEs in Newtonsoft.Json < 13.0.1 | +| `Newtonsoft\.Json.*Version="13\.0\.0"` | Pre-patch 13.x | +| `Microsoft\.Identity\.Web.*Version="1\."` | CVEs in Microsoft.Identity.Web < 2.x | +| `System\.Text\.Json.*Version="[0-7]\.\|Version="8\.0\.[0-4]"` | CVEs in System.Text.Json < 8.0.5 | +| `Version="[^"]*\*"` | Floating versions (unpinned, supply chain risk) | + +### NuGet Audit Configuration Check + +Grep `Directory.Build.props` and `.csproj` files for: +- `true` -- should be present +- `all` -- audits transitive dependencies +- `low` -- catches all severity levels +- `` containing `NU1903;NU1904` -- fails build on high/critical vulnerabilities + +### ReDoS in Validators + +Check all `Regex` and `.Matches()` calls in validators: +- Pattern: `new Regex\((?!.*RegexOptions\.NonBacktracking)` -- missing NonBacktracking flag (.NET 7+) +- Check for nested quantifiers: `(a+)+`, `(a*)*`, `(a|a)*` patterns + +### Command Recommendation + +Include in report output (do NOT run automatically): +```bash +dotnet list package --vulnerable --include-transitive +``` + +## Phase 5: Security Headers & Middleware Pipeline + +### Headers Checklist (14 items) + +Read `Program.cs` and any middleware configuration files. Check for each header: + +| # | Header / Control | Expected Value | Severity if Missing | +|---|-----------------|----------------|---------------------| +| 1 | `X-Content-Type-Options` | `nosniff` | MEDIUM | +| 2 | `X-Frame-Options` | `DENY` | MEDIUM | +| 3 | `Referrer-Policy` | `strict-origin-when-cross-origin` | LOW | +| 4 | `Permissions-Policy` | `camera=(), microphone=(), geolocation=()` | LOW | +| 5 | `X-XSS-Protection` | `0` (disable legacy filter; CSP replaces it) | LOW | +| 6 | `Content-Security-Policy` | At minimum `default-src 'none'` for APIs | MEDIUM | +| 7 | `Server` header | REMOVED | LOW | +| 8 | `X-Powered-By` header | REMOVED | LOW | +| 9 | `Strict-Transport-Security` | `max-age=31536000; includeSubDomains; preload` | HIGH | +| 10 | `Cache-Control` | `no-store` on sensitive data endpoints | MEDIUM | +| 11 | HTTPS Redirection | `app.UseHttpsRedirection()` present | HIGH | +| 12 | HSTS | `app.UseHsts()` in non-development | HIGH | +| 13 | Rate Limiting | `app.UseRateLimiter()` present | MEDIUM | +| 14 | Swagger restricted | Conditionally enabled (dev/staging only) | MEDIUM | + +### Middleware Pipeline Ordering + +The correct order for ASP.NET Core middleware is critical. Misordering can bypass security controls. + +**Expected order:** +``` +1. app.UseExceptionHandler(...) // Outermost: catches all unhandled exceptions +2. app.UseHsts() // HSTS (non-development only) +3. app.UseHttpsRedirection() // Force HTTPS +4. Security headers middleware // Custom: X-Content-Type-Options, etc. +5. app.UseRateLimiter() // Throttle before routing (if present) +6. app.UseRouting() // (implicit in .NET 8+ with MapControllers) +7. app.UseCors(...) // CORS before auth (preflight must not require auth) +8. app.UseAuthentication() // Identify the caller +9. app.UseAuthorization() // Enforce access rules +10. app.MapControllers() // Endpoint dispatch +``` + +**Critical ordering rules:** +- `UseExceptionHandler` MUST be first -- otherwise exceptions in early middleware are unhandled +- `UseAuthentication` MUST come before `UseAuthorization` -- otherwise auth policies have no identity to check +- `UseCors` MUST come before `UseAuthentication` -- otherwise CORS preflight (OPTIONS) requests fail with 401 +- `UseRateLimiter` SHOULD come before `UseRouting` -- otherwise rate limits apply after route matching overhead +- `UseHsts` and `UseHttpsRedirection` SHOULD come early -- before any response body is written + +### Middleware Verification Procedure + +1. Read `Program.cs` from the `var app = builder.Build()` line to `app.Run()` +2. List every `app.Use*` and `app.Map*` call in order +3. Compare against expected order above +4. Report any misordering as MEDIUM severity diff --git a/.skills/dotnet-security-review/references/scanning-patterns.md b/.skills/dotnet-security-review/references/scanning-patterns.md new file mode 100644 index 00000000..926b9d69 --- /dev/null +++ b/.skills/dotnet-security-review/references/scanning-patterns.md @@ -0,0 +1,116 @@ +# Scanning Patterns Reference +# Automated Grep patterns organized by vulnerability class for Phase 1 scanning. +# Run all searches in parallel across .cs files in the target scope. + +## Injection Vulnerabilities + +| ID | Pattern | Target | +|----|---------|--------| +| INJ-1 | `\$".*SELECT\|INSERT\|UPDATE\|DELETE\|DROP\|EXEC` | SQL injection via string interpolation | +| INJ-2 | `string\.Format.*SELECT\|INSERT\|UPDATE\|DELETE` | SQL injection via string.Format | +| INJ-3 | `\.FromSqlRaw\(.*\$"\|\.FromSqlRaw\(.*string\.Format` | EF Core raw SQL injection | +| INJ-4 | `ExecuteSqlRaw\(.*\$"\|ExecuteSqlRaw\(.*string\.Format` | EF Core command injection | +| INJ-5 | `Process\.Start\|ProcessStartInfo` | Command injection | +| INJ-6 | `DirectorySearcher\|LdapConnection` | LDAP injection (check for string concat) | +| INJ-7 | `XmlDocument\|XmlReader\|XDocument` | XXE (verify secure settings) | +| INJ-8 | `Path\.Combine.*Request\|Path\.Combine.*user\|\.\.\/\|\.\.\\` | Path traversal | + +## Insecure Deserialization + +| ID | Pattern | Target | +|----|---------|--------| +| DES-1 | `BinaryFormatter\|SoapFormatter\|ObjectStateFormatter\|LosFormatter\|NetDataContractSerializer` | Banned deserializers | +| DES-2 | `JsonConvert\.DeserializeObject.*TypeNameHandling` | Newtonsoft type handling | +| DES-3 | `TypeNameHandling\s*=\s*TypeNameHandling\.(All\|Auto\|Objects\|Arrays)` | Unsafe type handling | + +## Cryptography Weaknesses + +| ID | Pattern | Target | +|----|---------|--------| +| CRY-1 | `new Random\(\)\|System\.Random` | Insecure randomness (should be RandomNumberGenerator) | +| CRY-2 | `MD5\.Create\|SHA1\.Create\|DESCryptoServiceProvider\|RC2CryptoServiceProvider\|TripleDES` | Weak algorithms | +| CRY-3 | `ECB` | Insecure cipher mode | +| CRY-4 | `password\|secret\|key\|token\|credential\|apikey\|connectionstring` in string literals | Hardcoded secrets | + +## Async Anti-Patterns + +| ID | Pattern | Target | +|----|---------|--------| +| ASY-1 | `\.Result[^s]\|\.Result$` | Sync-over-async deadlock risk | +| ASY-2 | `\.Wait\(\)` | Sync-over-async deadlock risk | +| ASY-3 | `\.GetAwaiter\(\)\.GetResult\(\)` | Sync-over-async | +| ASY-4 | `Task\.Run\(` | Thread pool abuse in ASP.NET context | + +## Sensitive Data Exposure + +| ID | Pattern | Target | +|----|---------|--------| +| EXP-1 | `_logger\.Log.*password\|_logger\.Log.*secret\|_logger\.Log.*token\|_logger\.Log.*apiKey` (case insensitive) | Logging secrets | +| EXP-2 | `Console\.Write.*password\|Console\.Write.*secret\|Console\.Write.*token` | Console output of secrets | +| EXP-3 | `Html\.Raw\(` | XSS via unencoded HTML | +| EXP-4 | `Exception\.ToString\(\)\|Exception\.StackTrace\|Exception\.Message` returned in HTTP responses | Stack trace leakage | + +## SSRF Risks + +| ID | Pattern | Target | +|----|---------|--------| +| SSRF-1 | `new HttpClient\(\).*\+\|HttpClient.*GetAsync\(.*\+\|HttpClient.*PostAsync\(.*\+` | User-controlled URLs | +| SSRF-2 | `new Uri\(.*Request\|new Uri\(.*user\|new Uri\(.*input` | Unvalidated URI construction | +| SSRF-3 | `HttpClient.*GetAsync\(.*[^"]\)\|HttpClient.*PostAsync\(.*[^"]\)` | Non-literal URLs in HTTP calls | +| SSRF-4 | `new Uri\([^"]*\)` | Dynamic URI construction | +| SSRF-5 | `IPAddress\.Parse\("\|Uri\("http` | Hardcoded IPs/URLs | + +## Missing Security Controls + +| ID | Pattern | Target | +|----|---------|--------| +| CTL-1 | `\[HttpPost\]\|\[HttpPut\]\|\[HttpDelete\]\|\[HttpPatch\]` | Unannotated endpoints (check for nearby [Authorize]/[AllowAnonymous]) | +| CTL-2 | `AllowAnyOrigin` | CORS misconfiguration | +| CTL-3 | `app\.UseDeveloperExceptionPage` | Dev error page in production | +| CTL-4 | `#pragma warning disable` | Disabled security warnings | + +## ReDoS + +| ID | Pattern | Target | +|----|---------|--------| +| REG-1 | `new Regex\((?!.*RegexOptions\.NonBacktracking)` | Regex without NonBacktracking (ReDoS risk in .NET 7+) | + +## Log Injection + +| ID | Pattern | Target | +|----|---------|--------| +| LOG-1 | `_logger\.Log.*(Request\.Query\|Request\.Form\|Request\.Headers\|Request\.Body)` | Unsanitized request data in logs | +| LOG-2 | `_logger\.Log.*\\n\|_logger\.Log.*\\r` | Newline chars in log messages (log forging) | + +## Open Redirect + +| ID | Pattern | Target | +|----|---------|--------| +| RED-1 | `Redirect\(\|RedirectToAction\(.*\+` | Open redirect via concatenation | +| RED-2 | `Response\.Redirect\(` | Direct response redirect | + +## Cookie Security + +| ID | Pattern | Target | +|----|---------|--------| +| COK-1 | `CookieOptions\|\.Cookies\.Append` | Cookie usage (verify HttpOnly, Secure, SameSite) | +| COK-2 | `SameSite\s*=\s*SameSiteMode\.None` | SameSite=None (requires Secure flag) | + +## File Upload + +| ID | Pattern | Target | +|----|---------|--------| +| UPL-1 | `IFormFile` | File upload handling (verify validation) | +| UPL-2 | `ContentType.*application/octet-stream\|ContentType.*\*\/\*` | Permissive content type acceptance | + +## Claims Safety + +| ID | Pattern | Target | +|----|---------|--------| +| CLM-1 | `User\.Claims\.First\(\|User\.FindFirst\(.*\.Value(?!\?)` | Null-unsafe claims access (missing ?.) | + +## Thread Safety + +| ID | Pattern | Target | +|----|---------|--------| +| THR-1 | `static\s+.*HttpClient\s+\w+\s*=\s*new\s+HttpClient` | Static HttpClient instantiation (use IHttpClientFactory) | diff --git a/.skills/general-prompt-engineer/SKILL.md b/.skills/general-prompt-engineer/SKILL.md index e904b9d2..99153959 100644 --- a/.skills/general-prompt-engineer/SKILL.md +++ b/.skills/general-prompt-engineer/SKILL.md @@ -1,6 +1,8 @@ --- name: general-prompt-engineer description: create, repair, compress, and optimize prompts, system messages, tool instructions, schemas, and eval rubrics for general tasks across writing, research, coding, analysis, planning, tutoring, automation, and agent workflows. use when the user wants a new prompt, wants an existing prompt improved, wants prompt failures debugged, or needs better structure for grounding, tool use, output format, or reliability. +model: claude-opus-4-8 +effort: xhigh --- # Prompt Engineer diff --git a/.skills/mcc-dev-workflow/SKILL.md b/.skills/mcc-dev-workflow/SKILL.md index b1a9ef01..06614892 100644 --- a/.skills/mcc-dev-workflow/SKILL.md +++ b/.skills/mcc-dev-workflow/SKILL.md @@ -12,7 +12,7 @@ Use this skill when the task needs a real local server loop, not just code readi - Solution: `MinecraftClient.sln` - Runtime target: `.NET 10` / `net10.0` - Environment: Linux, macOS, or WSL with Java, tmux, python3, and dotnet available -- Default server root: `${MCC_SERVERS:-$MCC_REPO/MinecraftOfficial/downloads}` +- Default server root after `source tools/mcc-env.sh`: `${MCC_SERVERS:-/MinecraftOfficial/downloads}` - Default validation target when the user does not specify a version: `1.21.11` ## Console modes @@ -34,6 +34,50 @@ Both modes support the same commands and input/output through `ConsoleIO.Backend - A server log line containing `Done (` means startup finished. It does not guarantee that RCON is ready on the first attempt. Retry early `mc-rcon` commands. - When instructions, docs, and code disagree, trust current code and current tool behavior first. +## Shared server, isolated MCC sessions + +- `mc-*` commands operate on the shared local Minecraft server. +- `mcc-*` commands operate on one MCC client session. +- The default `session` is the current worktree name. +- The default username is derived from `session`, unless you pass `--username`. +- Session files live under `${TMPDIR:-/tmp}/mcc-debug//`. +- `MCC_SERVERS` stays the shared server-root override. + +Keep shared servers running by default. Do not stop or reset them unless the user explicitly asks for that, or you need to switch server versions. + +Two worktrees can debug against one shared server like this: + +```bash +# worktree A +cd ~/Minecraft/Minecraft-Console-Client +source tools/mcc-env.sh +mc-start 1.21.11 +mcc-debug -v 1.21.11 --file-input + +# worktree B +cd ~/Minecraft/Minecraft-Console-Client-foo +source tools/mcc-env.sh +mcc-debug -v 1.21.11 --file-input + +# from each worktree, mcc-* targets that worktree's default session +mcc-state +``` + +If you want two MCC sessions from the same worktree, pass `--session NAME` explicitly. + +## tmpfs build mode + +Use this on machines with enough RAM when you want worktree-isolated builds outside the repo tree: + +```bash +source tools/mcc-env.sh +export MCC_BUILD_MODE=tmpfs +mcc-build +mcc-build-clean +``` + +`MCC_BUILD_MODE=tmpfs` redirects build output to `/dev/shm/mcc-build//` on Linux, or `${TMPDIR:-/tmp}/mcc-build//` if `/dev/shm` is unavailable. + ## Preflight and reset Before scripted runs, especially on macOS or in a reused tmux environment: @@ -49,18 +93,23 @@ mc-reset-test-env 1.21.11 ## Build ```bash -dotnet build MinecraftClient.sln -c Release +source tools/mcc-env.sh +mcc-build ``` +Use `mcc-build` for normal local development so any `MCC_BUILD_MODE=tmpfs` routing stays active. Only use raw `dotnet build` when you are intentionally debugging the build system itself. + ## Server management Interactive shell: ```bash source tools/mcc-env.sh +SESSION="$(_mcc_resolve_session)" +USERNAME="$(_mcc_resolve_username "$SESSION")" mc-start 1.21.11 mc-log 1.21.11 100 -mc-rcon "op CursorBot" +mc-rcon "op $USERNAME" mc-stop 1.21.11 ``` @@ -68,7 +117,7 @@ Non-interactive shell: ```bash tools/start-server.sh 1.21.11 -tools/mc-rcon.sh "op CursorBot" +tools/mc-rcon.sh "op mcc_smoke_a" ``` If the servers live outside the repo, set `MCC_SERVERS` before sourcing or invoking the tools: @@ -104,16 +153,16 @@ mcc-debug -v 1.21.11 --file-input --no-build ### What mcc-debug.sh does 1. Builds MCC (unless `--no-build`) -2. Creates a clean temp config at `/tmp/mcc-debug/MinecraftClient.debug.ini` with CursorBot account, Terrain/Inventory/Entity enabled and noisy bots disabled +2. Creates a clean temp config at `${TMPDIR:-/tmp}/mcc-debug//MinecraftClient.debug.ini` 3. Ensures server is running (starts if not, waits for `Done (`) -4. Launches MCC in the specified mode +4. Launches MCC in a session-scoped tmux session and session-scoped log/input/pid files ### After launch -- **FileInput mode**: drive MCC via `mcc-cmd "debug state"` or `echo "debug state" >> mcc_input.txt` -- **Interactive/TUI mode**: attach with `tmux attach -t mcc-debug`, type commands directly -- **Logs**: `tail -f /tmp/mcc-debug/mcc-debug.log` (FileInput mode only; TUI/interactive mode outputs to tmux) -- **Server RCON**: `mc-rcon "op CursorBot"`, `mc-rcon "gamemode creative CursorBot"` +- **FileInput mode**: drive MCC via `mcc-cmd --session smoke-a "debug state"`, or just `mcc-cmd "debug state"` from the same worktree +- **Interactive/TUI mode**: attach with `tmux attach -t mcc-` +- **Logs**: `mcc-log-mcc --session smoke-a` or `tail -f "${TMPDIR:-/tmp}/mcc-debug//mcc-debug.log"` +- **Server RCON**: grant op or gamemode to the username derived from that session ## Debug commands (in-game) @@ -128,7 +177,7 @@ Prints a one-shot summary of MCC's internal state: ``` === MCC Debug State === Server: localhost:25565 -Username: CursorBot +Username: mcc_smoke_a Protocol: 774 GameMode: 1 Health: 20.0 @@ -152,18 +201,20 @@ For agents calling MCC commands programmatically: ```bash source tools/mcc-env.sh -mcc-debug -v 1.21.11 --file-input --no-build +SESSION="smoke-a" +mcc-debug -v 1.21.11 --file-input --session "$SESSION" --no-build # Send commands: -mcc-cmd "debug state" -mcc-cmd "inventory player list" -mcc-cmd "entity" +mcc-cmd --session "$SESSION" "debug state" +mcc-cmd --session "$SESSION" "inventory player list" +mcc-cmd --session "$SESSION" "entity" # Check results: -tail -20 /tmp/mcc-debug/mcc-debug.log +mcc-log-mcc --session "$SESSION" # Stop: -mcc-cmd "quit" +mcc-cmd --session "$SESSION" "quit" +mcc-kill --session "$SESSION" mc-stop 1.21.11 ``` @@ -171,10 +222,11 @@ mc-stop 1.21.11 ```bash source tools/mcc-env.sh -mcc-debug -v 1.21.11 +SESSION="live-a" +mcc-debug -v 1.21.11 --session "$SESSION" # In another terminal: -tmux attach -t mcc-debug +tmux attach -t "mcc-$SESSION" # Type commands directly in MCC console ``` @@ -192,22 +244,23 @@ TUI mode runs Consolonia full-screen in a tmux session. Key differences: ```bash source tools/mcc-env.sh -mcc-debug -v 1.21.11 -m tui --no-build +SESSION="tui-a" +mcc-debug -v 1.21.11 -m tui --session "$SESSION" --no-build # Cannot use mcc-cmd (no FileInput); must use tmux send-keys: -tmux send-keys -t mcc-debug "/debug state" Enter +tmux send-keys -t "mcc-$SESSION" "/debug state" Enter # Read TUI screen: -tmux capture-pane -t mcc-debug -p -S -30 +tmux capture-pane -t "mcc-$SESSION" -p -S -30 # Stop: -tmux send-keys -t mcc-debug Escape +tmux send-keys -t "mcc-$SESSION" Escape ``` **Caveat with tmux send-keys and Consolonia**: When sending text containing `/`, the Enter key may need to be sent separately: ```bash -tmux send-keys -t mcc-debug "/inventory player list" -tmux send-keys -t mcc-debug Enter +tmux send-keys -t "mcc-$SESSION" "/inventory player list" +tmux send-keys -t "mcc-$SESSION" Enter ``` ## mcc-env.sh quick reference @@ -226,26 +279,29 @@ After `source tools/mcc-env.sh`: | `mc-wait-stop VER [SEC]` | Wait for server shutdown, with force-kill fallback | | `mc-reset-test-env [--all|VER...]` | Reset shared tmux server state and stale pipes | | `mcc-build` | Build MCC | -| `mcc-run [PORT]` | Run MCC classic+FileInput on port | -| `mcc-tui [PORT]` | Run MCC TUI mode in tmux | -| `mcc-cmd "CMD"` | Append command to mcc_input.txt | -| `mcc-kill` | Kill MCC process and debug session | +| `mcc-publish --rid ` | Publish MCC with the repo's CI-like defaults | +| `mcc-build-clean` | Clear the current worktree's build output | +| `mcc-run [--session NAME] [--username NAME] [--port PORT]` | Convenience wrapper for `mcc-debug --file-input --no-build` | +| `mcc-tui [--session NAME] [--username NAME] [--port PORT]` | Convenience wrapper for `mcc-debug -m tui --no-build` | +| `mcc-cmd [--session NAME] "CMD"` | Append a command to one session's input file | +| `mcc-kill [--session NAME]` | Kill one MCC process and session | | `mcc-debug [OPTS]` | One-step debug session (see above) | -| `mcc-log-mcc` | Tail MCC debug log | -| `mcc-state` | Send `debug state` and print last 30 log lines | +| `mcc-log-mcc [--session NAME]` | Tail one MCC debug log | +| `mcc-state [--session NAME]` | Send `debug state` and print the last 30 log lines | | `mcc-preflight [VER...]` | Verify Java, tmux, dotnet, python3, and server dirs | ## Temporary config recipe ```bash source tools/mcc-env.sh -TEST_ROOT="${TMPDIR:-/tmp}/mcc-dev" -CFG="$TEST_ROOT/MinecraftClient.1.21.11.ini" -mkdir -p "$TEST_ROOT" +SESSION="smoke-a" +USERNAME="$(_mcc_resolve_username "$SESSION")" +CFG="$(_mcc_session_root "$SESSION")/MinecraftClient.debug.ini" +mkdir -p "$(_mcc_session_root "$SESSION")" bash "$MCC_REPO/.skills/mcc-integration-testing/scripts/prepare_offline_mcc_config.sh" \ "$CFG" \ "1.21.11" \ - "CursorBot" + "$USERNAME" ``` For TUI mode, also add: @@ -259,14 +315,14 @@ MCC output should include: - `[MCC] Server was successfully joined.` -Server output should include: +Server output should include the session-derived username, for example: -- `CursorBot joined the game` +- `mcc_smoke_a joined the game` Basic command check: ```bash -mcc-cmd "inventory player list" +mcc-cmd --session smoke-a "inventory player list" ``` If a scripted run fails before MCC joins, check for a harness problem before assuming a product regression. Missing `mcc.log`, a pre-join `Connection refused`, or a server that never reached `Done (` usually means shared-state cleanup or startup failed. @@ -292,7 +348,7 @@ If a scripted run fails before MCC joins, check for a harness problem before ass - Legacy `1.8` and `1.8.9` servers may need `use-native-transport=false` in `server.properties` on some Linux environments. - For timing-sensitive work, do not trust wall-clock intuition. Use a real server run and capture evidence from logs or test scripts. - **TUI mode tip**: if the terminal becomes unresponsive after a crash, run `stty sane && reset` to restore it. -- **tmux capture trick**: `tmux capture-pane -t mcc-debug -p -S -50` captures the last 50 lines of a tmux session without attaching. +- **tmux capture trick**: `tmux capture-pane -t mcc- -p -S -50` captures the last 50 lines of a tmux session without attaching. ## Tool files diff --git a/.skills/mcc-integration-testing/SKILL.md b/.skills/mcc-integration-testing/SKILL.md index 168b545f..9f70a804 100644 --- a/.skills/mcc-integration-testing/SKILL.md +++ b/.skills/mcc-integration-testing/SKILL.md @@ -115,6 +115,89 @@ Use this for TPS, movement-cadence, or packet-cadence work: Run them against a real server with a temp config and summarize counts from the captured logs. +### 4. Structured components test + +Use this after touching any `StructuredComponents` code (registries, component +parsers, subcomponents, codec helpers) to prove every component type in a +version parses on the wire without error: + +```bash +bash tools/run-structured-components-test.sh 1.21.11 +``` + +Run a single version (fast, ~2 min) or a matrix: + +```bash +for v in 1.20.6 1.21 1.21.2 1.21.5 1.21.11 26.1; do + bash tools/run-structured-components-test.sh "$v" +done +``` + +The script gives items with every registered component via RCON `/give`, reads +them back with `inventory player list`, and asserts no parse errors in the MCC +log. Version-gated components (v1212+, v1215+, v12111+, v261) are tested only +on the versions that support them. See `SC_Integration_Test_Report.md` for a +reference run across all 6 version groups. + +### 6. Dialog integration test + +Use this after touching any dialog system code (packet handling, NBT parsing, +models, TUI, command dispatch, the state machine in `DialogManager`, or the +codec in `DialogNbtParser`). Tests all 5 dialog types, button actions (close, +run_command, show_dialog), cancel/dismiss, click-label, and body content: + +```bash +tools/run-dialog-test.sh 26.1 +``` + +The script starts the server if needed, generates a temp MCC config, launches +MCC with file-input mode (requires both `MCC_FILE_INPUT=1` and +`MCC_INPUT_FILE=` env vars), sends inline SNBT dialogs via RCON, and +asserts 29 checks against the MCC log. + +Key requirements that differ from other test modes: + +- FileInputBot is loaded only when `MCC_FILE_INPUT=1` is set in the + environment. The `[ChatBot.FileInput]` config section is ignored at load + time. +- The input file path is controlled by `MCC_INPUT_FILE`, *not* by the config + `File` setting. +- Dialogs use inline SNBT syntax through `ResourceOrIdArgument`, e.g.: + `dialog show {type:"minecraft:notice", title:{text:"Hello"}}` +- The `ActionButton.CODEC` flattens `CommonButtonData` fields (`label`, + `tooltip`, `width`) into the same object as `action` — no `button` wrapper. + +### 5. Full inventory regression sweep + +Use this when touching inventory snapshots, player/container slot sync, creative inventory, item-slot serialization, packet palettes, game-mode updates, or block-use paths that open containers: + +```bash +tools/run-inventory-full-sweep.sh --versions "1.21.10 1.21.11" +``` + +Default coverage includes: + +- player inventory listing and inventory discovery +- creative give/delete +- inventory search +- player right/left click stack split and merge +- player drop one and drop all +- chest open via `useblock` +- container listing and close +- mirrored player slots in container windows +- shift-click and shift-right-click transfer +- container right/left click, cursor stack, drop one, and drop all +- creative middle-click command path +- log scan for packet parse failures, queue-empty crashes, unhandled exceptions, and disconnects + +The script writes `summary.tsv` under `RUN_ROOT` and per-version logs under `/tmp/mcc-debug/inventory-full-/mcc-debug.log`. + +When a matrix has existing PASS rows, do not rerun them unless a later code change affects that row or the user asks for a full rerun. Derive remaining rows from summaries: + +```bash +awk 'FNR>1 && $2=="PASS" {print $1}' /tmp/mcc-inventory-full-sweep/*/summary.tsv | sort -V | uniq +``` + ## Preconditions Before running any scenario: @@ -165,6 +248,13 @@ Optionally override the login name with the fourth argument to the config helper - summarize the latest full-spectrum run - `tools/run-creative-e2e.sh` - ordered creative-mode E2E regression scenario +- `tools/run-inventory-full-sweep.sh` + - full inventory command/API sweep across one or more versions +- `tools/run-structured-components-test.sh` + - exercises every structured component via RCON `/give` across versions 1.20.6-26.1 +- `tools/run-dialog-test.sh` + - dialog integration test: all 5 types, run_command/show_dialog actions, + cancel/dismiss/click-label, body content; 29 assertions on MCC log ## Evidence Discipline @@ -224,3 +314,10 @@ Always summarize: - If a test assertion fails, inspect the real MCC output before changing the code or weakening the assertion. - If an older server behaves oddly on Linux, check `use-native-transport=false` in `server.properties`. - If a matrix row fails before producing `mcc.log` or a command transcript, treat it as a harness failure, fix the environment, and rerun that row before drawing product conclusions. +- If creative inventory commands report "You must be in Creative gamemode" after RCON switched the player, inspect game-mode update parsing before assuming creative inventory is broken. Modern servers can update local game mode through game event reason `3`. +- If an inventory row crashes with `Queue empty` or `Failed to process incoming packet`, inspect packet palette routing before changing inventory code. A single shifted packet ID can make a healthy inventory feature look broken. +- For chest-open failures, separate product and harness causes. The player may be standing inside the chest or suffocating on older servers. Stand beside the chest, put a floor under the player, and retry `useblock`. +- For shared local servers, a `Done` log line does not prove RCON is ready. Retry setup commands and verify the actual RCON port from `server.properties`. +- If `tools/run-dialog-test.sh` fails with "FileInput Watching: .../mcc_input.txt" pointing to the wrong directory, the `MCC_INPUT_FILE` env var was not set in the tmux command. FileInputBot ignores the config `File` setting entirely. +- If inline SNBT dialogs fail on the server side (`Failed to parse structure: No key ...`), check whether `ActionButton.CODEC` fields are flat (no `button` wrapper) and whether the dialog type fields match the 26.1 server (`label` not `text` in `CommonButtonData`). +- If a dialog integration test fails on "Server showed custom dialog", the dialog packet (id=0x8C in 26.1 play phase) may not have been sent. Verify the RCON command succeeded and the server printed "Displayed dialog to ...". diff --git a/.skills/mcc-integration-testing/references/command-matrix.md b/.skills/mcc-integration-testing/references/command-matrix.md index 31077374..782bc745 100644 --- a/.skills/mcc-integration-testing/references/command-matrix.md +++ b/.skills/mcc-integration-testing/references/command-matrix.md @@ -19,7 +19,7 @@ This skill uses a fixed set of stable commands for local offline integration tes - `look east` - `/gamemode survival` - `respawn` -- `/tp CursorBot 0 -60 0` +- `/tp MCCBot 0 -60 0` - `smoke_test_from_mcc_full_spectrum` - `integration_test_chat_response` @@ -29,63 +29,63 @@ Notes: ## Server-side commands via `mc-rcon` -- `op CursorBot` +- `op MCCBot` - `gamerule sendCommandFeedback true` - `gamerule logAdminCommands true` - `time set day` - `weather clear` - `say Hello from the server console` -- `msg CursorBot This is a private whisper` -- `effect give CursorBot minecraft:speed 30 1` -- `effect give CursorBot minecraft:regeneration 10 1` -- `kill CursorBot` +- `msg MCCBot This is a private whisper` +- `effect give MCCBot minecraft:speed 30 1` +- `effect give MCCBot minecraft:regeneration 10 1` +- `kill MCCBot` ## Representative entity coverage -- `execute as CursorBot at @s run summon minecraft:cow ~2 ~ ~` -- `execute as CursorBot at @s run summon minecraft:zombie ~4 ~ ~` -- `execute as CursorBot at @s run summon minecraft:creeper ~6 ~ ~` -- `execute as CursorBot at @s run summon minecraft:skeleton ~8 ~ ~` -- `execute as CursorBot at @s run summon minecraft:villager ~-2 ~ ~` -- `execute as CursorBot at @s run summon minecraft:allay ~-4 ~ ~` -- `execute as CursorBot at @s run summon minecraft:armor_stand ~ ~ ~2` -- `execute as CursorBot at @s run summon minecraft:item_display ~-6 ~ ~ {item:{id:"minecraft:diamond",count:1}}` -- `execute as CursorBot at @s run summon minecraft:spider ~10 ~ ~` -- `execute as CursorBot at @s run summon minecraft:pig ~-8 ~ ~` +- `execute as MCCBot at @s run summon minecraft:cow ~2 ~ ~` +- `execute as MCCBot at @s run summon minecraft:zombie ~4 ~ ~` +- `execute as MCCBot at @s run summon minecraft:creeper ~6 ~ ~` +- `execute as MCCBot at @s run summon minecraft:skeleton ~8 ~ ~` +- `execute as MCCBot at @s run summon minecraft:villager ~-2 ~ ~` +- `execute as MCCBot at @s run summon minecraft:allay ~-4 ~ ~` +- `execute as MCCBot at @s run summon minecraft:armor_stand ~ ~ ~2` +- `execute as MCCBot at @s run summon minecraft:item_display ~-6 ~ ~ {item:{id:"minecraft:diamond",count:1}}` +- `execute as MCCBot at @s run summon minecraft:spider ~10 ~ ~` +- `execute as MCCBot at @s run summon minecraft:pig ~-8 ~ ~` ## Block placement coverage -- `execute as CursorBot at @s run fill ~1 ~ ~1 ~3 ~2 ~3 minecraft:stone` -- `execute as CursorBot at @s run setblock ~5 ~ ~5 minecraft:chest` -- `execute as CursorBot at @s run setblock ~5 ~1 ~5 minecraft:furnace` -- `execute as CursorBot at @s run setblock ~6 ~ ~5 minecraft:crafting_table` +- `execute as MCCBot at @s run fill ~1 ~ ~1 ~3 ~2 ~3 minecraft:stone` +- `execute as MCCBot at @s run setblock ~5 ~ ~5 minecraft:chest` +- `execute as MCCBot at @s run setblock ~5 ~1 ~5 minecraft:furnace` +- `execute as MCCBot at @s run setblock ~6 ~ ~5 minecraft:crafting_table` ## Dimension change coverage -- `execute in minecraft:the_nether run tp CursorBot 0 64 0` -- `execute in minecraft:overworld run tp CursorBot 0 -60 0` +- `execute in minecraft:the_nether run tp MCCBot 0 64 0` +- `execute in minecraft:overworld run tp MCCBot 0 -60 0` ## Representative particle coverage -- `execute as CursorBot at @s run particle minecraft:happy_villager ~ ~1 ~ 0.5 0.5 0.5 0 12 force` -- `execute as CursorBot at @s run particle minecraft:end_rod ~ ~1 ~ 0.5 0.5 0.5 0.01 20 force` -- `execute as CursorBot at @s run particle minecraft:explosion ~ ~1 ~ 0 0 0 0 1 force` -- `execute as CursorBot at @s run particle minecraft:totem_of_undying ~ ~1 ~ 0.5 0.5 0.5 0.1 20 force` -- `execute as CursorBot at @s run particle minecraft:flame ~ ~1 ~ 0.2 0.2 0.2 0.02 30 force` -- `execute as CursorBot at @s run particle minecraft:heart ~ ~2 ~ 0.3 0.3 0.3 0 5 force` +- `execute as MCCBot at @s run particle minecraft:happy_villager ~ ~1 ~ 0.5 0.5 0.5 0 12 force` +- `execute as MCCBot at @s run particle minecraft:end_rod ~ ~1 ~ 0.5 0.5 0.5 0.01 20 force` +- `execute as MCCBot at @s run particle minecraft:explosion ~ ~1 ~ 0 0 0 0 1 force` +- `execute as MCCBot at @s run particle minecraft:totem_of_undying ~ ~1 ~ 0.5 0.5 0.5 0.1 20 force` +- `execute as MCCBot at @s run particle minecraft:flame ~ ~1 ~ 0.2 0.2 0.2 0.02 30 force` +- `execute as MCCBot at @s run particle minecraft:heart ~ ~2 ~ 0.3 0.3 0.3 0 5 force` ## Representative sound coverage -- `execute as CursorBot at @s run playsound minecraft:entity.lightning_bolt.thunder master CursorBot ~ ~ ~ 1 1 0` -- `execute as CursorBot at @s run playsound minecraft:block.note_block.bell master CursorBot ~ ~ ~ 1 1 0` -- `execute as CursorBot at @s run playsound minecraft:entity.experience_orb.pickup master CursorBot ~ ~ ~ 1 1 0` +- `execute as MCCBot at @s run playsound minecraft:entity.lightning_bolt.thunder master MCCBot ~ ~ ~ 1 1 0` +- `execute as MCCBot at @s run playsound minecraft:block.note_block.bell master MCCBot ~ ~ ~ 1 1 0` +- `execute as MCCBot at @s run playsound minecraft:entity.experience_orb.pickup master MCCBot ~ ~ ~ 1 1 0` ## Explosion coverage -- `execute as CursorBot at @s run summon minecraft:tnt ~3 ~ ~` -- `execute as CursorBot at @s run summon minecraft:tnt ~6 ~ ~` +- `execute as MCCBot at @s run summon minecraft:tnt ~3 ~ ~` +- `execute as MCCBot at @s run summon minecraft:tnt ~6 ~ ~` ## Kill and respawn cycle -- `kill CursorBot` (via RCON, requires survival mode) +- `kill MCCBot` (via RCON, requires survival mode) - `respawn` (via MCC command after death) diff --git a/.skills/mcc-integration-testing/scripts/common.sh b/.skills/mcc-integration-testing/scripts/common.sh index 973b5da3..ac5c0250 100755 --- a/.skills/mcc-integration-testing/scripts/common.sh +++ b/.skills/mcc-integration-testing/scripts/common.sh @@ -73,7 +73,7 @@ wait_for_server_stop() { ((elapsed += 1)) done - mc-kill "$version" >/dev/null 2>&1 || true + mc-kill "$version" --confirm >/dev/null 2>&1 || true if ! server_running "$version"; then return 0 @@ -104,7 +104,7 @@ remove_stale_stdin_pipe() { local version="$1" local pipe_path="$MCC_SERVERS/$version/stdin.pipe" - if [[ -e "$pipe_path" && ! -p "$pipe_path" ]]; then + if [[ -e "$pipe_path" ]] && ! server_running "$version"; then rm -f "$pipe_path" fi } diff --git a/.skills/mcc-integration-testing/scripts/ensure_offline_server.sh b/.skills/mcc-integration-testing/scripts/ensure_offline_server.sh index 38e73978..8ede375b 100755 --- a/.skills/mcc-integration-testing/scripts/ensure_offline_server.sh +++ b/.skills/mcc-integration-testing/scripts/ensure_offline_server.sh @@ -41,12 +41,12 @@ upsert_property() { if [[ ! -f "$PROPS_FILE" ]]; then mc-start "$VERSION" wait_for_server_ready "$VERSION" - mc-stop "$VERSION" + mc-stop "$VERSION" --confirm wait_for_server_stop "$VERSION" fi if server_running; then - mc-stop "$VERSION" + mc-stop "$VERSION" --confirm wait_for_server_stop "$VERSION" fi diff --git a/.skills/mcc-integration-testing/scripts/prepare_offline_mcc_config.sh b/.skills/mcc-integration-testing/scripts/prepare_offline_mcc_config.sh index 64727a58..1e30f673 100644 --- a/.skills/mcc-integration-testing/scripts/prepare_offline_mcc_config.sh +++ b/.skills/mcc-integration-testing/scripts/prepare_offline_mcc_config.sh @@ -28,11 +28,11 @@ if [[ $# -ge 3 && -f "$1" ]]; then TEMPLATE_INI="$1" OUTPUT_INI="$2" MC_VERSION="$3" - LOGIN_NAME="${4:-CursorBot}" + LOGIN_NAME="${4:-MCCBot}" else OUTPUT_INI="$1" MC_VERSION="$2" - LOGIN_NAME="${3:-CursorBot}" + LOGIN_NAME="${3:-MCCBot}" fi ACCOUNT_TYPE="${MCC_TEST_ACCOUNT_TYPE:-mojang}" diff --git a/.skills/mcc-integration-testing/scripts/reset_shared_test_state.sh b/.skills/mcc-integration-testing/scripts/reset_shared_test_state.sh index 2d84ac1b..eab7c694 100755 --- a/.skills/mcc-integration-testing/scripts/reset_shared_test_state.sh +++ b/.skills/mcc-integration-testing/scripts/reset_shared_test_state.sh @@ -12,7 +12,7 @@ usage() { cat <<'EOF' Usage: reset_shared_test_state.sh [--all | ...] -Kills shared tmux test sessions and removes stale stdin pipes. +Kills shared server tmux test sessions and removes stale server stdin pipes. EOF } @@ -26,8 +26,6 @@ kill_named_session() { tmux kill-session -t "$session_name" 2>/dev/null || true } -kill_named_session "mcc-debug" - if [[ $# -eq 0 || "${1:-}" == "--all" ]]; then while IFS= read -r session_name; do [[ -z "$session_name" ]] && continue @@ -36,9 +34,7 @@ if [[ $# -eq 0 || "${1:-}" == "--all" ]]; then while IFS= read -r pipe_path; do [[ -z "$pipe_path" ]] && continue - if [[ ! -p "$pipe_path" ]]; then - rm -f "$pipe_path" - fi + rm -f "$pipe_path" done < <(find "$MCC_SERVERS" -maxdepth 2 -name 'stdin.pipe' 2>/dev/null || true) else for version in "$@"; do @@ -46,5 +42,3 @@ else remove_stale_stdin_pipe "$version" done fi - -rm -f "$MCC_REPO/mcc_input.txt" diff --git a/.skills/mcc-integration-testing/scripts/run_achievements_test.sh b/.skills/mcc-integration-testing/scripts/run_achievements_test.sh index df0236e0..1484acd6 100755 --- a/.skills/mcc-integration-testing/scripts/run_achievements_test.sh +++ b/.skills/mcc-integration-testing/scripts/run_achievements_test.sh @@ -37,6 +37,8 @@ fi SERVER_DIR="$1" MC_VERSION="$2" PROFILE="$3" +SESSION_NAME="achievements-${SERVER_DIR//[^a-zA-Z0-9]/_}-${PROFILE}" +TEST_USERNAME="$(_mcc_resolve_username "$SESSION_NAME")" if [[ "$PROFILE" != "legacy" && "$PROFILE" != "modern" ]]; then echo "Unsupported profile: $PROFILE" >&2 @@ -55,11 +57,11 @@ COMMAND_LOG="$RUN_DIR/commands.log" SUMMARY_ENV="$RUN_DIR/summary.env" PROBE_SCRIPT="$RUN_DIR/achievement_probe.cs" CFG="$RUN_DIR/MinecraftClient.$MC_VERSION.ini" -INPUT_FILE="$REPO_ROOT/mcc_input.txt" +INPUT_FILE="$(_mcc_session_input_file "$SESSION_NAME")" SERVER_LOG_FILE="$MCC_SERVERS/$SERVER_DIR/logs/latest.log" TARGET_ID="minecraft:story/root" -TARGET_COMMAND_GRANT="advancement grant CursorBot only minecraft:story/root" -TARGET_COMMAND_REVOKE="advancement revoke CursorBot only minecraft:story/root" +TARGET_COMMAND_GRANT="advancement grant $TEST_USERNAME only minecraft:story/root" +TARGET_COMMAND_REVOKE="advancement revoke $TEST_USERNAME only minecraft:story/root" TARGET_TYPE="Modern 🌱" PORT="unknown" MCC_PID="" @@ -74,8 +76,8 @@ EXECUTED="yes" if [[ "$PROFILE" == "legacy" ]]; then TARGET_ID="achievement.openInventory" - TARGET_COMMAND_GRANT="achievement give achievement.openInventory CursorBot" - TARGET_COMMAND_REVOKE="achievement take achievement.openInventory CursorBot" + TARGET_COMMAND_GRANT="achievement give achievement.openInventory $TEST_USERNAME" + TARGET_COMMAND_REVOKE="achievement take achievement.openInventory $TEST_USERNAME" TARGET_TYPE="Legacy 🧱" fi @@ -124,7 +126,7 @@ cleanup() { wait "$MCC_PID" 2>/dev/null || true fi - mc-stop "$SERVER_DIR" >/dev/null 2>&1 || true + mc-stop "$SERVER_DIR" --confirm >/dev/null 2>&1 || true wait_for_server_stop "$SERVER_DIR" 20 >/dev/null 2>&1 || true ln -sfn "$RUN_DIR" "$LATEST_LINK" write_summary @@ -286,7 +288,7 @@ if [[ ! -d "$MCC_SERVERS/$SERVER_DIR" ]]; then fail "Server directory not found: $MCC_SERVERS/$SERVER_DIR" fi -bash "$SCRIPT_DIR/prepare_offline_mcc_config.sh" "$CFG" "$MC_VERSION" CursorBot >/dev/null || fail "Failed to prepare temporary MCC config." +bash "$SCRIPT_DIR/prepare_offline_mcc_config.sh" "$CFG" "$MC_VERSION" "$TEST_USERNAME" >/dev/null || fail "Failed to prepare temporary MCC config." PORT="$(bash "$SCRIPT_DIR/get_server_port.sh" "$SERVER_DIR")" "$SCRIPT_DIR/ensure_offline_server.sh" "$SERVER_DIR" @@ -296,6 +298,7 @@ if [[ "$PROFILE" == "legacy" && -f "$MCC_SERVERS/$SERVER_DIR/server.properties" sed_in_place 's/^use-native-transport=.*/use-native-transport=false/' "$MCC_SERVERS/$SERVER_DIR/server.properties" fi +mkdir -p "$(dirname "$INPUT_FILE")" : > "$INPUT_FILE" rm -f "$MCC_LOG" @@ -306,9 +309,9 @@ wait_for_server_ready "$SERVER_DIR" || fail "Server did not become ready." log_step "Starting MCC for $MC_VERSION" ( cd "$REPO_ROOT" - MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release --no-build -- \ + MCC_FILE_INPUT=1 MCC_INPUT_FILE="$INPUT_FILE" dotnet run --project MinecraftClient -c Release --no-build -- \ "$CFG" \ - CursorBot \ + "$TEST_USERNAME" \ - \ "localhost:$PORT" \ "--accounttype=mojang" \ @@ -323,9 +326,9 @@ log_step "Starting MCC for $MC_VERSION" MCC_PID=$! wait_for_file_pattern "$MCC_LOG" "Server was successfully joined." "MCC join success" 90 || fail "MCC failed to join." -wait_for_file_pattern "$SERVER_LOG_FILE" "CursorBot joined the game" "server join entry" 30 || fail "Server never logged the join." +wait_for_file_pattern "$SERVER_LOG_FILE" "$TEST_USERNAME joined the game" "server join entry" 30 || fail "Server never logged the join." -run_server_command "op CursorBot" +run_server_command "op $TEST_USERNAME" run_server_command "gamerule sendCommandFeedback true" if [[ "$PROFILE" == "modern" ]]; then run_server_command "gamerule logAdminCommands true" diff --git a/.skills/mcc-integration-testing/scripts/run_full_spectrum_test.sh b/.skills/mcc-integration-testing/scripts/run_full_spectrum_test.sh index 51021974..181862a8 100755 --- a/.skills/mcc-integration-testing/scripts/run_full_spectrum_test.sh +++ b/.skills/mcc-integration-testing/scripts/run_full_spectrum_test.sh @@ -17,31 +17,31 @@ RUN_ROOT="${TMPDIR:-/tmp}/mcc-integration-testing" RUN_ID="$(date +%Y%m%d-%H%M%S)" RUN_DIR="$RUN_ROOT/$RUN_ID" SERVER_LOG_FILE="$MCC_SERVERS/$VERSION/logs/latest.log" -MCC_LOG="$RUN_DIR/mcc.log" +SESSION_NAME="full-spectrum-${MC_VERSION//[^a-zA-Z0-9]/_}" +TEST_USERNAME="$(_mcc_resolve_username "$SESSION_NAME")" +MCC_LOG="$(_mcc_session_log_file "$SESSION_NAME")" +PID_FILE="$(_mcc_session_pid_file "$SESSION_NAME")" +MCC_TMUX_SESSION="$(_mcc_tmux_session_name "$SESSION_NAME")" BUILD_LOG="$RUN_DIR/build.log" SERVER_TMUX_LOG="$RUN_DIR/server-tmux.log" SERVER_FILE_LOG="$RUN_DIR/server-latest.log" -INPUT_FILE="$REPO_ROOT/mcc_input.txt" +INPUT_FILE="$(_mcc_session_input_file "$SESSION_NAME")" CFG="$RUN_DIR/MinecraftClient.$MC_VERSION.ini" -MCC_PID="" mkdir -p "$RUN_DIR" cleanup() { - if [[ -n "${MCC_PID:-}" ]] && kill -0 "$MCC_PID" 2>/dev/null; then - mcc-cmd "quit" >/dev/null 2>&1 || true - sleep 2 - kill "$MCC_PID" 2>/dev/null || true - wait "$MCC_PID" 2>/dev/null || true - fi + mcc-cmd --session "$SESSION_NAME" "quit" >/dev/null 2>&1 || true + sleep 2 + mcc-kill --session "$SESSION_NAME" >/dev/null 2>&1 || true - mc-stop "$VERSION" >/dev/null 2>&1 || true + mc-stop "$VERSION" --confirm >/dev/null 2>&1 || true wait_for_server_stop "$VERSION" 20 >/dev/null 2>&1 || true } trap cleanup EXIT prepare_config() { - bash "$SCRIPT_DIR/prepare_offline_mcc_config.sh" "$CFG" "$MC_VERSION" CursorBot >/dev/null + bash "$SCRIPT_DIR/prepare_offline_mcc_config.sh" "$CFG" "$MC_VERSION" "$TEST_USERNAME" >/dev/null } wait_for_server_log_pattern() { @@ -129,35 +129,57 @@ run_server_command() { run_mcc_command() { local cmd="$1" echo "MCC> $cmd" - mcc-cmd "$cmd" + mcc-cmd --session "$SESSION_NAME" "$cmd" sleep 2 } +start_mcc_session() { + local -a mcc_args=("$CFG" "$TEST_USERNAME" "-" "localhost:$SERVER_PORT") + local mcc_args_cmd + mcc_args_cmd="$(printf '%q ' "${mcc_args[@]}")" + + tmux kill-session -t "$MCC_TMUX_SESSION" 2>/dev/null || true + rm -f "$PID_FILE" + tmux new-session -d -s "$MCC_TMUX_SESSION" -x 160 -y 50 \ + "cd '$REPO_ROOT' && printf '%s\n' \"\$\$\" > '$PID_FILE' && exec env MCC_FILE_INPUT=1 MCC_INPUT_FILE='$INPUT_FILE' dotnet run --project MinecraftClient -c Release --no-build -- $mcc_args_cmd > '$MCC_LOG' 2>&1" + + for _ in $(seq 1 25); do + if [[ -s "$PID_FILE" ]]; then + return 0 + fi + sleep 0.2 + done + + fail "Failed to capture MCC PID for session $SESSION_NAME" +} + bash "$SCRIPT_DIR/preflight_test_env.sh" "$VERSION" >/dev/null bash "$SCRIPT_DIR/reset_shared_test_state.sh" "$VERSION" >/dev/null "$SCRIPT_DIR/ensure_offline_server.sh" "$VERSION" +mcc-reset-session --session "$SESSION_NAME" >/dev/null echo "Building MCC..." mcc-build > "$BUILD_LOG" 2>&1 || fail "mcc-build failed" prepare_config SERVER_PORT="$(bash "$SCRIPT_DIR/get_server_port.sh" "$VERSION")" +if [[ -z "$SERVER_PORT" ]]; then + fail "Failed to resolve server port" +fi +mkdir -p "$(dirname "$INPUT_FILE")" "$(dirname "$MCC_LOG")" : > "$INPUT_FILE" +rm -f "$MCC_LOG" echo "Starting server..." mc-start "$VERSION" >/dev/null wait_for_server_ready "$VERSION" || fail "Server did not become ready" echo "Starting MCC..." -( - cd "$REPO_ROOT" - MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release --no-build -- "$CFG" CursorBot - "localhost:$SERVER_PORT" > "$MCC_LOG" 2>&1 -) & -MCC_PID=$! +start_mcc_session wait_for_file_pattern "$MCC_LOG" "Server was successfully joined." "MCC join success" 90 || fail "MCC failed to join" -wait_for_server_log_pattern "CursorBot joined the game" "server join entry" 30 || fail "Server never logged the join" +wait_for_server_log_pattern "$TEST_USERNAME joined the game" "server join entry" 30 || fail "Server never logged the join" -run_server_command "op CursorBot" +run_server_command "op $TEST_USERNAME" run_server_command "gamerule sendCommandFeedback true" run_server_command "gamerule logAdminCommands true" run_server_command "time set day" @@ -176,7 +198,7 @@ run_mcc_command "/time query daytime" run_mcc_command "smoke_test_from_mcc_full_spectrum" # ── Phase 2: Movement and look commands ── -run_mcc_command "/tp CursorBot 0 -60 0" +run_mcc_command "/tp $TEST_USERNAME 0 -60 0" sleep 3 run_mcc_command "look up" sleep 1 @@ -193,35 +215,35 @@ run_mcc_command "inventory creativeclear 38" run_mcc_command "inventory player list" # ── Phase 4: Block placement and interaction ── -run_server_command "execute as CursorBot at @s run fill ~1 ~ ~1 ~3 ~2 ~3 minecraft:stone" +run_server_command "execute as $TEST_USERNAME at @s run fill ~1 ~ ~1 ~3 ~2 ~3 minecraft:stone" sleep 2 -run_server_command "execute as CursorBot at @s run setblock ~5 ~ ~5 minecraft:chest" +run_server_command "execute as $TEST_USERNAME at @s run setblock ~5 ~ ~5 minecraft:chest" sleep 1 -run_server_command "execute as CursorBot at @s run setblock ~5 ~1 ~5 minecraft:furnace" +run_server_command "execute as $TEST_USERNAME at @s run setblock ~5 ~1 ~5 minecraft:furnace" sleep 1 -run_server_command "execute as CursorBot at @s run setblock ~6 ~ ~5 minecraft:crafting_table" +run_server_command "execute as $TEST_USERNAME at @s run setblock ~6 ~ ~5 minecraft:crafting_table" sleep 1 # ── Phase 5: Entity spawning (expanded coverage) ── -run_server_command "execute as CursorBot at @s run summon minecraft:cow ~2 ~ ~" -run_server_command "execute as CursorBot at @s run summon minecraft:zombie ~4 ~ ~" -run_server_command "execute as CursorBot at @s run summon minecraft:creeper ~6 ~ ~" -run_server_command "execute as CursorBot at @s run summon minecraft:skeleton ~8 ~ ~" -run_server_command "execute as CursorBot at @s run summon minecraft:villager ~-2 ~ ~" -run_server_command "execute as CursorBot at @s run summon minecraft:allay ~-4 ~ ~" -run_server_command "execute as CursorBot at @s run summon minecraft:armor_stand ~ ~ ~2" -run_server_command "execute as CursorBot at @s run summon minecraft:item_display ~-6 ~ ~ {item:{id:\"minecraft:diamond\",count:1}}" -run_server_command "execute as CursorBot at @s run summon minecraft:spider ~10 ~ ~" -run_server_command "execute as CursorBot at @s run summon minecraft:pig ~-8 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:cow ~2 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:zombie ~4 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:creeper ~6 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:skeleton ~8 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:villager ~-2 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:allay ~-4 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:armor_stand ~ ~ ~2" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:item_display ~-6 ~ ~ {item:{id:\"minecraft:diamond\",count:1}}" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:spider ~10 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:pig ~-8 ~ ~" sleep 2 run_mcc_command "entity" # ── Phase 6: Effects and environment ── -run_server_command "effect give CursorBot minecraft:speed 30 1" +run_server_command "effect give $TEST_USERNAME minecraft:speed 30 1" sleep 2 run_mcc_command "health" -run_server_command "effect give CursorBot minecraft:regeneration 10 1" +run_server_command "effect give $TEST_USERNAME minecraft:regeneration 10 1" sleep 2 run_mcc_command "health" @@ -233,39 +255,39 @@ run_mcc_command "/gamemode creative" sleep 2 # ── Phase 8: Dimension change (nether) ── -run_server_command "execute in minecraft:the_nether run tp CursorBot 0 64 0" +run_server_command "execute in minecraft:the_nether run tp $TEST_USERNAME 0 64 0" sleep 4 run_mcc_command "health" -run_server_command "execute in minecraft:overworld run tp CursorBot 0 -60 0" +run_server_command "execute in minecraft:overworld run tp $TEST_USERNAME 0 -60 0" sleep 4 # ── Phase 9: Server chat and whisper ── run_server_command "say Hello from the server console" sleep 2 -run_server_command "msg CursorBot This is a private whisper" +run_server_command "msg $TEST_USERNAME This is a private whisper" sleep 2 run_mcc_command "integration_test_chat_response" # ── Phase 10: Particles, sounds, and explosions ── -run_server_command "execute as CursorBot at @s run particle minecraft:happy_villager ~ ~1 ~ 0.5 0.5 0.5 0 12 force" -run_server_command "execute as CursorBot at @s run particle minecraft:end_rod ~ ~1 ~ 0.5 0.5 0.5 0.01 20 force" -run_server_command "execute as CursorBot at @s run particle minecraft:explosion ~ ~1 ~ 0 0 0 0 1 force" -run_server_command "execute as CursorBot at @s run particle minecraft:totem_of_undying ~ ~1 ~ 0.5 0.5 0.5 0.1 20 force" -run_server_command "execute as CursorBot at @s run particle minecraft:flame ~ ~1 ~ 0.2 0.2 0.2 0.02 30 force" -run_server_command "execute as CursorBot at @s run particle minecraft:heart ~ ~2 ~ 0.3 0.3 0.3 0 5 force" +run_server_command "execute as $TEST_USERNAME at @s run particle minecraft:happy_villager ~ ~1 ~ 0.5 0.5 0.5 0 12 force" +run_server_command "execute as $TEST_USERNAME at @s run particle minecraft:end_rod ~ ~1 ~ 0.5 0.5 0.5 0.01 20 force" +run_server_command "execute as $TEST_USERNAME at @s run particle minecraft:explosion ~ ~1 ~ 0 0 0 0 1 force" +run_server_command "execute as $TEST_USERNAME at @s run particle minecraft:totem_of_undying ~ ~1 ~ 0.5 0.5 0.5 0.1 20 force" +run_server_command "execute as $TEST_USERNAME at @s run particle minecraft:flame ~ ~1 ~ 0.2 0.2 0.2 0.02 30 force" +run_server_command "execute as $TEST_USERNAME at @s run particle minecraft:heart ~ ~2 ~ 0.3 0.3 0.3 0 5 force" -run_server_command "execute as CursorBot at @s run playsound minecraft:entity.lightning_bolt.thunder master CursorBot ~ ~ ~ 1 1 0" -run_server_command "execute as CursorBot at @s run playsound minecraft:block.note_block.bell master CursorBot ~ ~ ~ 1 1 0" -run_server_command "execute as CursorBot at @s run playsound minecraft:entity.experience_orb.pickup master CursorBot ~ ~ ~ 1 1 0" +run_server_command "execute as $TEST_USERNAME at @s run playsound minecraft:entity.lightning_bolt.thunder master $TEST_USERNAME ~ ~ ~ 1 1 0" +run_server_command "execute as $TEST_USERNAME at @s run playsound minecraft:block.note_block.bell master $TEST_USERNAME ~ ~ ~ 1 1 0" +run_server_command "execute as $TEST_USERNAME at @s run playsound minecraft:entity.experience_orb.pickup master $TEST_USERNAME ~ ~ ~ 1 1 0" -run_server_command "execute as CursorBot at @s run summon minecraft:tnt ~3 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:tnt ~3 ~ ~" sleep 2 -run_server_command "execute as CursorBot at @s run summon minecraft:tnt ~6 ~ ~" +run_server_command "execute as $TEST_USERNAME at @s run summon minecraft:tnt ~6 ~ ~" # ── Phase 11: Kill and respawn cycle ── run_mcc_command "/gamemode survival" sleep 2 -run_server_command "kill CursorBot" +run_server_command "kill $TEST_USERNAME" sleep 4 run_mcc_command "respawn" sleep 4 @@ -295,14 +317,14 @@ assert_not_contains "$MCC_LOG" "Failed to load settings" "MCC failed to reload i assert_not_contains "$MCC_LOG" "NullReferenceException" "A NullReferenceException occurred during the test" # ── Assertions: Server log ── -assert_contains "$SERVER_FILE_LOG" "CursorBot joined the game" "Server never saw CursorBot join" +assert_contains "$SERVER_FILE_LOG" "$TEST_USERNAME joined the game" "Server never saw $TEST_USERNAME join" assert_contains "$SERVER_FILE_LOG" "smoke_test_from_mcc_full_spectrum" "Server never received the client chat message" assert_contains "$SERVER_FILE_LOG" "Displaying particle minecraft:happy_villager" "Particle events were not recorded on the server" -assert_contains "$SERVER_FILE_LOG" "Played sound minecraft:block.note_block.bell to CursorBot" "Sound events were not recorded on the server" +assert_contains "$SERVER_FILE_LOG" "Played sound minecraft:block.note_block.bell to $TEST_USERNAME" "Sound events were not recorded on the server" assert_contains "$SERVER_FILE_LOG" "Summoned new Primed TNT" "TNT summon did not occur on the server" assert_contains "$SERVER_FILE_LOG" "integration_test_chat_response" "Server never received the chat response test message" assert_contains "$SERVER_FILE_LOG" "Hello from the server console" "Server say command was not logged" -assert_contains "$SERVER_FILE_LOG" "Killed CursorBot" "Server kill command did not execute" +assert_contains "$SERVER_FILE_LOG" "Killed $TEST_USERNAME" "Server kill command did not execute" assert_not_contains "$SERVER_FILE_LOG" "Sending unknown packet 'clientbound/minecraft:disconnect'" "Server hit the disconnect packet regression during the test" cat <&2 + return 1 +} + +wait_for_server_log_pattern() { + local pattern="$1" + local description="$2" + local timeout="${3:-60}" + local elapsed=0 + + while (( elapsed < timeout )); do + if [[ -f "$SERVER_LOG_FILE" ]] && grep -Fq "$pattern" "$SERVER_LOG_FILE"; then + return 0 + fi + sleep 1 + ((elapsed += 1)) + done + + echo "Timed out waiting for server log: $description" >&2 + return 1 +} + +capture_server_logs() { + mc-log "$VERSION" 400 > "$SERVER_TMUX_LOG" 2>/dev/null || true + if [[ -f "$SERVER_LOG_FILE" ]]; then + cp "$SERVER_LOG_FILE" "$SERVER_FILE_LOG" + fi +} + +fail() { + capture_server_logs + echo "FAIL: $1" >&2 + echo "Run directory: $RUN_DIR" >&2 + exit 1 +} + +cleanup() { + mcc-cmd --session "$SESSION_A" "quit" >/dev/null 2>&1 || true + mcc-cmd --session "$SESSION_B" "quit" >/dev/null 2>&1 || true + sleep 1 + mcc-kill --session "$SESSION_A" >/dev/null 2>&1 || true + mcc-kill --session "$SESSION_B" >/dev/null 2>&1 || true + mc-stop "$VERSION" --confirm >/dev/null 2>&1 || true + wait_for_server_stop "$VERSION" 20 >/dev/null 2>&1 || true +} +trap cleanup EXIT + +assert_session_alive() { + local session="$1" + local pid_file="$2" + if [[ -s "$pid_file" ]]; then + local pid + pid="$(tr -cd '0-9' < "$pid_file")" + if [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then + return 0 + fi + fi + + tmux has-session -t "$(_mcc_tmux_session_name "$session")" 2>/dev/null +} + +assert_server_alive() { + server_running "$VERSION" || fail "Shared server session is not alive" +} + +start_file_input_session() { + local session="$1" + local username="$2" + local port="$3" + bash "$REPO_ROOT/tools/mcc-debug.sh" \ + --version "$VERSION" \ + --port "$port" \ + --file-input \ + --no-build \ + --session "$session" \ + --username "$username" >/dev/null +} + +bash "$SCRIPT_DIR/preflight_test_env.sh" "$VERSION" >/dev/null +bash "$SCRIPT_DIR/reset_shared_test_state.sh" "$VERSION" >/dev/null +"$SCRIPT_DIR/ensure_offline_server.sh" "$VERSION" >/dev/null +mcc-reset-session --session "$SESSION_A" >/dev/null +mcc-reset-session --session "$SESSION_B" >/dev/null + +echo "Building MCC..." +mcc-build > "$BUILD_LOG" 2>&1 || fail "mcc-build failed" + +echo "Starting shared server..." +mc-start "$VERSION" >/dev/null +wait_for_server_ready "$VERSION" || fail "Server did not become ready" +SERVER_PORT="$(bash "$SCRIPT_DIR/get_server_port.sh" "$VERSION")" +if [[ -z "$SERVER_PORT" ]]; then + fail "Failed to resolve server port" +fi + +echo "Starting MCC session A..." +start_file_input_session "$SESSION_A" "$USERNAME_A" "$SERVER_PORT" +echo "Starting MCC session B..." +start_file_input_session "$SESSION_B" "$USERNAME_B" "$SERVER_PORT" + +wait_for_file_pattern "$LOG_A" "Server was successfully joined." "session A join success" 90 || fail "Session A failed to join" +wait_for_file_pattern "$LOG_B" "Server was successfully joined." "session B join success" 90 || fail "Session B failed to join" +wait_for_server_log_pattern "$USERNAME_A joined the game" "server join for session A" 30 || fail "Server never logged $USERNAME_A join" +wait_for_server_log_pattern "$USERNAME_B joined the game" "server join for session B" 30 || fail "Server never logged $USERNAME_B join" + +echo "Sending debug state to both sessions..." +mcc-cmd --session "$SESSION_A" "debug state" +mcc-cmd --session "$SESSION_B" "debug state" +sleep 2 +wait_for_file_pattern "$LOG_A" "[FileInput] > debug state" "session A debug state command" 20 || fail "Session A did not consume debug state" +wait_for_file_pattern "$LOG_B" "[FileInput] > debug state" "session B debug state command" 20 || fail "Session B did not consume debug state" + +echo "Killing session A..." +mcc-kill --session "$SESSION_A" >/dev/null 2>&1 || true +sleep 2 + +assert_session_alive "$SESSION_B" "$PID_B_FILE" || fail "Session B is not alive after killing session A" +assert_server_alive + +echo "Verifying session B still responds..." +mcc-cmd --session "$SESSION_B" "health" +wait_for_file_pattern "$LOG_B" "[FileInput] > health" "session B health command after session A kill" 20 || fail "Session B stopped responding after session A kill" + +if [[ -s "$PID_A_FILE" ]]; then + pid_a="$(tr -cd '0-9' < "$PID_A_FILE")" + if [[ -n "$pid_a" ]] && kill -0 "$pid_a" 2>/dev/null; then + fail "Session A is still alive after mcc-kill" + fi +fi + +capture_server_logs + +cat < - Manually triggered skill for the Minecraft Console Client (MCC) project - (https://github.com/MCCTeam/Minecraft-Console-Client). Invoke this skill - when the user wants to create, design, or generate a high-quality prompt for - addressing any MCC-related development request -- bug fixes, new features, - refactors, protocol work, authentication, bot scripting, or architecture - decisions. The skill interviews the user, explores the MCC codebase via - sub-agents, identifies relevant project skills, and synthesises everything - into a state-of-the-art, self-contained prompt that includes an embedded - reasoning framework, plan-mode directives, skill references, and targeted - sub-agent instructions. Do NOT trigger automatically; wait for the user to - explicitly invoke it (e.g. "generate a prompt for...", "build me a prompt", - "/mcc-prompt-engineer", or "use the MCC prompt skill"). -compatibility: "Claude Code, Cursor, Codex, GitHub Copilot, Windsurf, and any AI coding agent. Optional tools: AskUserQuestion, Task, WebSearch, plan." ---- - -# MCC Prompt Engineer - -Generates state-of-the-art prompts for Minecraft Console Client development -tasks. Combines live codebase knowledge (via sub-agents and AGENTS.md), -structured prompt engineering patterns, an embedded ULTRATHINK reasoning -framework, and the MCC project's skill ecosystem so the produced prompt is -immediately ready to use in any AI coding agent. - ---- - -## Reference files -- load on demand - -| File | Load when | -|---|---| -| `references/reasoning-framework.md` | Embedding the ULTRATHINK protocol into the generated prompt | -| `references/prompt-patterns.md` | Selecting the right structural patterns for the prompt | - -Additionally, read `AGENTS.md` at the repository root early in the process. -It contains the authoritative codebase map -- module responsibilities, key -file paths, architecture overview, version support table, and engineering -DO/DON'T guidance -- and replaces the need for broad exploratory file reads. - ---- - -## Step 0 -- Environment Detection - -Determine which tools are available before doing anything else. This gates how -you ask questions and spawn sub-agents. - -``` -Claude Code -> AskUserQuestion and Task tools; plan mode via "plan" tool - or /plan command. -Cursor / Codex -> No AskUserQuestion; ask clarifying questions inline as a - numbered list; sub-agents via parallel tool calls where - supported, otherwise inline. -GitHub Copilot -> Similar to Cursor; use runSubagent where available. -Other agents -> Fall back to inline questions and sequential exploration. -``` - -Record your environment determination internally before continuing. - ---- - -## Step 1 -- Parse the Request - -Extract everything the user has stated. Do not invent requirements or make -assumptions yet. Capture: - -- **Domain area:** authentication, bot scripting, protocol handling, network, - performance, refactor, new feature, bug fix, version adaptation, or other. -- **Stated goal:** what the user wants to achieve. -- **Known constraints:** language version (C# 14 / .NET 10), compatibility - requirements, scope limits (additive-only, etc.). -- **References provided:** URLs, file paths, issue numbers, error messages. -- **Ambiguity level:** High (proceed) / Medium (note gaps) / Low (clarify - before continuing). - ---- - -## Step 2 -- Clarification Interview - -**Goal:** Resolve all blocking ambiguities before spending time on codebase -exploration. Unblocking questions first saves sub-agent round-trips. - -### If in Claude Code -Use the `AskUserQuestion` tool. Ask all questions in a single call -- do not -drip-feed questions turn by turn. - -### In any other environment -Print a numbered list of questions. Wait for answers before proceeding. - -### Question selection guide - -Ask only what is genuinely blocking: - -| Ambiguity | Blocking? | Example question | -|---|---|---| -| Scope of change (additive vs rewrite) | Yes | "Should this be additive, or can it replace existing code?" | -| Target .NET / C# version | Yes if non-obvious | "Which .NET version -- 8, 10, or latest?" | -| Auth flow variant | Yes for auth tasks | "Device-code flow, interactive browser, or both?" | -| Performance constraints | Usually no | Skip unless the user mentioned perf | -| Test coverage expectation | Sometimes | "Do you want unit tests, or integration guidance only?" | - -**Always ask:** -1. "Is there a specific file, class, or method you already know is the right - starting point?" -2. "Are there any hard constraints -- things the solution must NOT do or touch?" - -Offer a best-guess assumption alongside each question so the user can confirm -or correct rather than answer from scratch. - ---- - -## Step 3 -- Codebase Exploration - -Start by reading `AGENTS.md` at the repository root. It provides the -authoritative module map, architecture overview, version support table, and -engineering DO/DON'T guidance. Use it to: - -- Identify which modules and files are relevant to the user's domain -- Understand the project's conventions and constraints -- Pre-populate sub-agent exploration plans with concrete file paths - -Then dispatch the following sub-agents **simultaneously**. Each must return a -concise written summary only -- raw file contents and grep output waste context -and degrade reasoning quality downstream (context rot). - -### SUB-AGENT A -- Domain Explorer (read-only) - -**Mission:** Locate and map every file, class, and method directly relevant -to the user's domain area. Scope your search using the module map from -AGENTS.md rather than exploring the entire repository. - -**Scoped exploration plan (fill in before dispatching):** -``` -Files / directories to read: - [derived from AGENTS.md module map for this domain -- fill in concrete paths] - -Searches to run: - grep for: [key identifiers from the user's request] - -Output: - - File paths and relevant class/method names - - The exact lines most relevant to the user's goal - - Existing abstractions or interfaces that should be extended - - Patterns and conventions in use - -Stop condition: the full call-chain for the relevant feature is mapped. -``` - -### SUB-AGENT B -- Dependency & Integration Scout (read-only) - -**Mission:** Identify everything that calls into or depends on the domain area -found by Sub-Agent A, so the generated prompt can correctly scope the -integration seam. - -**Output:** -- All call sites that need updating or wiring -- Public interfaces or contracts that must be preserved -- Any existing test files covering this area -- NuGet packages or external dependencies in use - -**Stop condition:** the integration boundary is fully mapped. - -### SUB-AGENT C -- Web & Docs Researcher - -**Mission:** Search the web and official documentation for the user's domain. -Always search the web -- do not limit research to the codebase. - -**Suggested search targets (adapt to the domain):** -- Official Microsoft or Mojang documentation -- GitHub issues or PRs in MCCTeam/Minecraft-Console-Client -- Reference implementations cited by the user -- wiki.vg for Minecraft protocol reference -- PrismarineJS repos for JS reference implementations -- learn.microsoft.com for .NET or auth APIs - -**Output:** A concise reference document: best-practice approach, known -pitfalls, and links to authoritative sources. Flag conflicting information. - -Await all sub-agent summaries before proceeding to Step 4. - ---- - -## Step 4 -- Skill Discovery - -Scan the `.claude/skills/` directory in the project root. Read the YAML -frontmatter (name + description) from each skill's `SKILL.md`. The current -MCC skills and their domains: - -| Skill | When it's relevant | -|---|---| -| `csharp-best-practices` | Any task that writes or modifies C# code | -| `humanizer` | Any task that produces user-facing documentation | -| `mcc-chatbot-authoring` | Creating or modifying bots (built-in or script) | -| `mcc-dev-workflow` | Building MCC, starting test servers, debugging | -| `mcc-integration-testing` | Validating changes against a real Minecraft server | -| `mcc-version-adaptation` | Adding support for a new Minecraft version | - -Identify which skills are relevant to the user's request. Record them for -inclusion in the generated prompt's `` block. - -The downstream agent running the prompt has access to these same skills. -Pointing it to the right ones gives it domain-specific working knowledge -that significantly improves output quality -- like handing a new engineer -the right onboarding docs before they start. - ---- - -## Step 5 -- Synthesis - -Combine the sub-agent summaries, user answers, AGENTS.md context, and skill -catalogue into a single internal knowledge base: - -``` -## Synthesis Note - -Goal (one sentence): ... -Domain files: [key paths from Sub-Agent A] -Integration seam: [from Sub-Agent B -- what must not break] -External references: [from Sub-Agent C] -Conventions: [from AGENTS.md engineering guidance] -Relevant skills: [from Step 4] -Blocking unknowns remaining: [if any, ask the user now] -``` - -If blocking unknowns remain, ask them now before generating the prompt. - ---- - -## Step 6 -- Generate the Prompt - -Read `references/reasoning-framework.md` and `references/prompt-patterns.md` -now if you have not already. - -Build the final prompt using the **Prompt Assembly Checklist** below. Every -item must be addressed -- a missing item is a prompt defect. - -### Prompt Assembly Checklist - -- [ ] `` block: domain expert covering all relevant technologies. -- [ ] `` block: synthesised from user goal + sub-agent findings. - Include the exact error message or failure mode if provided. - Pre-answer known facts so the downstream agent does not re-derive them. -- [ ] `` directive: instruct the agent to read AGENTS.md for the - module map, architecture, and engineering guidance. -- [ ] `` block: list the relevant skills from Step 4 with - file paths and when to load each one. -- [ ] `` block: adapted ULTRATHINK framework. - Phase 0 orientation pre-answered where certain. - Phase 1 requirements pre-seeded from the synthesis note. - Phase 2 decomposition pre-seeded with sub-tasks. - Phase 2D exploration plan pre-populated with real file paths. - Phase 4 self-validation items domain-specific and verifiable. -- [ ] Adversarial review step: instruct the agent to critique its own plan - before implementation -- check for incorrect assumptions, missing edge - cases, scope creep, and security issues. -- [ ] Sub-agent directives: at minimum a Codebase Explorer and an External - Researcher, each with scoped missions and summary-only output rules. -- [ ] Plan mode directive: must appear before Phase 0. Require a written - plan presented as a Markdown checklist before any code is written. -- [ ] `` block: 3-6 measurable, verifiable goals. -- [ ] `` block: name specific directories, classes, or - files that must NOT be touched. -- [ ] `` block: ordered delivery -- planning artefacts first, - then implementation files. -- [ ] Web search mandate in at least one sub-agent directive. -- [ ] Anti-hallucination anchors: name the exact APIs, URLs, packet IDs, or - protocol details that are high-risk fabrication targets. -- [ ] C# standards: reference the `csharp-best-practices` skill when the - task involves writing C# code. - -### Prompt structure template - -Use this XML skeleton. Populate every block from the synthesis note and the -assembly checklist above. - -```xml - -[Domain expert covering: C# 14 / .NET 10, the specific protocol/feature - domain, MCC project conventions from AGENTS.md] - - - -[User goal restated. Known error or failure mode. Why the current state - is insufficient. What "done" looks like. Key facts pre-answered.] - - - -Read AGENTS.md at the repository root before starting implementation. -It contains the authoritative module map, architecture overview, version -support table, and engineering DO/DON'T guidance. Use it to orient yourself -and scope your exploration. When AGENTS.md and other docs disagree, prefer -current code, then AGENTS.md. - - - -The following project skills are at .claude/skills/ and should be loaded -(by reading their SKILL.md) when their domain applies to this task: - -[List only relevant skills, one per line:] -- csharp-best-practices (.claude/skills/csharp-best-practices/SKILL.md): - Read before writing or reviewing any C# code. -- [other relevant skills...] - -Load skills just-in-time as you reach relevant work, not all upfront. - - - -## Plan Before Code (non-negotiable) - -Before writing any implementation code, produce and present a complete -written plan as a Markdown checklist. If a plan mode tool or command is -available, activate it now and remain in plan mode until the plan is -explicitly approved. Do not write a single line of production code until -the plan is confirmed. - -[Adapted ULTRATHINK framework from references/reasoning-framework.md. - Pre-answer Phase 0; pre-seed Phases 1 and 2; configure Phase 2D with - actual file paths; make Phase 4 checklist verifiable for this task. - - Add an adversarial self-review step after planning: - Re-read your plan as a sceptical senior engineer. Check for incorrect - assumptions about MCC internals, missing edge cases, scope creep, - anti-patterns, and security issues.] - - - -[3-6 measurable, verifiable goals. Each checkable with a yes/no answer.] - - - -[What must NOT be modified. Name specific directories, classes, or files. - What must remain backwards-compatible. What to avoid even if it seems - helpful.] - - - -[Ordered: planning artefacts first (checklist, design decisions, critique - summary), then implementation files, then compliance report.] - -``` - -### Sub-agent output discipline - -Every sub-agent directive in the generated prompt must include: - -> "Return a concise written summary only. Do NOT dump raw file contents, -> grep output, or unprocessed tool results into the main context." - -This prevents context rot -- irrelevant tokens dilute focus and degrade -the agent's reasoning quality. - ---- - -## Step 7 -- Prompt Quality Gate - -Before delivering, verify every item: - -``` -- [ ] Every block (, , , , - , , , - ) is present and non-empty. -- [ ] The prompt directs the agent to read AGENTS.md for orientation. -- [ ] lists the correct skills for this task's domain. -- [ ] Phase 2D has actual file paths, not generic placeholders. -- [ ] Plan mode directive appears before Phase 0. -- [ ] All sub-agents have scoped missions and summary-only output rules. -- [ ] At least one sub-agent has an explicit web search mandate. -- [ ] Phase 4 items are objectively verifiable for THIS task. -- [ ] Anti-hallucination anchors target this domain's fabrication risks. -- [ ] Scope constraint is specific enough to prevent accidental drift. -- [ ] A senior engineer reading this prompt would immediately understand - what success looks like. -``` - -Fix any unchecked items before delivering. - ---- - -## Step 8 -- Deliver - -Present the generated prompt in a fenced code block (` ```xml `) so the user -can copy it cleanly. - -Follow with a brief plain-English summary (3-5 sentences) explaining: -- What the prompt will instruct the agent to do -- Which MCC files and skills the agent will be directed to -- The most likely blocking decision points -- Any remaining assumptions the user should validate - ---- - -## Anti-patterns -- never do these - -- Do not ask more than 3-4 clarifying questions at once. -- Do not start codebase exploration before asking clarifying questions -- - you may explore the wrong area entirely. -- Do not generate a prompt that skips the planning phase. -- Do not populate Phase 2D with generic placeholders like "[auth directory]" - -- use actual file paths. -- Do not produce a prompt with vague scope constraints. "Don't touch - unrelated code" requires the agent to guess. Name the specific files - and directories that are out of bounds. -- Do not include sub-agent raw output in the final prompt -- the prompt - should instruct the downstream agent to do its own exploration. Your - sub-agent findings inform the prompt's specificity, not its content. -- Do not list skills in `` that are irrelevant to the task. diff --git a/.skills/mcc-prompt-engineer/references/prompt-patterns.md b/.skills/mcc-prompt-engineer/references/prompt-patterns.md deleted file mode 100644 index 5ffa402d..00000000 --- a/.skills/mcc-prompt-engineer/references/prompt-patterns.md +++ /dev/null @@ -1,176 +0,0 @@ -# Prompt Engineering Patterns for MCC Tasks -# Reference file — load when selecting structural patterns for the generated prompt - ---- - -## Core Principles (Anthropic / 2025–2026 Best Practices) - -### 1. Structural Clarity over Prose Instructions -XML tags are the most reliable structural delimiter for Claude and most modern -coding agents. Use ``, ``, ``, -``, ``, and `` consistently. -Agents parse tagged blocks more reliably than numbered lists in free prose. - -### 2. Pre-Answer What You Know -Do not make the agent re-derive facts you already know. If codebase exploration -has identified the exact failing file and line, put it in ``. If the -success criterion is clear, state it explicitly in Phase 1 instead of asking -the agent to infer it. Every pre-answered item is one fewer reasoning step -the agent can get wrong. - -### 3. Plan Mode is Non-Negotiable for Complex Tasks -Any task touching more than two files or requiring architectural decisions MUST -include an explicit plan-mode directive. Agents that skip planning produce -lower-quality code and are harder to course-correct. The directive must appear -before Phase 0 so it gates the entire session. - -### 4. Sub-Agents for Context Hygiene -The main agent context is a finite, precious resource. Exploratory work (file -reads, web searches, grep runs) that is consumed but not needed in the final -output should always be delegated to sub-agents that return summaries only. -Keyword: "Return a concise written summary. Do NOT dump raw output into the -main context." - -### 5. Adversarial Critique Before Implementation -A plan reviewed only by the author is a plan that inherits the author's blind -spots. Every complex prompt must include a Phase 2G adversarial sub-agent that -reviews the plan before any code is written. This is the single highest-ROI -addition to any agentic prompt. - -### 6. Domain-Specific Anti-Hallucination Anchors -Generic anti-hallucination instructions ("don't make things up") are weakly -effective. Effective anchors name the exact high-risk domains: -- OAuth endpoint URLs (fabrication-prone) -- MSAL / Microsoft auth API signatures (version-sensitive) -- Minecraft protocol packet IDs and field layouts (specialised, sparse training data) -- MCC internal class/method names (not in general training data) - -### 7. Scope Constraints Must Be Specific, Not Vague -"Don't touch unrelated code" is not a constraint — it requires the agent to -make a judgement call. A good scope constraint names specific directories, -classes, or files that are out of bounds, and states the integration boundary -precisely. - -### 8. Output Format as a Delivery Contract -The `` block is a contract, not a suggestion. It must specify: -- The ordering of output sections (planning artefacts before code). -- File naming conventions. -- Code block format (fenced, with filename on the opening fence line). -- Which artefacts accompany the code (checklist, critique summary, compliance - report). - ---- - -## Pattern Library - -### Pattern A — Bug Fix with Root Cause Isolation - -Best for: authentication failures, network errors, unexpected exceptions. - -Key additions to the reasoning protocol: -- Phase 1.3 must include implicit requirement: "the fix must not alter the - working behaviour of any adjacent auth/network path." -- Phase 2D exploration plan must identify both the failing path AND the - expected (working) path for comparison. -- Phase 4 checklist must include: "Does the fix reproduce the error in a - test harness before claiming it is resolved?" - -### Pattern B — Refactor + New Module Introduction - -Best for: extracting monolithic logic into a dedicated, testable module. - -Key additions: -- Phase 2F Tree of Thoughts must include a "module boundary" decision. -- Design goals must include: "the module's public API is stable and versioned." -- Scope constraint must name exactly which existing files are being replaced - vs. which are being delegated to (the integration seam). -- A compliance sub-agent must verify the old entry point still works after - the refactor. - -### Pattern C — Protocol / Network Implementation - -Best for: Minecraft packet handling, connection management, session state. - -Key additions: -- Sub-Agent B (researcher) must be directed to the Minecraft wiki and any - open-source reference clients (e.g., wiki.vg, Prismarine). -- Anti-hallucination anchor: "Never fabricate packet IDs, field types, or - VarInt boundaries — cross-check against the official protocol documentation." -- Phase 4 must include: "Are all packet field offsets and types verified - against the official protocol spec?" - -### Pattern D — C# Language Modernisation - -Best for: C# 14 features, record types, primary constructors, pattern matching. - -Key additions: -- Sub-Agent C (style auditor) must check the existing use of record types in - the project before prescribing new ones. -- Design goals must specify which C# 14 features are required vs. optional. -- Anti-hallucination anchor: "Do not assume C# 14 features are available unless - the project's .csproj has been confirmed to target .NET 10 or a compatible - SDK." -- Phase 4 must include: "Does the code compile cleanly against the target - .NET version? Are there any C# 14 features used that require a language - version pragma?" - -### Pattern E — Bot Scripting / Extension - -Best for: new bot actions, scripting API extensions, event hooks. - -Key additions: -- Sub-Agent A must locate the scripting API surface (CSharpRunner/ChatBot) - and any existing event dispatcher / hook registration code. -- Design goals must include: "the new API is backwards-compatible with - existing user scripts." -- Scope constraint must specify: "do not modify the scripting runtime loader - or the existing public API surface -- extend only." - -### Pattern F -- Context Engineering / JIT Context Loading - -Best for: tasks where the agent needs broad codebase awareness without context -overload, or tasks that span multiple subsystems. - -Key additions: -- The prompt must include an `` block containing the AGENTS.md code - map so the agent has reliable structural orientation from the start. -- An `` block lists skills the agent can invoke for domain- - specific guidance (e.g., `mcc-chatbot-authoring`, `mcc-version-adaptation`). -- Sub-agents must return concise summaries, not raw file dumps -- protect the - main context from noise. -- Phase 2D exploration must use targeted searches (grep, semantic search) with - explicit stop conditions, not open-ended file reads. -- Context rot prevention: avoid stale cached assumptions; re-verify facts that - are older than the current execution context. -- For multi-step sessions: periodically summarise completed work to reclaim - context space. Emit incremental progress rather than accumulating full - history. - ---- - -## Prompt Length Calibration - -| Task complexity | Recommended prompt size | -|---|---| -| Single-file bug fix | ~40–80 lines — short role, context, 3-phase reasoning, clear output | -| Module refactor | ~120–200 lines — full ULTRATHINK, 4 sub-agents, ToT decisions | -| New protocol feature | ~150–250 lines — full ULTRATHINK, external research mandate, wiki anchors | -| Architecture overhaul | ~200–300 lines — full ULTRATHINK, 5+ sub-agents, compliance verifier | - -Longer is not better. Every line in a prompt that does not add precision or -constraint is a line that dilutes the signal. Trim ruthlessly after drafting. - ---- - -## Checklist: Signs of a Weak Prompt - -- The role block is generic ("expert software engineer") rather than domain-specific. -- `` omits the exact error message or failing state. -- Phase 2D exploration plan uses placeholders like "[auth directory]" instead - of real MCC paths. -- Sub-agents have open-ended missions ("research everything about X"). -- No adversarial critique phase. -- Scope constraint says "don't touch unrelated code" without naming specific - files or directories. -- `` does not specify the ordering or the accompanying artefacts. -- Plan mode directive is absent or appears after Phase 0. diff --git a/.skills/mcc-prompt-engineer/references/reasoning-framework.md b/.skills/mcc-prompt-engineer/references/reasoning-framework.md deleted file mode 100644 index 2a3e9261..00000000 --- a/.skills/mcc-prompt-engineer/references/reasoning-framework.md +++ /dev/null @@ -1,383 +0,0 @@ -# ULTRATHINK Reasoning Framework -# Reference file -- load into context when building the block - ---- - -## Identity & Core Directive - -You are an expert AI coding agent operating with maximum reasoning effort. -Your primary purpose is to help engineers build correct, maintainable, -production-ready software. You apply System 2 thinking at all times: slow, -methodical, and fully verifiable -- never impulsive. - -You are equally capable of handling general-purpose (non-programming) tasks; -the same structured reasoning applies to any domain. - -Non-negotiable quality standards: -- Correctness over speed. -- Explicit over implicit -- every reasoning step is visible and checkable. -- Verification over assumption -- validate before building on any result. -- Honesty about uncertainty -- never fabricate; flag knowledge gaps clearly. - ---- - -## Reasoning Protocol (ULTRATHINK Mode) - -Engage extended, deliberate reasoning for every non-trivial request. -Apply the full protocol below. For simple, unambiguous tasks you may compress -phases, but never skip verification. - ---- - -### Phase 0 -- Orientation (always execute first) - -Before doing anything else, ask yourself: - -1. What type of request is this? - - New feature / implementation - - Bug investigation / fix - - Refactor / improvement - - Code review / audit - - Architecture / design decision - - General (non-programming) question - - Combination of the above - -2. What is the confidence level on the requirements? - - High: requirements are unambiguous -> proceed to decomposition. - - Medium: some ambiguity -> note the ambiguities and resolve them (Phase 2C) - before coding. - - Low: requirements are underspecified -> ask targeted clarifying questions - before any other work. - -3. Does this require codebase exploration? - - Yes -> plan and execute exploration (Phases 2D-2E) before implementation. - - No -> proceed directly to planning (Phase 2F). - ---- - -### Phase 1 -- Query Analysis - -Parse the request deeply. Surface all explicit and implicit requirements. - -``` -Step 1.1: Restate the goal in your own words (one concise sentence). -Step 1.2: List explicit requirements (stated directly). -Step 1.3: Identify implicit requirements (unstated but necessary for a correct solution). -Step 1.4: Identify constraints: language, framework, performance, compatibility, security, style. -Step 1.5: Identify success criteria -- how will you know the solution is correct and complete? -Step 1.6: Flag unknowns and ambiguities (mark each as [BLOCKING] or [NON-BLOCKING]). -``` - -Internal check before proceeding: -- [ ] Do I have enough information to decompose the problem without inventing - requirements? -- [ ] Are there [BLOCKING] unknowns that require clarification? - ---- - -### Phase 2 -- Problem Decomposition - -Break the problem into a set of coherent, independently verifiable sub-tasks. - -For each sub-task identify: -- Input: what it depends on. -- Output: what it produces. -- Constraints: specific rules that apply. -- Success criterion: how correctness is verified. - -Represent the decomposition as a checklist: - -```markdown -## Implementation Plan - -- [ ] Sub-task 1: [description] | Input: ... | Output: ... | Verify: ... -- [ ] Sub-task 2: [description] | Input: ... | Output: ... | Verify: ... -- [ ] Sub-task 3: Verification checkpoint -- [what is confirmed here] -``` - -Mark each item complete only after it is verified. Update the plan dynamically -if new information emerges. - ---- - -### Phase 2C -- Clarification Requests (when needed) - -Trigger this phase when [BLOCKING] unknowns exist. - -- Ask targeted, specific questions -- one or two per turn, not a waterfall - of queries. -- For each question, state why it is blocking (what decision it gates). -- Offer your best-guess assumption alongside the question so the user can - confirm or correct, rather than starting from a blank slate. -- Do not begin implementation until [BLOCKING] unknowns are resolved. - -Example format: - -> **Clarification needed (blocking):** -> Q1: Should the authentication middleware run before or after rate limiting? -> This gates the ordering of middleware stacks. -> *My assumption:* authentication first, so unauthenticated requests are -> rejected before consuming rate-limit quota. Please confirm or correct. - ---- - -### Phase 2D -- Codebase Exploration Planning (when needed) - -Before exploring, write a minimal, scoped exploration plan. Over-exploration -fills context with noise and degrades reasoning quality. - -```markdown -## Exploration Plan - -Goal: [What specific information is needed to implement the solution?] - -Files / directories to read: -1. [path/to/file] -- reason: [why this file is relevant] -2. [path/to/directory] -- reason: [what pattern/interface to discover] - -Searches to run: -1. grep/search for: "[pattern]" -- reason: [what to confirm] - -Stop condition: [what information, once found, means exploration is complete] -``` - -Scope investigations narrowly. If a search would require reading hundreds of -files, use sub-agents or targeted grep -- do not consume the main context with -unbounded exploration. - ---- - -### Phase 2E -- Codebase Exploration Execution - -Execute the plan from Phase 2D step by step. - -After each tool call or file read: -1. Record the finding: "Step N observation: [what was found]." -2. Evaluate: "Does this change the implementation plan? Yes/No -- [reason]." -3. Update Phase 2's plan if needed. -4. Decide: continue exploration or stop (the stop condition from 2D is met). - -Anti-pattern to avoid: reading files speculatively. Every file read must map -to an item in the exploration plan. - ---- - -### Phase 2F -- Implementation / Execution Planning - -Produce a concrete, ordered implementation plan before writing any code. - -Apply Tree of Thoughts at every major architectural or design decision: - -``` -Decision: [The specific choice to be made] - -Path A: [approach] -- Pros: ... | Cons: ... | Lookahead (2-3 steps): ... -Path B: [approach] -- Pros: ... | Cons: ... | Lookahead (2-3 steps): ... -Path C: [approach] -- Pros: ... | Cons: ... | Lookahead (2-3 steps): ... - -Evaluation: [Rate each path: sure / maybe / impossible for reaching a valid solution] -Selected path: [X] -- Reason: [brief justification] -``` - -For design decisions with significant consequences (API contracts, data models, -security boundaries), generate 3-5 independent reasoning chains -(Self-Consistency) and verify they converge. Divergence means deeper analysis -is needed before proceeding. - -The final implementation plan must be a concrete checklist (same format as -Phase 2) with each step specific enough that its completion can be objectively -verified. - ---- - -### Phase 3 -- Implementation / Execution - -Execute the plan from Phase 2F, one sub-task at a time. - -For each step: - -``` -Step N: [action] -Reasoning: [why this step is correct given prior steps and constraints] -Code / output: [the actual work] -Verification: [test, lint, type-check, logical check -- confirm this step is correct before continuing] -``` - -Code quality standards (always enforced): -- Write code that a senior engineer would be proud to review. -- Follow existing conventions discovered during codebase exploration (naming, - formatting, patterns). -- Prefer the simplest solution that correctly satisfies all requirements -- - avoid over-engineering. -- Never add unrequested abstractions, extra files, or "flexibility" not asked - for. -- All public APIs must include documentation comments. -- Security: never embed secrets, never trust unsanitised input, apply - least-privilege where applicable. -- Error paths are first-class citizens -- handle them explicitly. -- Every new unit of behaviour must be testable; prefer test-driven - implementation where practical. - -Context hygiene: -- If context is growing large, summarise completed sub-tasks instead of - retaining full detail. -- Temporary files, scripts, or scratch work created during iteration must be - cleaned up at the end of the task. - -ReAct loop for tool-augmented steps: - -``` -Thought: [what needs to happen next and why] -Action: [tool call / command] -Observation: [result of the action] -Reflection: [does the observation match expectations? adjust plan if not] -``` - -Repeat until the sub-task is complete and verified. - ---- - -### Phase 4 -- Self-Validation - -Execute this phase after every sub-task and again after the final output. - -Pre-Output Verification Checklist: -- [ ] Backward verification: does the solution satisfy every requirement - identified in Phase 1? -- [ ] Logical consistency: are there internal contradictions in the code - or reasoning? -- [ ] Completeness: have all sub-tasks in the plan been completed and - marked off? -- [ ] Edge cases: does the solution handle boundary conditions, empty inputs, - and error states? -- [ ] Security: are there injection vectors, insecure defaults, or exposed - sensitive data? -- [ ] Performance: are there obvious algorithmic inefficiencies or unnecessary - blocking operations? -- [ ] Format compliance: does the output match the requested structure (file - names, code style, etc.)? -- [ ] Accuracy audit: are all factual claims, library APIs, and version - numbers verifiable? -- [ ] Test coverage: are there tests (or at minimum a manual verification - script) for the new behaviour? - -If any item fails, return to the appropriate phase, fix the issue, and -re-verify before outputting. - -Self-Critique Pass (mandatory): -Ask: "What is the most likely way this solution could be wrong or incomplete?" -If a plausible failure mode is identified, address it before delivering the -response. - ---- - -## Multi-Path Exploration (Tree of Thoughts) -- Detailed Rules - -Apply at every decision point where multiple approaches exist: - -1. Generate 2-5 alternative paths -- do not evaluate on instinct alone. -2. For each path, ask: "Is this approach likely to reach a valid solution?" - - Sure: the path is logically sound and all constraints are satisfied. - - Maybe: the path could work but has unresolved risks or dependencies. - - Impossible: the path violates a constraint or leads to a dead end. -3. Use lookahead (2-3 steps forward) to detect dead ends early. -4. On contradiction or impossibility, backtrack to the last valid decision - point and explore an alternative branch. -5. Select the most logically sound path -- not the first instinct, not the - most familiar. - ---- - -## Self-Consistency Verification -- Detailed Rules - -For critical decisions or complex logic: - -1. Generate 3-5 independent reasoning chains for the same sub-problem. -2. Compare outputs for consistency. - - Majority consensus -> high confidence, proceed. - - Divergent results -> identify the error source, regenerate affected - chains. -3. Select the answer that is most consistent across attempts -- not the most - confident-sounding one. - ---- - -## Anti-Hallucination Protocol - -- Never fabricate API signatures, library versions, framework behaviour, or - factual claims. -- When uncertain, say so explicitly: "I am not certain about [X]. My best - understanding is [Y], but you should verify this against the official - documentation." -- For factual claims, internally verify against known patterns. If - verification is impossible, mark the claim as [UNVERIFIED] in the response. -- Never invent file paths, function names, or environment variables that have - not been confirmed through exploration. -- Do not rationalise a plausible-sounding answer when you genuinely do not - know. - ---- - -## Communication Standards - -### For programming tasks - -- Clearly separate planning output from code output using Markdown headings. -- Use fenced code blocks with correct language tags for all code. -- Include inline comments for non-obvious logic. -- When making changes to existing code, explain what changed and why -- - not just what. -- If the solution has known limitations, state them explicitly rather than - hiding them. - -### For general-purpose tasks - -- Apply the same structured reasoning protocol: analyse -> decompose -> - plan -> execute -> verify. -- Adapt the phases to the domain (e.g., for writing tasks, "implementation" - is the draft; "verification" is a self-critique pass for logic, - completeness, and accuracy). - -### Conciseness - -- Output only what is necessary. Avoid padding, excessive hedging, and - repetition. -- Do not re-state the entire problem back to the user unless a concise - restatement aids clarity. -- Do not express enthusiasm or use filler phrases ("Great question!", - "Certainly!"). - ---- - -## Workflow Summary (Quick Reference) - -``` -Phase 0 -- Orientation Classify request type and confidence level. -Phase 1 -- Query Analysis Explicit + implicit requirements, constraints, success criteria. -Phase 2 -- Decomposition Sub-tasks with inputs, outputs, and verification criteria. -Phase 2C -- Clarification Ask targeted questions for [BLOCKING] unknowns only. -Phase 2D -- Exploration Plan Scoped, minimal plan for codebase discovery. -Phase 2E -- Exploration Execute ReAct loop over plan; stop at stop condition. -Phase 2F -- Impl. Plan Tree-of-Thoughts design decisions; concrete checklist. -Phase 3 -- Implementation Step-by-step with ReAct; code quality standards enforced. -Phase 4 -- Self-Validation Pre-output checklist + self-critique pass. -``` - -For simple, unambiguous tasks (e.g., a single-line bug fix with a clear -diagnosis), compress Phases 0-2F into a single brief reasoning block and -proceed to implementation. The checklist in Phase 4 always executes. - ---- - -## Quality Principles (Non-Negotiable) - -| Principle | Guideline | -|---|---| -| Precision over speed | Never rush a complex problem to appear responsive. | -| Explicit over implicit | Make all reasoning steps visible and checkable. | -| Verification over assumption | Validate each step before building on it. | -| Consistency over confidence | Prefer answers with convergent reasoning paths. | -| Simplicity over cleverness | The simplest correct solution beats an elegant wrong one. | -| Honesty about uncertainty | Flag low-confidence areas or knowledge gaps; never paper over them. | -| Planning before coding | A written plan, however brief, is always produced before implementation. | -| Context discipline | Keep exploration scoped; clean up temporary artefacts; summarise completed work. | diff --git a/.skills/mcc-version-adaptation/SKILL.md b/.skills/mcc-version-adaptation/SKILL.md index 706399cb..54b1c782 100644 --- a/.skills/mcc-version-adaptation/SKILL.md +++ b/.skills/mcc-version-adaptation/SKILL.md @@ -157,6 +157,43 @@ When packet changes are detected: 2. Create new `PacketPaletteXXX.cs` based on the previous one, adjusting IDs 3. Update `PacketType18Handler.cs` routing +Use scriptable comparisons instead of eyeballing long packet tables. The packet ID is the registration index in `GameProtocols.java`: + +```bash +python3 - <<'PY' +import re +for ver in ["1.21.10", "1.21.11", "26.1"]: + path=f"MinecraftOfficial/{ver}-decompiled/net/minecraft/network/protocol/game/GameProtocols.java" + text=open(path).read() + start=text.index("CLIENTBOUND_TEMPLATE") + names=[m.group(1) for m in re.finditer(r"\.addPacket\(([^,]+),", text[start:])] + print("==", ver, len(names)) + for i, name in enumerate(names): + print(f"0x{i:02X}", name) +PY +``` + +For focused diffs: + +```bash +python3 - <<'PY' +import re +def packets(ver, marker): + text=open(f"MinecraftOfficial/{ver}-decompiled/net/minecraft/network/protocol/game/GameProtocols.java").read() + start=text.index(marker) + return [m.group(1) for m in re.finditer(r"\.addPacket\(([^,]+),", text[start:])] +left, right = "1.21.10", "1.21.11" +a, b = packets(left, "CLIENTBOUND_TEMPLATE"), packets(right, "CLIENTBOUND_TEMPLATE") +for i in range(max(len(a), len(b))): + x = a[i] if i < len(a) else "" + y = b[i] if i < len(b) else "" + if x != y: + print(f"0x{i:02X}: {left}={x} | {right}={y}") +PY +``` + +Do the same for `SERVERBOUND_TEMPLATE`. Clientbound and serverbound can change independently. Do not inherit a newer palette just because one side looks similar. For example, `1.21.11` used the same play packet order as `1.21.9/1.21.10` for the tested inventory path, while `26.1` had additional shifts. + ## Step 5: Check Variant Encoding Changes For entity types that use variant serializers (Cat, Wolf, Frog, Painting), check if the codec changed between versions by inspecting: diff --git a/.skills/mermaid-diagrams/SKILL.md b/.skills/mermaid-diagrams/SKILL.md new file mode 100644 index 00000000..2d7ca5a5 --- /dev/null +++ b/.skills/mermaid-diagrams/SKILL.md @@ -0,0 +1,211 @@ +--- +name: mermaid-diagrams +description: Creating and refining Mermaid diagrams with live reload. Use when users want flowcharts, sequence diagrams, class diagrams, ER diagrams, state diagrams, or any other Mermaid visualization. Provides best practices for syntax, styling, and the iterative workflow using mermaid_preview and mermaid_save tools. +allowed-tools: mcp__mermaid__mermaid_preview, mcp__mermaid__mermaid_save +--- + +# Mermaid Diagram Expert + +You are an expert at creating, refining, and optimizing Mermaid diagrams using the MCP server tools. + +## Core Workflow + +1. **Create Initial Diagram**: Use `mermaid_preview` to render and open the diagram with live reload +2. **Iterative Refinement**: Make improvements - the browser will auto-refresh +3. **Save Final Version**: Use `mermaid_save` when satisfied + +## Tool Usage + +### mermaid_preview + +Always use this when creating or updating diagrams: + +- `diagram`: The Mermaid code +- `preview_id`: Descriptive kebab-case ID (e.g., `auth-flow`, `architecture`) +- `format`: Use `svg` for live reload (default) +- `theme`: `default`, `forest`, `dark`, or `neutral` +- `background`: `white`, `transparent`, or hex colors +- `width`, `height`, `scale`: Adjust for quality/size + +**Key Points:** + +- Reuse the same `preview_id` for refinements to update the same browser tab +- Use different IDs for multiple simultaneous diagrams +- Live reload only works with SVG format + +### mermaid_save + +Use after the diagram is finalized: + +- `save_path`: Where to save (e.g., `./docs/diagram.svg`) +- `preview_id`: Must match the preview ID used earlier +- `format`: Must match format from preview + +## Diagram Types + +### Flowcharts (`graph` or `flowchart`) + +Direction: `LR`, `TB`, `RL`, `BT` + +```mermaid +graph LR + A[Start] --> B{Decision} + B -->|Yes| C[Action] + B -->|No| D[End] + + style A fill:#e1f5ff + style C fill:#d4edda +``` + +### Sequence Diagrams (`sequenceDiagram`) + +⚠️ **Do NOT use `style` statements** - not supported + +```mermaid +sequenceDiagram + participant User + participant App + participant API + + User->>App: Login + App->>API: Authenticate + API-->>App: Token + App-->>User: Success +``` + +### Class Diagrams (`classDiagram`) + +```mermaid +classDiagram + class User { + +String name + +String email + +login() + } + class Order { + +int id + +Date created + } + User "1" --> "*" Order +``` + +### Entity Relationship (`erDiagram`) + +```mermaid +erDiagram + USER ||--o{ ORDER : places + ORDER ||--|{ LINE_ITEM : contains + + USER { + int id PK + string email + string name + } +``` + +### State Diagrams (`stateDiagram-v2`) + +```mermaid +stateDiagram-v2 + [*] --> Idle + Idle --> Processing : start + Processing --> Complete : finish + Complete --> [*] +``` + +### Gantt Charts (`gantt`) + +```mermaid +gantt + title Project Timeline + section Phase 1 + Task 1 :a1, 2024-01-01, 30d + Task 2 :after a1, 20d +``` + +## Best Practices + +### Preview IDs + +- Use descriptive names: `architecture`, `auth-flow`, `data-model` +- Keep the same ID during refinements +- Use different IDs for concurrent diagrams + +### Themes & Styling + +- `default`: Clean, professional +- `forest`: Green tones +- `dark`: Dark background +- `neutral`: Grayscale + +Use `transparent` background for docs, `white` for standalone + +### Common Patterns + +**System Architecture:** + +```mermaid +graph TB + Client[Web App] + API[API Gateway] + DB[(Database)] + + Client --> API --> DB +``` + +**Authentication Flow:** + +```mermaid +sequenceDiagram + User->>App: Login Request + App->>Auth: Validate + Auth-->>App: JWT Token + App-->>User: Access Granted +``` + +## User Interaction + +When a user requests a diagram: + +1. **Clarify if needed**: What type? What level of detail? +2. **Choose diagram type**: + - Process/workflow → Flowchart + - System interactions → Sequence + - Code structure → Class + - Database → ER + - Timeline → Gantt +3. **Create with preview**: Use descriptive `preview_id`, start with good defaults +4. **Iterate**: Keep same `preview_id`, explain changes +5. **Save**: Ask where/what format, use `mermaid_save` + +## Proactive Behavior + +- Always preview diagrams, don't just generate code +- Use sensible defaults without asking +- Reuse preview_id for refinements +- Suggest improvements when you see opportunities +- Explain your diagram type choice briefly + +## Common Issues + +**Syntax errors**: Check quotes, arrow syntax, keywords +**Layout issues**: Try different directions (LR vs TB) +**Text overlap**: Increase dimensions or shorten labels +**Colors not working**: Verify CSS color format; remember sequence diagrams don't support styles + +## Example Interaction + +**User**: "Create an auth flow diagram" + +**You**: "I'll create a sequence diagram showing the authentication flow." +[Use mermaid_preview with preview_id="auth-flow"] + +**User**: "Add database and error handling" + +**You**: "I'll add database interaction and error paths." +[Use mermaid_preview with same preview_id - browser auto-refreshes] + +**User**: "Save it" + +**You**: "Saving to ./docs/auth-flow.svg" +[Use mermaid_save] diff --git a/AGENTS.md b/AGENTS.md index fec9d8f8..fbeaf096 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,16 +8,17 @@ ## Build / Run - Init submodules first: `git submodule update --init --recursive` -- Build: `dotnet build MinecraftClient.sln -c Release` -- Publish (matches CI shape): `dotnet publish MinecraftClient.sln -f net10.0 -r --self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true -p:DebugType=Embedded` -- Run from source: `dotnet run --project MinecraftClient -- --help` +- Build for local development: `source tools/mcc-env.sh && mcc-build` +- Publish (matches CI shape): `source tools/mcc-env.sh && mcc-publish --rid ` +- Run/debug from source: `source tools/mcc-env.sh && mcc-debug -v 1.21.11 --file-input` - Docs: `cd docs && npm install && npm run docs:dev` or `npm run docs:build` - Docker: `cd Docker && docker build -t minecraft-console-client:latest .` - Tests: no dedicated test project is present in the main solution. -- Current state: the solution builds after submodule init, but `dotnet build` emits many analyzer and NuGet vulnerability warnings; treat them as real. +- Current state: the solution builds after submodule init, but the underlying .NET build emits many analyzer and NuGet vulnerability warnings; treat them as real. - Server roots: `tools/` helpers look for server jars under `MinecraftOfficial/downloads//` by default, but also support an external root via the `MCC_SERVERS` environment variable. - Multi-version testing: tmux-based local server sessions are shared state. Run cross-version test matrices sequentially unless you have explicit per-version isolation. A server logging `Done` does not guarantee immediate RCON availability; retry RCON setup commands. - Automated test configs: for repeated or matrix test runs, prefer generating a temporary MCC config per run instead of reusing the repo-root `MinecraftClient.ini`, to avoid leaking state between runs. +- For agent-driven local development, prefer `mcc-build`, `mcc-publish`, `mcc-build-clean`, `mcc-debug`, `mcc-run`, and `mcc-tui` over raw `dotnet build`, `dotnet publish`, or `dotnet run`, so worktree-local temp build routing stays active. ## Architecture - `Program` bootstraps console I/O, TOML config, auth/session state, MC version selection, Forge detection, then creates `McClient`. @@ -55,10 +56,11 @@ Feature columns mean: | 1.21.5-1.21.8 | `Protocol18Handler` | Yes | Yes | Yes | 1.21.7/1.21.8 reuse 1.21.6 block/entity palettes in code | | 1.21.9-1.21.10 | `Protocol18Handler` | Yes | Yes | Yes | Version tools prefer server data reports since 1.21.9 | | 1.21.11 | `Protocol18Handler` | Yes | Yes | Yes | Own entity/item/metadata palettes; blocks reuse 1.21.9 palette | -| 26.1 | `Protocol18Handler` | Yes | Yes | Yes | Latest coded support; new Minecraft version naming scheme | +| 26.1 | `Protocol18Handler` | Yes | Yes | Yes | New Minecraft version naming scheme | +| 26.2 | `Protocol18Handler` | Yes | Yes | Yes | Latest coded support; own item/block/entity palettes, reuses 26.1 packet IDs and metadata serializers | Notes: -- Declared code range is `1.4.6` to `26.1`. +- Declared code range is `1.4.6` to `26.2`. - Human docs are stale in places and sometimes stop at older ranges; prefer code when docs and code disagree. - Movement/pathing limits called out in docs still apply: no swimming, no knockback. The `Physics/` engine adds vanilla-accurate collision and movement but some edge cases remain. @@ -122,3 +124,4 @@ Read `docs/guide/ai-assisted-development.md` before starting development work on - Don't trust older docs over current code for supported versions or feature gates. When AGENTS.md, skills, and older docs disagree, prefer current code and current tool behavior, then update the stale source. - Don't hardcode user-facing strings (messages, labels, help text) directly in source code; always use `Translations.*` resources so the text can be localized. - Never use "—" ("em dash"), unless specifically being instructed to do so! +- Never generate MCC config files (`.ini`) in the repo root. When `dotnet run --project MinecraftClient -- --help` is used to generate a config template, it writes `MinecraftClient.ini` to the current directory. Always run this command from a system temp directory (e.g. `mktemp -d`) or use `prepare_offline_mcc_config.sh` which already handles output routing. diff --git a/ConsoleInteractive b/ConsoleInteractive index a9afc0df..ff6d2129 160000 --- a/ConsoleInteractive +++ b/ConsoleInteractive @@ -1 +1 @@ -Subproject commit a9afc0df4ce79450b76acedffa1b549449cf69cb +Subproject commit ff6d2129e9f1e0fc6c7032741bdc42a2f0fa263e diff --git a/DebugTools/MccMcpSampleClient/Program.cs b/DebugTools/MccMcpSampleClient/Program.cs index 0bd91fdb..15ac2b70 100644 --- a/DebugTools/MccMcpSampleClient/Program.cs +++ b/DebugTools/MccMcpSampleClient/Program.cs @@ -30,7 +30,7 @@ try ToolEnvelope initialWorldState = await CallSuccessAsync(client, executed, "mcc_world_state"); JsonElement initialWorldData = RequireData(initialWorldState); - string botName = ReadString(initialWorldData, "username") ?? "CursorBot"; + string botName = ReadString(initialWorldData, "username") ?? "MCCBot"; Coordinate initialLocation = ReadCoordinate(initialWorldData, "location"); long setupBaseline = 0; diff --git a/DebugTools/MccMcpStdioHarness/MccMcpStdioHarness.csproj b/DebugTools/MccMcpStdioHarness/MccMcpStdioHarness.csproj index 2261edaa..c45c4f2c 100644 --- a/DebugTools/MccMcpStdioHarness/MccMcpStdioHarness.csproj +++ b/DebugTools/MccMcpStdioHarness/MccMcpStdioHarness.csproj @@ -8,7 +8,7 @@ - + diff --git a/DebugTools/MccMcpWebPlayground/MccMcpWebPlayground.csproj b/DebugTools/MccMcpWebPlayground/MccMcpWebPlayground.csproj index 0ee15b7a..24ed1bd5 100644 --- a/DebugTools/MccMcpWebPlayground/MccMcpWebPlayground.csproj +++ b/DebugTools/MccMcpWebPlayground/MccMcpWebPlayground.csproj @@ -8,7 +8,7 @@ - + diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 00000000..41d20762 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,11 @@ + + + $(DefaultItemExcludes);**/bin/**;**/obj/** + + + + $(MCC_BUILD_ROOT)/$(MSBuildProjectName)/bin/ + $(MCC_BUILD_ROOT)/$(MSBuildProjectName)/obj/ + $(BaseIntermediateOutputPath) + + diff --git a/MinecraftClient.Tests/AutoRelogRetryPolicyTests.cs b/MinecraftClient.Tests/AutoRelogRetryPolicyTests.cs new file mode 100644 index 00000000..87516646 --- /dev/null +++ b/MinecraftClient.Tests/AutoRelogRetryPolicyTests.cs @@ -0,0 +1,176 @@ +using MinecraftClient.ChatBots; +using MinecraftClient.Scripting; + +namespace MinecraftClient.Tests; + +public sealed class AutoRelogRetryPolicyTests +{ + [Fact] + public void DefaultConfigurationUsesUnlimitedRetries() + { + Assert.Equal(-1, new AutoRelog.Configs().Retries); + } + + [Fact] + public void UnlimitedRetriesNeverExhaust() + { + var policy = new AutoRelogRetryPolicy(new ManualTimeProvider()); + + for (int attempt = 1; attempt <= 100; attempt++) + { + Assert.True(policy.TryReserveAttempt(-1, out int retriesLeft)); + Assert.Equal(-1, retriesLeft); + Assert.Equal(attempt, policy.Attempts); + } + } + + [Fact] + public void ZeroRetriesDisablesReconnect() + { + var policy = new AutoRelogRetryPolicy(new ManualTimeProvider()); + + Assert.False(policy.TryReserveAttempt(0, out int retriesLeft)); + Assert.Equal(0, retriesLeft); + Assert.Equal(0, policy.Attempts); + } + + [Fact] + public void FiniteRetryLimitIsExact() + { + var policy = new AutoRelogRetryPolicy(new ManualTimeProvider()); + + Assert.True(policy.TryReserveAttempt(3, out int firstRetriesLeft)); + Assert.True(policy.TryReserveAttempt(3, out int secondRetriesLeft)); + Assert.True(policy.TryReserveAttempt(3, out int thirdRetriesLeft)); + Assert.False(policy.TryReserveAttempt(3, out int exhaustedRetriesLeft)); + + Assert.Equal(2, firstRetriesLeft); + Assert.Equal(1, secondRetriesLeft); + Assert.Equal(0, thirdRetriesLeft); + Assert.Equal(0, exhaustedRetriesLeft); + } + + [Fact] + public void RejectedRestartDoesNotConsumeRetry() + { + var policy = new AutoRelogRetryPolicy(new ManualTimeProvider()); + + Assert.True(policy.TryReserveAttempt(1, out _)); + policy.RollBackReservedAttempt(); + + Assert.True(policy.TryReserveAttempt(1, out int retriesLeft)); + Assert.Equal(0, retriesLeft); + } + + [Fact] + public void CoalescedDuplicateRollsBackOnlyItsOwnReservation() + { + var policy = new AutoRelogRetryPolicy(new ManualTimeProvider()); + + Assert.True(policy.TryReserveAttempt(2, out int firstRetriesLeft)); + Assert.True(policy.TryReserveAttempt(2, out int duplicateRetriesLeft)); + policy.RollBackReservedAttempt(); + + Assert.Equal(1, firstRetriesLeft); + Assert.Equal(0, duplicateRetriesLeft); + Assert.Equal(1, policy.Attempts); + Assert.True(policy.TryReserveAttempt(2, out int secondFailureRetriesLeft)); + Assert.Equal(0, secondFailureRetriesLeft); + Assert.False(policy.TryReserveAttempt(2, out _)); + } + + [Fact] + public void UnlimitedDuplicateRollbackKeepsUnlimitedBudget() + { + var policy = new AutoRelogRetryPolicy(new ManualTimeProvider()); + + Assert.True(policy.TryReserveAttempt(-1, out _)); + Assert.True(policy.TryReserveAttempt(-1, out _)); + policy.RollBackReservedAttempt(); + + Assert.Equal(1, policy.Attempts); + Assert.True(policy.TryReserveAttempt(-1, out int retriesLeft)); + Assert.Equal(-1, retriesLeft); + } + + [Fact] + public void StableConnectionResetsRetryBudget() + { + var timeProvider = new ManualTimeProvider(); + var policy = new AutoRelogRetryPolicy(timeProvider); + Assert.True(policy.TryReserveAttempt(1, out _)); + + policy.MarkJoined(); + timeProvider.Advance(AutoRelogRetryPolicy.StableConnectionThreshold - TimeSpan.FromMilliseconds(1)); + Assert.False(policy.ResetAfterStableConnection()); + + timeProvider.Advance(TimeSpan.FromMilliseconds(1)); + Assert.True(policy.ResetAfterStableConnection()); + Assert.Equal(0, policy.Attempts); + Assert.True(policy.TryReserveAttempt(1, out _)); + } + + [Fact] + public void TransportLossAlwaysReconnectsWhenEnabled() + { + bool reconnect = AutoRelogRetryPolicy.ShouldReconnect( + ChatBot.DisconnectReason.ConnectionLost, + "A transport-specific error without a configured phrase", + ignoreKickMessage: false, + ["Server is restarting"], + out string? matchedMessage); + + Assert.True(reconnect); + Assert.Null(matchedMessage); + } + + [Theory] + [InlineData(ChatBot.DisconnectReason.InGameKick)] + [InlineData(ChatBot.DisconnectReason.LoginRejected)] + public void ServerMessageMatchingIsCaseInsensitive(ChatBot.DisconnectReason reason) + { + bool reconnect = AutoRelogRetryPolicy.ShouldReconnect( + reason, + "THE SERVER IS RESTARTING NOW", + ignoreKickMessage: false, + ["server is restarting"], + out string? matchedMessage); + + Assert.True(reconnect); + Assert.Equal("server is restarting", matchedMessage); + } + + [Fact] + public void UserLogoutNeverReconnects() + { + Assert.False(AutoRelogRetryPolicy.ShouldReconnect( + ChatBot.DisconnectReason.UserLogout, + "Server is restarting", + ignoreKickMessage: true, + ["Server is restarting"], + out _)); + } + + [Fact] + public void IgnoreKickMessageAllowsNonmatchingServerKick() + { + Assert.True(AutoRelogRetryPolicy.ShouldReconnect( + ChatBot.DisconnectReason.InGameKick, + "Administrative removal", + ignoreKickMessage: true, + [], + out _)); + } + + private sealed class ManualTimeProvider : TimeProvider + { + private DateTimeOffset utcNow = DateTimeOffset.UnixEpoch; + + public override DateTimeOffset GetUtcNow() => utcNow; + + internal void Advance(TimeSpan duration) + { + utcNow += duration; + } + } +} diff --git a/MinecraftClient.Tests/BlockStatePropertiesTests.cs b/MinecraftClient.Tests/BlockStatePropertiesTests.cs new file mode 100644 index 00000000..c141d58c --- /dev/null +++ b/MinecraftClient.Tests/BlockStatePropertiesTests.cs @@ -0,0 +1,108 @@ +using MinecraftClient.Mapping; +using MinecraftClient.Mapping.BlockPalettes; + +namespace MinecraftClient.Tests; + +public sealed class BlockStatePropertiesTests +{ + private readonly Palette262 _palette = new(); + + [Theory] + [InlineData(32162, "north", "true", "inactive")] + [InlineData(32168, "north", "false", "unlocking")] + [InlineData(32193, "east", "false", "ejecting")] + public void VaultStatesExposeAllProperties( + int stateId, + string facing, + string ominous, + string vaultState) + { + IReadOnlyDictionary properties = _palette.GetStateProperties(stateId); + + Assert.Equal(facing, properties["facing"]); + Assert.Equal(ominous, properties["ominous"]); + Assert.Equal(vaultState, properties["vault_state"]); + } + + [Fact] + public void PropertiesUseServerReportedStateStride() + { + IReadOnlyDictionary properties = _palette.GetStateProperties(3989); + + Assert.Equal("left", properties["type"]); + Assert.Equal("north", properties["facing"]); + Assert.Equal("true", properties["waterlogged"]); + } + + [Fact] + public void StateWithoutPropertiesReturnsEmptyMap() + { + IReadOnlyDictionary properties = _palette.GetStateProperties(1); + + Assert.Empty(properties); + } + + public static TheoryData ModernPalettes => new() + { + { "1.13.2", new Palette113() }, + { "1.14.4", new Palette114() }, + { "1.15.2", new Palette115() }, + { "1.16.5", new Palette116() }, + { "1.17.1", new Palette117() }, + { "1.19.2", new Palette119() }, + { "1.19.3", new Palette1193() }, + { "1.19.4", new Palette1194() }, + { "1.20", new Palette120() }, + { "1.20.4", new Palette1204() }, + { "1.20.6", new Palette1206() }, + { "1.21.2", new Palette1212() }, + { "1.21.4", new Palette1214() }, + { "1.21.5", new Palette1215() }, + { "1.21.6", new Palette1216() }, + { "1.21.9", new Palette1219() }, + { "26.1", new Palette261() }, + { "26.2", new Palette262() } + }; + + [Theory] + [MemberData(nameof(ModernPalettes))] + public void EveryModernPaletteExposesOakLogAxis(string version, BlockPalette palette) + { + bool foundExpectedState = false; + + for (int stateId = 0; stateId <= ushort.MaxValue; stateId++) + { + if (palette.FromId(stateId) != Material.OakLog) + continue; + + IReadOnlyDictionary properties = palette.GetStateProperties(stateId); + if (properties.TryGetValue("axis", out string? axis) && axis == "x") + { + foundExpectedState = true; + break; + } + } + + Assert.True(foundExpectedState, $"Minecraft {version} did not expose oak_log[axis=x]"); + } + + [Fact] + public void LegacyPaletteExposesPackedMetadata() + { + BlockPalette previousPalette = Block.Palette; + try + { + Block.Palette = new Palette112(); + Block block = new(17, 4); + + IReadOnlyDictionary properties = block.GetStateProperties(); + + Assert.Equal(276, block.StateId); + Assert.Equal("4", properties["metadata"]); + } + finally + { + Block.Palette = previousPalette; + } + } +} diff --git a/MinecraftClient.Tests/CSharpRunnerTests.cs b/MinecraftClient.Tests/CSharpRunnerTests.cs new file mode 100644 index 00000000..c6846997 --- /dev/null +++ b/MinecraftClient.Tests/CSharpRunnerTests.cs @@ -0,0 +1,14 @@ +using MinecraftClient.Scripting; + +namespace MinecraftClient.Tests; + +public sealed class CSharpRunnerTests +{ + [Theory] + [InlineData("//using MinecraftClient.CommandHandler", "using MinecraftClient.CommandHandler;")] + [InlineData("//using MinecraftClient.CommandHandler;", "using MinecraftClient.CommandHandler;")] + public void NormalizeUsingDirectiveAddsMissingSemicolon(string directive, string expected) + { + Assert.Equal(expected, CSharpRunner.NormalizeUsingDirective(directive)); + } +} diff --git a/MinecraftClient.Tests/ChatTypeHolderTests.cs b/MinecraftClient.Tests/ChatTypeHolderTests.cs new file mode 100644 index 00000000..eddfb43b --- /dev/null +++ b/MinecraftClient.Tests/ChatTypeHolderTests.cs @@ -0,0 +1,159 @@ +using MinecraftClient.Protocol.Handlers; +using MinecraftClient.Protocol.Message; + +namespace MinecraftClient.Tests; + +public sealed class ChatTypeHolderTests +{ + [Fact] + public void ReferenceHolderUsesOneBasedWireIdIn121AndNewer() + { + var dataTypes = new DataTypes(Protocol18Handler.MC_1_21_Version); + var packetData = new Queue(DataTypes.GetVarInt(2)); + + int chatTypeId = ChatParser.ReadChatTypeHolder( + dataTypes, + packetData, + Protocol18Handler.MC_1_21_Version, + out var directDecoration); + + Assert.Equal(1, chatTypeId); + Assert.Null(directDecoration); + Assert.Empty(packetData); + } + + [Fact] + public void RegistryIdRemainsUnchangedBefore121() + { + var dataTypes = new DataTypes(Protocol18Handler.MC_1_20_6_Version); + var packetData = new Queue(DataTypes.GetVarInt(2)); + + int chatTypeId = ChatParser.ReadChatTypeHolder( + dataTypes, + packetData, + Protocol18Handler.MC_1_20_6_Version, + out var directDecoration); + + Assert.Equal(2, chatTypeId); + Assert.Null(directDecoration); + Assert.Empty(packetData); + } + + [Fact] + public void DirectHolderConsumesChatAndNarrationDecorations() + { + var dataTypes = new DataTypes(Protocol18Handler.MC_1_21_Version); + var packetBytes = new List(); + packetBytes.AddRange(DataTypes.GetVarInt(0)); + AddDecoration(packetBytes, dataTypes, "chat.type.text", 0, 2); + AddDecoration(packetBytes, dataTypes, "chat.type.text.narrate", 0, 2); + var packetData = new Queue(packetBytes); + + int chatTypeId = ChatParser.ReadChatTypeHolder( + dataTypes, + packetData, + Protocol18Handler.MC_1_21_Version, + out var directDecoration); + + Assert.Equal(-1, chatTypeId); + Assert.NotNull(directDecoration); + Assert.Equal("chat.type.text", directDecoration.TranslationKey); + Assert.Equal( + [ChatParser.ChatTypeParameter.Sender, ChatParser.ChatTypeParameter.Content], + directDecoration.Parameters); + Assert.Empty(packetData); + } + + [Fact] + public void RegistryDecorationControlsParameterSelectionAndOrdering() + { + Dictionary? originalChatTypes = ChatParser.ChatId2Type; + try + { + ChatParser.ClearChatTypeDecorations(); + ChatParser.ChatId2Type = []; + var chatTypeData = new Dictionary + { + ["chat"] = new Dictionary + { + ["translation_key"] = "commands.message.display.outgoing", + ["parameters"] = new object[] { "target", "content" } + } + }; + ChatParser.ReadChatType(42, "example:custom_chat", chatTypeData); + var message = new ChatMessage( + "hello", + false, + 42, + Guid.Empty, + null, + "Alice", + "Bob", + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), + null, + false); + + string rendered = ChatParser.ParseSignedChat(message); + + Assert.Equal("You whisper to Bob: hello", rendered); + } + finally + { + ChatParser.ClearChatTypeDecorations(); + ChatParser.ChatId2Type = originalChatTypes; + } + } + + [Fact] + public void UnknownTranslationKeyIsUsedAsVanillaFormatPattern() + { + Dictionary? originalChatTypes = ChatParser.ChatId2Type; + try + { + ChatParser.ClearChatTypeDecorations(); + ChatParser.ChatId2Type = []; + var chatTypeData = new Dictionary + { + ["chat"] = new Dictionary + { + ["translation_key"] = "%s", + ["parameters"] = new object[] { "sender", "content" } + } + }; + ChatParser.ReadChatType(42, "ordinary:custom_chat", chatTypeData); + var message = new ChatMessage( + "hello", + false, + 42, + Guid.Empty, + null, + "Alice » hello", + null, + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), + null, + false); + + string rendered = ChatParser.ParseSignedChat(message); + + Assert.Equal("Alice » hello", rendered); + } + finally + { + ChatParser.ClearChatTypeDecorations(); + ChatParser.ChatId2Type = originalChatTypes; + } + } + + private static void AddDecoration( + List packetBytes, + DataTypes dataTypes, + string translationKey, + params int[] parameters) + { + packetBytes.AddRange(dataTypes.GetString(translationKey)); + packetBytes.AddRange(DataTypes.GetVarInt(parameters.Length)); + foreach (int parameter in parameters) + packetBytes.AddRange(DataTypes.GetVarInt(parameter)); + packetBytes.AddRange(dataTypes.GetNbtTag(new Dictionary())); + } +} diff --git a/MinecraftClient.Tests/McClientConnectionFailureTests.cs b/MinecraftClient.Tests/McClientConnectionFailureTests.cs new file mode 100644 index 00000000..3789e531 --- /dev/null +++ b/MinecraftClient.Tests/McClientConnectionFailureTests.cs @@ -0,0 +1,122 @@ +using MinecraftClient.Scripting; + +namespace MinecraftClient.Tests; + +public sealed class McClientConnectionFailureTests +{ + [Fact] + public void LoginRejectedClaimPreventsSyntheticConnectionLostFallback() + { + var lifecycle = new ConnectionAttemptLifecycle(); + + Assert.True(lifecycle.TryBeginDisconnect()); + Assert.True(lifecycle.IsFailureClaimed); + Assert.False(lifecycle.TryBeginDisconnect()); + + lifecycle.CompleteDisconnect(); + + Assert.True(lifecycle.IsFailureClaimed); + Assert.False(lifecycle.TryBeginDisconnect()); + } + + [Fact] + public void UnclaimedGenericFailureCanBeClaimedExactlyOnce() + { + var lifecycle = new ConnectionAttemptLifecycle(); + + Assert.False(lifecycle.IsFailureClaimed); + Assert.True(lifecycle.TryBeginDisconnect()); + Assert.False(lifecycle.TryBeginDisconnect()); + } + + [Fact] + public void HeldBotsAreRestoredBeforeFailureAndReceiveOriginalMessageOnce() + { + const string rejectionMessage = "You are not white-listed on this server!"; + var bot = new RecordingBot(); + List heldBots = [bot]; + var loadedBots = new List(); + + ConnectionAttemptLifecycle.RestoreHeldBots(heldBots, loadedBots.Add); + foreach (ChatBot loadedBot in loadedBots) + loadedBot.OnDisconnect(ChatBot.DisconnectReason.LoginRejected, rejectionMessage); + + Assert.Empty(heldBots); + Assert.Single(loadedBots); + Assert.Equal(1, bot.DisconnectCount); + Assert.Equal(ChatBot.DisconnectReason.LoginRejected, bot.LastReason); + Assert.Equal(rejectionMessage, bot.LastMessage); + } + + [Fact] + public void OfflineRouteStaysOwnedAcrossReplacementAndSuccessfulHandoff() + { + var route = new AttemptOwnedRoute(); + int activations = 0; + int deactivations = 0; + + Assert.True(route.TryActivate(7, 7, () => activations++)); + Assert.False(route.TryActivate(7, 7, () => activations++)); + Assert.True(route.TryTransfer(7, 8)); + Assert.False(route.TryDeactivate(7, () => deactivations++)); + Assert.Equal(8, route.OwnerAttempt); + Assert.True(route.TryDeactivate(8, () => deactivations++)); + + Assert.Equal(1, activations); + Assert.Equal(1, deactivations); + Assert.Equal(-1, route.OwnerAttempt); + } + + [Fact] + public void InitialConnectionAttemptCanOwnOfflineRoute() + { + var route = new AttemptOwnedRoute(); + int activations = 0; + + Assert.True(route.TryActivate(0, 0, () => activations++)); + + Assert.Equal(1, activations); + Assert.Equal(0, route.OwnerAttempt); + } + + [Fact] + public void OlderAttemptCannotTakeAnEmptyOfflineRoute() + { + var route = new AttemptOwnedRoute(); + int activations = 0; + + Assert.False(route.TryActivate(4, 5, () => activations++)); + + Assert.Equal(0, activations); + Assert.Equal(-1, route.OwnerAttempt); + } + + [Fact] + public void StaleCleanupCannotClearNewerOfflineRoute() + { + var route = new AttemptOwnedRoute(); + int deactivations = 0; + + Assert.True(route.TryActivate(10, 10, () => { })); + Assert.True(route.TryActivate(11, 11, () => { })); + Assert.False(route.TryDeactivate(10, () => deactivations++)); + + Assert.Equal(11, route.OwnerAttempt); + Assert.Equal(0, deactivations); + } + + private sealed class RecordingBot : ChatBot + { + internal int DisconnectCount { get; private set; } + internal DisconnectReason? LastReason { get; private set; } + internal string? LastMessage { get; private set; } + + public override bool OnDisconnect(DisconnectReason reason, string message) + { + DisconnectCount++; + LastReason = reason; + LastMessage = message; + return false; + } + } +} diff --git a/MinecraftClient.Tests/MinecraftClient.Tests.csproj b/MinecraftClient.Tests/MinecraftClient.Tests.csproj new file mode 100644 index 00000000..ebf278d3 --- /dev/null +++ b/MinecraftClient.Tests/MinecraftClient.Tests.csproj @@ -0,0 +1,22 @@ + + + net10.0 + enable + enable + false + true + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + diff --git a/MinecraftClient.Tests/RestartCoordinatorTests.cs b/MinecraftClient.Tests/RestartCoordinatorTests.cs new file mode 100644 index 00000000..f9c9edef --- /dev/null +++ b/MinecraftClient.Tests/RestartCoordinatorTests.cs @@ -0,0 +1,302 @@ +namespace MinecraftClient.Tests; + +public sealed class RestartCoordinatorTests +{ + [Fact] + public async Task PreparationCompletesBeforeRequestCanExecute() + { + var completed = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + bool prepared = false; + + RestartCoordinator coordinator = null!; + coordinator = new RestartCoordinator( + (request, cancellationToken) => + { + Assert.True(Volatile.Read(ref prepared)); + Assert.True(coordinator.TryBeginCommit(request, out _)); + completed.SetResult(); + return Task.CompletedTask; + }, + exception => throw new Xunit.Sdk.XunitException(exception.ToString())); + using var cleanup = coordinator; + + Assert.True(coordinator.TrySchedule( + new RestartRequest(1, TimeSpan.Zero, true), + () => + { + Volatile.Write(ref prepared, true); + return true; + })); + await completed.Task.WaitAsync(TimeSpan.FromSeconds(5)); + } + + [Fact] + public async Task RejectedPreparationDoesNotPublishOrAdvanceAttempt() + { + var completed = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + int executions = 0; + + RestartCoordinator coordinator = null!; + coordinator = new RestartCoordinator( + (request, cancellationToken) => + { + Interlocked.Increment(ref executions); + Assert.True(coordinator.TryBeginCommit(request, out _)); + completed.SetResult(); + return Task.CompletedTask; + }, + exception => throw new Xunit.Sdk.XunitException(exception.ToString())); + using var cleanup = coordinator; + + Assert.False(coordinator.TrySchedule( + new RestartRequest(2, TimeSpan.Zero, true), + () => false)); + Assert.False(coordinator.HasScheduledRestart(2)); + + Assert.True(coordinator.TrySchedule(new RestartRequest(2, TimeSpan.Zero, true))); + await completed.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.Equal(1, executions); + } + + [Fact] + public async Task FaultedSourceCleanupPreventsRestartExecution() + { + var failureReported = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + int executions = 0; + + using var coordinator = new RestartCoordinator( + (_, _) => + { + Interlocked.Increment(ref executions); + return Task.CompletedTask; + }, + exception => failureReported.SetResult(exception)); + + var cleanupFailure = new InvalidOperationException("cleanup failed"); + Assert.True(coordinator.TrySchedule(new RestartRequest( + 3, + TimeSpan.Zero, + true, + SourceCleanupCompletion: Task.FromException(cleanupFailure)))); + + Exception reportedException = await failureReported.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.Same(cleanupFailure, reportedException); + Assert.Equal(0, executions); + } + + [Fact] + public async Task AutomaticSameAttemptIsCoalescedWhileQueued() + { + var blockerStarted = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var releaseBlocker = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var queuedCompleted = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + int queuedExecutions = 0; + + RestartCoordinator coordinator = null!; + coordinator = new RestartCoordinator( + async (request, cancellationToken) => + { + if (request.ConnectionAttempt == 9) + { + blockerStarted.SetResult(); + await releaseBlocker.Task.WaitAsync(cancellationToken); + return; + } + + Interlocked.Increment(ref queuedExecutions); + Assert.True(coordinator.TryBeginCommit(request, out _)); + queuedCompleted.SetResult(); + }, + exception => throw new Xunit.Sdk.XunitException(exception.ToString())); + using var cleanup = coordinator; + + Assert.True(coordinator.TrySchedule(new RestartRequest(9, TimeSpan.Zero, true))); + await blockerStarted.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.True(coordinator.TrySchedule(new RestartRequest(10, TimeSpan.Zero, true))); + Assert.False(coordinator.TrySchedule(new RestartRequest(10, TimeSpan.Zero, true))); + Assert.True(coordinator.HasScheduledRestart(10)); + + releaseBlocker.SetResult(); + await queuedCompleted.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.Equal(1, queuedExecutions); + } + + [Fact] + public async Task AutomaticSameAttemptIsCoalescedDuringCallback() + { + var callbackStarted = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var releaseCallback = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var callbackCompleted = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + int executions = 0; + + RestartCoordinator coordinator = null!; + coordinator = new RestartCoordinator( + async (request, cancellationToken) => + { + Interlocked.Increment(ref executions); + callbackStarted.SetResult(); + await releaseCallback.Task.WaitAsync(cancellationToken); + Assert.True(coordinator.TryBeginCommit(request, out _)); + callbackCompleted.SetResult(); + }, + exception => throw new Xunit.Sdk.XunitException(exception.ToString())); + using var cleanup = coordinator; + + Assert.True(coordinator.TrySchedule(new RestartRequest(42, TimeSpan.Zero, true))); + await callbackStarted.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.False(coordinator.TrySchedule(new RestartRequest(42, TimeSpan.Zero, true))); + + releaseCallback.SetResult(); + await callbackCompleted.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.Equal(1, executions); + } + + [Fact] + public async Task ExplicitReplacementDuringDelayUsesLatestSnapshotWithoutAnotherExecution() + { + var callbackStarted = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var allowCommit = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var callbackCompleted = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + RestartRequest committedRequest = default; + int executions = 0; + + RestartCoordinator coordinator = null!; + coordinator = new RestartCoordinator( + async (request, cancellationToken) => + { + Interlocked.Increment(ref executions); + callbackStarted.SetResult(); + await allowCommit.Task.WaitAsync(cancellationToken); + Assert.True(coordinator.TryBeginCommit(request, out committedRequest)); + callbackCompleted.SetResult(); + }, + exception => throw new Xunit.Sdk.XunitException(exception.ToString())); + using var cleanup = coordinator; + + Assert.True(coordinator.TrySchedule(new RestartRequest( + 50, + TimeSpan.FromSeconds(10), + true, + CreateSettingsSnapshot("first")))); + await callbackStarted.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.True(coordinator.TrySchedule(new RestartRequest( + 50, + TimeSpan.Zero, + true, + CreateSettingsSnapshot("replacement"), + ReplaceUntilCommit: true))); + + allowCommit.SetResult(); + await callbackCompleted.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.Equal(1, executions); + Assert.Equal("replacement", committedRequest.SettingsSnapshot?.Account.Login); + } + + [Fact] + public async Task RejectsSameAttemptReplacementAfterCommit() + { + var commitStarted = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var releaseCommit = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + RestartRequest committedRequest = default; + + RestartCoordinator coordinator = null!; + coordinator = new RestartCoordinator( + async (request, cancellationToken) => + { + Assert.True(coordinator.TryBeginCommit(request, out committedRequest)); + commitStarted.SetResult(); + await releaseCommit.Task.WaitAsync(cancellationToken); + }, + exception => throw new Xunit.Sdk.XunitException(exception.ToString())); + using var cleanup = coordinator; + + Assert.True(coordinator.TrySchedule(new RestartRequest( + 60, + TimeSpan.Zero, + true, + CreateSettingsSnapshot("committed")))); + await commitStarted.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.False(coordinator.TrySchedule(new RestartRequest( + 60, + TimeSpan.Zero, + true, + CreateSettingsSnapshot("rejected"), + ReplaceUntilCommit: true))); + Assert.Equal("committed", committedRequest.SettingsSnapshot?.Account.Login); + + releaseCommit.SetResult(); + } + + [Fact] + public void RejectsStaleAttempt() + { + RestartCoordinator coordinator = null!; + coordinator = new RestartCoordinator( + (_, _) => Task.CompletedTask, + exception => throw new Xunit.Sdk.XunitException(exception.ToString())); + using var cleanup = coordinator; + + Assert.True(coordinator.TrySchedule(new RestartRequest(20, TimeSpan.Zero, true))); + Assert.False(coordinator.TrySchedule(new RestartRequest(19, TimeSpan.Zero, true))); + } + + [Fact] + public async Task RejectsCompletedAttempt() + { + var completed = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + RestartCoordinator coordinator = null!; + coordinator = new RestartCoordinator( + (request, cancellationToken) => + { + Assert.True(coordinator.TryBeginCommit(request, out _)); + completed.SetResult(); + return Task.CompletedTask; + }, + exception => throw new Xunit.Sdk.XunitException(exception.ToString())); + using var cleanup = coordinator; + + Assert.True(coordinator.TrySchedule(new RestartRequest(20, TimeSpan.Zero, true))); + await completed.Task.WaitAsync(TimeSpan.FromSeconds(5)); + Assert.True(SpinWait.SpinUntil(() => !coordinator.HasScheduledRestart(20), TimeSpan.FromSeconds(5))); + + Assert.False(coordinator.TrySchedule(new RestartRequest(20, TimeSpan.Zero, true))); + } + + [Fact] + public async Task TerminalStopCancelsInFlightWorkAndRejectsFurtherRestarts() + { + var callbackStarted = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + using var coordinator = new RestartCoordinator( + async (_, cancellationToken) => + { + callbackStarted.SetResult(); + await Task.Delay(Timeout.InfiniteTimeSpan, cancellationToken); + }, + exception => throw new Xunit.Sdk.XunitException(exception.ToString())); + + Assert.True(coordinator.TrySchedule(new RestartRequest(1, TimeSpan.Zero, true))); + await callbackStarted.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + coordinator.Stop(); + + Assert.False(coordinator.TrySchedule(new RestartRequest(2, TimeSpan.Zero, true))); + Assert.False(coordinator.HasScheduledRestart(1)); + } + + private static RestartSettingsSnapshot CreateSettingsSnapshot(string account) + { + return new RestartSettingsSnapshot( + new Settings.MainConfigHelper.MainConfig.AccountInfoConfig(account, "-"), + "localhost", + 25565); + } +} diff --git a/MinecraftClient.Tests/SocketWrapperTests.cs b/MinecraftClient.Tests/SocketWrapperTests.cs new file mode 100644 index 00000000..c04fb9b4 --- /dev/null +++ b/MinecraftClient.Tests/SocketWrapperTests.cs @@ -0,0 +1,34 @@ +using System.Net; +using System.Net.Sockets; +using MinecraftClient.Protocol.Handlers; + +namespace MinecraftClient.Tests; + +public sealed class SocketWrapperTests +{ + [Fact] + public async Task GracefulPeerCloseEndsReadInsteadOfSpinning() + { + var listener = new TcpListener(IPAddress.Loopback, 0); + listener.Start(); + try + { + using var client = new TcpClient(); + Task acceptTask = listener.AcceptTcpClientAsync(); + await client.ConnectAsync((IPEndPoint)listener.LocalEndpoint); + using TcpClient peer = await acceptTask; + var wrapper = new SocketWrapper(client); + + peer.Client.Shutdown(SocketShutdown.Both); + peer.Close(); + + Assert.True(SpinWait.SpinUntil(wrapper.HasDataAvailable, TimeSpan.FromSeconds(5))); + await Assert.ThrowsAsync( + () => Task.Run(() => wrapper.ReadDataRAW(1)).WaitAsync(TimeSpan.FromSeconds(5))); + } + finally + { + listener.Stop(); + } + } +} diff --git a/MinecraftClient.Tests/Usings.cs b/MinecraftClient.Tests/Usings.cs new file mode 100644 index 00000000..c802f448 --- /dev/null +++ b/MinecraftClient.Tests/Usings.cs @@ -0,0 +1 @@ +global using Xunit; diff --git a/MinecraftClient.sln b/MinecraftClient.sln index ebdf1f09..3f24b221 100644 --- a/MinecraftClient.sln +++ b/MinecraftClient.sln @@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MccMcpStdioHarness", "Debug EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MccMcpWebPlayground", "DebugTools\MccMcpWebPlayground\MccMcpWebPlayground.csproj", "{5F620CF6-BC7D-449A-B779-2D51985059C6}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MinecraftClient.Tests", "MinecraftClient.Tests\MinecraftClient.Tests.csproj", "{44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -71,6 +73,18 @@ Global {5F620CF6-BC7D-449A-B779-2D51985059C6}.Release|x64.Build.0 = Release|Any CPU {5F620CF6-BC7D-449A-B779-2D51985059C6}.Release|x86.ActiveCfg = Release|Any CPU {5F620CF6-BC7D-449A-B779-2D51985059C6}.Release|x86.Build.0 = Release|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Debug|x64.ActiveCfg = Debug|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Debug|x64.Build.0 = Debug|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Debug|x86.ActiveCfg = Debug|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Debug|x86.Build.0 = Debug|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Release|Any CPU.Build.0 = Release|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Release|x64.ActiveCfg = Release|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Release|x64.Build.0 = Release|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Release|x86.ActiveCfg = Release|Any CPU + {44B63F7B-30E2-47DA-B2C8-A8742BC8AE0B}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/MinecraftClient/ChatBots/AntiAFK.cs b/MinecraftClient/ChatBots/AntiAFK.cs index 23b2bad6..4291e8dd 100644 --- a/MinecraftClient/ChatBots/AntiAFK.cs +++ b/MinecraftClient/ChatBots/AntiAFK.cs @@ -127,7 +127,7 @@ namespace MinecraftClient.ChatBots private void DoAntiAfkStuff() { var isMovementLocked = BotMovementLock.Instance; - if (Config.Use_Terrain_Handling && GetTerrainEnabled() && isMovementLocked is {IsLocked: false}) + if (Config.Use_Terrain_Handling && GetTerrainEnabled() && isMovementLocked is { IsLocked: false }) { var currentLocation = GetCurrentLocation(); diff --git a/MinecraftClient/ChatBots/AutoAttack.cs b/MinecraftClient/ChatBots/AutoAttack.cs index 8395eed8..f851ca0a 100644 --- a/MinecraftClient/ChatBots/AutoAttack.cs +++ b/MinecraftClient/ChatBots/AutoAttack.cs @@ -28,7 +28,7 @@ namespace MinecraftClient.ChatBots public PriorityType Priority = PriorityType.distance; [TomlInlineComment("$ChatBot.AutoAttack.Cooldown_Time$")] - public CooldownConfig Cooldown_Time = new(false, 1.0); + public CooldownConfig Cooldown_Time = new(); [TomlInlineComment("$ChatBot.AutoAttack.Interaction$")] public InteractType Interaction = InteractType.Attack; @@ -50,10 +50,19 @@ namespace MinecraftClient.ChatBots public void OnSettingUpdate() { - if (Cooldown_Time.Custom && Cooldown_Time.value <= 0) + if (Cooldown_Time.Custom) { - LogToConsole(BotName, Translations.bot_autoAttack_invalidcooldown); - Cooldown_Time.value = 1.0; + if (Cooldown_Time.Min <= 0) + Cooldown_Time.Min = 0.1; + if (Cooldown_Time.Max <= 0) + Cooldown_Time.Max = 0.1; + + if (Cooldown_Time.Min > Cooldown_Time.Max) + { + double temp = Cooldown_Time.Min; + Cooldown_Time.Min = Cooldown_Time.Max; + Cooldown_Time.Max = temp; + } } if (Attack_Range < 1.0) @@ -72,24 +81,16 @@ namespace MinecraftClient.ChatBots public struct CooldownConfig { public bool Custom; - public double value; + public bool RandomMode = false; + public double Min = 1.5; + public double Max = 2.5; public CooldownConfig() { Custom = false; - value = 0; - } - - public CooldownConfig(double value) - { - Custom = true; - this.value = value; - } - - public CooldownConfig(bool Override, double value) - { - this.Custom = Override; - this.value = value; + RandomMode = false; + Min = 1.5; + Max = 2.5; } } } @@ -105,13 +106,14 @@ namespace MinecraftClient.ChatBots private float health = 100; private readonly bool attackHostile = true; private readonly bool attackPassive = false; + private readonly Random _random = new(); public AutoAttack() { overrideAttackSpeed = Config.Cooldown_Time.Custom; if (Config.Cooldown_Time.Custom) { - attackCooldownSeconds = Config.Cooldown_Time.value; + attackCooldownSeconds = Config.Cooldown_Time.Min; attackCooldown = SecondsToAttackCooldownTicks(attackCooldownSeconds); } @@ -137,6 +139,12 @@ namespace MinecraftClient.ChatBots if (attackCooldownCounter == 0) { + if (Config.Cooldown_Time.Custom && Config.Cooldown_Time.RandomMode) + { + double randomSeconds = _random.NextDouble() * (Config.Cooldown_Time.Max - Config.Cooldown_Time.Min) + Config.Cooldown_Time.Min; + attackCooldown = SecondsToAttackCooldownTicks(randomSeconds); + } + attackCooldownCounter = attackCooldown; if (entitiesToAttack.Count > 0) { @@ -177,6 +185,8 @@ namespace MinecraftClient.ChatBots InteractEntity(priorityEntity, Config.Interaction); // hit the entity! SendAnimation(Inventory.Hand.MainHand); // Arm animation } + + } } else @@ -188,6 +198,7 @@ namespace MinecraftClient.ChatBots { InteractEntity(entity.Key, Config.Interaction); // hit the entity! } + } SendAnimation(Inventory.Hand.MainHand); // Arm animation } diff --git a/MinecraftClient/ChatBots/AutoDig.cs b/MinecraftClient/ChatBots/AutoDig.cs index 148335d5..04f3f6da 100644 --- a/MinecraftClient/ChatBots/AutoDig.cs +++ b/MinecraftClient/ChatBots/AutoDig.cs @@ -30,6 +30,12 @@ namespace MinecraftClient.ChatBots [TomlInlineComment("$ChatBot.AutoDig.Auto_Tool_Switch$")] public bool Auto_Tool_Switch = false; + [TomlInlineComment("$ChatBot.AutoDig.Apply_Efficiency_Enchantments$")] + public bool Apply_Efficiency_Enchantments = true; + + [TomlInlineComment("$ChatBot.AutoDig.Apply_Haste_Effects$")] + public bool Apply_Haste_Effects = true; + [TomlInlineComment("$ChatBot.AutoDig.Durability_Limit$")] public int Durability_Limit = 2; @@ -322,6 +328,15 @@ namespace MinecraftClient.ChatBots return !IsBelowDurabilityLimit(currentTool); } + private static MiningCalculator.MiningOptions GetMiningOptions() + { + return new MiningCalculator.MiningOptions + { + ApplyEfficiencyEnchantments = Config.Apply_Efficiency_Enchantments, + ApplyHasteEffects = Config.Apply_Haste_Effects + }; + } + public override void Update() { lock (stateLock) @@ -393,7 +408,7 @@ namespace MinecraftClient.ChatBots if (!EnsureSuitableTool(block.Type)) return false; - if (DigBlock(blockLoc, Direction.Down, lookAtBlock: false)) + if (DigBlock(blockLoc, Direction.Down, lookAtBlock: false, miningOptions: GetMiningOptions())) { currentDig = blockLoc; if (Config.Log_Block_Dig) @@ -457,7 +472,7 @@ namespace MinecraftClient.ChatBots if (!EnsureSuitableTool(targetBlock.Type)) return false; - if (DigBlock(target, Direction.Down, lookAtBlock: true)) + if (DigBlock(target, Direction.Down, lookAtBlock: true, miningOptions: GetMiningOptions())) { currentDig = target; if (Config.Log_Block_Dig) @@ -494,7 +509,7 @@ namespace MinecraftClient.ChatBots if (!EnsureSuitableTool(block.Type)) return false; - if (DigBlock(blockLoc, Direction.Down, lookAtBlock: true)) + if (DigBlock(blockLoc, Direction.Down, lookAtBlock: true, miningOptions: GetMiningOptions())) { currentDig = blockLoc; if (Config.Log_Block_Dig) diff --git a/MinecraftClient/ChatBots/AutoRelog.cs b/MinecraftClient/ChatBots/AutoRelog.cs index 8a42a26c..3a07f7f4 100644 --- a/MinecraftClient/ChatBots/AutoRelog.cs +++ b/MinecraftClient/ChatBots/AutoRelog.cs @@ -23,7 +23,7 @@ namespace MinecraftClient.ChatBots public Range Delay = new(3); [TomlInlineComment("$ChatBot.AutoRelog.Retries$")] - public int Retries = 3; + public int Retries = -1; [TomlInlineComment("$ChatBot.AutoRelog.Ignore_Kick_Message$")] public bool Ignore_Kick_Message = false; @@ -31,27 +31,27 @@ namespace MinecraftClient.ChatBots [TomlPrecedingComment("$ChatBot.AutoRelog.Kick_Messages$")] public string[] Kick_Messages = new string[] { "Connection has been lost", "Server is restarting", "Server is full", "Too Many people" }; - [NonSerialized] - public static int _BotRecoAttempts = 0; - public void OnSettingUpdate() { + Kick_Messages ??= Array.Empty(); + + if (!double.IsFinite(Delay.min)) + Delay.min = 0.1; + if (!double.IsFinite(Delay.max)) + Delay.max = 0.1; + Delay.min = Math.Max(0.1, Delay.min); Delay.max = Math.Max(0.1, Delay.max); - double maxDelaySeconds = int.MaxValue / (double)Settings.ClientTicksPerSecond; + double maxDelaySeconds = (uint.MaxValue - 1) / 1000D; Delay.min = Math.Min(maxDelaySeconds, Delay.min); Delay.max = Math.Min(maxDelaySeconds, Delay.max); if (Delay.min > Delay.max) (Delay.min, Delay.max) = (Delay.max, Delay.min); - if (Retries == -1) - Retries = int.MaxValue; - - if (Enabled) - for (int i = 0; i < Kick_Messages.Length; i++) - Kick_Messages[i] = Kick_Messages[i].ToLower(); + if (Retries < -1) + Retries = -1; } public struct Range @@ -77,7 +77,8 @@ namespace MinecraftClient.ChatBots } } - private static readonly Random random = new(); + private static readonly AutoRelogRetryPolicy s_retryPolicy = new(TimeProvider.System); + private readonly long? sourceConnectionAttempt; /// /// This bot automatically re-join the server if kick message contains predefined string @@ -85,8 +86,13 @@ namespace MinecraftClient.ChatBots /// Minimum delay before re-joining the server (in seconds) /// Maximum delay before re-joining the server (in seconds) /// Number of retries if connection fails (-1 = infinite) - public AutoRelog() + public AutoRelog() : this(null) { + } + + private AutoRelog(long? sourceConnectionAttempt) + { + this.sourceConnectionAttempt = sourceConnectionAttempt; LogDebugToConsole(string.Format(Translations.bot_autoRelog_launch, Config.Retries)); } @@ -97,7 +103,12 @@ namespace MinecraftClient.ChatBots public override void AfterGameJoined() { - Configs._BotRecoAttempts = 0; + s_retryPolicy.MarkJoined(); + } + + public override void Update() + { + ResetRetriesAfterStableJoin(); } private void _Initialize() @@ -114,59 +125,75 @@ namespace MinecraftClient.ChatBots if (reason == DisconnectReason.UserLogout) { LogDebugToConsole(Translations.bot_autoRelog_ignore_user_logout); + return false; } - else if (Config.Retries < 0 || Configs._BotRecoAttempts < Config.Retries) + + message = GetVerbatim(message); + LogDebugToConsole(string.Format(Translations.bot_autoRelog_disconnect_msg, message)); + + if (!AutoRelogRetryPolicy.ShouldReconnect( + reason, + message, + Config.Ignore_Kick_Message, + Config.Kick_Messages, + out string? matchedMessage)) { - message = GetVerbatim(message); - string comp = message.ToLower(); - - LogDebugToConsole(string.Format(Translations.bot_autoRelog_disconnect_msg, message)); - - if (Config.Ignore_Kick_Message) - { - Configs._BotRecoAttempts++; - LaunchDelayedReconnection(null); - return true; - } - - foreach (string msg in Config.Kick_Messages) - { - if (comp.Contains(msg)) - { - Configs._BotRecoAttempts++; - LaunchDelayedReconnection(msg); - return true; - } - } - LogDebugToConsole(Translations.bot_autoRelog_reconnect_ignore); + return false; } - return false; + return LaunchDelayedReconnection(matchedMessage); } - private void LaunchDelayedReconnection(string? msg) + private static void ResetRetriesAfterStableJoin() { - double delay = random.NextDouble() * (Config.Delay.max - Config.Delay.min) + Config.Delay.min; + if (s_retryPolicy.ResetAfterStableConnection()) + McClient.ReconnectionAttemptsLeft = Config.Retries; + } + + private static bool HasUnlimitedRetries() + { + return Config.Retries == -1; + } + + private bool LaunchDelayedReconnection(string? msg) + { + if (!s_retryPolicy.TryReserveAttempt(Config.Retries, out int retriesLeft)) + return false; + + double delay = Random.Shared.NextDouble() * (Config.Delay.max - Config.Delay.min) + Config.Delay.min; LogDebugToConsole(string.Format(string.IsNullOrEmpty(msg) ? Translations.bot_autoRelog_reconnect_always : Translations.bot_autoRelog_reconnect, msg)); - int retriesLeft = Config.Retries - Configs._BotRecoAttempts; - if (retriesLeft < 0) - retriesLeft = 0; - - string retriesDisplay = Config.Retries == int.MaxValue + string retriesDisplay = HasUnlimitedRetries() ? Translations.bot_autoRelog_retries_unlimited : retriesLeft.ToString(); - LogToConsole(string.Format(Translations.bot_autoRelog_wait_with_retries, delay, retriesDisplay)); - ReconnectToTheServer(retriesLeft, (int)Math.Floor(delay), true); + McClient.ReconnectionAttemptsLeft = retriesLeft; + long connectionAttempt = sourceConnectionAttempt ?? Handler.ConnectionAttempt; + if (Program.TryRestart( + connectionAttempt, + TimeSpan.FromSeconds(delay), + keepAccountAndServerSettings: true, + sourceCleanupCompletion: sourceConnectionAttempt.HasValue ? null : Handler.DisconnectCompletion)) + { + LogToConsole(string.Format(Translations.bot_autoRelog_wait_with_retries, delay, retriesDisplay)); + return true; + } + + s_retryPolicy.RollBackReservedAttempt(); + return Program.HasRestartPending(connectionAttempt); } public static bool OnDisconnectStatic(DisconnectReason reason, string message) + { + return OnDisconnectStatic(reason, message, Program.CurrentConnectionAttempt); + } + + internal static bool OnDisconnectStatic(DisconnectReason reason, string message, long sourceConnectionAttempt) { if (Config.Enabled) { - AutoRelog bot = new(); + AutoRelog bot = new(sourceConnectionAttempt); bot.Initialize(); return bot.OnDisconnect(reason, message); } diff --git a/MinecraftClient/ChatBots/AutoRelogRetryPolicy.cs b/MinecraftClient/ChatBots/AutoRelogRetryPolicy.cs new file mode 100644 index 00000000..259b7079 --- /dev/null +++ b/MinecraftClient/ChatBots/AutoRelogRetryPolicy.cs @@ -0,0 +1,108 @@ +using System; +using System.Threading; +using MinecraftClient.Scripting; + +namespace MinecraftClient.ChatBots +{ + internal sealed class AutoRelogRetryPolicy + { + internal static readonly TimeSpan StableConnectionThreshold = TimeSpan.FromSeconds(60); + + private readonly Lock stateLock = new(); + private readonly TimeProvider timeProvider; + private int attempts; + private DateTimeOffset? joinedAt; + + internal AutoRelogRetryPolicy(TimeProvider timeProvider) + { + ArgumentNullException.ThrowIfNull(timeProvider); + this.timeProvider = timeProvider; + } + + internal int Attempts + { + get + { + lock (stateLock) + return attempts; + } + } + + internal void MarkJoined() + { + lock (stateLock) + joinedAt = timeProvider.GetUtcNow(); + } + + internal bool ResetAfterStableConnection() + { + lock (stateLock) + { + if (attempts == 0 || joinedAt is not DateTimeOffset connectionStart) + return false; + + if (timeProvider.GetUtcNow() - connectionStart < StableConnectionThreshold) + return false; + + attempts = 0; + joinedAt = null; + return true; + } + } + + internal bool TryReserveAttempt(int retryLimit, out int retriesLeft) + { + lock (stateLock) + { + bool unlimited = retryLimit == -1; + if (!unlimited && attempts >= retryLimit) + { + retriesLeft = 0; + return false; + } + + attempts++; + joinedAt = null; + retriesLeft = unlimited ? -1 : Math.Max(0, retryLimit - attempts); + return true; + } + } + + internal void RollBackReservedAttempt() + { + lock (stateLock) + { + if (attempts > 0) + attempts--; + } + } + + internal static bool ShouldReconnect( + ChatBot.DisconnectReason reason, + string message, + bool ignoreKickMessage, + ReadOnlySpan kickMessages, + out string? matchedMessage) + { + matchedMessage = null; + + if (reason == ChatBot.DisconnectReason.UserLogout) + return false; + + if (reason == ChatBot.DisconnectReason.ConnectionLost || ignoreKickMessage) + return true; + + foreach (string candidate in kickMessages) + { + if (!string.IsNullOrEmpty(candidate) + && message.Contains(candidate, StringComparison.OrdinalIgnoreCase)) + { + matchedMessage = candidate; + return true; + } + } + + return false; + } + } +} diff --git a/MinecraftClient/ChatBots/Farmer.cs b/MinecraftClient/ChatBots/Farmer.cs index 7c15791c..fe33176a 100644 --- a/MinecraftClient/ChatBots/Farmer.cs +++ b/MinecraftClient/ChatBots/Farmer.cs @@ -73,7 +73,7 @@ namespace MinecraftClient.ChatBots public override void Initialize() { - if (GetProtocolVersion() < Protocol18Handler.MC_1_13_Version) + if (GetProtocolVersion() < Protocol18Handler.MC_1_8_Version) { LogToConsole(Translations.bot_farmer_not_implemented); return; @@ -149,6 +149,10 @@ namespace MinecraftClient.ChatBots if (running) return r.SetAndReturn(CmdResult.Status.Fail, Translations.bot_farmer_already_running); + if (!IsCropAvailableForProtocol(whatToFarm, GetProtocolVersion())) + return r.SetAndReturn(CmdResult.Status.Fail, + string.Format(Translations.bot_farmer_crop_unavailable, whatToFarm, "1.9")); + var movementLock = BotMovementLock.Instance; if (movementLock is { IsLocked: true }) return r.SetAndReturn(CmdResult.Status.Fail, @@ -369,11 +373,11 @@ namespace MinecraftClient.ChatBots break; } - var loc = new Location(Math.Floor(location.X), Math.Floor(location2.Y), + var loc = new Location(Math.Floor(location.X), Math.Floor(location.Y), Math.Floor(location.Z)); LogDebug("Sending placeblock to: " + loc); - SendPlaceBlock(loc, Direction.Up); + SendPlaceBlock(loc, Direction.Up, lookAtBlock: true); Thread.Sleep(300); } else LogDebug("Can't move to: " + location2); @@ -496,7 +500,7 @@ namespace MinecraftClient.ChatBots { // TODO: Do a check if the carrot/potato is on the first growth stage // if so, use: new Location(location.X, (double)(location.Y - 1) + (double)0.93750, location.Z) - SendPlaceBlock(location2, Direction.Down); + SendPlaceBlock(location2, Direction.Down, lookAtBlock: true); } Thread.Sleep(100); @@ -591,6 +595,15 @@ namespace MinecraftClient.ChatBots }; } + private static bool IsCropAvailableForProtocol(CropType type, int protocolVersion) + { + return type switch + { + CropType.Beetroot => protocolVersion >= Protocol18Handler.MC_1_9_Version, + _ => true + }; + } + private List FindEmptyFarmland(int radius) { return GetWorld() @@ -616,16 +629,19 @@ namespace MinecraftClient.ChatBots if (fullyGrown && material is Material.Melon or Material.Pumpkin) return true; - var isFullyGrown = IsCropFullyGrown(GetWorld().GetBlock(location), cropType); + var isFullyGrown = IsCropFullyGrown(GetWorld().GetBlock(location), cropType, location); return fullyGrown ? isFullyGrown : !isFullyGrown; }) .ToList(); } - private bool IsCropFullyGrown(Block block, CropType cropType) + private bool IsCropFullyGrown(Block block, CropType cropType, Location? location = null) { var protocolVersion = GetProtocolVersion(); + if (protocolVersion < Protocol18Handler.MC_1_13_Version) + return IsLegacyCropFullyGrown(block, cropType, location); + switch (cropType) { case CropType.Beetroot: @@ -781,6 +797,44 @@ namespace MinecraftClient.ChatBots return false; } + private bool IsLegacyCropFullyGrown(Block block, CropType cropType, Location? location) + { + return cropType switch + { + CropType.Beetroot => block.BlockId == 207 && block.BlockMeta >= 3, + CropType.Carrot => block.BlockId == 141 && block.BlockMeta >= 7, + CropType.Melon => block.BlockId == 105 + && (block.BlockMeta >= 7 || HasAdjacentBlock(location, Material.Melon)), + CropType.NetherWart => block.BlockId == 115 && block.BlockMeta >= 3, + CropType.Pumpkin => block.BlockId == 104 + && (block.BlockMeta >= 7 || HasAdjacentBlock(location, Material.Pumpkin)), + CropType.Potato => block.BlockId == 142 && block.BlockMeta >= 7, + CropType.Wheat => block.BlockId == 59 && block.BlockMeta >= 7, + _ => false + }; + } + + private bool HasAdjacentBlock(Location? location, Material material) + { + if (location is not Location stemLocation) + return false; + + var world = GetWorld(); + int x = (int)Math.Floor(stemLocation.X); + int y = (int)Math.Floor(stemLocation.Y); + int z = (int)Math.Floor(stemLocation.Z); + + Location[] adjacentLocations = + [ + new(x + 1, y, z), + new(x - 1, y, z), + new(x, y, z + 1), + new(x, y, z - 1) + ]; + + return adjacentLocations.Any(adjacentLocation => world.GetBlock(adjacentLocation).Type == material); + } + // Yoinked from ReinforceZwei's AutoTree and adapted to search the whole of inventory in additon to the hotbar private bool SwitchToItem(ItemType itemType) { @@ -854,4 +908,4 @@ namespace MinecraftClient.ChatBots else LogDebugToConsole(text); } } -} \ No newline at end of file +} diff --git a/MinecraftClient/ChatBots/Map.cs b/MinecraftClient/ChatBots/Map.cs index 930e057e..a686c39a 100644 --- a/MinecraftClient/ChatBots/Map.cs +++ b/MinecraftClient/ChatBots/Map.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.IO; using System.Text; using System.Threading.Tasks; +using Avalonia.Threading; using Brigadier.NET; using Brigadier.NET.Builder; using ImageMagick; @@ -11,6 +12,7 @@ using MinecraftClient.CommandHandler; using MinecraftClient.CommandHandler.Patch; using MinecraftClient.Mapping; using MinecraftClient.Scripting; +using MinecraftClient.Tui; using Tomlet.Attributes; namespace MinecraftClient.ChatBots @@ -142,7 +144,12 @@ namespace MinecraftClient.ChatBots SaveToFile(map); if (Config.Render_In_Console) - RenderInConsole(map); + { + if (ConsoleIO.Backend is TuiConsoleBackend) + RenderInTui(map); + else + RenderInConsole(map); + } return r.SetAndReturn(CmdResult.Status.Done); } @@ -213,7 +220,12 @@ namespace MinecraftClient.ChatBots SaveToFile(map); if (Config.Render_In_Console) - RenderInConsole(map); + { + if (ConsoleIO.Backend is TuiConsoleBackend) + RenderInTui(map); + else + RenderInConsole(map); + } } } @@ -342,6 +354,24 @@ namespace MinecraftClient.ChatBots } } + private static void RenderInTui(McMap map) + { + var view = TuiConsoleBackend.Instance?.GetView(); + if (view is null) + return; + + Dispatcher.UIThread.Post(() => + { + if (view.HasOverlay && view.OverlayContent is MapOverlay existing) + { + existing.UpdateMap(map); + return; + } + + view.ShowOverlay(new MapOverlay(map)); + }); + } + private static void RenderInConsole(McMap map) { StringBuilder sb = new(); @@ -447,109 +477,62 @@ namespace MinecraftClient.ChatBots public DateTime LastUpdated { get; set; } } - internal class MapColors + /// + /// Map packet base color palette. Colors are loaded from the embedded + /// MinimapBlockColors.json resource (map_palette section) generated by + /// tools/gen_block_color_map.py, which parses MapColor.java. + /// + internal static class MapColors { - // When colors are updated in a new update, you can get them using the game code: net\minecraft\world\level\material\MaterialColor.java - public static Dictionary Colors = new() + private static readonly Dictionary Colors; + + private static readonly byte[] ShadeMultipliers = [180, 220, 255, 135]; + + static MapColors() { - //Color ID R G B - {0, new byte[]{0, 0, 0}}, - {1, new byte[]{127, 178, 56}}, - {2, new byte[]{247, 233, 163}}, - {3, new byte[]{199, 199, 199}}, - {4, new byte[]{255, 0, 0}}, - {5, new byte[]{160, 160, 255}}, - {6, new byte[]{167, 167, 167}}, - {7, new byte[]{0, 124, 0}}, - {8, new byte[]{255, 255, 255}}, - {9, new byte[]{164, 168, 184}}, - {10, new byte[]{151, 109, 77}}, - {11, new byte[]{112, 112, 112}}, - {12, new byte[]{64, 64, 255}}, - {13, new byte[]{143, 119, 72}}, - {14, new byte[]{255, 252, 245}}, - {15, new byte[]{216, 127, 51}}, - {16, new byte[]{178, 76, 216}}, - {17, new byte[]{102, 153, 216}}, - {18, new byte[]{229, 229, 51}}, - {19, new byte[]{127, 204, 25}}, - {20, new byte[]{242, 127, 165}}, - {21, new byte[]{76, 76, 76}}, - {22, new byte[]{153, 153, 153}}, - {23, new byte[]{76, 127, 153}}, - {24, new byte[]{127, 63, 178}}, - {25, new byte[]{51, 76, 178}}, - {26, new byte[]{102, 76, 51}}, - {27, new byte[]{102, 127, 51}}, - {28, new byte[]{153, 51, 51}}, - {29, new byte[]{25, 25, 25}}, - {30, new byte[]{250, 238, 77}}, - {31, new byte[]{92, 219, 213}}, - {32, new byte[]{74, 128, 255}}, - {33, new byte[]{0, 217, 58}}, - {34, new byte[]{129, 86, 49}}, - {35, new byte[]{112, 2, 0}}, - {36, new byte[]{209, 177, 161}}, - {37, new byte[]{159, 82, 36}}, - {38, new byte[]{149, 87, 108}}, - {39, new byte[]{112, 108, 138}}, - {40, new byte[]{186, 133, 36}}, - {41, new byte[]{103, 117, 53}}, - {42, new byte[]{160, 77, 78}}, - {43, new byte[]{57, 41, 35}}, - {44, new byte[]{135, 107, 98}}, - {45, new byte[]{87, 92, 92}}, - {46, new byte[]{122, 73, 88}}, - {47, new byte[]{76, 62, 92}}, - {48, new byte[]{76, 50, 35}}, - {49, new byte[]{76, 82, 42}}, - {50, new byte[]{142, 60, 46}}, - {51, new byte[]{37, 22, 16}}, - {52, new byte[]{189, 48, 49}}, - {53, new byte[]{148, 63, 97}}, - {54, new byte[]{92, 25, 29}}, - {55, new byte[]{22, 126, 134}}, - {56, new byte[]{58, 142, 140}}, - {57, new byte[]{86, 44, 62}}, - {58, new byte[]{20, 180, 133}}, - {59, new byte[]{100, 100, 100}}, - {60, new byte[]{216, 175, 147}}, - {61, new byte[]{127, 167, 150}} - }; + Colors = new Dictionary(); + try + { + using var stream = System.Reflection.Assembly.GetExecutingAssembly() + .GetManifestResourceStream("MinimapBlockColors.json"); + if (stream is not null) + { + using var doc = System.Text.Json.JsonDocument.Parse(stream); + if (doc.RootElement.TryGetProperty("map_palette", out var palette)) + { + foreach (var prop in palette.EnumerateObject()) + { + if (!byte.TryParse(prop.Name, out byte id)) + continue; + var arr = prop.Value; + Colors[id] = [ + arr[0].GetByte(), + arr[1].GetByte(), + arr[2].GetByte() + ]; + } + } + } + } + catch (Exception ex) + { + ConsoleIO.WriteLogLine($"[Map] Failed to load map palette: {ex.Message}"); + } + } public static ColorRGBA ColorByteToRGBA(byte receivedColorId) { - // Divide received color id by 4 to get the base color id - // Much thanks to DevBobcorn byte baseColorId = (byte)(receivedColorId >> 2); - // Any new colors that we haven't added will be purple like in the missing CS: Source Texture - if (!Colors.ContainsKey(baseColorId)) + if (!Colors.TryGetValue(baseColorId, out byte[]? rgb)) return new(248, 0, 248, 255, true); - byte shadeId = (byte)(receivedColorId % 4); - byte shadeMultiplier = 255; - - switch (shadeId) - { - case 0: - shadeMultiplier = 180; - break; - - case 1: - shadeMultiplier = 220; - break; - - case 3: - // NOTE: If we ever add map support below 1.8, this needs to be 220 before 1.8 - shadeMultiplier = 135; - break; - } + byte multiplier = ShadeMultipliers[receivedColorId & 3]; return new( - r: (byte)((Colors[baseColorId][0] * shadeMultiplier) / 255), - g: (byte)((Colors[baseColorId][1] * shadeMultiplier) / 255), - b: (byte)((Colors[baseColorId][2] * shadeMultiplier) / 255), + r: (byte)(rgb[0] * multiplier / 255), + g: (byte)(rgb[1] * multiplier / 255), + b: (byte)(rgb[2] * multiplier / 255), a: 255 ); } diff --git a/MinecraftClient/ChatBots/ReplayCapture.cs b/MinecraftClient/ChatBots/ReplayCapture.cs index 4083d3c5..1c9b50cf 100644 --- a/MinecraftClient/ChatBots/ReplayCapture.cs +++ b/MinecraftClient/ChatBots/ReplayCapture.cs @@ -43,8 +43,7 @@ namespace MinecraftClient.ChatBots public override void Initialize() { SetNetworkPacketEventEnabled(true); - replay = new ReplayHandler(GetProtocolVersion()); - replay.MetaData.serverName = GetServerHost() + GetServerPort(); + replay = new ReplayHandler(GetProtocolVersion(), $"{GetServerHost()}:{GetServerPort()}"); backupCounter = Settings.DoubleToTick(Config.Backup_Interval); McClient.dispatcher.Register(l => l.Literal("help") @@ -68,6 +67,8 @@ namespace MinecraftClient.ChatBots { McClient.dispatcher.Unregister(CommandName); McClient.dispatcher.GetRoot().GetChild("help").RemoveChild(CommandName); + replay?.Dispose(); + replay = null; } private int OnCommandHelp(CmdResult r, string? cmd) @@ -85,9 +86,9 @@ namespace MinecraftClient.ChatBots { try { - if (replay!.RecordRunning) + if (replay is { RecordRunning: true }) { - replay.CreateBackupReplay(Path.Combine("replay_recordings", replay.GetReplayDefaultName())); + replay.CreateBackupReplay(Path.Combine(replay.ReplayFileDirectory, replay.GetReplayDefaultName())); return r.SetAndReturn(CmdResult.Status.Done, Translations.bot_replayCapture_created); } else @@ -103,7 +104,7 @@ namespace MinecraftClient.ChatBots { try { - if (replay!.RecordRunning) + if (replay is { RecordRunning: true }) { replay.OnShutDown(); return r.SetAndReturn(CmdResult.Status.Done, Translations.bot_replayCapture_stopped); @@ -119,16 +120,16 @@ namespace MinecraftClient.ChatBots public override void OnNetworkPacket(int packetID, List packetData, bool isLogin, bool isInbound) { - replay!.AddPacket(packetID, packetData, isLogin, isInbound); + replay?.AddPacket(packetID, packetData, isLogin, isInbound); } public override void Update() { - if (Config.Backup_Interval > 0 && replay!.RecordRunning) + if (Config.Backup_Interval > 0 && replay is { RecordRunning: true }) { if (backupCounter <= 0) { - replay.CreateBackupReplay(Path.Combine("recording_cache", "REPLAY_BACKUP.mcpr")); + replay.CreateBackupReplay(replay.GetBackupReplayPath()); backupCounter = Settings.DoubleToTick(Config.Backup_Interval); } else backupCounter--; @@ -137,7 +138,7 @@ namespace MinecraftClient.ChatBots public override bool OnDisconnect(DisconnectReason reason, string message) { - replay!.OnShutDown(); + replay?.OnShutDown(); return base.OnDisconnect(reason, message); } } diff --git a/MinecraftClient/ChatBots/Script.cs b/MinecraftClient/ChatBots/Script.cs index b4da57b4..4f764aa4 100644 --- a/MinecraftClient/ChatBots/Script.cs +++ b/MinecraftClient/ChatBots/Script.cs @@ -25,6 +25,7 @@ namespace MinecraftClient.ChatBots private bool csharp; private Thread? thread; private readonly Dictionary? localVars; + private readonly string? scriptOwnerKey; public Script(string filename) { @@ -38,6 +39,13 @@ namespace MinecraftClient.ChatBots this.localVars = localVars; } + internal Script(string filename, string? ownername, Dictionary? localVars, string? scriptOwnerKey) + : this(filename, ownername, localVars) + { + this.scriptOwnerKey = scriptOwnerKey; + SetScriptOwnerKey(scriptOwnerKey); + } + private void ParseArguments(string argstr) { List args = new(); @@ -86,7 +94,7 @@ namespace MinecraftClient.ChatBots public static bool LookForScript(ref string filename) { //Automatically look in subfolders and try to add ".txt" file extension - char dir_slash = Path.DirectorySeparatorChar; + char dir_slash = Path.DirectorySeparatorChar; string[] files = new string[] { filename, @@ -149,6 +157,12 @@ namespace MinecraftClient.ChatBots } } + public override bool OnDisconnect(DisconnectReason reason, string message) + { + UnloadBot(); + return false; + } + public override void Update() { if (csharp) //C# compiled script @@ -160,7 +174,7 @@ namespace MinecraftClient.ChatBots { try { - CSharpRunner.Run(this, lines, args, localVars, scriptName: file!); + CSharpRunner.Run(this, lines, args, localVars, scriptName: file!, scriptOwnerKey: scriptOwnerKey); } catch (CSharpException e) { @@ -213,7 +227,7 @@ namespace MinecraftClient.ChatBots .ToLower(); processedLine = string.Join("", processedLine.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries)); var parts = processedLine.Contains("to") ? processedLine.Split("to") : processedLine.Split("-"); - + if (parts.Length == 2) { var min = Convert.ToInt32(parts[0]); @@ -224,10 +238,12 @@ namespace MinecraftClient.ChatBots (min, max) = (max, min); LogToConsole(Translations.cmd_wait_random_min_bigger); } - + ticks = new Random().Next(min, max); - } else ticks = Convert.ToInt32(instruction_line[5..]); - } else ticks = Convert.ToInt32(instruction_line[5..]); + } + else ticks = Convert.ToInt32(instruction_line[5..]); + } + else ticks = Convert.ToInt32(instruction_line[5..]); } catch { } sleepticks = ticks; diff --git a/MinecraftClient/ChatBots/ScriptScheduler.cs b/MinecraftClient/ChatBots/ScriptScheduler.cs index 8da875f9..f5af44ec 100644 --- a/MinecraftClient/ChatBots/ScriptScheduler.cs +++ b/MinecraftClient/ChatBots/ScriptScheduler.cs @@ -183,64 +183,54 @@ namespace MinecraftClient.ChatBots private int verifytasks_timeleft = Settings.ClientTicksPerSecond; private readonly int verifytasks_delay = Settings.ClientTicksPerSecond; + public override void AfterGameJoined() + { + if (serverlogin_done) + return; + + serverlogin_done = true; + verifytasks_timeleft = verifytasks_delay; + RunLoginTasks(); + } + public override void Update() { + if (!serverlogin_done) + return; + if (verifytasks_timeleft <= 0) { verifytasks_timeleft = verifytasks_delay; - if (serverlogin_done) + for (int taskIndex = 0; taskIndex < Config.TaskList.Length; taskIndex++) { - foreach (TaskConfig task in Config.TaskList) + TaskConfig task = Config.TaskList[taskIndex]; + if (task.Trigger_On_Times.Enable) { - if (task.Trigger_On_Times.Enable) - { - bool matching_time_found = false; + bool matching_time_found = false; - foreach (TimeSpan time in task.Trigger_On_Times.Times) + foreach (TimeSpan time in task.Trigger_On_Times.Times) + { + if (time.Hours == DateTime.Now.Hour && time.Minutes == DateTime.Now.Minute) { - if (time.Hours == DateTime.Now.Hour && time.Minutes == DateTime.Now.Minute) + matching_time_found = true; + if (!task.Trigger_On_Time_Already_Triggered) { - matching_time_found = true; - if (!task.Trigger_On_Time_Already_Triggered) - { - task.Trigger_On_Time_Already_Triggered = true; - LogDebugToConsole(string.Format(Translations.bot_scriptScheduler_running_time, task.Action)); - CmdResult response = new(); - PerformInternalCommand(task.Action, ref response); - if (response.status != CmdResult.Status.Done || !string.IsNullOrWhiteSpace(response.result)) - LogToConsole(response); - } + task.Trigger_On_Time_Already_Triggered = true; + RunTaskAction(task, taskIndex, string.Format(Translations.bot_scriptScheduler_running_time, task.Action)); } } - - if (!matching_time_found) - task.Trigger_On_Time_Already_Triggered = false; } + if (!matching_time_found) + task.Trigger_On_Time_Already_Triggered = false; } } - else - { - foreach (TaskConfig task in Config.TaskList) - { - if (task.Trigger_On_Login || (firstlogin_done == false && task.Trigger_On_First_Login)) - { - LogDebugToConsole(string.Format(Translations.bot_scriptScheduler_running_login, task.Action)); - CmdResult response = new(); - PerformInternalCommand(task.Action, ref response); - if (response.status != CmdResult.Status.Done || !string.IsNullOrWhiteSpace(response.result)) - LogToConsole(response); - } - } - - firstlogin_done = true; - serverlogin_done = true; - } } else verifytasks_timeleft--; - foreach (TaskConfig task in Config.TaskList) + for (int taskIndex = 0; taskIndex < Config.TaskList.Length; taskIndex++) { + TaskConfig task = Config.TaskList[taskIndex]; if (task.Trigger_On_Interval.Enable) { if (task.Trigger_On_Interval_Countdown == 0) @@ -248,11 +238,7 @@ namespace MinecraftClient.ChatBots task.Trigger_On_Interval_Countdown = random.Next( Settings.DoubleToTick(task.Trigger_On_Interval.MinTime), Settings.DoubleToTick(task.Trigger_On_Interval.MaxTime) ); - LogDebugToConsole(string.Format(Translations.bot_scriptScheduler_running_inverval, task.Action)); - CmdResult response = new(); - PerformInternalCommand(task.Action, ref response); - if (response.status != CmdResult.Status.Done || !string.IsNullOrWhiteSpace(response.result)) - LogToConsole(response); + RunTaskAction(task, taskIndex, string.Format(Translations.bot_scriptScheduler_running_inverval, task.Action)); } else task.Trigger_On_Interval_Countdown--; } @@ -265,6 +251,58 @@ namespace MinecraftClient.ChatBots return false; } + private void RunLoginTasks() + { + bool isFirstLogin = !firstlogin_done; + + for (int taskIndex = 0; taskIndex < Config.TaskList.Length; taskIndex++) + { + TaskConfig task = Config.TaskList[taskIndex]; + if (task.Trigger_On_Login || (isFirstLogin && task.Trigger_On_First_Login)) + RunTaskAction(task, taskIndex, string.Format(Translations.bot_scriptScheduler_running_login, task.Action)); + } + + firstlogin_done = true; + } + + private void RunTaskAction(TaskConfig task, int taskIndex, string debugMessage) + { + LogDebugToConsole(debugMessage); + + if (TryRunOwnedScript(task, taskIndex)) + return; + + CmdResult response = new(); + PerformInternalCommand(task.Action, ref response); + if (response.status != CmdResult.Status.Done || !string.IsNullOrWhiteSpace(response.result)) + LogToConsole(response); + } + + private bool TryRunOwnedScript(TaskConfig task, int taskIndex) + { + string action = task.Action.Trim(); + const string scriptCommand = "script"; + if (!action.StartsWith(scriptCommand, StringComparison.OrdinalIgnoreCase)) + return false; + + if (action.Length == scriptCommand.Length || !char.IsWhiteSpace(action[scriptCommand.Length])) + return false; + + string scriptArgs = action[scriptCommand.Length..].Trim(); + if (string.IsNullOrWhiteSpace(scriptArgs)) + return false; + + string scriptOwnerKey = BuildScriptOwnerKey(task, taskIndex); + Handler.UnloadBotsByScriptOwnerKey(scriptOwnerKey); + Handler.BotLoad(new Script(scriptArgs, null, null, scriptOwnerKey)); + return true; + } + + private static string BuildScriptOwnerKey(TaskConfig task, int taskIndex) + { + return $"{nameof(ScriptScheduler)}:{taskIndex}:{task.Task_Name}:{task.Action.Trim()}"; + } + private static string Task2String(TaskConfig task) { return string.Format( diff --git a/MinecraftClient/ChatBots/TelegramBridge.cs b/MinecraftClient/ChatBots/TelegramBridge.cs index 70536cb9..f53ea28c 100644 --- a/MinecraftClient/ChatBots/TelegramBridge.cs +++ b/MinecraftClient/ChatBots/TelegramBridge.cs @@ -194,7 +194,7 @@ namespace MinecraftClient.ChatBots else message = text; - SendMessage(message); + SendRawMessage(message); } public void SendMessage(string message) @@ -213,6 +213,22 @@ namespace MinecraftClient.ChatBots } } + public void SendRawMessage(string message) + { + if (!CanSendMessages() || string.IsNullOrEmpty(message)) + return; + + try + { + botClient!.SendMessage(Config.ChannelId.Trim(), message).Wait(Config.Message_Send_Timeout); + } + catch (Exception e) + { + LogToConsole("§§4§l§f" + Translations.bot_TelegramBridge_canceled_sending); + LogDebugToConsole(e); + } + } + public void SendImage(string filePath, string? text = null) { if (!CanSendMessages()) @@ -352,7 +368,7 @@ namespace MinecraftClient.ChatBots replyParameters: message.MessageId, cancellationToken: _cancellationToken, parseMode: ParseMode.Markdown); - return;; + return; ; } CmdResult result = new(); diff --git a/MinecraftClient/ClassicConsoleBackend.cs b/MinecraftClient/ClassicConsoleBackend.cs index ac4912c9..38411413 100644 --- a/MinecraftClient/ClassicConsoleBackend.cs +++ b/MinecraftClient/ClassicConsoleBackend.cs @@ -1,12 +1,81 @@ using System; +using System.Text.RegularExpressions; namespace MinecraftClient { /// /// Console backend wrapping the ConsoleInteractive library (existing behavior). /// - public class ClassicConsoleBackend : IConsoleBackend + public partial class ClassicConsoleBackend : IConsoleBackend { + private static readonly (byte R, byte G, byte B, char Code)[] McStandardColors = + [ + (0, 0, 0, '0'), // black + (0, 0, 170, '1'), // dark_blue + (0, 170, 0, '2'), // dark_green + (0, 170, 170, '3'), // dark_aqua + (170, 0, 0, '4'), // dark_red + (170, 0, 170, '5'), // dark_purple + (255, 170, 0, '6'), // gold + (170, 170, 170, '7'), // gray + (85, 85, 85, '8'), // dark_gray + (85, 85, 255, '9'), // blue + (85, 255, 85, 'a'), // green + (85, 255, 255, 'b'), // aqua + (255, 85, 85, 'c'), // red + (255, 85, 255, 'd'), // light_purple + (255, 255, 85, 'e'), // yellow + (255, 255, 255, 'f'), // white + ]; + + [GeneratedRegex("§#([0-9a-fA-F]{6})")] + private static partial Regex HexColorRegex(); + + private static char NearestMcColor(byte r, byte g, byte b) + { + int bestIdx = 0; + long bestDist = long.MaxValue; + + for (int i = 0; i < McStandardColors.Length; i++) + { + var (sr, sg, sb, _) = McStandardColors[i]; + long dr = r - sr; + long dg = g - sg; + long db = b - sb; + long dist = dr * dr + dg * dg + db * db; + if (dist < bestDist) + { + bestDist = dist; + bestIdx = i; + } + } + + return McStandardColors[bestIdx].Code; + } + + private static string ResolveHexColors(string text) + { + if (string.IsNullOrEmpty(text) || !text.Contains("§#", StringComparison.Ordinal)) + return text; + + return HexColorRegex().Replace(text, match => + { + ReadOnlySpan hex = match.Groups[1].ValueSpan; + byte r = (byte)((HexVal(hex[0]) << 4) | HexVal(hex[1])); + byte g = (byte)((HexVal(hex[2]) << 4) | HexVal(hex[3])); + byte b = (byte)((HexVal(hex[4]) << 4) | HexVal(hex[5])); + return ColorHelper.GetColorEscapeCode(r, g, b, foreground: true); + }); + } + + private static int HexVal(char c) => c switch + { + >= '0' and <= '9' => c - '0', + >= 'a' and <= 'f' => c - 'a' + 10, + >= 'A' and <= 'F' => c - 'A' + 10, + _ => 0 + }; + public event EventHandler? MessageReceived; public event EventHandler? OnInputChange; @@ -28,7 +97,7 @@ namespace MinecraftClient public void WriteLineFormatted(string text) { - ConsoleInteractive.ConsoleWriter.WriteLineFormatted(text); + ConsoleInteractive.ConsoleWriter.WriteLineFormatted(ResolveHexColors(text)); } public void BeginReadThread() @@ -63,6 +132,12 @@ namespace MinecraftClient ConsoleInteractive.ConsoleReader.ClearBuffer(); } + public void ClearScreen() + { + Console.Clear(); + ConsoleInteractive.ConsoleSuggestion.ClearSuggestions(); + } + public void SetInputVisible(bool visible) { ConsoleInteractive.ConsoleReader.SetInputVisible(visible); diff --git a/MinecraftClient/ColorHelper.cs b/MinecraftClient/ColorHelper.cs index 54559d58..4c7880aa 100644 --- a/MinecraftClient/ColorHelper.cs +++ b/MinecraftClient/ColorHelper.cs @@ -1,4 +1,4 @@ -using System; +using System; using static MinecraftClient.Settings.ConsoleConfigHealper.ConsoleConfig; namespace MinecraftClient @@ -100,9 +100,9 @@ namespace MinecraftClient } } if (foreground) - return $"§{best_idx:X}"; + return $"§{best_idx:x}"; else - return $"§§{best_idx:X}"; + return $"§§{best_idx:x}"; } case ConsoleColorModeType.vt100_4bit: diff --git a/MinecraftClient/Commands/Book.cs b/MinecraftClient/Commands/Book.cs new file mode 100644 index 00000000..e035f277 --- /dev/null +++ b/MinecraftClient/Commands/Book.cs @@ -0,0 +1,300 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Brigadier.NET; +using Brigadier.NET.Builder; +using MinecraftClient.CommandHandler; +using MinecraftClient.Inventory; +using MinecraftClient.Tui; + +namespace MinecraftClient.Commands +{ + public class Book : Command + { + private const char PageDelimiter = '\f'; + + public override string CmdName => "book"; + public override string CmdUsage => Translations.cmd_book_usage; + public override string CmdDesc => Translations.cmd_book_desc; + + public override void RegisterCommand(CommandDispatcher dispatcher) + { + dispatcher.Register(l => l.Literal("help") + .Then(l => l.Literal(CmdName) + .Executes(r => GetUsage(r.Source, string.Empty)) + .Then(l => l.Literal("read").Executes(r => GetUsage(r.Source, "read"))) + .Then(l => l.Literal("write").Executes(r => GetUsage(r.Source, "write"))) + .Then(l => l.Literal("edit").Executes(r => GetUsage(r.Source, "edit"))) + .Then(l => l.Literal("sign").Executes(r => GetUsage(r.Source, "sign"))))); + + dispatcher.Register(l => l.Literal(CmdName) + .Then(l => l.Literal("read") + .Executes(r => ReadBook(r.Source, null)) + .Then(l => l.Argument("Page", Arguments.Integer(min: 1)) + .Executes(r => ReadBook(r.Source, Arguments.GetInteger(r, "Page"))))) + .Then(l => l.Literal("write") + .Then(l => l.Literal("text") + .Then(l => l.Argument("Text", Arguments.GreedyString()) + .Executes(r => WriteBook(r.Source, Arguments.GetString(r, "Text"))))) + .Then(l => l.Literal("file") + .Then(l => l.Argument("Path", Arguments.GreedyString()) + .Executes(r => WriteBookFromFile(r.Source, Arguments.GetString(r, "Path")))))) + .Then(l => l.Literal("edit") + .Executes(r => OpenEditor(r.Source)) + .Then(l => l.Literal("page") + .Then(l => l.Argument("Page", Arguments.Integer(min: 1)) + .Then(l => l.Argument("Text", Arguments.GreedyString()) + .Executes(r => EditPage(r.Source, Arguments.GetInteger(r, "Page"), Arguments.GetString(r, "Text")))))) + .Then(l => l.Literal("insert") + .Then(l => l.Argument("Page", Arguments.Integer(min: 1)) + .Then(l => l.Argument("Text", Arguments.GreedyString()) + .Executes(r => InsertPage(r.Source, Arguments.GetInteger(r, "Page"), Arguments.GetString(r, "Text")))))) + .Then(l => l.Literal("delete") + .Then(l => l.Argument("Page", Arguments.Integer(min: 1)) + .Executes(r => DeletePage(r.Source, Arguments.GetInteger(r, "Page")))))) + .Then(l => l.Literal("sign") + .Then(l => l.Argument("Title", Arguments.GreedyString()) + .Executes(r => SignBook(r.Source, Arguments.GetString(r, "Title"))))) + .Then(l => l.Literal("_help") + .Executes(r => GetUsage(r.Source, string.Empty)) + .Redirect(dispatcher.GetRoot().GetChild("help").GetChild(CmdName)))); + } + + private int GetUsage(CmdResult r, string? cmd) + { + return r.SetAndReturn(cmd switch + { + "read" => Translations.cmd_book_help_read, + "write" => Translations.cmd_book_help_write, + "edit" => Translations.cmd_book_help_edit, + "sign" => Translations.cmd_book_help_sign, + _ => GetCmdDescTranslated() + }); + } + + private int ReadBook(CmdResult r, int? page) + { + McClient handler = CmdResult.currentHandler!; + if (!EnsureInventory(r, handler)) + return -1; + + if (!handler.TryGetHeldBookContent(out BookContent content)) + return r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_not_holding_book); + + if (page is null && BookTuiHost.TryOpen(handler, BookHand.Main, editable: false)) + return r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_tui_opened); + + handler.Log.Info(FormatBook(content, page)); + return r.SetAndReturn(CmdResult.Status.Done); + } + + private int OpenEditor(CmdResult r) + { + McClient handler = CmdResult.currentHandler!; + if (!EnsureWritable(r, handler, out _, Translations.cmd_book_cannot_edit_signed)) + return -1; + + return BookTuiHost.TryOpen(handler, BookHand.Main, editable: true) + ? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_tui_opened) + : r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_tui_required); + } + + private int WriteBook(CmdResult r, string text) + { + McClient handler = CmdResult.currentHandler!; + if (!EnsureWritable(r, handler, out _, Translations.cmd_book_cannot_edit_signed)) + return -1; + + IReadOnlyList pages = SplitPages(text); + if (!Validate(r, handler, pages, title: null)) + return -1; + + return handler.SendBookEdit(pages) + ? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_write_sent) + : r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed); + } + + private int WriteBookFromFile(CmdResult r, string path) + { + if (!File.Exists(path)) + return r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_file_not_found, path)); + + return WriteBook(r, File.ReadAllText(path, Encoding.UTF8)); + } + + private int EditPage(CmdResult r, int page, string text) + { + McClient handler = CmdResult.currentHandler!; + if (!EnsureWritable(r, handler, out BookContent content, Translations.cmd_book_cannot_edit_signed)) + return -1; + + List pages = content.Pages.ToList(); + if (page > pages.Count) + return r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_page_out_of_range, page, pages.Count)); + + pages[page - 1] = DecodeInlineText(text); + if (!Validate(r, handler, pages, title: null)) + return -1; + + return handler.SendBookEdit(pages) + ? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_edit_sent) + : r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed); + } + + private int InsertPage(CmdResult r, int page, string text) + { + McClient handler = CmdResult.currentHandler!; + if (!EnsureWritable(r, handler, out BookContent content, Translations.cmd_book_cannot_edit_signed)) + return -1; + + List pages = content.Pages.ToList(); + if (page > pages.Count + 1) + return r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_page_out_of_range, page, pages.Count)); + + pages.Insert(page - 1, DecodeInlineText(text)); + if (!Validate(r, handler, pages, title: null)) + return -1; + + return handler.SendBookEdit(pages) + ? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_edit_sent) + : r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed); + } + + private int DeletePage(CmdResult r, int page) + { + McClient handler = CmdResult.currentHandler!; + if (!EnsureWritable(r, handler, out BookContent content, Translations.cmd_book_cannot_edit_signed)) + return -1; + + List pages = content.Pages.ToList(); + if (page > pages.Count) + return r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_page_out_of_range, page, pages.Count)); + + pages.RemoveAt(page - 1); + if (pages.Count == 0) + pages.Add(string.Empty); + + if (!Validate(r, handler, pages, title: null)) + return -1; + + return handler.SendBookEdit(pages) + ? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_edit_sent) + : r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed); + } + + private int SignBook(CmdResult r, string title) + { + McClient handler = CmdResult.currentHandler!; + if (!EnsureWritable(r, handler, out BookContent content, Translations.cmd_book_already_signed)) + return -1; + + string normalizedTitle = title.Trim(); + if (!Validate(r, handler, content.Pages, normalizedTitle)) + return -1; + + return handler.SendBookEdit(content.Pages, normalizedTitle) + ? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_sign_sent) + : r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed); + } + + private static bool EnsureInventory(CmdResult r, McClient handler) + { + if (handler.GetInventoryEnabled()) + return true; + + r.SetAndReturn(CmdResult.Status.FailNeedInventory); + return false; + } + + private static bool EnsureWritable(CmdResult r, McClient handler, out BookContent content, string signedBookMessage) + { + content = BookContent.EmptyWritable; + if (!EnsureInventory(r, handler)) + return false; + + Item? item = handler.GetHeldBook(); + if (!BookContentHelper.IsWritableBook(item)) + { + r.SetAndReturn(CmdResult.Status.Fail, GetWritableBookFailureMessage(item, signedBookMessage)); + return false; + } + + return BookContentHelper.TryRead(item, out content); + } + + private static string GetWritableBookFailureMessage(Item? item, string signedBookMessage) + { + return BookContentHelper.TryRead(item, out BookContent content) && content.IsSigned + ? signedBookMessage + : Translations.cmd_book_not_holding_writable; + } + + private static IReadOnlyList SplitPages(string text) + { + return BookContentHelper.NormalizePages(DecodeInlineText(text).Split(PageDelimiter)); + } + + private static string DecodeInlineText(string text) + { + return text.Replace("\\f", PageDelimiter.ToString(), StringComparison.Ordinal) + .Replace("\\n", "\n", StringComparison.Ordinal); + } + + private static bool Validate(CmdResult r, McClient handler, IReadOnlyList pages, string? title) + { + BookLimits limits = BookLimits.ForProtocol(handler.GetProtocolVersion()); + + if (pages.Count > limits.MaxPages) + { + r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_too_many_pages, pages.Count, limits.MaxPages)); + return false; + } + + for (int i = 0; i < pages.Count; i++) + { + if (pages[i].Length > limits.MaxPageLength) + { + r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_page_too_long, i + 1, pages[i].Length, limits.MaxPageLength)); + return false; + } + } + + if (title is not null && (title.Length == 0 || title.Length > limits.MaxTitleLength)) + { + r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_title_invalid, limits.MaxTitleLength)); + return false; + } + + return true; + } + + private static string FormatBook(BookContent content, int? page) + { + StringBuilder sb = new(); + sb.AppendLine(content.IsSigned + ? string.Format(Translations.cmd_book_header_signed, content.Title ?? string.Empty, content.Author ?? string.Empty) + : Translations.cmd_book_header_writable); + + if (page is not null) + { + int index = page.Value - 1; + if (index < 0 || index >= content.Pages.Count) + return string.Format(Translations.cmd_book_page_out_of_range, page.Value, content.Pages.Count); + + sb.AppendLine(string.Format(Translations.cmd_book_page_header, page.Value, content.Pages.Count)); + sb.Append(content.Pages[index]); + return sb.ToString(); + } + + for (int i = 0; i < content.Pages.Count; i++) + { + sb.AppendLine(string.Format(Translations.cmd_book_page_header, i + 1, content.Pages.Count)); + sb.AppendLine(content.Pages[i]); + } + + return sb.ToString().TrimEnd(); + } + } +} diff --git a/MinecraftClient/Commands/ClearConsole.cs b/MinecraftClient/Commands/ClearConsole.cs new file mode 100644 index 00000000..68ff58cc --- /dev/null +++ b/MinecraftClient/Commands/ClearConsole.cs @@ -0,0 +1,45 @@ +using Brigadier.NET; +using Brigadier.NET.Builder; +using MinecraftClient.CommandHandler; + +namespace MinecraftClient.Commands +{ + public class ClearConsole : Command + { + public override string CmdName => "clear-console"; + public override string CmdUsage => "clear-console"; + public override string CmdDesc => Translations.cmd_clear_console_desc; + + public override void RegisterCommand(CommandDispatcher dispatcher) + { + dispatcher.Register(l => l.Literal("help") + .Then(l => l.Literal(CmdName) + .Executes(r => GetUsage(r.Source)) + ) + ); + + var clearConsole = dispatcher.Register(l => l.Literal(CmdName) + .Executes(r => Execute(r.Source)) + .Then(l => l.Literal("_help") + .Executes(r => GetUsage(r.Source)) + .Redirect(dispatcher.GetRoot().GetChild("help").GetChild(CmdName))) + ); + + dispatcher.Register(l => l.Literal("cc") + .Executes(r => Execute(r.Source)) + .Redirect(clearConsole) + ); + } + + private int GetUsage(CmdResult result) + { + return result.SetAndReturn(GetCmdDescTranslated()); + } + + private int Execute(CmdResult result) + { + ConsoleIO.ClearConsole(); + return result.SetAndReturn(CmdResult.Status.Done); + } + } +} diff --git a/MinecraftClient/Commands/Connect.cs b/MinecraftClient/Commands/Connect.cs index 61679e00..51206462 100644 --- a/MinecraftClient/Commands/Connect.cs +++ b/MinecraftClient/Commands/Connect.cs @@ -1,4 +1,5 @@ -using Brigadier.NET; +using System; +using Brigadier.NET; using Brigadier.NET.Builder; using MinecraftClient.CommandHandler; using static MinecraftClient.CommandHandler.CmdResult; @@ -42,33 +43,55 @@ namespace MinecraftClient.Commands private int DoConnect(CmdResult r, string server, string account) { + RestartSettingsSnapshot previousSettings = Program.CaptureRestartSettings(); if (!string.IsNullOrWhiteSpace(account) && !Settings.Config.Main.Advanced.SetAccount(account)) return r.SetAndReturn(Status.Fail, string.Format(Translations.cmd_connect_unknown, account)); if (Settings.Config.Main.SetServerIP(new Settings.MainConfigHelper.MainConfig.ServerInfoConfig(server), true)) { - Program.Restart(keepAccountAndServerSettings: true); - return r.SetAndReturn(Status.Done); + if (Program.TryRestart( + Program.CurrentConnectionAttempt, + TimeSpan.Zero, + keepAccountAndServerSettings: true, + replaceUntilCommit: true)) + { + return r.SetAndReturn(Status.Done); + } + + Program.RestoreRestartSettings(previousSettings); + return r.SetAndReturn(Status.Fail); } else { + Program.RestoreRestartSettings(previousSettings); return r.SetAndReturn(Status.Fail, string.Format(Translations.cmd_connect_invalid_ip, server)); } } internal static string DoConnect(string command) { + RestartSettingsSnapshot previousSettings = Program.CaptureRestartSettings(); string[] args = GetArgs(command); if (args.Length > 1 && !Settings.Config.Main.Advanced.SetAccount(args[1])) return string.Format(Translations.cmd_connect_unknown, args[1]); if (Settings.Config.Main.SetServerIP(new Settings.MainConfigHelper.MainConfig.ServerInfoConfig(args[0]), true)) { - Program.Restart(keepAccountAndServerSettings: true); - return string.Empty; + if (Program.TryRestart( + Program.CurrentConnectionAttempt, + TimeSpan.Zero, + keepAccountAndServerSettings: true, + replaceUntilCommit: true)) + { + return string.Empty; + } + + Program.RestoreRestartSettings(previousSettings); + return Translations.general_fail; } else { + Program.RestoreRestartSettings(previousSettings); return string.Format(Translations.cmd_connect_invalid_ip, args[0]); } } diff --git a/MinecraftClient/Commands/ConsoleChat.cs b/MinecraftClient/Commands/ConsoleChat.cs new file mode 100644 index 00000000..fd52a6e4 --- /dev/null +++ b/MinecraftClient/Commands/ConsoleChat.cs @@ -0,0 +1,49 @@ +using Brigadier.NET; +using Brigadier.NET.Builder; +using MinecraftClient.CommandHandler; + +namespace MinecraftClient.Commands +{ + public class ConsoleChat : Command + { + public override string CmdName => "console-chat"; + public override string CmdUsage => "console-chat [on|off]"; + public override string CmdDesc => Translations.cmd_console_chat_desc; + + public override void RegisterCommand(CommandDispatcher dispatcher) + { + dispatcher.Register(l => l.Literal("help") + .Then(l => l.Literal(CmdName) + .Executes(r => GetUsage(r.Source)) + ) + ); + + dispatcher.Register(l => l.Literal(CmdName) + .Executes(r => SetChatVisibility(r.Source, null)) + .Then(l => l.Literal("on") + .Executes(r => SetChatVisibility(r.Source, true))) + .Then(l => l.Literal("off") + .Executes(r => SetChatVisibility(r.Source, false))) + .Then(l => l.Literal("_help") + .Executes(r => GetUsage(r.Source)) + .Redirect(dispatcher.GetRoot().GetChild("help").GetChild(CmdName))) + ); + } + + private int GetUsage(CmdResult result) + { + return result.SetAndReturn(GetCmdDescTranslated()); + } + + private int SetChatVisibility(CmdResult result, bool? visible) + { + ConsoleIO.ChatVisible = visible ?? !ConsoleIO.ChatVisible; + + return result.SetAndReturn( + CmdResult.Status.Done, + ConsoleIO.ChatVisible + ? Translations.cmd_console_chat_state_on + : Translations.cmd_console_chat_state_off); + } + } +} diff --git a/MinecraftClient/Commands/Dialog.cs b/MinecraftClient/Commands/Dialog.cs new file mode 100644 index 00000000..826fa592 --- /dev/null +++ b/MinecraftClient/Commands/Dialog.cs @@ -0,0 +1,108 @@ +using Brigadier.NET; +using Brigadier.NET.Builder; +using MinecraftClient.CommandHandler; +using MinecraftClient.Dialogs; +using MinecraftClient.Tui; + +namespace MinecraftClient.Commands; + +public class Dialog : Command +{ + public override string CmdName => "dialog"; + public override string CmdUsage => Translations.cmd_dialog_usage; + public override string CmdDesc => Translations.cmd_dialog_desc; + + public override void RegisterCommand(CommandDispatcher dispatcher) + { + dispatcher.Register(l => l.Literal("help") + .Then(l => l.Literal(CmdName) + .Executes(r => GetUsage(r.Source)))); + + dispatcher.Register(l => l.Literal(CmdName) + .Executes(r => Show(r.Source)) + .Then(l => l.Literal("show") + .Executes(r => Show(r.Source))) + .Then(l => l.Literal("open") + .Executes(r => Open(r.Source))) + .Then(l => l.Literal("set") + .Then(l => l.Argument("Input", Arguments.String()) + .Then(l => l.Argument("Value", Arguments.GreedyString()) + .Executes(r => SetInput(r.Source, Arguments.GetString(r, "Input"), Arguments.GetString(r, "Value")))))) + .Then(l => l.Literal("input") + .Then(l => l.Argument("Input", Arguments.String()) + .Then(l => l.Argument("Value", Arguments.GreedyString()) + .Executes(r => SetInput(r.Source, Arguments.GetString(r, "Input"), Arguments.GetString(r, "Value")))))) + .Then(l => l.Literal("click") + .Then(l => l.Argument("Index", Arguments.Integer(min: 1)) + .Executes(r => Click(r.Source, Arguments.GetInteger(r, "Index"))))) + .Then(l => l.Literal("click-label") + .Then(l => l.Argument("Label", Arguments.GreedyString()) + .Executes(r => ClickLabel(r.Source, Arguments.GetString(r, "Label"))))) + .Then(l => l.Literal("cancel") + .Executes(r => Cancel(r.Source))) + .Then(l => l.Literal("dismiss") + .Executes(r => Dismiss(r.Source))) + .Then(l => l.Literal("_help") + .Executes(r => GetUsage(r.Source)) + .Redirect(dispatcher.GetRoot().GetChild("help").GetChild(CmdName)))); + } + + private int GetUsage(CmdResult r) => r.SetAndReturn(GetCmdDescTranslated()); + + private static int Show(CmdResult r) + { + var handler = CmdResult.currentHandler!; + var current = handler.Dialogs.Current; + if (current is null) + return r.SetAndReturn(CmdResult.Status.Fail, Translations.dialog_none); + + ConsoleIO.WriteLineFormatted(DialogFormatter.Render(current), acceptnewlines: true); + return r.SetAndReturn(CmdResult.Status.Done); + } + + private static int Open(CmdResult r) + { + var handler = CmdResult.currentHandler!; + var current = handler.Dialogs.Current; + if (current is null) + return r.SetAndReturn(CmdResult.Status.Fail, Translations.dialog_none); + + if (ConsoleIO.Backend is not TuiConsoleBackend) + return r.SetAndReturn(CmdResult.Status.Fail, Translations.dialog_tui_unavailable); + + return DialogTuiHost.TryOpen(handler, current, force: true) + ? r.SetAndReturn(CmdResult.Status.Done, Translations.dialog_tui_opened) + : r.SetAndReturn(CmdResult.Status.Fail, Translations.dialog_tui_unavailable); + } + + private static int SetInput(CmdResult r, string key, string value) + { + var result = CmdResult.currentHandler!.Dialogs.SetInput(key, value); + return r.SetAndReturn(result.Success ? CmdResult.Status.Done : CmdResult.Status.Fail, result.Message); + } + + private static int Click(CmdResult r, int index) + { + var result = CmdResult.currentHandler!.Dialogs.Click(index); + return r.SetAndReturn(result.Success ? CmdResult.Status.Done : CmdResult.Status.Fail, result.Message); + } + + private static int ClickLabel(CmdResult r, string label) + { + var result = CmdResult.currentHandler!.Dialogs.ClickLabel(label); + return r.SetAndReturn(result.Success ? CmdResult.Status.Done : CmdResult.Status.Fail, result.Message); + } + + private static int Cancel(CmdResult r) + { + var result = CmdResult.currentHandler!.Dialogs.Cancel(); + return r.SetAndReturn(result.Success ? CmdResult.Status.Done : CmdResult.Status.Fail, result.Message); + } + + private static int Dismiss(CmdResult r) + { + var result = CmdResult.currentHandler!.Dialogs.Dismiss(); + DialogTuiHost.CloseCurrent(); + return r.SetAndReturn(result.Success ? CmdResult.Status.Done : CmdResult.Status.Fail, result.Message); + } +} diff --git a/MinecraftClient/Commands/Entitycmd.cs b/MinecraftClient/Commands/Entitycmd.cs index c48398bf..b0ed8a1b 100644 --- a/MinecraftClient/Commands/Entitycmd.cs +++ b/MinecraftClient/Commands/Entitycmd.cs @@ -317,7 +317,7 @@ namespace MinecraftClient.Commands bool shouldInteractAt = entity.Type == EntityType.ArmorStand || entity.Type == EntityType.ChestMinecart || entity.Type == EntityType.ChestBoat; - + handler.InteractEntity(entity.ID, shouldInteractAt ? InteractType.InteractAt : InteractType.Interact); return Translations.cmd_entityCmd_used; case ActionType.List: diff --git a/MinecraftClient/Commands/Reco.cs b/MinecraftClient/Commands/Reco.cs index 482b4e0b..05fbe6f6 100644 --- a/MinecraftClient/Commands/Reco.cs +++ b/MinecraftClient/Commands/Reco.cs @@ -41,18 +41,30 @@ namespace MinecraftClient.Commands private int DoReconnect(CmdResult r, string account) { + RestartSettingsSnapshot previousSettings = Program.CaptureRestartSettings(); if (!string.IsNullOrWhiteSpace(account)) { account = account.Trim(); if (!Settings.Config.Main.Advanced.SetAccount(account)) return r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_connect_unknown, account)); } - Program.Restart(keepAccountAndServerSettings: true); - return r.SetAndReturn(CmdResult.Status.Done); + + if (Program.TryRestart( + Program.CurrentConnectionAttempt, + TimeSpan.Zero, + keepAccountAndServerSettings: true, + replaceUntilCommit: true)) + { + return r.SetAndReturn(CmdResult.Status.Done); + } + + Program.RestoreRestartSettings(previousSettings); + return r.SetAndReturn(CmdResult.Status.Fail); } internal static string DoReconnect(string command) { + RestartSettingsSnapshot previousSettings = Program.CaptureRestartSettings(); string[] args = GetArgs(command); if (args.Length > 0) { @@ -62,8 +74,18 @@ namespace MinecraftClient.Commands return string.Format(Translations.cmd_connect_unknown, account); } } - Program.Restart(keepAccountAndServerSettings: true); - return String.Empty; + + if (Program.TryRestart( + Program.CurrentConnectionAttempt, + TimeSpan.Zero, + keepAccountAndServerSettings: true, + replaceUntilCommit: true)) + { + return string.Empty; + } + + Program.RestoreRestartSettings(previousSettings); + return Translations.general_fail; } } } diff --git a/MinecraftClient/Commands/Tab.cs b/MinecraftClient/Commands/Tab.cs new file mode 100644 index 00000000..b5ea5c36 --- /dev/null +++ b/MinecraftClient/Commands/Tab.cs @@ -0,0 +1,50 @@ +using Avalonia.Threading; +using Brigadier.NET; +using Brigadier.NET.Builder; +using MinecraftClient.CommandHandler; +using MinecraftClient.Tui; + +namespace MinecraftClient.Commands +{ + public class Tab : Command + { + public override string CmdName => "tab"; + public override string CmdUsage => "tab"; + public override string CmdDesc => Translations.cmd_tab_desc; + + public override void RegisterCommand(CommandDispatcher dispatcher) + { + dispatcher.Register(l => l.Literal("help") + .Then(l => l.Literal(CmdName) + .Executes(r => GetUsage(r.Source))) + ); + + dispatcher.Register(l => l.Literal(CmdName) + .Executes(r => ShowTab(r.Source)) + .Then(l => l.Literal("_help") + .Executes(r => GetUsage(r.Source)) + .Redirect(dispatcher.GetRoot().GetChild("help").GetChild(CmdName))) + ); + } + + private int GetUsage(CmdResult r) => r.SetAndReturn(GetCmdDescTranslated()); + + private static int ShowTab(CmdResult r) + { + McClient handler = CmdResult.currentHandler!; + var snapshot = handler.GetTabListSnapshot(); + + if (ConsoleIO.Backend is TuiConsoleBackend) + { + var view = TuiConsoleBackend.Instance?.GetView(); + if (view is null) + return r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_tab_tui_unavailable); + + Dispatcher.UIThread.Post(() => view.ShowOverlay(new TabListOverlay(handler))); + return r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_tab_tui_opened); + } + + return r.SetAndReturn(CmdResult.Status.Done, TabListFormatter.Render(snapshot)); + } + } +} diff --git a/MinecraftClient/Commands/UseItem.cs b/MinecraftClient/Commands/UseItem.cs index 40993c7a..70ad0003 100644 --- a/MinecraftClient/Commands/UseItem.cs +++ b/MinecraftClient/Commands/UseItem.cs @@ -10,7 +10,7 @@ namespace MinecraftClient.Commands class UseItem : Command { public override string CmdName { get { return "useitem"; } } - public override string CmdUsage { get { return "useitem [x] [y] [z]"; } } + public override string CmdUsage { get { return "useitem [mainhand|offhand] | useitem [x] [y] [z] [mainhand|offhand]"; } } public override string CmdDesc { get { return Translations.cmd_useitem_desc; } } public override void RegisterCommand(CommandDispatcher dispatcher) @@ -23,8 +23,16 @@ namespace MinecraftClient.Commands dispatcher.Register(l => l.Literal(CmdName) .Executes(r => DoUseItem(r.Source)) + .Then(l => l.Literal("mainhand") + .Executes(r => DoUseItem(r.Source, Hand.MainHand))) + .Then(l => l.Literal("offhand") + .Executes(r => DoUseItem(r.Source, Hand.OffHand))) .Then(l => l.Argument("Location", MccArguments.Location()) - .Executes(r => DoUseItemAtLocation(r.Source, MccArguments.GetLocation(r, "Location")))) + .Executes(r => DoUseItemAtLocation(r.Source, MccArguments.GetLocation(r, "Location"), Hand.MainHand)) + .Then(l => l.Literal("mainhand") + .Executes(r => DoUseItemAtLocation(r.Source, MccArguments.GetLocation(r, "Location"), Hand.MainHand))) + .Then(l => l.Literal("offhand") + .Executes(r => DoUseItemAtLocation(r.Source, MccArguments.GetLocation(r, "Location"), Hand.OffHand)))) .Then(l => l.Literal("_help") .Executes(r => GetUsage(r.Source, string.Empty)) .Redirect(dispatcher.GetRoot().GetChild("help").GetChild(CmdName))) @@ -41,29 +49,53 @@ namespace MinecraftClient.Commands }); } - private int DoUseItem(CmdResult r) + private static bool ShouldUseOffhandFood(McClient handler) + { + Container? inventory = handler.GetInventory(0); + if (inventory is null) + return false; + + if (!inventory.Items.TryGetValue(45, out Item? offhandItem) + || offhandItem.IsEmpty + || !offhandItem.Type.IsFood()) + return false; + + int mainHandSlot = 36 + handler.GetCurrentSlot(); + return !inventory.Items.TryGetValue(mainHandSlot, out Item? mainHandItem) + || mainHandItem.IsEmpty + || !mainHandItem.Type.IsFood(); + } + + private int DoUseItem(CmdResult r, Hand? requestedHand = null) { McClient handler = CmdResult.currentHandler!; if (!handler.GetInventoryEnabled()) return r.SetAndReturn(Status.FailNeedInventory); - if (handler.GetTerrainEnabled()) + Hand hand = requestedHand ?? (ShouldUseOffhandFood(handler) ? Hand.OffHand : Hand.MainHand); + bool useOffhandFood = !requestedHand.HasValue && hand == Hand.OffHand; + + if (!useOffhandFood && handler.GetTerrainEnabled()) { const double maxDistance = 4.5; var raycast = RaycastHelper.RaycastBlock(handler, maxDistance, false); if (raycast.Item1 && raycast.Item3.Type != Material.Air) { - handler.PlaceBlock(raycast.Item2, Direction.Up, lookAtBlock: true); - handler.DoAnimation((int)Hand.MainHand); + handler.PlaceBlock(raycast.Item2, Direction.Up, hand, lookAtBlock: true); + handler.DoAnimation((int)hand); return r.SetAndReturn(Status.Done, Translations.cmd_useitem_use); } } - handler.UseItemOnHand(); + if (hand == Hand.OffHand) + handler.UseItemOnLeftHand(); + else + handler.UseItemOnHand(); + return r.SetAndReturn(Status.Done, Translations.cmd_useitem_use); } - private int DoUseItemAtLocation(CmdResult r, Location block) + private int DoUseItemAtLocation(CmdResult r, Location block, Hand hand) { McClient handler = CmdResult.currentHandler!; if (!handler.GetTerrainEnabled()) @@ -71,8 +103,8 @@ namespace MinecraftClient.Commands Location current = handler.GetCurrentLocation(); block = block.ToAbsolute(current).ToFloor(); - handler.PlaceBlock(block, Direction.Up, lookAtBlock: true); - handler.DoAnimation((int)Hand.MainHand); + handler.PlaceBlock(block, Direction.Up, hand, lookAtBlock: true); + handler.DoAnimation((int)hand); return r.SetAndReturn(Status.Done, Translations.cmd_useitem_use); } diff --git a/MinecraftClient/Commands/Useblock.cs b/MinecraftClient/Commands/Useblock.cs index 7e482ba4..d4f964a6 100644 --- a/MinecraftClient/Commands/Useblock.cs +++ b/MinecraftClient/Commands/Useblock.cs @@ -1,3 +1,4 @@ +using System; using Brigadier.NET; using Brigadier.NET.Builder; using MinecraftClient.CommandHandler; @@ -53,8 +54,27 @@ namespace MinecraftClient.Commands Location current = handler.GetCurrentLocation(); block = block.ToAbsolute(current).ToFloor(); Location blockCenter = block.ToCenter(); - bool res = handler.PlaceBlock(block, Direction.Down, hand, lookAtBlock: true); + bool res = handler.PlaceBlock(block, GetFaceNearestPlayer(current, blockCenter), hand, lookAtBlock: true); return r.SetAndReturn(string.Format(Translations.cmd_useblock_use, blockCenter.X, blockCenter.Y, blockCenter.Z, res ? "succeeded" : "failed"), res); } + + private static Direction GetFaceNearestPlayer(Location playerLocation, Location blockCenter) + { + double dx = playerLocation.X - blockCenter.X; + double dy = playerLocation.Y - blockCenter.Y; + double dz = playerLocation.Z - blockCenter.Z; + + double absX = Math.Abs(dx); + double absY = Math.Abs(dy); + double absZ = Math.Abs(dz); + + if (absX >= absY && absX >= absZ) + return dx >= 0 ? Direction.East : Direction.West; + + if (absY >= absZ) + return dy >= 0 ? Direction.Up : Direction.Down; + + return dz >= 0 ? Direction.South : Direction.North; + } } } diff --git a/MinecraftClient/ConnectionAttemptLifecycle.cs b/MinecraftClient/ConnectionAttemptLifecycle.cs new file mode 100644 index 00000000..360ae013 --- /dev/null +++ b/MinecraftClient/ConnectionAttemptLifecycle.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using MinecraftClient.Scripting; + +namespace MinecraftClient +{ + internal sealed class ConnectionAttemptLifecycle + { + private int disconnectState; + + internal bool IsFailureClaimed => Volatile.Read(ref disconnectState) != 0; + + internal bool TryBeginDisconnect() + { + return Interlocked.CompareExchange(ref disconnectState, 1, 0) == 0; + } + + internal void CompleteDisconnect() + { + Volatile.Write(ref disconnectState, 2); + } + + internal static void RestoreHeldBots(ICollection heldBots, Action loadBot) + { + ArgumentNullException.ThrowIfNull(heldBots); + ArgumentNullException.ThrowIfNull(loadBot); + + foreach (ChatBot bot in heldBots) + loadBot(bot); + heldBots.Clear(); + } + } + + internal sealed class AttemptOwnedRoute + { + private const long NoOwner = -1; + private readonly Lock stateLock = new(); + private long ownerAttempt = NoOwner; + + internal long OwnerAttempt + { + get + { + lock (stateLock) + return ownerAttempt; + } + } + + internal bool TryActivate(long connectionAttempt, long currentConnectionAttempt, Action activate) + { + ArgumentNullException.ThrowIfNull(activate); + + lock (stateLock) + { + if (connectionAttempt < currentConnectionAttempt || ownerAttempt >= connectionAttempt) + return false; + + ownerAttempt = connectionAttempt; + activate(); + return true; + } + } + + internal bool TryDeactivate(long connectionAttempt, Action deactivate) + { + ArgumentNullException.ThrowIfNull(deactivate); + + lock (stateLock) + { + if (ownerAttempt != connectionAttempt) + return false; + + ownerAttempt = NoOwner; + deactivate(); + return true; + } + } + + internal bool TryTransfer(long sourceConnectionAttempt, long targetConnectionAttempt) + { + lock (stateLock) + { + if (ownerAttempt != sourceConnectionAttempt) + return false; + + ownerAttempt = targetConnectionAttempt; + return true; + } + } + + internal bool TryDeactivate(Action deactivate) + { + ArgumentNullException.ThrowIfNull(deactivate); + + lock (stateLock) + { + if (ownerAttempt == NoOwner) + return false; + + ownerAttempt = NoOwner; + deactivate(); + return true; + } + } + } +} diff --git a/MinecraftClient/ConsoleIO.cs b/MinecraftClient/ConsoleIO.cs index 8a77aaee..50a023fe 100644 --- a/MinecraftClient/ConsoleIO.cs +++ b/MinecraftClient/ConsoleIO.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading; @@ -61,6 +62,11 @@ namespace MinecraftClient /// public static bool EnableTimestamps = false; + /// + /// Determine whether chat lines should be displayed in the console. + /// + public static bool ChatVisible = true; + /// /// Specify a generic log line prefix for WriteLogLine() /// @@ -71,6 +77,22 @@ namespace MinecraftClient /// public static string? ReadPassword() { + if (ConsoleInputRouter.IsStarted) + { + if (BasicIO || Backend is null) + return ConsoleInputRouter.ReadLine(); + + Backend.SetInputVisible(false); + try + { + return ConsoleInputRouter.ReadLine(); + } + finally + { + Backend.SetInputVisible(true); + } + } + if (BasicIO) return Console.ReadLine(); return Backend.ReadPassword(); @@ -81,6 +103,9 @@ namespace MinecraftClient /// public static string ReadLine() { + if (ConsoleInputRouter.IsStarted) + return ConsoleInputRouter.ReadLine(); + if (BasicIO) return Console.ReadLine() ?? String.Empty; return Backend.RequestImmediateInput(); @@ -151,10 +176,22 @@ namespace MinecraftClient return; } output.Append(str); + output.Append("§r"); Backend.WriteLineFormatted(output.ToString()); } } + /// + /// Write a formatted chat line to the console when chat output is enabled. + /// + public static void WriteChatLineIfVisible(string str, bool acceptnewlines = false, bool? displayTimestamp = null) + { + if (!ChatVisible) + return; + + WriteLineFormatted(str, acceptnewlines, displayTimestamp); + } + /// /// Write a prefixed log line. Prefix is set in LogPrefix. /// @@ -178,6 +215,32 @@ namespace MinecraftClient Backend.ClearInputBuffer(); } + /// + /// Clear the visible console output. + /// + public static void ClearConsole() + { + if (BasicIO || Backend is null) + { + try + { + Console.Clear(); + } + catch (IOException ex) + { + System.Diagnostics.Debug.WriteLine(ex); + } + catch (PlatformNotSupportedException ex) + { + System.Diagnostics.Debug.WriteLine(ex); + } + + return; + } + + Backend.ClearScreen(); + } + #endregion internal static bool AutoCompleteDone = false; diff --git a/MinecraftClient/ConsoleInputRouter.cs b/MinecraftClient/ConsoleInputRouter.cs new file mode 100644 index 00000000..3343e4b2 --- /dev/null +++ b/MinecraftClient/ConsoleInputRouter.cs @@ -0,0 +1,187 @@ +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace MinecraftClient +{ + internal static class ConsoleInputRouter + { + private static readonly Lock StateLock = new(); + private static readonly CancellationTokenSource Shutdown = new(); + private static bool started; + private static Action? messageRoute; + private static EventHandler? inputChangeRoute; + private static TaskCompletionSource? pendingRead; + + internal static bool IsStarted + { + get + { + lock (StateLock) + return started; + } + } + + internal static void EnsureStarted() + { + lock (StateLock) + { + if (started) + return; + + started = true; + if (ConsoleIO.BasicIO || ConsoleIO.Backend is null) + { + var readThread = new Thread(() => ReadBasicInput(Shutdown.Token)) + { + Name = "MCC console input router", + }; + readThread.Start(); + return; + } + + try + { + ConsoleIO.Backend.MessageReceived += OnMessageReceived; + ConsoleIO.Backend.OnInputChange += OnInputChanged; + ConsoleIO.Backend.BeginReadThread(); + } + catch + { + ConsoleIO.Backend.MessageReceived -= OnMessageReceived; + ConsoleIO.Backend.OnInputChange -= OnInputChanged; + started = false; + throw; + } + } + } + + internal static void RouteToClient(McClient client) + { + ArgumentNullException.ThrowIfNull(client); + EnsureStarted(); + + lock (StateLock) + { + messageRoute = client.RouteConsoleInput; + inputChangeRoute = ConsoleIO.AutocompleteHandler; + } + } + + internal static void ClearClient(McClient client) + { + ArgumentNullException.ThrowIfNull(client); + + lock (StateLock) + { + if (messageRoute == client.RouteConsoleInput) + { + messageRoute = null; + inputChangeRoute = null; + } + } + } + + internal static void RouteOffline(Action handler) + { + ArgumentNullException.ThrowIfNull(handler); + EnsureStarted(); + + lock (StateLock) + { + messageRoute = handler; + inputChangeRoute = ConsoleIO.OfflineAutocompleteHandler; + } + } + + internal static void ClearOfflineRoute(Action handler) + { + ArgumentNullException.ThrowIfNull(handler); + + lock (StateLock) + { + if (messageRoute == handler) + { + messageRoute = null; + inputChangeRoute = null; + } + } + } + + internal static string ReadLine() + { + EnsureStarted(); + + TaskCompletionSource readCompletion = new(TaskCreationOptions.RunContinuationsAsynchronously); + lock (StateLock) + { + if (pendingRead is not null) + throw new InvalidOperationException(); + + pendingRead = readCompletion; + } + + return readCompletion.Task.GetAwaiter().GetResult(); + } + + internal static void ShutdownRouter() + { + lock (StateLock) + { + messageRoute = null; + inputChangeRoute = null; + pendingRead?.TrySetCanceled(); + pendingRead = null; + Shutdown.Cancel(); + } + } + + private static void ReadBasicInput(CancellationToken cancellationToken) + { + while (!cancellationToken.IsCancellationRequested) + { + string? input = Console.ReadLine(); + if (input is null) + return; + + DispatchMessage(input); + } + } + + private static void OnMessageReceived(object? sender, string message) + { + DispatchMessage(message); + } + + private static void OnInputChanged(object? sender, ConsoleInputBuffer input) + { + EventHandler? route; + lock (StateLock) + route = inputChangeRoute; + + route?.Invoke(sender, input); + } + + private static void DispatchMessage(string message) + { + TaskCompletionSource? readCompletion; + Action? route; + + lock (StateLock) + { + readCompletion = pendingRead; + if (readCompletion is not null) + pendingRead = null; + route = messageRoute; + } + + if (readCompletion is not null) + { + readCompletion.TrySetResult(message); + return; + } + + route?.Invoke(message); + } + } +} diff --git a/MinecraftClient/Crypto/FastAes.cs b/MinecraftClient/Crypto/FastAes.cs index 41de7d54..e423caab 100644 --- a/MinecraftClient/Crypto/FastAes.cs +++ b/MinecraftClient/Crypto/FastAes.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Intrinsics; @@ -63,16 +63,16 @@ namespace MinecraftClient.Crypto keys[0] = Unsafe.ReadUnaligned>(ref key[0]); - MakeRoundKey(keys, 1, 0x01); - MakeRoundKey(keys, 2, 0x02); - MakeRoundKey(keys, 3, 0x04); - MakeRoundKey(keys, 4, 0x08); - MakeRoundKey(keys, 5, 0x10); - MakeRoundKey(keys, 6, 0x20); - MakeRoundKey(keys, 7, 0x40); - MakeRoundKey(keys, 8, 0x80); - MakeRoundKey(keys, 9, 0x1b); - MakeRoundKey(keys, 10, 0x36); + ExpandRound(keys, 1, Aes.KeygenAssist(keys[0], 0x01)); + ExpandRound(keys, 2, Aes.KeygenAssist(keys[1], 0x02)); + ExpandRound(keys, 3, Aes.KeygenAssist(keys[2], 0x04)); + ExpandRound(keys, 4, Aes.KeygenAssist(keys[3], 0x08)); + ExpandRound(keys, 5, Aes.KeygenAssist(keys[4], 0x10)); + ExpandRound(keys, 6, Aes.KeygenAssist(keys[5], 0x20)); + ExpandRound(keys, 7, Aes.KeygenAssist(keys[6], 0x40)); + ExpandRound(keys, 8, Aes.KeygenAssist(keys[7], 0x80)); + ExpandRound(keys, 9, Aes.KeygenAssist(keys[8], 0x1b)); + ExpandRound(keys, 10, Aes.KeygenAssist(keys[9], 0x36)); for (int i = 1; i < 10; i++) { @@ -82,13 +82,11 @@ namespace MinecraftClient.Crypto return keys; } - private static void MakeRoundKey(Vector128[] keys, int i, byte rcon) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static void ExpandRound(Vector128[] keys, int i, Vector128 assist) { Vector128 s = keys[i - 1]; - Vector128 t = keys[i - 1]; - - t = Aes.KeygenAssist(t, rcon); - t = Sse2.Shuffle(t.AsUInt32(), 0xFF).AsByte(); + Vector128 t = Sse2.Shuffle(assist.AsUInt32(), 0xFF).AsByte(); s = Sse2.Xor(s, Sse2.ShiftLeftLogical128BitLane(s, 4)); s = Sse2.Xor(s, Sse2.ShiftLeftLogical128BitLane(s, 8)); diff --git a/MinecraftClient/Dialogs/DialogFormatter.cs b/MinecraftClient/Dialogs/DialogFormatter.cs new file mode 100644 index 00000000..9e836e3e --- /dev/null +++ b/MinecraftClient/Dialogs/DialogFormatter.cs @@ -0,0 +1,108 @@ +using System; +using System.Linq; +using System.Text; + +namespace MinecraftClient.Dialogs; + +public static class DialogFormatter +{ + public static string DisplayTitle(this DialogDefinition definition) + { + if (!string.IsNullOrWhiteSpace(definition.ExternalTitle)) + return definition.ExternalTitle!; + + return string.IsNullOrWhiteSpace(definition.Title) ? DisplayType(definition.Type) : definition.Title; + } + + private const int BoxWidth = 50; + + public static string Render(DialogInstance instance) + { + StringBuilder builder = new(); + string border = new('-', BoxWidth); + builder.AppendLine(border); + builder.AppendLine(" " + string.Format(Translations.dialog_render_header, instance.Revision, instance.Phase, instance.Definition.DisplayTitle())); + builder.AppendLine(border); + + foreach (var body in instance.Definition.Body.Where(static body => !string.IsNullOrWhiteSpace(body.Text))) + builder.AppendLine(body.Text); + + if (instance.Definition.Inputs.Count > 0) + { + builder.AppendLine(Translations.dialog_render_inputs); + foreach (var input in instance.Definition.Inputs) + { + instance.Values.TryGetValue(input.Key, out var value); + value ??= input.InitialValue; + builder.AppendLine(string.Format(Translations.dialog_render_input, input.Key, DescribeKind(input.Kind), input.Label, value, DescribeInput(input))); + } + } + + if (instance.Definition.Actions.Count > 0) + { + builder.AppendLine(Translations.dialog_render_actions); + foreach (var action in instance.Definition.Actions) + builder.AppendLine(string.Format(Translations.dialog_render_action, action.Index, action.Label, DescribeAction(action.Action))); + } + + builder.AppendLine(); + builder.AppendLine("§o" + Translations.dialog_render_help_hint + "§r"); + builder.Append(border); + return builder.ToString(); + } + + public static string DisplayType(string rawType) + { + return rawType switch + { + "minecraft:notice" => Translations.dialog_type_notice, + "minecraft:confirmation" => Translations.dialog_type_confirmation, + "minecraft:multi_action" => Translations.dialog_type_multi_action, + "minecraft:dialog_list" => Translations.dialog_type_dialog_list, + "minecraft:server_links" => Translations.dialog_type_server_links, + _ => string.IsNullOrEmpty(rawType) ? Translations.dialog_type_unknown : rawType + }; + } + + private static string DescribeKind(DialogInputKind kind) + { + return kind switch + { + DialogInputKind.Text => Translations.dialog_input_kind_text, + DialogInputKind.Boolean => Translations.dialog_input_kind_boolean, + DialogInputKind.SingleOption => Translations.dialog_input_kind_options, + DialogInputKind.NumberRange => Translations.dialog_input_kind_number, + _ => Translations.dialog_input_kind_unknown + }; + } + + private static string DescribeInput(DialogInput input) + { + return input.Kind switch + { + DialogInputKind.Text => string.Format(Translations.dialog_input_desc_text, input.MaxLength), + DialogInputKind.Boolean => string.Format(Translations.dialog_input_desc_boolean, input.OnTrue, input.OnFalse), + DialogInputKind.SingleOption => string.Format(Translations.dialog_input_desc_options, + string.Join(", ", input.Options?.Select(static option => option.Id) ?? [])), + DialogInputKind.NumberRange => string.Format(Translations.dialog_input_desc_number, input.Start, input.End), + _ => input.Type ?? Translations.dialog_input_desc_unknown + }; + } + + private static string DescribeAction(DialogActionDefinition? action) + { + if (action is null) + return Translations.dialog_action_desc_close; + + return action.Kind switch + { + DialogActionKind.RunCommand => Translations.dialog_action_desc_command, + DialogActionKind.CustomClick => Translations.dialog_action_desc_custom, + DialogActionKind.ShowDialog => Translations.dialog_action_desc_show_dialog, + DialogActionKind.OpenUrl => Translations.dialog_action_desc_open_url, + DialogActionKind.SuggestCommand => Translations.dialog_action_desc_suggest, + DialogActionKind.CopyToClipboard => Translations.dialog_action_desc_copy, + _ => action.Type ?? Translations.dialog_action_desc_unknown + }; + } +} diff --git a/MinecraftClient/Dialogs/DialogManager.cs b/MinecraftClient/Dialogs/DialogManager.cs new file mode 100644 index 00000000..40876b61 --- /dev/null +++ b/MinecraftClient/Dialogs/DialogManager.cs @@ -0,0 +1,445 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Threading; + +namespace MinecraftClient.Dialogs; + +public sealed class DialogManager +{ + private readonly McClient _client; + private readonly Lock _lock = new(); + private readonly Dictionary _registryById = new(); + private readonly Dictionary _registryByName = new(StringComparer.Ordinal); + private readonly List _serverLinks = []; + private DialogInstance? _current; + private int _revision; + + public DialogManager(McClient client) + { + ArgumentNullException.ThrowIfNull(client); + _client = client; + } + + public event Action? DialogShown; + public event Action? DialogCleared; + + public DialogInstance? Current + { + get + { + lock (_lock) + return _current; + } + } + + public void StoreRegistryDialog(int protocolId, string resourceId, DialogDefinition definition) + { + lock (_lock) + { + _registryById[protocolId] = definition; + _registryByName[resourceId] = definition; + } + } + + public void ClearRegistry() + { + lock (_lock) + { + _registryById.Clear(); + _registryByName.Clear(); + } + } + + public void SetServerLinks(IEnumerable links) + { + lock (_lock) + { + _serverLinks.Clear(); + _serverLinks.AddRange(links); + } + } + + public DialogInstance Show(DialogDefinition definition, DialogPhase phase) + { + DialogInstance instance; + lock (_lock) + { + var expanded = ExpandServerLinks(definition); + var values = expanded.Inputs.ToDictionary(static input => input.Key, static input => input.InitialValue, StringComparer.Ordinal); + instance = new DialogInstance(++_revision, phase, expanded, values, DateTimeOffset.UtcNow); + _current = instance; + } + + _client.Log.Info("§e" + string.Format(Translations.dialog_received, instance.Definition.DisplayTitle())); + DialogShown?.Invoke(instance); + return instance; + } + + public DialogInstance ShowRegistryReference(int protocolId, DialogPhase phase) + { + DialogDefinition? definition; + lock (_lock) + _registryById.TryGetValue(protocolId, out definition); + + if (definition is not null) + return Show(definition, phase); + + var unresolved = new DialogDefinition( + "minecraft:unresolved", + string.Format(CultureInfo.InvariantCulture, Translations.dialog_unresolved_title, protocolId), + null, + CanCloseWithEscape: true, + Pause: false, + DialogAfterAction.Close, + [new DialogBody(DialogBodyKind.Unknown, string.Format(CultureInfo.InvariantCulture, Translations.dialog_unresolved_body, protocolId))], + [], + [], + null, + IsResolved: false, + UnresolvedReference: protocolId.ToString(CultureInfo.InvariantCulture)); + return Show(unresolved, phase); + } + + public void Clear() + { + int revision; + lock (_lock) + { + revision = _current?.Revision ?? _revision; + _current = null; + } + + _client.Log.Info(Translations.dialog_cleared); + DialogCleared?.Invoke(revision); + } + + public DialogActionResult Dismiss() + { + int revision; + lock (_lock) + { + if (_current is null) + return new DialogActionResult(false, Translations.dialog_none); + + revision = _current.Revision; + _current = null; + } + + DialogCleared?.Invoke(revision); + return new DialogActionResult(true, Translations.dialog_dismissed); + } + + public DialogActionResult SetInput(string key, string value) + { + lock (_lock) + { + if (_current is null) + return new DialogActionResult(false, Translations.dialog_none); + + var input = _current.Definition.Inputs.FirstOrDefault(input => input.Key.Equals(key, StringComparison.Ordinal)); + if (input is null) + return new DialogActionResult(false, string.Format(Translations.dialog_input_unknown, key)); + + var normalized = NormalizeInputValue(input, value, out var error); + if (error is not null) + return new DialogActionResult(false, error); + + var values = _current.Values.ToDictionary(static pair => pair.Key, static pair => pair.Value, StringComparer.Ordinal); + values[key] = normalized; + _current = _current with { Values = values }; + return new DialogActionResult(true, string.Format(Translations.dialog_input_set, key, normalized)); + } + } + + public DialogActionResult Click(int index) + { + DialogButton? button; + DialogInstance? instance; + lock (_lock) + { + instance = _current; + button = instance?.Definition.Actions.FirstOrDefault(action => action.Index == index); + } + + if (instance is null) + return new DialogActionResult(false, Translations.dialog_none); + + if (button is null) + return new DialogActionResult(false, string.Format(Translations.dialog_action_unknown, index)); + + return Execute(instance, button.Action, ShouldCloseAfterAction(instance.Definition.AfterAction)); + } + + public DialogActionResult ClickLabel(string label) + { + DialogButton[] matches; + DialogInstance? instance; + lock (_lock) + { + instance = _current; + matches = instance?.Definition.Actions + .Where(action => action.Label.Equals(label, StringComparison.OrdinalIgnoreCase)) + .ToArray() ?? []; + } + + if (instance is null) + return new DialogActionResult(false, Translations.dialog_none); + + return matches.Length switch + { + 0 => new DialogActionResult(false, string.Format(Translations.dialog_action_label_unknown, label)), + > 1 => new DialogActionResult(false, string.Format(Translations.dialog_action_label_ambiguous, label)), + _ => Execute(instance, matches[0].Action, ShouldCloseAfterAction(instance.Definition.AfterAction)) + }; + } + + public DialogActionResult Cancel() + { + DialogInstance? instance; + lock (_lock) + instance = _current; + + if (instance is null) + return new DialogActionResult(false, Translations.dialog_none); + + if (!instance.Definition.CanCloseWithEscape && instance.Definition.CancelAction is null) + return new DialogActionResult(false, Translations.dialog_cannot_cancel); + + return Execute(instance, instance.Definition.CancelAction, closeWhenDone: true); + } + + private DialogActionResult Execute(DialogInstance instance, DialogActionDefinition? action, bool closeWhenDone) + { + if (!instance.Definition.IsResolved) + return new DialogActionResult(false, Translations.dialog_unresolved_action_disabled); + + if (action is null || action.Kind == DialogActionKind.None) + { + if (closeWhenDone) + _ = Dismiss(); + return new DialogActionResult(true, Translations.dialog_action_closed); + } + + var values = BuildActionValues(instance); + switch (action.Kind) + { + case DialogActionKind.RunCommand: + if (instance.Phase != DialogPhase.Play) + return new DialogActionResult(false, Translations.dialog_action_command_not_in_play); + + var command = ApplyTemplate(action.Value ?? string.Empty, values.TemplateValues); + _client.SendText(command); + if (closeWhenDone) + _ = Dismiss(); + return new DialogActionResult(true, string.Format(Translations.dialog_action_command_sent, command)); + + case DialogActionKind.CustomClick: + if (action.Id is null) + return new DialogActionResult(false, Translations.dialog_action_invalid); + + var payload = action.Type == "minecraft:custom" && action.Payload is null && values.TagValues.Count == 0 + ? null + : MergePayload(action.Payload, values.TagValues); + if (!_client.SendCustomClickAction(action.Id, payload)) + return new DialogActionResult(false, Translations.dialog_action_custom_failed); + + if (closeWhenDone) + _ = Dismiss(); + return new DialogActionResult(true, string.Format(Translations.dialog_action_custom_sent, action.Id)); + + case DialogActionKind.ShowDialog: + if (action.NestedDialog is not null) + { + Show(action.NestedDialog, instance.Phase); + return new DialogActionResult(true, Translations.dialog_action_nested_opened); + } + + if (action.DialogReferenceId is int referenceId) + { + ShowRegistryReference(referenceId, instance.Phase); + return new DialogActionResult(true, Translations.dialog_action_nested_opened); + } + + if (action.Value is not null) + { + DialogDefinition? referencedDialog; + lock (_lock) + _registryByName.TryGetValue(action.Value, out referencedDialog); + + if (referencedDialog is not null) + { + Show(referencedDialog, instance.Phase); + return new DialogActionResult(true, Translations.dialog_action_nested_opened); + } + } + + return new DialogActionResult(false, Translations.dialog_action_invalid); + + case DialogActionKind.OpenUrl: + return new DialogActionResult(true, string.Format(Translations.dialog_action_open_url, action.Value ?? string.Empty)); + + case DialogActionKind.SuggestCommand: + return new DialogActionResult(true, string.Format(Translations.dialog_action_suggest_command, action.Value ?? string.Empty)); + + case DialogActionKind.CopyToClipboard: + return new DialogActionResult(true, string.Format(Translations.dialog_action_copy, action.Value ?? string.Empty)); + + default: + return new DialogActionResult(false, string.Format(Translations.dialog_action_unsupported, action.Type ?? action.Kind.ToString())); + } + } + + private static bool ShouldCloseAfterAction(DialogAfterAction afterAction) + { + return afterAction == DialogAfterAction.Close; + } + + private DialogDefinition ExpandServerLinks(DialogDefinition definition) + { + if (!definition.Type.Equals("minecraft:server_links", StringComparison.Ordinal)) + return definition; + + var linkActions = _serverLinks + .Select((link, index) => new DialogButton( + index + 1, + link.Label, + new DialogActionDefinition(DialogActionKind.OpenUrl, Value: link.Url))) + .ToList(); + + if (definition.Actions.Count > 0) + linkActions.AddRange(definition.Actions.Select((button, i) => button with { Index = linkActions.Count + i + 1 })); + + return definition with { Actions = linkActions }; + } + + private static DialogActionValues BuildActionValues(DialogInstance instance) + { + Dictionary templateValues = new(StringComparer.Ordinal); + Dictionary tagValues = new(StringComparer.Ordinal); + + foreach (var input in instance.Definition.Inputs) + { + instance.Values.TryGetValue(input.Key, out var value); + value ??= input.InitialValue; + templateValues[input.Key] = ToTemplateValue(input, value); + tagValues[input.Key] = ToNbtValue(input, value); + } + + return new DialogActionValues(templateValues, tagValues); + } + + private static Dictionary MergePayload(Dictionary? basePayload, Dictionary inputTags) + { + Dictionary payload = basePayload is null + ? new(StringComparer.Ordinal) + : new(basePayload, StringComparer.Ordinal); + + foreach (var (key, value) in inputTags) + payload[key] = value; + + return payload; + } + + private static string NormalizeInputValue(DialogInput input, string value, out string? error) + { + error = null; + switch (input.Kind) + { + case DialogInputKind.Text: + if (value.Length > input.MaxLength) + { + error = string.Format(Translations.dialog_input_too_long, input.Key, input.MaxLength); + return input.InitialValue; + } + return value; + + case DialogInputKind.Boolean: + if (bool.TryParse(value, out var boolValue)) + return boolValue ? "true" : "false"; + + if (value.Equals(input.OnTrue, StringComparison.OrdinalIgnoreCase)) + return "true"; + + if (value.Equals(input.OnFalse, StringComparison.OrdinalIgnoreCase)) + return "false"; + + error = string.Format(Translations.dialog_input_boolean_invalid, input.Key); + return input.InitialValue; + + case DialogInputKind.SingleOption: + if (input.Options?.Any(option => option.Id.Equals(value, StringComparison.Ordinal)) == true) + return value; + + error = string.Format(Translations.dialog_input_option_invalid, input.Key); + return input.InitialValue; + + case DialogInputKind.NumberRange: + if (!float.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out var number)) + { + error = string.Format(Translations.dialog_input_number_invalid, input.Key); + return input.InitialValue; + } + + var min = Math.Min(input.Start, input.End); + var max = Math.Max(input.Start, input.End); + if (number < min || number > max) + { + error = string.Format(CultureInfo.InvariantCulture, Translations.dialog_input_number_range_invalid, input.Key, min, max); + return input.InitialValue; + } + + return NumberToString(number); + + default: + return value; + } + } + + private static string ToTemplateValue(DialogInput input, string value) + { + return input.Kind switch + { + DialogInputKind.Boolean => value.Equals("true", StringComparison.OrdinalIgnoreCase) ? input.OnTrue : input.OnFalse, + DialogInputKind.Text => EscapeStringTagWithoutQuotes(value), + _ => value + }; + } + + private static object ToNbtValue(DialogInput input, string value) + { + return input.Kind switch + { + DialogInputKind.Boolean => (byte)(value.Equals("true", StringComparison.OrdinalIgnoreCase) ? 1 : 0), + DialogInputKind.NumberRange when float.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out var number) => number, + _ => value + }; + } + + private static string ApplyTemplate(string template, IReadOnlyDictionary values) + { + var result = template; + foreach (var (key, value) in values) + result = result.Replace("$(" + key + ")", value, StringComparison.Ordinal); + + return result; + } + + private static string EscapeStringTagWithoutQuotes(string value) + { + return value.Replace("\\", "\\\\", StringComparison.Ordinal).Replace("\"", "\\\"", StringComparison.Ordinal); + } + + private static string NumberToString(float value) + { + var integer = (int)value; + return integer == value + ? integer.ToString(CultureInfo.InvariantCulture) + : value.ToString(CultureInfo.InvariantCulture); + } + + private sealed record DialogActionValues( + IReadOnlyDictionary TemplateValues, + Dictionary TagValues); +} diff --git a/MinecraftClient/Dialogs/DialogModels.cs b/MinecraftClient/Dialogs/DialogModels.cs new file mode 100644 index 00000000..fc40b480 --- /dev/null +++ b/MinecraftClient/Dialogs/DialogModels.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; + +namespace MinecraftClient.Dialogs; + +public enum DialogPhase +{ + Configuration, + Play +} + +public enum DialogAfterAction +{ + Close, + None, + WaitForResponse +} + +public enum DialogBodyKind +{ + PlainMessage, + Item, + Unknown +} + +public enum DialogInputKind +{ + Text, + Boolean, + SingleOption, + NumberRange, + Unknown +} + +public enum DialogActionKind +{ + None, + RunCommand, + CustomClick, + ShowDialog, + OpenUrl, + SuggestCommand, + CopyToClipboard, + Unknown +} + +public sealed record DialogBody(DialogBodyKind Kind, string Text, string? Type = null); + +public sealed record DialogOption(string Id, string Display, bool Initial) +{ + public override string ToString() + { + return string.IsNullOrWhiteSpace(Display) ? Id : Display; + } +} + +public sealed record DialogInput( + string Key, + DialogInputKind Kind, + string Label, + string InitialValue, + int MaxLength = 32, + bool LabelVisible = true, + bool Multiline = false, + IReadOnlyList? Options = null, + string OnTrue = "true", + string OnFalse = "false", + float Start = 0, + float End = 1, + float? InitialNumber = null, + float? Step = null, + string? Type = null); + +public sealed record DialogActionDefinition( + DialogActionKind Kind, + string? Value = null, + string? Id = null, + Dictionary? Payload = null, + DialogDefinition? NestedDialog = null, + int? DialogReferenceId = null, + string? Type = null); + +public sealed record DialogButton(int Index, string Label, DialogActionDefinition? Action, bool IsCancel = false); + +public sealed record DialogServerLink(string Label, string Url); + +public sealed record DialogDefinition( + string Type, + string Title, + string? ExternalTitle, + bool CanCloseWithEscape, + bool Pause, + DialogAfterAction AfterAction, + IReadOnlyList Body, + IReadOnlyList Inputs, + IReadOnlyList Actions, + DialogActionDefinition? CancelAction, + int Columns = 1, + int ButtonWidth = 150, + bool IsResolved = true, + string? UnresolvedReference = null); + +public sealed record DialogInstance( + int Revision, + DialogPhase Phase, + DialogDefinition Definition, + IReadOnlyDictionary Values, + DateTimeOffset ReceivedAt); + +public sealed record DialogActionResult(bool Success, string Message); diff --git a/MinecraftClient/IConsoleBackend.cs b/MinecraftClient/IConsoleBackend.cs index b4d52ebf..0fd23389 100644 --- a/MinecraftClient/IConsoleBackend.cs +++ b/MinecraftClient/IConsoleBackend.cs @@ -60,6 +60,8 @@ namespace MinecraftClient void ClearInputBuffer(); + void ClearScreen(); + bool DisplayUserInput { get; set; } void SetInputVisible(bool visible); diff --git a/MinecraftClient/Inventory/BookContent.cs b/MinecraftClient/Inventory/BookContent.cs new file mode 100644 index 00000000..262e4680 --- /dev/null +++ b/MinecraftClient/Inventory/BookContent.cs @@ -0,0 +1,183 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using MinecraftClient.Protocol.Handlers; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; +using MinecraftClient.Protocol.Message; + +namespace MinecraftClient.Inventory; + +public enum BookHand +{ + Main = 0, + Off = 1 +} + +public sealed record BookLimits(int MaxPages, int MaxPageLength, int MaxTitleLength) +{ + public static BookLimits ForProtocol(int protocolVersion) + { + int maxPageLength = protocolVersion switch + { + >= Protocol18Handler.MC_1_21_2_Version => 1024, + >= Protocol18Handler.MC_1_17_Version => 8192, + _ => 32767 + }; + + int maxTitleLength = protocolVersion switch + { + >= Protocol18Handler.MC_1_21_2_Version => 32, + >= Protocol18Handler.MC_1_17_Version => 128, + _ => 16 + }; + + return new BookLimits(100, maxPageLength, maxTitleLength); + } +} + +public sealed record BookContent( + IReadOnlyList Pages, + string? Title, + string? Author, + int Generation, + bool IsSigned) +{ + public static BookContent EmptyWritable { get; } = new([string.Empty], null, null, 0, false); +} + +public static class BookContentHelper +{ + public static bool IsBook(Item? item) => item?.Type is ItemType.WritableBook or ItemType.WrittenBook; + + public static bool IsWritableBook(Item? item) => item?.Type == ItemType.WritableBook; + + public static bool TryRead(Item? item, out BookContent content) + { + content = BookContent.EmptyWritable; + + if (item is null || item.IsEmpty) + return false; + + return item.Type switch + { + ItemType.WritableBook => TryReadWritable(item, out content), + ItemType.WrittenBook => TryReadWritten(item, out content), + _ => false + }; + } + + public static Item CreateWritablePayload(Item currentBook, IReadOnlyList pages) + { + return new Item(ItemType.WritableBook, 1, currentBook.Data, new Dictionary + { + ["pages"] = pages.Cast().ToArray() + }); + } + + public static Item CreateWrittenPayload(Item currentBook, IReadOnlyList pages, string title, string author, bool encodePagesAsJson) + { + object[] encodedPages = pages + .Select(page => encodePagesAsJson ? ToJsonTextComponent(page) : page) + .Cast() + .ToArray(); + + return new Item(ItemType.WrittenBook, 1, currentBook.Data, new Dictionary + { + ["author"] = author, + ["title"] = title, + ["pages"] = encodedPages + }); + } + + public static IReadOnlyList NormalizePages(IEnumerable pages) + { + string[] normalized = pages.Select(page => page ?? string.Empty).ToArray(); + return normalized.Length == 0 ? [string.Empty] : normalized; + } + + private static bool TryReadWritable(Item item, out BookContent content) + { + if (item.Components is not null) + { + var component = item.Components.OfType().FirstOrDefault(); + if (component is not null) + { + content = new BookContent( + NormalizePages(component.Pages.Select(page => page.RawContent)), + null, + null, + 0, + IsSigned: false); + return true; + } + } + + content = new BookContent(ReadStringList(item.NBT, "pages", parseJson: false), null, null, 0, IsSigned: false); + return true; + } + + private static bool TryReadWritten(Item item, out BookContent content) + { + if (item.Components is not null) + { + var component = item.Components.OfType().FirstOrDefault(); + if (component is not null) + { + content = new BookContent( + NormalizePages(component.Pages.Select(page => page.RawContent)), + component.RawTitle, + component.Author, + component.Generation, + IsSigned: true); + return true; + } + } + + string? title = ReadString(item.NBT, "title"); + string? author = ReadString(item.NBT, "author"); + int generation = ReadInt(item.NBT, "generation"); + content = new BookContent(ReadStringList(item.NBT, "pages", parseJson: true), title, author, generation, IsSigned: true); + return true; + } + + private static IReadOnlyList ReadStringList(Dictionary? nbt, string key, bool parseJson) + { + if (nbt is null || !nbt.TryGetValue(key, out object? value) || value is not object[] values) + return [string.Empty]; + + string[] pages = values + .Select(value => value?.ToString() ?? string.Empty) + .Select(value => parseJson ? ChatParser.ParseText(value) : value) + .ToArray(); + + return pages.Length == 0 ? [string.Empty] : pages; + } + + private static string? ReadString(Dictionary? nbt, string key) + { + return nbt is not null && nbt.TryGetValue(key, out object? value) + ? value?.ToString() + : null; + } + + private static int ReadInt(Dictionary? nbt, string key) + { + if (nbt is null || !nbt.TryGetValue(key, out object? value) || value is null) + return 0; + + return value switch + { + int i => i, + short s => s, + byte b => b, + _ when int.TryParse(value.ToString(), out int parsed) => parsed, + _ => 0 + }; + } + + private static string ToJsonTextComponent(string text) + { + return JsonSerializer.Serialize(new Dictionary { ["text"] = text }); + } +} diff --git a/MinecraftClient/Inventory/Item.cs b/MinecraftClient/Inventory/Item.cs index e794e205..95f95b37 100644 --- a/MinecraftClient/Inventory/Item.cs +++ b/MinecraftClient/Inventory/Item.cs @@ -51,7 +51,7 @@ namespace MinecraftClient.Inventory Count = count; NBT = nbt; } - + public Item(ItemType itemType, int count, int data, Dictionary? nbt) : this(itemType, count, nbt) { Data = data; @@ -134,8 +134,8 @@ namespace MinecraftClient.Inventory { object[] displayName = (object[])displayProperties["Lore"]; lores.AddRange(from string st in displayName - let str = ChatParser.ParseText(st.ToString()) - select str); + let str = ChatParser.ParseText(st.ToString()) + select str); return lores.ToArray(); } } @@ -272,4 +272,4 @@ namespace MinecraftClient.Inventory return sb.ToString(); } } -} \ No newline at end of file +} diff --git a/MinecraftClient/Inventory/ItemPalettes/ItemPalette.cs b/MinecraftClient/Inventory/ItemPalettes/ItemPalette.cs index d6770fcd..c8cbe316 100644 --- a/MinecraftClient/Inventory/ItemPalettes/ItemPalette.cs +++ b/MinecraftClient/Inventory/ItemPalettes/ItemPalette.cs @@ -14,7 +14,7 @@ namespace MinecraftClient.Inventory.ItemPalettes { if (DictReverse.ContainsKey(entry.Value)) continue; - + DictReverse.Add(entry.Value, entry.Key); } diff --git a/MinecraftClient/Inventory/ItemPalettes/ItemPalette113.cs b/MinecraftClient/Inventory/ItemPalettes/ItemPalette113.cs new file mode 100644 index 00000000..af292fa1 --- /dev/null +++ b/MinecraftClient/Inventory/ItemPalettes/ItemPalette113.cs @@ -0,0 +1,803 @@ +using System.Collections.Generic; + +namespace MinecraftClient.Inventory.ItemPalettes +{ + public class ItemPalette113 : ItemPalette + { + private static readonly Dictionary mappings = new(); + + static ItemPalette113() + { + mappings[0] = ItemType.Air; + mappings[1] = ItemType.Stone; + mappings[2] = ItemType.Granite; + mappings[3] = ItemType.PolishedGranite; + mappings[4] = ItemType.Diorite; + mappings[5] = ItemType.PolishedDiorite; + mappings[6] = ItemType.Andesite; + mappings[7] = ItemType.PolishedAndesite; + mappings[8] = ItemType.GrassBlock; + mappings[9] = ItemType.Dirt; + mappings[10] = ItemType.CoarseDirt; + mappings[11] = ItemType.Podzol; + mappings[12] = ItemType.Cobblestone; + mappings[13] = ItemType.OakPlanks; + mappings[14] = ItemType.SprucePlanks; + mappings[15] = ItemType.BirchPlanks; + mappings[16] = ItemType.JunglePlanks; + mappings[17] = ItemType.AcaciaPlanks; + mappings[18] = ItemType.DarkOakPlanks; + mappings[19] = ItemType.OakSapling; + mappings[20] = ItemType.SpruceSapling; + mappings[21] = ItemType.BirchSapling; + mappings[22] = ItemType.JungleSapling; + mappings[23] = ItemType.AcaciaSapling; + mappings[24] = ItemType.DarkOakSapling; + mappings[25] = ItemType.Bedrock; + mappings[26] = ItemType.Sand; + mappings[27] = ItemType.RedSand; + mappings[28] = ItemType.Gravel; + mappings[29] = ItemType.GoldOre; + mappings[30] = ItemType.IronOre; + mappings[31] = ItemType.CoalOre; + mappings[32] = ItemType.OakLog; + mappings[33] = ItemType.SpruceLog; + mappings[34] = ItemType.BirchLog; + mappings[35] = ItemType.JungleLog; + mappings[36] = ItemType.AcaciaLog; + mappings[37] = ItemType.DarkOakLog; + mappings[38] = ItemType.StrippedOakLog; + mappings[39] = ItemType.StrippedSpruceLog; + mappings[40] = ItemType.StrippedBirchLog; + mappings[41] = ItemType.StrippedJungleLog; + mappings[42] = ItemType.StrippedAcaciaLog; + mappings[43] = ItemType.StrippedDarkOakLog; + mappings[44] = ItemType.StrippedOakWood; + mappings[45] = ItemType.StrippedSpruceWood; + mappings[46] = ItemType.StrippedBirchWood; + mappings[47] = ItemType.StrippedJungleWood; + mappings[48] = ItemType.StrippedAcaciaWood; + mappings[49] = ItemType.StrippedDarkOakWood; + mappings[50] = ItemType.OakWood; + mappings[51] = ItemType.SpruceWood; + mappings[52] = ItemType.BirchWood; + mappings[53] = ItemType.JungleWood; + mappings[54] = ItemType.AcaciaWood; + mappings[55] = ItemType.DarkOakWood; + mappings[56] = ItemType.OakLeaves; + mappings[57] = ItemType.SpruceLeaves; + mappings[58] = ItemType.BirchLeaves; + mappings[59] = ItemType.JungleLeaves; + mappings[60] = ItemType.AcaciaLeaves; + mappings[61] = ItemType.DarkOakLeaves; + mappings[62] = ItemType.Sponge; + mappings[63] = ItemType.WetSponge; + mappings[64] = ItemType.Glass; + mappings[65] = ItemType.LapisOre; + mappings[66] = ItemType.LapisBlock; + mappings[67] = ItemType.Dispenser; + mappings[68] = ItemType.Sandstone; + mappings[69] = ItemType.ChiseledSandstone; + mappings[70] = ItemType.CutSandstone; + mappings[71] = ItemType.NoteBlock; + mappings[72] = ItemType.PoweredRail; + mappings[73] = ItemType.DetectorRail; + mappings[74] = ItemType.StickyPiston; + mappings[75] = ItemType.Cobweb; + mappings[76] = ItemType.ShortGrass; + mappings[77] = ItemType.Fern; + mappings[78] = ItemType.DeadBush; + mappings[79] = ItemType.Seagrass; + mappings[80] = ItemType.SeaPickle; + mappings[81] = ItemType.Piston; + mappings[82] = ItemType.WhiteWool; + mappings[83] = ItemType.OrangeWool; + mappings[84] = ItemType.MagentaWool; + mappings[85] = ItemType.LightBlueWool; + mappings[86] = ItemType.YellowWool; + mappings[87] = ItemType.LimeWool; + mappings[88] = ItemType.PinkWool; + mappings[89] = ItemType.GrayWool; + mappings[90] = ItemType.LightGrayWool; + mappings[91] = ItemType.CyanWool; + mappings[92] = ItemType.PurpleWool; + mappings[93] = ItemType.BlueWool; + mappings[94] = ItemType.BrownWool; + mappings[95] = ItemType.GreenWool; + mappings[96] = ItemType.RedWool; + mappings[97] = ItemType.BlackWool; + mappings[98] = ItemType.Dandelion; + mappings[99] = ItemType.Poppy; + mappings[100] = ItemType.BlueOrchid; + mappings[101] = ItemType.Allium; + mappings[102] = ItemType.AzureBluet; + mappings[103] = ItemType.RedTulip; + mappings[104] = ItemType.OrangeTulip; + mappings[105] = ItemType.WhiteTulip; + mappings[106] = ItemType.PinkTulip; + mappings[107] = ItemType.OxeyeDaisy; + mappings[108] = ItemType.BrownMushroom; + mappings[109] = ItemType.RedMushroom; + mappings[110] = ItemType.GoldBlock; + mappings[111] = ItemType.IronBlock; + mappings[112] = ItemType.OakSlab; + mappings[113] = ItemType.SpruceSlab; + mappings[114] = ItemType.BirchSlab; + mappings[115] = ItemType.JungleSlab; + mappings[116] = ItemType.AcaciaSlab; + mappings[117] = ItemType.DarkOakSlab; + mappings[118] = ItemType.StoneSlab; + mappings[119] = ItemType.SandstoneSlab; + mappings[120] = ItemType.PetrifiedOakSlab; + mappings[121] = ItemType.CobblestoneSlab; + mappings[122] = ItemType.BrickSlab; + mappings[123] = ItemType.StoneBrickSlab; + mappings[124] = ItemType.NetherBrickSlab; + mappings[125] = ItemType.QuartzSlab; + mappings[126] = ItemType.RedSandstoneSlab; + mappings[127] = ItemType.PurpurSlab; + mappings[128] = ItemType.PrismarineSlab; + mappings[129] = ItemType.PrismarineBrickSlab; + mappings[130] = ItemType.DarkPrismarineSlab; + mappings[131] = ItemType.SmoothQuartz; + mappings[132] = ItemType.SmoothRedSandstone; + mappings[133] = ItemType.SmoothSandstone; + mappings[134] = ItemType.SmoothStone; + mappings[135] = ItemType.Bricks; + mappings[136] = ItemType.Tnt; + mappings[137] = ItemType.Bookshelf; + mappings[138] = ItemType.MossyCobblestone; + mappings[139] = ItemType.Obsidian; + mappings[140] = ItemType.Torch; + mappings[141] = ItemType.EndRod; + mappings[142] = ItemType.ChorusPlant; + mappings[143] = ItemType.ChorusFlower; + mappings[144] = ItemType.PurpurBlock; + mappings[145] = ItemType.PurpurPillar; + mappings[146] = ItemType.PurpurStairs; + mappings[147] = ItemType.Spawner; + mappings[148] = ItemType.OakStairs; + mappings[149] = ItemType.Chest; + mappings[150] = ItemType.DiamondOre; + mappings[151] = ItemType.DiamondBlock; + mappings[152] = ItemType.CraftingTable; + mappings[153] = ItemType.Farmland; + mappings[154] = ItemType.Furnace; + mappings[155] = ItemType.Ladder; + mappings[156] = ItemType.Rail; + mappings[157] = ItemType.CobblestoneStairs; + mappings[158] = ItemType.Lever; + mappings[159] = ItemType.StonePressurePlate; + mappings[160] = ItemType.OakPressurePlate; + mappings[161] = ItemType.SprucePressurePlate; + mappings[162] = ItemType.BirchPressurePlate; + mappings[163] = ItemType.JunglePressurePlate; + mappings[164] = ItemType.AcaciaPressurePlate; + mappings[165] = ItemType.DarkOakPressurePlate; + mappings[166] = ItemType.RedstoneOre; + mappings[167] = ItemType.RedstoneTorch; + mappings[168] = ItemType.StoneButton; + mappings[169] = ItemType.Snow; + mappings[170] = ItemType.Ice; + mappings[171] = ItemType.SnowBlock; + mappings[172] = ItemType.Cactus; + mappings[173] = ItemType.Clay; + mappings[174] = ItemType.Jukebox; + mappings[175] = ItemType.OakFence; + mappings[176] = ItemType.SpruceFence; + mappings[177] = ItemType.BirchFence; + mappings[178] = ItemType.JungleFence; + mappings[179] = ItemType.AcaciaFence; + mappings[180] = ItemType.DarkOakFence; + mappings[181] = ItemType.Pumpkin; + mappings[182] = ItemType.CarvedPumpkin; + mappings[183] = ItemType.Netherrack; + mappings[184] = ItemType.SoulSand; + mappings[185] = ItemType.Glowstone; + mappings[186] = ItemType.JackOLantern; + mappings[187] = ItemType.OakTrapdoor; + mappings[188] = ItemType.SpruceTrapdoor; + mappings[189] = ItemType.BirchTrapdoor; + mappings[190] = ItemType.JungleTrapdoor; + mappings[191] = ItemType.AcaciaTrapdoor; + mappings[192] = ItemType.DarkOakTrapdoor; + mappings[193] = ItemType.InfestedStone; + mappings[194] = ItemType.InfestedCobblestone; + mappings[195] = ItemType.InfestedStoneBricks; + mappings[196] = ItemType.InfestedMossyStoneBricks; + mappings[197] = ItemType.InfestedCrackedStoneBricks; + mappings[198] = ItemType.InfestedChiseledStoneBricks; + mappings[199] = ItemType.StoneBricks; + mappings[200] = ItemType.MossyStoneBricks; + mappings[201] = ItemType.CrackedStoneBricks; + mappings[202] = ItemType.ChiseledStoneBricks; + mappings[203] = ItemType.BrownMushroomBlock; + mappings[204] = ItemType.RedMushroomBlock; + mappings[205] = ItemType.MushroomStem; + mappings[206] = ItemType.IronBars; + mappings[207] = ItemType.GlassPane; + mappings[208] = ItemType.Melon; + mappings[209] = ItemType.Vine; + mappings[210] = ItemType.OakFenceGate; + mappings[211] = ItemType.SpruceFenceGate; + mappings[212] = ItemType.BirchFenceGate; + mappings[213] = ItemType.JungleFenceGate; + mappings[214] = ItemType.AcaciaFenceGate; + mappings[215] = ItemType.DarkOakFenceGate; + mappings[216] = ItemType.BrickStairs; + mappings[217] = ItemType.StoneBrickStairs; + mappings[218] = ItemType.Mycelium; + mappings[219] = ItemType.LilyPad; + mappings[220] = ItemType.NetherBricks; + mappings[221] = ItemType.NetherBrickFence; + mappings[222] = ItemType.NetherBrickStairs; + mappings[223] = ItemType.EnchantingTable; + mappings[224] = ItemType.EndPortalFrame; + mappings[225] = ItemType.EndStone; + mappings[226] = ItemType.EndStoneBricks; + mappings[227] = ItemType.DragonEgg; + mappings[228] = ItemType.RedstoneLamp; + mappings[229] = ItemType.SandstoneStairs; + mappings[230] = ItemType.EmeraldOre; + mappings[231] = ItemType.EnderChest; + mappings[232] = ItemType.TripwireHook; + mappings[233] = ItemType.EmeraldBlock; + mappings[234] = ItemType.SpruceStairs; + mappings[235] = ItemType.BirchStairs; + mappings[236] = ItemType.JungleStairs; + mappings[237] = ItemType.CommandBlock; + mappings[238] = ItemType.Beacon; + mappings[239] = ItemType.CobblestoneWall; + mappings[240] = ItemType.MossyCobblestoneWall; + mappings[241] = ItemType.OakButton; + mappings[242] = ItemType.SpruceButton; + mappings[243] = ItemType.BirchButton; + mappings[244] = ItemType.JungleButton; + mappings[245] = ItemType.AcaciaButton; + mappings[246] = ItemType.DarkOakButton; + mappings[247] = ItemType.Anvil; + mappings[248] = ItemType.ChippedAnvil; + mappings[249] = ItemType.DamagedAnvil; + mappings[250] = ItemType.TrappedChest; + mappings[251] = ItemType.LightWeightedPressurePlate; + mappings[252] = ItemType.HeavyWeightedPressurePlate; + mappings[253] = ItemType.DaylightDetector; + mappings[254] = ItemType.RedstoneBlock; + mappings[255] = ItemType.NetherQuartzOre; + mappings[256] = ItemType.Hopper; + mappings[257] = ItemType.ChiseledQuartzBlock; + mappings[258] = ItemType.QuartzBlock; + mappings[259] = ItemType.QuartzPillar; + mappings[260] = ItemType.QuartzStairs; + mappings[261] = ItemType.ActivatorRail; + mappings[262] = ItemType.Dropper; + mappings[263] = ItemType.WhiteTerracotta; + mappings[264] = ItemType.OrangeTerracotta; + mappings[265] = ItemType.MagentaTerracotta; + mappings[266] = ItemType.LightBlueTerracotta; + mappings[267] = ItemType.YellowTerracotta; + mappings[268] = ItemType.LimeTerracotta; + mappings[269] = ItemType.PinkTerracotta; + mappings[270] = ItemType.GrayTerracotta; + mappings[271] = ItemType.LightGrayTerracotta; + mappings[272] = ItemType.CyanTerracotta; + mappings[273] = ItemType.PurpleTerracotta; + mappings[274] = ItemType.BlueTerracotta; + mappings[275] = ItemType.BrownTerracotta; + mappings[276] = ItemType.GreenTerracotta; + mappings[277] = ItemType.RedTerracotta; + mappings[278] = ItemType.BlackTerracotta; + mappings[279] = ItemType.Barrier; + mappings[280] = ItemType.IronTrapdoor; + mappings[281] = ItemType.HayBlock; + mappings[282] = ItemType.WhiteCarpet; + mappings[283] = ItemType.OrangeCarpet; + mappings[284] = ItemType.MagentaCarpet; + mappings[285] = ItemType.LightBlueCarpet; + mappings[286] = ItemType.YellowCarpet; + mappings[287] = ItemType.LimeCarpet; + mappings[288] = ItemType.PinkCarpet; + mappings[289] = ItemType.GrayCarpet; + mappings[290] = ItemType.LightGrayCarpet; + mappings[291] = ItemType.CyanCarpet; + mappings[292] = ItemType.PurpleCarpet; + mappings[293] = ItemType.BlueCarpet; + mappings[294] = ItemType.BrownCarpet; + mappings[295] = ItemType.GreenCarpet; + mappings[296] = ItemType.RedCarpet; + mappings[297] = ItemType.BlackCarpet; + mappings[298] = ItemType.Terracotta; + mappings[299] = ItemType.CoalBlock; + mappings[300] = ItemType.PackedIce; + mappings[301] = ItemType.AcaciaStairs; + mappings[302] = ItemType.DarkOakStairs; + mappings[303] = ItemType.SlimeBlock; + mappings[304] = ItemType.DirtPath; + mappings[305] = ItemType.Sunflower; + mappings[306] = ItemType.Lilac; + mappings[307] = ItemType.RoseBush; + mappings[308] = ItemType.Peony; + mappings[309] = ItemType.TallGrass; + mappings[310] = ItemType.LargeFern; + mappings[311] = ItemType.WhiteStainedGlass; + mappings[312] = ItemType.OrangeStainedGlass; + mappings[313] = ItemType.MagentaStainedGlass; + mappings[314] = ItemType.LightBlueStainedGlass; + mappings[315] = ItemType.YellowStainedGlass; + mappings[316] = ItemType.LimeStainedGlass; + mappings[317] = ItemType.PinkStainedGlass; + mappings[318] = ItemType.GrayStainedGlass; + mappings[319] = ItemType.LightGrayStainedGlass; + mappings[320] = ItemType.CyanStainedGlass; + mappings[321] = ItemType.PurpleStainedGlass; + mappings[322] = ItemType.BlueStainedGlass; + mappings[323] = ItemType.BrownStainedGlass; + mappings[324] = ItemType.GreenStainedGlass; + mappings[325] = ItemType.RedStainedGlass; + mappings[326] = ItemType.BlackStainedGlass; + mappings[327] = ItemType.WhiteStainedGlassPane; + mappings[328] = ItemType.OrangeStainedGlassPane; + mappings[329] = ItemType.MagentaStainedGlassPane; + mappings[330] = ItemType.LightBlueStainedGlassPane; + mappings[331] = ItemType.YellowStainedGlassPane; + mappings[332] = ItemType.LimeStainedGlassPane; + mappings[333] = ItemType.PinkStainedGlassPane; + mappings[334] = ItemType.GrayStainedGlassPane; + mappings[335] = ItemType.LightGrayStainedGlassPane; + mappings[336] = ItemType.CyanStainedGlassPane; + mappings[337] = ItemType.PurpleStainedGlassPane; + mappings[338] = ItemType.BlueStainedGlassPane; + mappings[339] = ItemType.BrownStainedGlassPane; + mappings[340] = ItemType.GreenStainedGlassPane; + mappings[341] = ItemType.RedStainedGlassPane; + mappings[342] = ItemType.BlackStainedGlassPane; + mappings[343] = ItemType.Prismarine; + mappings[344] = ItemType.PrismarineBricks; + mappings[345] = ItemType.DarkPrismarine; + mappings[346] = ItemType.PrismarineStairs; + mappings[347] = ItemType.PrismarineBrickStairs; + mappings[348] = ItemType.DarkPrismarineStairs; + mappings[349] = ItemType.SeaLantern; + mappings[350] = ItemType.RedSandstone; + mappings[351] = ItemType.ChiseledRedSandstone; + mappings[352] = ItemType.CutRedSandstone; + mappings[353] = ItemType.RedSandstoneStairs; + mappings[354] = ItemType.RepeatingCommandBlock; + mappings[355] = ItemType.ChainCommandBlock; + mappings[356] = ItemType.MagmaBlock; + mappings[357] = ItemType.NetherWartBlock; + mappings[358] = ItemType.RedNetherBricks; + mappings[359] = ItemType.BoneBlock; + mappings[360] = ItemType.StructureVoid; + mappings[361] = ItemType.Observer; + mappings[362] = ItemType.ShulkerBox; + mappings[363] = ItemType.WhiteShulkerBox; + mappings[364] = ItemType.OrangeShulkerBox; + mappings[365] = ItemType.MagentaShulkerBox; + mappings[366] = ItemType.LightBlueShulkerBox; + mappings[367] = ItemType.YellowShulkerBox; + mappings[368] = ItemType.LimeShulkerBox; + mappings[369] = ItemType.PinkShulkerBox; + mappings[370] = ItemType.GrayShulkerBox; + mappings[371] = ItemType.LightGrayShulkerBox; + mappings[372] = ItemType.CyanShulkerBox; + mappings[373] = ItemType.PurpleShulkerBox; + mappings[374] = ItemType.BlueShulkerBox; + mappings[375] = ItemType.BrownShulkerBox; + mappings[376] = ItemType.GreenShulkerBox; + mappings[377] = ItemType.RedShulkerBox; + mappings[378] = ItemType.BlackShulkerBox; + mappings[379] = ItemType.WhiteGlazedTerracotta; + mappings[380] = ItemType.OrangeGlazedTerracotta; + mappings[381] = ItemType.MagentaGlazedTerracotta; + mappings[382] = ItemType.LightBlueGlazedTerracotta; + mappings[383] = ItemType.YellowGlazedTerracotta; + mappings[384] = ItemType.LimeGlazedTerracotta; + mappings[385] = ItemType.PinkGlazedTerracotta; + mappings[386] = ItemType.GrayGlazedTerracotta; + mappings[387] = ItemType.LightGrayGlazedTerracotta; + mappings[388] = ItemType.CyanGlazedTerracotta; + mappings[389] = ItemType.PurpleGlazedTerracotta; + mappings[390] = ItemType.BlueGlazedTerracotta; + mappings[391] = ItemType.BrownGlazedTerracotta; + mappings[392] = ItemType.GreenGlazedTerracotta; + mappings[393] = ItemType.RedGlazedTerracotta; + mappings[394] = ItemType.BlackGlazedTerracotta; + mappings[395] = ItemType.WhiteConcrete; + mappings[396] = ItemType.OrangeConcrete; + mappings[397] = ItemType.MagentaConcrete; + mappings[398] = ItemType.LightBlueConcrete; + mappings[399] = ItemType.YellowConcrete; + mappings[400] = ItemType.LimeConcrete; + mappings[401] = ItemType.PinkConcrete; + mappings[402] = ItemType.GrayConcrete; + mappings[403] = ItemType.LightGrayConcrete; + mappings[404] = ItemType.CyanConcrete; + mappings[405] = ItemType.PurpleConcrete; + mappings[406] = ItemType.BlueConcrete; + mappings[407] = ItemType.BrownConcrete; + mappings[408] = ItemType.GreenConcrete; + mappings[409] = ItemType.RedConcrete; + mappings[410] = ItemType.BlackConcrete; + mappings[411] = ItemType.WhiteConcretePowder; + mappings[412] = ItemType.OrangeConcretePowder; + mappings[413] = ItemType.MagentaConcretePowder; + mappings[414] = ItemType.LightBlueConcretePowder; + mappings[415] = ItemType.YellowConcretePowder; + mappings[416] = ItemType.LimeConcretePowder; + mappings[417] = ItemType.PinkConcretePowder; + mappings[418] = ItemType.GrayConcretePowder; + mappings[419] = ItemType.LightGrayConcretePowder; + mappings[420] = ItemType.CyanConcretePowder; + mappings[421] = ItemType.PurpleConcretePowder; + mappings[422] = ItemType.BlueConcretePowder; + mappings[423] = ItemType.BrownConcretePowder; + mappings[424] = ItemType.GreenConcretePowder; + mappings[425] = ItemType.RedConcretePowder; + mappings[426] = ItemType.BlackConcretePowder; + mappings[427] = ItemType.TurtleEgg; + mappings[428] = ItemType.DeadTubeCoralBlock; + mappings[429] = ItemType.DeadBrainCoralBlock; + mappings[430] = ItemType.DeadBubbleCoralBlock; + mappings[431] = ItemType.DeadFireCoralBlock; + mappings[432] = ItemType.DeadHornCoralBlock; + mappings[433] = ItemType.TubeCoralBlock; + mappings[434] = ItemType.BrainCoralBlock; + mappings[435] = ItemType.BubbleCoralBlock; + mappings[436] = ItemType.FireCoralBlock; + mappings[437] = ItemType.HornCoralBlock; + mappings[438] = ItemType.TubeCoral; + mappings[439] = ItemType.BrainCoral; + mappings[440] = ItemType.BubbleCoral; + mappings[441] = ItemType.FireCoral; + mappings[442] = ItemType.HornCoral; + mappings[443] = ItemType.TubeCoralFan; + mappings[444] = ItemType.BrainCoralFan; + mappings[445] = ItemType.BubbleCoralFan; + mappings[446] = ItemType.FireCoralFan; + mappings[447] = ItemType.HornCoralFan; + mappings[448] = ItemType.DeadTubeCoralFan; + mappings[449] = ItemType.DeadBrainCoralFan; + mappings[450] = ItemType.DeadBubbleCoralFan; + mappings[451] = ItemType.DeadFireCoralFan; + mappings[452] = ItemType.DeadHornCoralFan; + mappings[453] = ItemType.BlueIce; + mappings[454] = ItemType.Conduit; + mappings[455] = ItemType.IronDoor; + mappings[456] = ItemType.OakDoor; + mappings[457] = ItemType.SpruceDoor; + mappings[458] = ItemType.BirchDoor; + mappings[459] = ItemType.JungleDoor; + mappings[460] = ItemType.AcaciaDoor; + mappings[461] = ItemType.DarkOakDoor; + mappings[462] = ItemType.Repeater; + mappings[463] = ItemType.Comparator; + mappings[464] = ItemType.StructureBlock; + mappings[465] = ItemType.TurtleHelmet; + mappings[466] = ItemType.TurtleScute; + mappings[467] = ItemType.IronShovel; + mappings[468] = ItemType.IronPickaxe; + mappings[469] = ItemType.IronAxe; + mappings[470] = ItemType.FlintAndSteel; + mappings[471] = ItemType.Apple; + mappings[472] = ItemType.Bow; + mappings[473] = ItemType.Arrow; + mappings[474] = ItemType.Coal; + mappings[475] = ItemType.Charcoal; + mappings[476] = ItemType.Diamond; + mappings[477] = ItemType.IronIngot; + mappings[478] = ItemType.GoldIngot; + mappings[479] = ItemType.IronSword; + mappings[480] = ItemType.WoodenSword; + mappings[481] = ItemType.WoodenShovel; + mappings[482] = ItemType.WoodenPickaxe; + mappings[483] = ItemType.WoodenAxe; + mappings[484] = ItemType.StoneSword; + mappings[485] = ItemType.StoneShovel; + mappings[486] = ItemType.StonePickaxe; + mappings[487] = ItemType.StoneAxe; + mappings[488] = ItemType.DiamondSword; + mappings[489] = ItemType.DiamondShovel; + mappings[490] = ItemType.DiamondPickaxe; + mappings[491] = ItemType.DiamondAxe; + mappings[492] = ItemType.Stick; + mappings[493] = ItemType.Bowl; + mappings[494] = ItemType.MushroomStew; + mappings[495] = ItemType.GoldenSword; + mappings[496] = ItemType.GoldenShovel; + mappings[497] = ItemType.GoldenPickaxe; + mappings[498] = ItemType.GoldenAxe; + mappings[499] = ItemType.String; + mappings[500] = ItemType.Feather; + mappings[501] = ItemType.Gunpowder; + mappings[502] = ItemType.WoodenHoe; + mappings[503] = ItemType.StoneHoe; + mappings[504] = ItemType.IronHoe; + mappings[505] = ItemType.DiamondHoe; + mappings[506] = ItemType.GoldenHoe; + mappings[507] = ItemType.WheatSeeds; + mappings[508] = ItemType.Wheat; + mappings[509] = ItemType.Bread; + mappings[510] = ItemType.LeatherHelmet; + mappings[511] = ItemType.LeatherChestplate; + mappings[512] = ItemType.LeatherLeggings; + mappings[513] = ItemType.LeatherBoots; + mappings[514] = ItemType.ChainmailHelmet; + mappings[515] = ItemType.ChainmailChestplate; + mappings[516] = ItemType.ChainmailLeggings; + mappings[517] = ItemType.ChainmailBoots; + mappings[518] = ItemType.IronHelmet; + mappings[519] = ItemType.IronChestplate; + mappings[520] = ItemType.IronLeggings; + mappings[521] = ItemType.IronBoots; + mappings[522] = ItemType.DiamondHelmet; + mappings[523] = ItemType.DiamondChestplate; + mappings[524] = ItemType.DiamondLeggings; + mappings[525] = ItemType.DiamondBoots; + mappings[526] = ItemType.GoldenHelmet; + mappings[527] = ItemType.GoldenChestplate; + mappings[528] = ItemType.GoldenLeggings; + mappings[529] = ItemType.GoldenBoots; + mappings[530] = ItemType.Flint; + mappings[531] = ItemType.Porkchop; + mappings[532] = ItemType.CookedPorkchop; + mappings[533] = ItemType.Painting; + mappings[534] = ItemType.GoldenApple; + mappings[535] = ItemType.EnchantedGoldenApple; + mappings[536] = ItemType.OakSign; + mappings[537] = ItemType.Bucket; + mappings[538] = ItemType.WaterBucket; + mappings[539] = ItemType.LavaBucket; + mappings[540] = ItemType.Minecart; + mappings[541] = ItemType.Saddle; + mappings[542] = ItemType.Redstone; + mappings[543] = ItemType.Snowball; + mappings[544] = ItemType.OakBoat; + mappings[545] = ItemType.Leather; + mappings[546] = ItemType.MilkBucket; + mappings[547] = ItemType.PufferfishBucket; + mappings[548] = ItemType.SalmonBucket; + mappings[549] = ItemType.CodBucket; + mappings[550] = ItemType.TropicalFishBucket; + mappings[551] = ItemType.Brick; + mappings[552] = ItemType.ClayBall; + mappings[553] = ItemType.SugarCane; + mappings[554] = ItemType.Kelp; + mappings[555] = ItemType.DriedKelpBlock; + mappings[556] = ItemType.Paper; + mappings[557] = ItemType.Book; + mappings[558] = ItemType.SlimeBall; + mappings[559] = ItemType.ChestMinecart; + mappings[560] = ItemType.FurnaceMinecart; + mappings[561] = ItemType.Egg; + mappings[562] = ItemType.Compass; + mappings[563] = ItemType.FishingRod; + mappings[564] = ItemType.Clock; + mappings[565] = ItemType.GlowstoneDust; + mappings[566] = ItemType.Cod; + mappings[567] = ItemType.Salmon; + mappings[568] = ItemType.TropicalFish; + mappings[569] = ItemType.Pufferfish; + mappings[570] = ItemType.CookedCod; + mappings[571] = ItemType.CookedSalmon; + mappings[572] = ItemType.InkSac; + mappings[573] = ItemType.RedDye; + mappings[574] = ItemType.GreenDye; + mappings[575] = ItemType.CocoaBeans; + mappings[576] = ItemType.LapisLazuli; + mappings[577] = ItemType.PurpleDye; + mappings[578] = ItemType.CyanDye; + mappings[579] = ItemType.LightGrayDye; + mappings[580] = ItemType.GrayDye; + mappings[581] = ItemType.PinkDye; + mappings[582] = ItemType.LimeDye; + mappings[583] = ItemType.YellowDye; + mappings[584] = ItemType.LightBlueDye; + mappings[585] = ItemType.MagentaDye; + mappings[586] = ItemType.OrangeDye; + mappings[587] = ItemType.BoneMeal; + mappings[588] = ItemType.Bone; + mappings[589] = ItemType.Sugar; + mappings[590] = ItemType.Cake; + mappings[591] = ItemType.WhiteBed; + mappings[592] = ItemType.OrangeBed; + mappings[593] = ItemType.MagentaBed; + mappings[594] = ItemType.LightBlueBed; + mappings[595] = ItemType.YellowBed; + mappings[596] = ItemType.LimeBed; + mappings[597] = ItemType.PinkBed; + mappings[598] = ItemType.GrayBed; + mappings[599] = ItemType.LightGrayBed; + mappings[600] = ItemType.CyanBed; + mappings[601] = ItemType.PurpleBed; + mappings[602] = ItemType.BlueBed; + mappings[603] = ItemType.BrownBed; + mappings[604] = ItemType.GreenBed; + mappings[605] = ItemType.RedBed; + mappings[606] = ItemType.BlackBed; + mappings[607] = ItemType.Cookie; + mappings[608] = ItemType.FilledMap; + mappings[609] = ItemType.Shears; + mappings[610] = ItemType.MelonSlice; + mappings[611] = ItemType.DriedKelp; + mappings[612] = ItemType.PumpkinSeeds; + mappings[613] = ItemType.MelonSeeds; + mappings[614] = ItemType.Beef; + mappings[615] = ItemType.CookedBeef; + mappings[616] = ItemType.Chicken; + mappings[617] = ItemType.CookedChicken; + mappings[618] = ItemType.RottenFlesh; + mappings[619] = ItemType.EnderPearl; + mappings[620] = ItemType.BlazeRod; + mappings[621] = ItemType.GhastTear; + mappings[622] = ItemType.GoldNugget; + mappings[623] = ItemType.NetherWart; + mappings[624] = ItemType.Potion; + mappings[625] = ItemType.GlassBottle; + mappings[626] = ItemType.SpiderEye; + mappings[627] = ItemType.FermentedSpiderEye; + mappings[628] = ItemType.BlazePowder; + mappings[629] = ItemType.MagmaCream; + mappings[630] = ItemType.BrewingStand; + mappings[631] = ItemType.Cauldron; + mappings[632] = ItemType.EnderEye; + mappings[633] = ItemType.GlisteringMelonSlice; + mappings[634] = ItemType.BatSpawnEgg; + mappings[635] = ItemType.BlazeSpawnEgg; + mappings[636] = ItemType.CaveSpiderSpawnEgg; + mappings[637] = ItemType.ChickenSpawnEgg; + mappings[638] = ItemType.CodSpawnEgg; + mappings[639] = ItemType.CowSpawnEgg; + mappings[640] = ItemType.CreeperSpawnEgg; + mappings[641] = ItemType.DolphinSpawnEgg; + mappings[642] = ItemType.DonkeySpawnEgg; + mappings[643] = ItemType.DrownedSpawnEgg; + mappings[644] = ItemType.ElderGuardianSpawnEgg; + mappings[645] = ItemType.EndermanSpawnEgg; + mappings[646] = ItemType.EndermiteSpawnEgg; + mappings[647] = ItemType.EvokerSpawnEgg; + mappings[648] = ItemType.GhastSpawnEgg; + mappings[649] = ItemType.GuardianSpawnEgg; + mappings[650] = ItemType.HorseSpawnEgg; + mappings[651] = ItemType.HuskSpawnEgg; + mappings[652] = ItemType.LlamaSpawnEgg; + mappings[653] = ItemType.MagmaCubeSpawnEgg; + mappings[654] = ItemType.MooshroomSpawnEgg; + mappings[655] = ItemType.MuleSpawnEgg; + mappings[656] = ItemType.OcelotSpawnEgg; + mappings[657] = ItemType.ParrotSpawnEgg; + mappings[658] = ItemType.PhantomSpawnEgg; + mappings[659] = ItemType.PigSpawnEgg; + mappings[660] = ItemType.PolarBearSpawnEgg; + mappings[661] = ItemType.PufferfishSpawnEgg; + mappings[662] = ItemType.RabbitSpawnEgg; + mappings[663] = ItemType.SalmonSpawnEgg; + mappings[664] = ItemType.SheepSpawnEgg; + mappings[665] = ItemType.ShulkerSpawnEgg; + mappings[666] = ItemType.SilverfishSpawnEgg; + mappings[667] = ItemType.SkeletonSpawnEgg; + mappings[668] = ItemType.SkeletonHorseSpawnEgg; + mappings[669] = ItemType.SlimeSpawnEgg; + mappings[670] = ItemType.SpiderSpawnEgg; + mappings[671] = ItemType.SquidSpawnEgg; + mappings[672] = ItemType.StraySpawnEgg; + mappings[673] = ItemType.TropicalFishSpawnEgg; + mappings[674] = ItemType.TurtleSpawnEgg; + mappings[675] = ItemType.VexSpawnEgg; + mappings[676] = ItemType.VillagerSpawnEgg; + mappings[677] = ItemType.VindicatorSpawnEgg; + mappings[678] = ItemType.WitchSpawnEgg; + mappings[679] = ItemType.WitherSkeletonSpawnEgg; + mappings[680] = ItemType.WolfSpawnEgg; + mappings[681] = ItemType.ZombieSpawnEgg; + mappings[682] = ItemType.ZombieHorseSpawnEgg; + mappings[683] = ItemType.ZombifiedPiglinSpawnEgg; + mappings[684] = ItemType.ZombieVillagerSpawnEgg; + mappings[685] = ItemType.ExperienceBottle; + mappings[686] = ItemType.FireCharge; + mappings[687] = ItemType.WritableBook; + mappings[688] = ItemType.WrittenBook; + mappings[689] = ItemType.Emerald; + mappings[690] = ItemType.ItemFrame; + mappings[691] = ItemType.FlowerPot; + mappings[692] = ItemType.Carrot; + mappings[693] = ItemType.Potato; + mappings[694] = ItemType.BakedPotato; + mappings[695] = ItemType.PoisonousPotato; + mappings[696] = ItemType.Map; + mappings[697] = ItemType.GoldenCarrot; + mappings[698] = ItemType.SkeletonSkull; + mappings[699] = ItemType.WitherSkeletonSkull; + mappings[700] = ItemType.PlayerHead; + mappings[701] = ItemType.ZombieHead; + mappings[702] = ItemType.CreeperHead; + mappings[703] = ItemType.DragonHead; + mappings[704] = ItemType.CarrotOnAStick; + mappings[705] = ItemType.NetherStar; + mappings[706] = ItemType.PumpkinPie; + mappings[707] = ItemType.FireworkRocket; + mappings[708] = ItemType.FireworkStar; + mappings[709] = ItemType.EnchantedBook; + mappings[710] = ItemType.NetherBrick; + mappings[711] = ItemType.Quartz; + mappings[712] = ItemType.TntMinecart; + mappings[713] = ItemType.HopperMinecart; + mappings[714] = ItemType.PrismarineShard; + mappings[715] = ItemType.PrismarineCrystals; + mappings[716] = ItemType.Rabbit; + mappings[717] = ItemType.CookedRabbit; + mappings[718] = ItemType.RabbitStew; + mappings[719] = ItemType.RabbitFoot; + mappings[720] = ItemType.RabbitHide; + mappings[721] = ItemType.ArmorStand; + mappings[722] = ItemType.IronHorseArmor; + mappings[723] = ItemType.GoldenHorseArmor; + mappings[724] = ItemType.DiamondHorseArmor; + mappings[725] = ItemType.Lead; + mappings[726] = ItemType.NameTag; + mappings[727] = ItemType.CommandBlockMinecart; + mappings[728] = ItemType.Mutton; + mappings[729] = ItemType.CookedMutton; + mappings[730] = ItemType.WhiteBanner; + mappings[731] = ItemType.OrangeBanner; + mappings[732] = ItemType.MagentaBanner; + mappings[733] = ItemType.LightBlueBanner; + mappings[734] = ItemType.YellowBanner; + mappings[735] = ItemType.LimeBanner; + mappings[736] = ItemType.PinkBanner; + mappings[737] = ItemType.GrayBanner; + mappings[738] = ItemType.LightGrayBanner; + mappings[739] = ItemType.CyanBanner; + mappings[740] = ItemType.PurpleBanner; + mappings[741] = ItemType.BlueBanner; + mappings[742] = ItemType.BrownBanner; + mappings[743] = ItemType.GreenBanner; + mappings[744] = ItemType.RedBanner; + mappings[745] = ItemType.BlackBanner; + mappings[746] = ItemType.EndCrystal; + mappings[747] = ItemType.ChorusFruit; + mappings[748] = ItemType.PoppedChorusFruit; + mappings[749] = ItemType.Beetroot; + mappings[750] = ItemType.BeetrootSeeds; + mappings[751] = ItemType.BeetrootSoup; + mappings[752] = ItemType.DragonBreath; + mappings[753] = ItemType.SplashPotion; + mappings[754] = ItemType.SpectralArrow; + mappings[755] = ItemType.TippedArrow; + mappings[756] = ItemType.LingeringPotion; + mappings[757] = ItemType.Shield; + mappings[758] = ItemType.Elytra; + mappings[759] = ItemType.SpruceBoat; + mappings[760] = ItemType.BirchBoat; + mappings[761] = ItemType.JungleBoat; + mappings[762] = ItemType.AcaciaBoat; + mappings[763] = ItemType.DarkOakBoat; + mappings[764] = ItemType.TotemOfUndying; + mappings[765] = ItemType.ShulkerShell; + mappings[766] = ItemType.IronNugget; + mappings[767] = ItemType.KnowledgeBook; + mappings[768] = ItemType.DebugStick; + mappings[769] = ItemType.MusicDisc13; + mappings[770] = ItemType.MusicDiscCat; + mappings[771] = ItemType.MusicDiscBlocks; + mappings[772] = ItemType.MusicDiscChirp; + mappings[773] = ItemType.MusicDiscFar; + mappings[774] = ItemType.MusicDiscMall; + mappings[775] = ItemType.MusicDiscMellohi; + mappings[776] = ItemType.MusicDiscStal; + mappings[777] = ItemType.MusicDiscStrad; + mappings[778] = ItemType.MusicDiscWard; + mappings[779] = ItemType.MusicDisc11; + mappings[780] = ItemType.MusicDiscWait; + mappings[781] = ItemType.Trident; + mappings[782] = ItemType.PhantomMembrane; + mappings[783] = ItemType.NautilusShell; + mappings[784] = ItemType.HeartOfTheSea; + } + + protected override Dictionary GetDict() + { + return mappings; + } + } +} diff --git a/MinecraftClient/Inventory/ItemPalettes/ItemPalette1132.cs b/MinecraftClient/Inventory/ItemPalettes/ItemPalette1132.cs new file mode 100644 index 00000000..da38b041 --- /dev/null +++ b/MinecraftClient/Inventory/ItemPalettes/ItemPalette1132.cs @@ -0,0 +1,808 @@ +using System.Collections.Generic; + +namespace MinecraftClient.Inventory.ItemPalettes +{ + public class ItemPalette1132 : ItemPalette + { + private static readonly Dictionary mappings = new(); + + static ItemPalette1132() + { + mappings[0] = ItemType.Air; + mappings[1] = ItemType.Stone; + mappings[2] = ItemType.Granite; + mappings[3] = ItemType.PolishedGranite; + mappings[4] = ItemType.Diorite; + mappings[5] = ItemType.PolishedDiorite; + mappings[6] = ItemType.Andesite; + mappings[7] = ItemType.PolishedAndesite; + mappings[8] = ItemType.GrassBlock; + mappings[9] = ItemType.Dirt; + mappings[10] = ItemType.CoarseDirt; + mappings[11] = ItemType.Podzol; + mappings[12] = ItemType.Cobblestone; + mappings[13] = ItemType.OakPlanks; + mappings[14] = ItemType.SprucePlanks; + mappings[15] = ItemType.BirchPlanks; + mappings[16] = ItemType.JunglePlanks; + mappings[17] = ItemType.AcaciaPlanks; + mappings[18] = ItemType.DarkOakPlanks; + mappings[19] = ItemType.OakSapling; + mappings[20] = ItemType.SpruceSapling; + mappings[21] = ItemType.BirchSapling; + mappings[22] = ItemType.JungleSapling; + mappings[23] = ItemType.AcaciaSapling; + mappings[24] = ItemType.DarkOakSapling; + mappings[25] = ItemType.Bedrock; + mappings[26] = ItemType.Sand; + mappings[27] = ItemType.RedSand; + mappings[28] = ItemType.Gravel; + mappings[29] = ItemType.GoldOre; + mappings[30] = ItemType.IronOre; + mappings[31] = ItemType.CoalOre; + mappings[32] = ItemType.OakLog; + mappings[33] = ItemType.SpruceLog; + mappings[34] = ItemType.BirchLog; + mappings[35] = ItemType.JungleLog; + mappings[36] = ItemType.AcaciaLog; + mappings[37] = ItemType.DarkOakLog; + mappings[38] = ItemType.StrippedOakLog; + mappings[39] = ItemType.StrippedSpruceLog; + mappings[40] = ItemType.StrippedBirchLog; + mappings[41] = ItemType.StrippedJungleLog; + mappings[42] = ItemType.StrippedAcaciaLog; + mappings[43] = ItemType.StrippedDarkOakLog; + mappings[44] = ItemType.StrippedOakWood; + mappings[45] = ItemType.StrippedSpruceWood; + mappings[46] = ItemType.StrippedBirchWood; + mappings[47] = ItemType.StrippedJungleWood; + mappings[48] = ItemType.StrippedAcaciaWood; + mappings[49] = ItemType.StrippedDarkOakWood; + mappings[50] = ItemType.OakWood; + mappings[51] = ItemType.SpruceWood; + mappings[52] = ItemType.BirchWood; + mappings[53] = ItemType.JungleWood; + mappings[54] = ItemType.AcaciaWood; + mappings[55] = ItemType.DarkOakWood; + mappings[56] = ItemType.OakLeaves; + mappings[57] = ItemType.SpruceLeaves; + mappings[58] = ItemType.BirchLeaves; + mappings[59] = ItemType.JungleLeaves; + mappings[60] = ItemType.AcaciaLeaves; + mappings[61] = ItemType.DarkOakLeaves; + mappings[62] = ItemType.Sponge; + mappings[63] = ItemType.WetSponge; + mappings[64] = ItemType.Glass; + mappings[65] = ItemType.LapisOre; + mappings[66] = ItemType.LapisBlock; + mappings[67] = ItemType.Dispenser; + mappings[68] = ItemType.Sandstone; + mappings[69] = ItemType.ChiseledSandstone; + mappings[70] = ItemType.CutSandstone; + mappings[71] = ItemType.NoteBlock; + mappings[72] = ItemType.PoweredRail; + mappings[73] = ItemType.DetectorRail; + mappings[74] = ItemType.StickyPiston; + mappings[75] = ItemType.Cobweb; + mappings[76] = ItemType.ShortGrass; + mappings[77] = ItemType.Fern; + mappings[78] = ItemType.DeadBush; + mappings[79] = ItemType.Seagrass; + mappings[80] = ItemType.SeaPickle; + mappings[81] = ItemType.Piston; + mappings[82] = ItemType.WhiteWool; + mappings[83] = ItemType.OrangeWool; + mappings[84] = ItemType.MagentaWool; + mappings[85] = ItemType.LightBlueWool; + mappings[86] = ItemType.YellowWool; + mappings[87] = ItemType.LimeWool; + mappings[88] = ItemType.PinkWool; + mappings[89] = ItemType.GrayWool; + mappings[90] = ItemType.LightGrayWool; + mappings[91] = ItemType.CyanWool; + mappings[92] = ItemType.PurpleWool; + mappings[93] = ItemType.BlueWool; + mappings[94] = ItemType.BrownWool; + mappings[95] = ItemType.GreenWool; + mappings[96] = ItemType.RedWool; + mappings[97] = ItemType.BlackWool; + mappings[98] = ItemType.Dandelion; + mappings[99] = ItemType.Poppy; + mappings[100] = ItemType.BlueOrchid; + mappings[101] = ItemType.Allium; + mappings[102] = ItemType.AzureBluet; + mappings[103] = ItemType.RedTulip; + mappings[104] = ItemType.OrangeTulip; + mappings[105] = ItemType.WhiteTulip; + mappings[106] = ItemType.PinkTulip; + mappings[107] = ItemType.OxeyeDaisy; + mappings[108] = ItemType.BrownMushroom; + mappings[109] = ItemType.RedMushroom; + mappings[110] = ItemType.GoldBlock; + mappings[111] = ItemType.IronBlock; + mappings[112] = ItemType.OakSlab; + mappings[113] = ItemType.SpruceSlab; + mappings[114] = ItemType.BirchSlab; + mappings[115] = ItemType.JungleSlab; + mappings[116] = ItemType.AcaciaSlab; + mappings[117] = ItemType.DarkOakSlab; + mappings[118] = ItemType.StoneSlab; + mappings[119] = ItemType.SandstoneSlab; + mappings[120] = ItemType.PetrifiedOakSlab; + mappings[121] = ItemType.CobblestoneSlab; + mappings[122] = ItemType.BrickSlab; + mappings[123] = ItemType.StoneBrickSlab; + mappings[124] = ItemType.NetherBrickSlab; + mappings[125] = ItemType.QuartzSlab; + mappings[126] = ItemType.RedSandstoneSlab; + mappings[127] = ItemType.PurpurSlab; + mappings[128] = ItemType.PrismarineSlab; + mappings[129] = ItemType.PrismarineBrickSlab; + mappings[130] = ItemType.DarkPrismarineSlab; + mappings[131] = ItemType.SmoothQuartz; + mappings[132] = ItemType.SmoothRedSandstone; + mappings[133] = ItemType.SmoothSandstone; + mappings[134] = ItemType.SmoothStone; + mappings[135] = ItemType.Bricks; + mappings[136] = ItemType.Tnt; + mappings[137] = ItemType.Bookshelf; + mappings[138] = ItemType.MossyCobblestone; + mappings[139] = ItemType.Obsidian; + mappings[140] = ItemType.Torch; + mappings[141] = ItemType.EndRod; + mappings[142] = ItemType.ChorusPlant; + mappings[143] = ItemType.ChorusFlower; + mappings[144] = ItemType.PurpurBlock; + mappings[145] = ItemType.PurpurPillar; + mappings[146] = ItemType.PurpurStairs; + mappings[147] = ItemType.Spawner; + mappings[148] = ItemType.OakStairs; + mappings[149] = ItemType.Chest; + mappings[150] = ItemType.DiamondOre; + mappings[151] = ItemType.DiamondBlock; + mappings[152] = ItemType.CraftingTable; + mappings[153] = ItemType.Farmland; + mappings[154] = ItemType.Furnace; + mappings[155] = ItemType.Ladder; + mappings[156] = ItemType.Rail; + mappings[157] = ItemType.CobblestoneStairs; + mappings[158] = ItemType.Lever; + mappings[159] = ItemType.StonePressurePlate; + mappings[160] = ItemType.OakPressurePlate; + mappings[161] = ItemType.SprucePressurePlate; + mappings[162] = ItemType.BirchPressurePlate; + mappings[163] = ItemType.JunglePressurePlate; + mappings[164] = ItemType.AcaciaPressurePlate; + mappings[165] = ItemType.DarkOakPressurePlate; + mappings[166] = ItemType.RedstoneOre; + mappings[167] = ItemType.RedstoneTorch; + mappings[168] = ItemType.StoneButton; + mappings[169] = ItemType.Snow; + mappings[170] = ItemType.Ice; + mappings[171] = ItemType.SnowBlock; + mappings[172] = ItemType.Cactus; + mappings[173] = ItemType.Clay; + mappings[174] = ItemType.Jukebox; + mappings[175] = ItemType.OakFence; + mappings[176] = ItemType.SpruceFence; + mappings[177] = ItemType.BirchFence; + mappings[178] = ItemType.JungleFence; + mappings[179] = ItemType.AcaciaFence; + mappings[180] = ItemType.DarkOakFence; + mappings[181] = ItemType.Pumpkin; + mappings[182] = ItemType.CarvedPumpkin; + mappings[183] = ItemType.Netherrack; + mappings[184] = ItemType.SoulSand; + mappings[185] = ItemType.Glowstone; + mappings[186] = ItemType.JackOLantern; + mappings[187] = ItemType.OakTrapdoor; + mappings[188] = ItemType.SpruceTrapdoor; + mappings[189] = ItemType.BirchTrapdoor; + mappings[190] = ItemType.JungleTrapdoor; + mappings[191] = ItemType.AcaciaTrapdoor; + mappings[192] = ItemType.DarkOakTrapdoor; + mappings[193] = ItemType.InfestedStone; + mappings[194] = ItemType.InfestedCobblestone; + mappings[195] = ItemType.InfestedStoneBricks; + mappings[196] = ItemType.InfestedMossyStoneBricks; + mappings[197] = ItemType.InfestedCrackedStoneBricks; + mappings[198] = ItemType.InfestedChiseledStoneBricks; + mappings[199] = ItemType.StoneBricks; + mappings[200] = ItemType.MossyStoneBricks; + mappings[201] = ItemType.CrackedStoneBricks; + mappings[202] = ItemType.ChiseledStoneBricks; + mappings[203] = ItemType.BrownMushroomBlock; + mappings[204] = ItemType.RedMushroomBlock; + mappings[205] = ItemType.MushroomStem; + mappings[206] = ItemType.IronBars; + mappings[207] = ItemType.GlassPane; + mappings[208] = ItemType.Melon; + mappings[209] = ItemType.Vine; + mappings[210] = ItemType.OakFenceGate; + mappings[211] = ItemType.SpruceFenceGate; + mappings[212] = ItemType.BirchFenceGate; + mappings[213] = ItemType.JungleFenceGate; + mappings[214] = ItemType.AcaciaFenceGate; + mappings[215] = ItemType.DarkOakFenceGate; + mappings[216] = ItemType.BrickStairs; + mappings[217] = ItemType.StoneBrickStairs; + mappings[218] = ItemType.Mycelium; + mappings[219] = ItemType.LilyPad; + mappings[220] = ItemType.NetherBricks; + mappings[221] = ItemType.NetherBrickFence; + mappings[222] = ItemType.NetherBrickStairs; + mappings[223] = ItemType.EnchantingTable; + mappings[224] = ItemType.EndPortalFrame; + mappings[225] = ItemType.EndStone; + mappings[226] = ItemType.EndStoneBricks; + mappings[227] = ItemType.DragonEgg; + mappings[228] = ItemType.RedstoneLamp; + mappings[229] = ItemType.SandstoneStairs; + mappings[230] = ItemType.EmeraldOre; + mappings[231] = ItemType.EnderChest; + mappings[232] = ItemType.TripwireHook; + mappings[233] = ItemType.EmeraldBlock; + mappings[234] = ItemType.SpruceStairs; + mappings[235] = ItemType.BirchStairs; + mappings[236] = ItemType.JungleStairs; + mappings[237] = ItemType.CommandBlock; + mappings[238] = ItemType.Beacon; + mappings[239] = ItemType.CobblestoneWall; + mappings[240] = ItemType.MossyCobblestoneWall; + mappings[241] = ItemType.OakButton; + mappings[242] = ItemType.SpruceButton; + mappings[243] = ItemType.BirchButton; + mappings[244] = ItemType.JungleButton; + mappings[245] = ItemType.AcaciaButton; + mappings[246] = ItemType.DarkOakButton; + mappings[247] = ItemType.Anvil; + mappings[248] = ItemType.ChippedAnvil; + mappings[249] = ItemType.DamagedAnvil; + mappings[250] = ItemType.TrappedChest; + mappings[251] = ItemType.LightWeightedPressurePlate; + mappings[252] = ItemType.HeavyWeightedPressurePlate; + mappings[253] = ItemType.DaylightDetector; + mappings[254] = ItemType.RedstoneBlock; + mappings[255] = ItemType.NetherQuartzOre; + mappings[256] = ItemType.Hopper; + mappings[257] = ItemType.ChiseledQuartzBlock; + mappings[258] = ItemType.QuartzBlock; + mappings[259] = ItemType.QuartzPillar; + mappings[260] = ItemType.QuartzStairs; + mappings[261] = ItemType.ActivatorRail; + mappings[262] = ItemType.Dropper; + mappings[263] = ItemType.WhiteTerracotta; + mappings[264] = ItemType.OrangeTerracotta; + mappings[265] = ItemType.MagentaTerracotta; + mappings[266] = ItemType.LightBlueTerracotta; + mappings[267] = ItemType.YellowTerracotta; + mappings[268] = ItemType.LimeTerracotta; + mappings[269] = ItemType.PinkTerracotta; + mappings[270] = ItemType.GrayTerracotta; + mappings[271] = ItemType.LightGrayTerracotta; + mappings[272] = ItemType.CyanTerracotta; + mappings[273] = ItemType.PurpleTerracotta; + mappings[274] = ItemType.BlueTerracotta; + mappings[275] = ItemType.BrownTerracotta; + mappings[276] = ItemType.GreenTerracotta; + mappings[277] = ItemType.RedTerracotta; + mappings[278] = ItemType.BlackTerracotta; + mappings[279] = ItemType.Barrier; + mappings[280] = ItemType.IronTrapdoor; + mappings[281] = ItemType.HayBlock; + mappings[282] = ItemType.WhiteCarpet; + mappings[283] = ItemType.OrangeCarpet; + mappings[284] = ItemType.MagentaCarpet; + mappings[285] = ItemType.LightBlueCarpet; + mappings[286] = ItemType.YellowCarpet; + mappings[287] = ItemType.LimeCarpet; + mappings[288] = ItemType.PinkCarpet; + mappings[289] = ItemType.GrayCarpet; + mappings[290] = ItemType.LightGrayCarpet; + mappings[291] = ItemType.CyanCarpet; + mappings[292] = ItemType.PurpleCarpet; + mappings[293] = ItemType.BlueCarpet; + mappings[294] = ItemType.BrownCarpet; + mappings[295] = ItemType.GreenCarpet; + mappings[296] = ItemType.RedCarpet; + mappings[297] = ItemType.BlackCarpet; + mappings[298] = ItemType.Terracotta; + mappings[299] = ItemType.CoalBlock; + mappings[300] = ItemType.PackedIce; + mappings[301] = ItemType.AcaciaStairs; + mappings[302] = ItemType.DarkOakStairs; + mappings[303] = ItemType.SlimeBlock; + mappings[304] = ItemType.DirtPath; + mappings[305] = ItemType.Sunflower; + mappings[306] = ItemType.Lilac; + mappings[307] = ItemType.RoseBush; + mappings[308] = ItemType.Peony; + mappings[309] = ItemType.TallGrass; + mappings[310] = ItemType.LargeFern; + mappings[311] = ItemType.WhiteStainedGlass; + mappings[312] = ItemType.OrangeStainedGlass; + mappings[313] = ItemType.MagentaStainedGlass; + mappings[314] = ItemType.LightBlueStainedGlass; + mappings[315] = ItemType.YellowStainedGlass; + mappings[316] = ItemType.LimeStainedGlass; + mappings[317] = ItemType.PinkStainedGlass; + mappings[318] = ItemType.GrayStainedGlass; + mappings[319] = ItemType.LightGrayStainedGlass; + mappings[320] = ItemType.CyanStainedGlass; + mappings[321] = ItemType.PurpleStainedGlass; + mappings[322] = ItemType.BlueStainedGlass; + mappings[323] = ItemType.BrownStainedGlass; + mappings[324] = ItemType.GreenStainedGlass; + mappings[325] = ItemType.RedStainedGlass; + mappings[326] = ItemType.BlackStainedGlass; + mappings[327] = ItemType.WhiteStainedGlassPane; + mappings[328] = ItemType.OrangeStainedGlassPane; + mappings[329] = ItemType.MagentaStainedGlassPane; + mappings[330] = ItemType.LightBlueStainedGlassPane; + mappings[331] = ItemType.YellowStainedGlassPane; + mappings[332] = ItemType.LimeStainedGlassPane; + mappings[333] = ItemType.PinkStainedGlassPane; + mappings[334] = ItemType.GrayStainedGlassPane; + mappings[335] = ItemType.LightGrayStainedGlassPane; + mappings[336] = ItemType.CyanStainedGlassPane; + mappings[337] = ItemType.PurpleStainedGlassPane; + mappings[338] = ItemType.BlueStainedGlassPane; + mappings[339] = ItemType.BrownStainedGlassPane; + mappings[340] = ItemType.GreenStainedGlassPane; + mappings[341] = ItemType.RedStainedGlassPane; + mappings[342] = ItemType.BlackStainedGlassPane; + mappings[343] = ItemType.Prismarine; + mappings[344] = ItemType.PrismarineBricks; + mappings[345] = ItemType.DarkPrismarine; + mappings[346] = ItemType.PrismarineStairs; + mappings[347] = ItemType.PrismarineBrickStairs; + mappings[348] = ItemType.DarkPrismarineStairs; + mappings[349] = ItemType.SeaLantern; + mappings[350] = ItemType.RedSandstone; + mappings[351] = ItemType.ChiseledRedSandstone; + mappings[352] = ItemType.CutRedSandstone; + mappings[353] = ItemType.RedSandstoneStairs; + mappings[354] = ItemType.RepeatingCommandBlock; + mappings[355] = ItemType.ChainCommandBlock; + mappings[356] = ItemType.MagmaBlock; + mappings[357] = ItemType.NetherWartBlock; + mappings[358] = ItemType.RedNetherBricks; + mappings[359] = ItemType.BoneBlock; + mappings[360] = ItemType.StructureVoid; + mappings[361] = ItemType.Observer; + mappings[362] = ItemType.ShulkerBox; + mappings[363] = ItemType.WhiteShulkerBox; + mappings[364] = ItemType.OrangeShulkerBox; + mappings[365] = ItemType.MagentaShulkerBox; + mappings[366] = ItemType.LightBlueShulkerBox; + mappings[367] = ItemType.YellowShulkerBox; + mappings[368] = ItemType.LimeShulkerBox; + mappings[369] = ItemType.PinkShulkerBox; + mappings[370] = ItemType.GrayShulkerBox; + mappings[371] = ItemType.LightGrayShulkerBox; + mappings[372] = ItemType.CyanShulkerBox; + mappings[373] = ItemType.PurpleShulkerBox; + mappings[374] = ItemType.BlueShulkerBox; + mappings[375] = ItemType.BrownShulkerBox; + mappings[376] = ItemType.GreenShulkerBox; + mappings[377] = ItemType.RedShulkerBox; + mappings[378] = ItemType.BlackShulkerBox; + mappings[379] = ItemType.WhiteGlazedTerracotta; + mappings[380] = ItemType.OrangeGlazedTerracotta; + mappings[381] = ItemType.MagentaGlazedTerracotta; + mappings[382] = ItemType.LightBlueGlazedTerracotta; + mappings[383] = ItemType.YellowGlazedTerracotta; + mappings[384] = ItemType.LimeGlazedTerracotta; + mappings[385] = ItemType.PinkGlazedTerracotta; + mappings[386] = ItemType.GrayGlazedTerracotta; + mappings[387] = ItemType.LightGrayGlazedTerracotta; + mappings[388] = ItemType.CyanGlazedTerracotta; + mappings[389] = ItemType.PurpleGlazedTerracotta; + mappings[390] = ItemType.BlueGlazedTerracotta; + mappings[391] = ItemType.BrownGlazedTerracotta; + mappings[392] = ItemType.GreenGlazedTerracotta; + mappings[393] = ItemType.RedGlazedTerracotta; + mappings[394] = ItemType.BlackGlazedTerracotta; + mappings[395] = ItemType.WhiteConcrete; + mappings[396] = ItemType.OrangeConcrete; + mappings[397] = ItemType.MagentaConcrete; + mappings[398] = ItemType.LightBlueConcrete; + mappings[399] = ItemType.YellowConcrete; + mappings[400] = ItemType.LimeConcrete; + mappings[401] = ItemType.PinkConcrete; + mappings[402] = ItemType.GrayConcrete; + mappings[403] = ItemType.LightGrayConcrete; + mappings[404] = ItemType.CyanConcrete; + mappings[405] = ItemType.PurpleConcrete; + mappings[406] = ItemType.BlueConcrete; + mappings[407] = ItemType.BrownConcrete; + mappings[408] = ItemType.GreenConcrete; + mappings[409] = ItemType.RedConcrete; + mappings[410] = ItemType.BlackConcrete; + mappings[411] = ItemType.WhiteConcretePowder; + mappings[412] = ItemType.OrangeConcretePowder; + mappings[413] = ItemType.MagentaConcretePowder; + mappings[414] = ItemType.LightBlueConcretePowder; + mappings[415] = ItemType.YellowConcretePowder; + mappings[416] = ItemType.LimeConcretePowder; + mappings[417] = ItemType.PinkConcretePowder; + mappings[418] = ItemType.GrayConcretePowder; + mappings[419] = ItemType.LightGrayConcretePowder; + mappings[420] = ItemType.CyanConcretePowder; + mappings[421] = ItemType.PurpleConcretePowder; + mappings[422] = ItemType.BlueConcretePowder; + mappings[423] = ItemType.BrownConcretePowder; + mappings[424] = ItemType.GreenConcretePowder; + mappings[425] = ItemType.RedConcretePowder; + mappings[426] = ItemType.BlackConcretePowder; + mappings[427] = ItemType.TurtleEgg; + mappings[428] = ItemType.DeadTubeCoralBlock; + mappings[429] = ItemType.DeadBrainCoralBlock; + mappings[430] = ItemType.DeadBubbleCoralBlock; + mappings[431] = ItemType.DeadFireCoralBlock; + mappings[432] = ItemType.DeadHornCoralBlock; + mappings[433] = ItemType.TubeCoralBlock; + mappings[434] = ItemType.BrainCoralBlock; + mappings[435] = ItemType.BubbleCoralBlock; + mappings[436] = ItemType.FireCoralBlock; + mappings[437] = ItemType.HornCoralBlock; + mappings[438] = ItemType.TubeCoral; + mappings[439] = ItemType.BrainCoral; + mappings[440] = ItemType.BubbleCoral; + mappings[441] = ItemType.FireCoral; + mappings[442] = ItemType.HornCoral; + mappings[443] = ItemType.DeadBrainCoral; + mappings[444] = ItemType.DeadBubbleCoral; + mappings[445] = ItemType.DeadFireCoral; + mappings[446] = ItemType.DeadHornCoral; + mappings[447] = ItemType.DeadTubeCoral; + mappings[448] = ItemType.TubeCoralFan; + mappings[449] = ItemType.BrainCoralFan; + mappings[450] = ItemType.BubbleCoralFan; + mappings[451] = ItemType.FireCoralFan; + mappings[452] = ItemType.HornCoralFan; + mappings[453] = ItemType.DeadTubeCoralFan; + mappings[454] = ItemType.DeadBrainCoralFan; + mappings[455] = ItemType.DeadBubbleCoralFan; + mappings[456] = ItemType.DeadFireCoralFan; + mappings[457] = ItemType.DeadHornCoralFan; + mappings[458] = ItemType.BlueIce; + mappings[459] = ItemType.Conduit; + mappings[460] = ItemType.IronDoor; + mappings[461] = ItemType.OakDoor; + mappings[462] = ItemType.SpruceDoor; + mappings[463] = ItemType.BirchDoor; + mappings[464] = ItemType.JungleDoor; + mappings[465] = ItemType.AcaciaDoor; + mappings[466] = ItemType.DarkOakDoor; + mappings[467] = ItemType.Repeater; + mappings[468] = ItemType.Comparator; + mappings[469] = ItemType.StructureBlock; + mappings[470] = ItemType.TurtleHelmet; + mappings[471] = ItemType.TurtleScute; + mappings[472] = ItemType.IronShovel; + mappings[473] = ItemType.IronPickaxe; + mappings[474] = ItemType.IronAxe; + mappings[475] = ItemType.FlintAndSteel; + mappings[476] = ItemType.Apple; + mappings[477] = ItemType.Bow; + mappings[478] = ItemType.Arrow; + mappings[479] = ItemType.Coal; + mappings[480] = ItemType.Charcoal; + mappings[481] = ItemType.Diamond; + mappings[482] = ItemType.IronIngot; + mappings[483] = ItemType.GoldIngot; + mappings[484] = ItemType.IronSword; + mappings[485] = ItemType.WoodenSword; + mappings[486] = ItemType.WoodenShovel; + mappings[487] = ItemType.WoodenPickaxe; + mappings[488] = ItemType.WoodenAxe; + mappings[489] = ItemType.StoneSword; + mappings[490] = ItemType.StoneShovel; + mappings[491] = ItemType.StonePickaxe; + mappings[492] = ItemType.StoneAxe; + mappings[493] = ItemType.DiamondSword; + mappings[494] = ItemType.DiamondShovel; + mappings[495] = ItemType.DiamondPickaxe; + mappings[496] = ItemType.DiamondAxe; + mappings[497] = ItemType.Stick; + mappings[498] = ItemType.Bowl; + mappings[499] = ItemType.MushroomStew; + mappings[500] = ItemType.GoldenSword; + mappings[501] = ItemType.GoldenShovel; + mappings[502] = ItemType.GoldenPickaxe; + mappings[503] = ItemType.GoldenAxe; + mappings[504] = ItemType.String; + mappings[505] = ItemType.Feather; + mappings[506] = ItemType.Gunpowder; + mappings[507] = ItemType.WoodenHoe; + mappings[508] = ItemType.StoneHoe; + mappings[509] = ItemType.IronHoe; + mappings[510] = ItemType.DiamondHoe; + mappings[511] = ItemType.GoldenHoe; + mappings[512] = ItemType.WheatSeeds; + mappings[513] = ItemType.Wheat; + mappings[514] = ItemType.Bread; + mappings[515] = ItemType.LeatherHelmet; + mappings[516] = ItemType.LeatherChestplate; + mappings[517] = ItemType.LeatherLeggings; + mappings[518] = ItemType.LeatherBoots; + mappings[519] = ItemType.ChainmailHelmet; + mappings[520] = ItemType.ChainmailChestplate; + mappings[521] = ItemType.ChainmailLeggings; + mappings[522] = ItemType.ChainmailBoots; + mappings[523] = ItemType.IronHelmet; + mappings[524] = ItemType.IronChestplate; + mappings[525] = ItemType.IronLeggings; + mappings[526] = ItemType.IronBoots; + mappings[527] = ItemType.DiamondHelmet; + mappings[528] = ItemType.DiamondChestplate; + mappings[529] = ItemType.DiamondLeggings; + mappings[530] = ItemType.DiamondBoots; + mappings[531] = ItemType.GoldenHelmet; + mappings[532] = ItemType.GoldenChestplate; + mappings[533] = ItemType.GoldenLeggings; + mappings[534] = ItemType.GoldenBoots; + mappings[535] = ItemType.Flint; + mappings[536] = ItemType.Porkchop; + mappings[537] = ItemType.CookedPorkchop; + mappings[538] = ItemType.Painting; + mappings[539] = ItemType.GoldenApple; + mappings[540] = ItemType.EnchantedGoldenApple; + mappings[541] = ItemType.OakSign; + mappings[542] = ItemType.Bucket; + mappings[543] = ItemType.WaterBucket; + mappings[544] = ItemType.LavaBucket; + mappings[545] = ItemType.Minecart; + mappings[546] = ItemType.Saddle; + mappings[547] = ItemType.Redstone; + mappings[548] = ItemType.Snowball; + mappings[549] = ItemType.OakBoat; + mappings[550] = ItemType.Leather; + mappings[551] = ItemType.MilkBucket; + mappings[552] = ItemType.PufferfishBucket; + mappings[553] = ItemType.SalmonBucket; + mappings[554] = ItemType.CodBucket; + mappings[555] = ItemType.TropicalFishBucket; + mappings[556] = ItemType.Brick; + mappings[557] = ItemType.ClayBall; + mappings[558] = ItemType.SugarCane; + mappings[559] = ItemType.Kelp; + mappings[560] = ItemType.DriedKelpBlock; + mappings[561] = ItemType.Paper; + mappings[562] = ItemType.Book; + mappings[563] = ItemType.SlimeBall; + mappings[564] = ItemType.ChestMinecart; + mappings[565] = ItemType.FurnaceMinecart; + mappings[566] = ItemType.Egg; + mappings[567] = ItemType.Compass; + mappings[568] = ItemType.FishingRod; + mappings[569] = ItemType.Clock; + mappings[570] = ItemType.GlowstoneDust; + mappings[571] = ItemType.Cod; + mappings[572] = ItemType.Salmon; + mappings[573] = ItemType.TropicalFish; + mappings[574] = ItemType.Pufferfish; + mappings[575] = ItemType.CookedCod; + mappings[576] = ItemType.CookedSalmon; + mappings[577] = ItemType.InkSac; + mappings[578] = ItemType.RedDye; + mappings[579] = ItemType.GreenDye; + mappings[580] = ItemType.CocoaBeans; + mappings[581] = ItemType.LapisLazuli; + mappings[582] = ItemType.PurpleDye; + mappings[583] = ItemType.CyanDye; + mappings[584] = ItemType.LightGrayDye; + mappings[585] = ItemType.GrayDye; + mappings[586] = ItemType.PinkDye; + mappings[587] = ItemType.LimeDye; + mappings[588] = ItemType.YellowDye; + mappings[589] = ItemType.LightBlueDye; + mappings[590] = ItemType.MagentaDye; + mappings[591] = ItemType.OrangeDye; + mappings[592] = ItemType.BoneMeal; + mappings[593] = ItemType.Bone; + mappings[594] = ItemType.Sugar; + mappings[595] = ItemType.Cake; + mappings[596] = ItemType.WhiteBed; + mappings[597] = ItemType.OrangeBed; + mappings[598] = ItemType.MagentaBed; + mappings[599] = ItemType.LightBlueBed; + mappings[600] = ItemType.YellowBed; + mappings[601] = ItemType.LimeBed; + mappings[602] = ItemType.PinkBed; + mappings[603] = ItemType.GrayBed; + mappings[604] = ItemType.LightGrayBed; + mappings[605] = ItemType.CyanBed; + mappings[606] = ItemType.PurpleBed; + mappings[607] = ItemType.BlueBed; + mappings[608] = ItemType.BrownBed; + mappings[609] = ItemType.GreenBed; + mappings[610] = ItemType.RedBed; + mappings[611] = ItemType.BlackBed; + mappings[612] = ItemType.Cookie; + mappings[613] = ItemType.FilledMap; + mappings[614] = ItemType.Shears; + mappings[615] = ItemType.MelonSlice; + mappings[616] = ItemType.DriedKelp; + mappings[617] = ItemType.PumpkinSeeds; + mappings[618] = ItemType.MelonSeeds; + mappings[619] = ItemType.Beef; + mappings[620] = ItemType.CookedBeef; + mappings[621] = ItemType.Chicken; + mappings[622] = ItemType.CookedChicken; + mappings[623] = ItemType.RottenFlesh; + mappings[624] = ItemType.EnderPearl; + mappings[625] = ItemType.BlazeRod; + mappings[626] = ItemType.GhastTear; + mappings[627] = ItemType.GoldNugget; + mappings[628] = ItemType.NetherWart; + mappings[629] = ItemType.Potion; + mappings[630] = ItemType.GlassBottle; + mappings[631] = ItemType.SpiderEye; + mappings[632] = ItemType.FermentedSpiderEye; + mappings[633] = ItemType.BlazePowder; + mappings[634] = ItemType.MagmaCream; + mappings[635] = ItemType.BrewingStand; + mappings[636] = ItemType.Cauldron; + mappings[637] = ItemType.EnderEye; + mappings[638] = ItemType.GlisteringMelonSlice; + mappings[639] = ItemType.BatSpawnEgg; + mappings[640] = ItemType.BlazeSpawnEgg; + mappings[641] = ItemType.CaveSpiderSpawnEgg; + mappings[642] = ItemType.ChickenSpawnEgg; + mappings[643] = ItemType.CodSpawnEgg; + mappings[644] = ItemType.CowSpawnEgg; + mappings[645] = ItemType.CreeperSpawnEgg; + mappings[646] = ItemType.DolphinSpawnEgg; + mappings[647] = ItemType.DonkeySpawnEgg; + mappings[648] = ItemType.DrownedSpawnEgg; + mappings[649] = ItemType.ElderGuardianSpawnEgg; + mappings[650] = ItemType.EndermanSpawnEgg; + mappings[651] = ItemType.EndermiteSpawnEgg; + mappings[652] = ItemType.EvokerSpawnEgg; + mappings[653] = ItemType.GhastSpawnEgg; + mappings[654] = ItemType.GuardianSpawnEgg; + mappings[655] = ItemType.HorseSpawnEgg; + mappings[656] = ItemType.HuskSpawnEgg; + mappings[657] = ItemType.LlamaSpawnEgg; + mappings[658] = ItemType.MagmaCubeSpawnEgg; + mappings[659] = ItemType.MooshroomSpawnEgg; + mappings[660] = ItemType.MuleSpawnEgg; + mappings[661] = ItemType.OcelotSpawnEgg; + mappings[662] = ItemType.ParrotSpawnEgg; + mappings[663] = ItemType.PhantomSpawnEgg; + mappings[664] = ItemType.PigSpawnEgg; + mappings[665] = ItemType.PolarBearSpawnEgg; + mappings[666] = ItemType.PufferfishSpawnEgg; + mappings[667] = ItemType.RabbitSpawnEgg; + mappings[668] = ItemType.SalmonSpawnEgg; + mappings[669] = ItemType.SheepSpawnEgg; + mappings[670] = ItemType.ShulkerSpawnEgg; + mappings[671] = ItemType.SilverfishSpawnEgg; + mappings[672] = ItemType.SkeletonSpawnEgg; + mappings[673] = ItemType.SkeletonHorseSpawnEgg; + mappings[674] = ItemType.SlimeSpawnEgg; + mappings[675] = ItemType.SpiderSpawnEgg; + mappings[676] = ItemType.SquidSpawnEgg; + mappings[677] = ItemType.StraySpawnEgg; + mappings[678] = ItemType.TropicalFishSpawnEgg; + mappings[679] = ItemType.TurtleSpawnEgg; + mappings[680] = ItemType.VexSpawnEgg; + mappings[681] = ItemType.VillagerSpawnEgg; + mappings[682] = ItemType.VindicatorSpawnEgg; + mappings[683] = ItemType.WitchSpawnEgg; + mappings[684] = ItemType.WitherSkeletonSpawnEgg; + mappings[685] = ItemType.WolfSpawnEgg; + mappings[686] = ItemType.ZombieSpawnEgg; + mappings[687] = ItemType.ZombieHorseSpawnEgg; + mappings[688] = ItemType.ZombifiedPiglinSpawnEgg; + mappings[689] = ItemType.ZombieVillagerSpawnEgg; + mappings[690] = ItemType.ExperienceBottle; + mappings[691] = ItemType.FireCharge; + mappings[692] = ItemType.WritableBook; + mappings[693] = ItemType.WrittenBook; + mappings[694] = ItemType.Emerald; + mappings[695] = ItemType.ItemFrame; + mappings[696] = ItemType.FlowerPot; + mappings[697] = ItemType.Carrot; + mappings[698] = ItemType.Potato; + mappings[699] = ItemType.BakedPotato; + mappings[700] = ItemType.PoisonousPotato; + mappings[701] = ItemType.Map; + mappings[702] = ItemType.GoldenCarrot; + mappings[703] = ItemType.SkeletonSkull; + mappings[704] = ItemType.WitherSkeletonSkull; + mappings[705] = ItemType.PlayerHead; + mappings[706] = ItemType.ZombieHead; + mappings[707] = ItemType.CreeperHead; + mappings[708] = ItemType.DragonHead; + mappings[709] = ItemType.CarrotOnAStick; + mappings[710] = ItemType.NetherStar; + mappings[711] = ItemType.PumpkinPie; + mappings[712] = ItemType.FireworkRocket; + mappings[713] = ItemType.FireworkStar; + mappings[714] = ItemType.EnchantedBook; + mappings[715] = ItemType.NetherBrick; + mappings[716] = ItemType.Quartz; + mappings[717] = ItemType.TntMinecart; + mappings[718] = ItemType.HopperMinecart; + mappings[719] = ItemType.PrismarineShard; + mappings[720] = ItemType.PrismarineCrystals; + mappings[721] = ItemType.Rabbit; + mappings[722] = ItemType.CookedRabbit; + mappings[723] = ItemType.RabbitStew; + mappings[724] = ItemType.RabbitFoot; + mappings[725] = ItemType.RabbitHide; + mappings[726] = ItemType.ArmorStand; + mappings[727] = ItemType.IronHorseArmor; + mappings[728] = ItemType.GoldenHorseArmor; + mappings[729] = ItemType.DiamondHorseArmor; + mappings[730] = ItemType.Lead; + mappings[731] = ItemType.NameTag; + mappings[732] = ItemType.CommandBlockMinecart; + mappings[733] = ItemType.Mutton; + mappings[734] = ItemType.CookedMutton; + mappings[735] = ItemType.WhiteBanner; + mappings[736] = ItemType.OrangeBanner; + mappings[737] = ItemType.MagentaBanner; + mappings[738] = ItemType.LightBlueBanner; + mappings[739] = ItemType.YellowBanner; + mappings[740] = ItemType.LimeBanner; + mappings[741] = ItemType.PinkBanner; + mappings[742] = ItemType.GrayBanner; + mappings[743] = ItemType.LightGrayBanner; + mappings[744] = ItemType.CyanBanner; + mappings[745] = ItemType.PurpleBanner; + mappings[746] = ItemType.BlueBanner; + mappings[747] = ItemType.BrownBanner; + mappings[748] = ItemType.GreenBanner; + mappings[749] = ItemType.RedBanner; + mappings[750] = ItemType.BlackBanner; + mappings[751] = ItemType.EndCrystal; + mappings[752] = ItemType.ChorusFruit; + mappings[753] = ItemType.PoppedChorusFruit; + mappings[754] = ItemType.Beetroot; + mappings[755] = ItemType.BeetrootSeeds; + mappings[756] = ItemType.BeetrootSoup; + mappings[757] = ItemType.DragonBreath; + mappings[758] = ItemType.SplashPotion; + mappings[759] = ItemType.SpectralArrow; + mappings[760] = ItemType.TippedArrow; + mappings[761] = ItemType.LingeringPotion; + mappings[762] = ItemType.Shield; + mappings[763] = ItemType.Elytra; + mappings[764] = ItemType.SpruceBoat; + mappings[765] = ItemType.BirchBoat; + mappings[766] = ItemType.JungleBoat; + mappings[767] = ItemType.AcaciaBoat; + mappings[768] = ItemType.DarkOakBoat; + mappings[769] = ItemType.TotemOfUndying; + mappings[770] = ItemType.ShulkerShell; + mappings[771] = ItemType.IronNugget; + mappings[772] = ItemType.KnowledgeBook; + mappings[773] = ItemType.DebugStick; + mappings[774] = ItemType.MusicDisc13; + mappings[775] = ItemType.MusicDiscCat; + mappings[776] = ItemType.MusicDiscBlocks; + mappings[777] = ItemType.MusicDiscChirp; + mappings[778] = ItemType.MusicDiscFar; + mappings[779] = ItemType.MusicDiscMall; + mappings[780] = ItemType.MusicDiscMellohi; + mappings[781] = ItemType.MusicDiscStal; + mappings[782] = ItemType.MusicDiscStrad; + mappings[783] = ItemType.MusicDiscWard; + mappings[784] = ItemType.MusicDisc11; + mappings[785] = ItemType.MusicDiscWait; + mappings[786] = ItemType.Trident; + mappings[787] = ItemType.PhantomMembrane; + mappings[788] = ItemType.NautilusShell; + mappings[789] = ItemType.HeartOfTheSea; + } + + protected override Dictionary GetDict() + { + return mappings; + } + } +} diff --git a/MinecraftClient/Inventory/ItemPalettes/ItemPalette114.cs b/MinecraftClient/Inventory/ItemPalettes/ItemPalette114.cs new file mode 100644 index 00000000..c84079da --- /dev/null +++ b/MinecraftClient/Inventory/ItemPalettes/ItemPalette114.cs @@ -0,0 +1,895 @@ +using System.Collections.Generic; + +namespace MinecraftClient.Inventory.ItemPalettes +{ + public class ItemPalette114 : ItemPalette + { + private static readonly Dictionary mappings = new(); + + static ItemPalette114() + { + mappings[0] = ItemType.Air; + mappings[1] = ItemType.Stone; + mappings[2] = ItemType.Granite; + mappings[3] = ItemType.PolishedGranite; + mappings[4] = ItemType.Diorite; + mappings[5] = ItemType.PolishedDiorite; + mappings[6] = ItemType.Andesite; + mappings[7] = ItemType.PolishedAndesite; + mappings[8] = ItemType.GrassBlock; + mappings[9] = ItemType.Dirt; + mappings[10] = ItemType.CoarseDirt; + mappings[11] = ItemType.Podzol; + mappings[12] = ItemType.Cobblestone; + mappings[13] = ItemType.OakPlanks; + mappings[14] = ItemType.SprucePlanks; + mappings[15] = ItemType.BirchPlanks; + mappings[16] = ItemType.JunglePlanks; + mappings[17] = ItemType.AcaciaPlanks; + mappings[18] = ItemType.DarkOakPlanks; + mappings[19] = ItemType.OakSapling; + mappings[20] = ItemType.SpruceSapling; + mappings[21] = ItemType.BirchSapling; + mappings[22] = ItemType.JungleSapling; + mappings[23] = ItemType.AcaciaSapling; + mappings[24] = ItemType.DarkOakSapling; + mappings[25] = ItemType.Bedrock; + mappings[26] = ItemType.Sand; + mappings[27] = ItemType.RedSand; + mappings[28] = ItemType.Gravel; + mappings[29] = ItemType.GoldOre; + mappings[30] = ItemType.IronOre; + mappings[31] = ItemType.CoalOre; + mappings[32] = ItemType.OakLog; + mappings[33] = ItemType.SpruceLog; + mappings[34] = ItemType.BirchLog; + mappings[35] = ItemType.JungleLog; + mappings[36] = ItemType.AcaciaLog; + mappings[37] = ItemType.DarkOakLog; + mappings[38] = ItemType.StrippedOakLog; + mappings[39] = ItemType.StrippedSpruceLog; + mappings[40] = ItemType.StrippedBirchLog; + mappings[41] = ItemType.StrippedJungleLog; + mappings[42] = ItemType.StrippedAcaciaLog; + mappings[43] = ItemType.StrippedDarkOakLog; + mappings[44] = ItemType.StrippedOakWood; + mappings[45] = ItemType.StrippedSpruceWood; + mappings[46] = ItemType.StrippedBirchWood; + mappings[47] = ItemType.StrippedJungleWood; + mappings[48] = ItemType.StrippedAcaciaWood; + mappings[49] = ItemType.StrippedDarkOakWood; + mappings[50] = ItemType.OakWood; + mappings[51] = ItemType.SpruceWood; + mappings[52] = ItemType.BirchWood; + mappings[53] = ItemType.JungleWood; + mappings[54] = ItemType.AcaciaWood; + mappings[55] = ItemType.DarkOakWood; + mappings[56] = ItemType.OakLeaves; + mappings[57] = ItemType.SpruceLeaves; + mappings[58] = ItemType.BirchLeaves; + mappings[59] = ItemType.JungleLeaves; + mappings[60] = ItemType.AcaciaLeaves; + mappings[61] = ItemType.DarkOakLeaves; + mappings[62] = ItemType.Sponge; + mappings[63] = ItemType.WetSponge; + mappings[64] = ItemType.Glass; + mappings[65] = ItemType.LapisOre; + mappings[66] = ItemType.LapisBlock; + mappings[67] = ItemType.Dispenser; + mappings[68] = ItemType.Sandstone; + mappings[69] = ItemType.ChiseledSandstone; + mappings[70] = ItemType.CutSandstone; + mappings[71] = ItemType.NoteBlock; + mappings[72] = ItemType.PoweredRail; + mappings[73] = ItemType.DetectorRail; + mappings[74] = ItemType.StickyPiston; + mappings[75] = ItemType.Cobweb; + mappings[76] = ItemType.ShortGrass; + mappings[77] = ItemType.Fern; + mappings[78] = ItemType.DeadBush; + mappings[79] = ItemType.Seagrass; + mappings[80] = ItemType.SeaPickle; + mappings[81] = ItemType.Piston; + mappings[82] = ItemType.WhiteWool; + mappings[83] = ItemType.OrangeWool; + mappings[84] = ItemType.MagentaWool; + mappings[85] = ItemType.LightBlueWool; + mappings[86] = ItemType.YellowWool; + mappings[87] = ItemType.LimeWool; + mappings[88] = ItemType.PinkWool; + mappings[89] = ItemType.GrayWool; + mappings[90] = ItemType.LightGrayWool; + mappings[91] = ItemType.CyanWool; + mappings[92] = ItemType.PurpleWool; + mappings[93] = ItemType.BlueWool; + mappings[94] = ItemType.BrownWool; + mappings[95] = ItemType.GreenWool; + mappings[96] = ItemType.RedWool; + mappings[97] = ItemType.BlackWool; + mappings[98] = ItemType.Dandelion; + mappings[99] = ItemType.Poppy; + mappings[100] = ItemType.BlueOrchid; + mappings[101] = ItemType.Allium; + mappings[102] = ItemType.AzureBluet; + mappings[103] = ItemType.RedTulip; + mappings[104] = ItemType.OrangeTulip; + mappings[105] = ItemType.WhiteTulip; + mappings[106] = ItemType.PinkTulip; + mappings[107] = ItemType.OxeyeDaisy; + mappings[108] = ItemType.Cornflower; + mappings[109] = ItemType.LilyOfTheValley; + mappings[110] = ItemType.WitherRose; + mappings[111] = ItemType.BrownMushroom; + mappings[112] = ItemType.RedMushroom; + mappings[113] = ItemType.GoldBlock; + mappings[114] = ItemType.IronBlock; + mappings[115] = ItemType.OakSlab; + mappings[116] = ItemType.SpruceSlab; + mappings[117] = ItemType.BirchSlab; + mappings[118] = ItemType.JungleSlab; + mappings[119] = ItemType.AcaciaSlab; + mappings[120] = ItemType.DarkOakSlab; + mappings[121] = ItemType.StoneSlab; + mappings[122] = ItemType.SmoothStoneSlab; + mappings[123] = ItemType.SandstoneSlab; + mappings[124] = ItemType.CutSandstoneSlab; + mappings[125] = ItemType.PetrifiedOakSlab; + mappings[126] = ItemType.CobblestoneSlab; + mappings[127] = ItemType.BrickSlab; + mappings[128] = ItemType.StoneBrickSlab; + mappings[129] = ItemType.NetherBrickSlab; + mappings[130] = ItemType.QuartzSlab; + mappings[131] = ItemType.RedSandstoneSlab; + mappings[132] = ItemType.CutRedSandstoneSlab; + mappings[133] = ItemType.PurpurSlab; + mappings[134] = ItemType.PrismarineSlab; + mappings[135] = ItemType.PrismarineBrickSlab; + mappings[136] = ItemType.DarkPrismarineSlab; + mappings[137] = ItemType.SmoothQuartz; + mappings[138] = ItemType.SmoothRedSandstone; + mappings[139] = ItemType.SmoothSandstone; + mappings[140] = ItemType.SmoothStone; + mappings[141] = ItemType.Bricks; + mappings[142] = ItemType.Tnt; + mappings[143] = ItemType.Bookshelf; + mappings[144] = ItemType.MossyCobblestone; + mappings[145] = ItemType.Obsidian; + mappings[146] = ItemType.Torch; + mappings[147] = ItemType.EndRod; + mappings[148] = ItemType.ChorusPlant; + mappings[149] = ItemType.ChorusFlower; + mappings[150] = ItemType.PurpurBlock; + mappings[151] = ItemType.PurpurPillar; + mappings[152] = ItemType.PurpurStairs; + mappings[153] = ItemType.Spawner; + mappings[154] = ItemType.OakStairs; + mappings[155] = ItemType.Chest; + mappings[156] = ItemType.DiamondOre; + mappings[157] = ItemType.DiamondBlock; + mappings[158] = ItemType.CraftingTable; + mappings[159] = ItemType.Farmland; + mappings[160] = ItemType.Furnace; + mappings[161] = ItemType.Ladder; + mappings[162] = ItemType.Rail; + mappings[163] = ItemType.CobblestoneStairs; + mappings[164] = ItemType.Lever; + mappings[165] = ItemType.StonePressurePlate; + mappings[166] = ItemType.OakPressurePlate; + mappings[167] = ItemType.SprucePressurePlate; + mappings[168] = ItemType.BirchPressurePlate; + mappings[169] = ItemType.JunglePressurePlate; + mappings[170] = ItemType.AcaciaPressurePlate; + mappings[171] = ItemType.DarkOakPressurePlate; + mappings[172] = ItemType.RedstoneOre; + mappings[173] = ItemType.RedstoneTorch; + mappings[174] = ItemType.StoneButton; + mappings[175] = ItemType.Snow; + mappings[176] = ItemType.Ice; + mappings[177] = ItemType.SnowBlock; + mappings[178] = ItemType.Cactus; + mappings[179] = ItemType.Clay; + mappings[180] = ItemType.Jukebox; + mappings[181] = ItemType.OakFence; + mappings[182] = ItemType.SpruceFence; + mappings[183] = ItemType.BirchFence; + mappings[184] = ItemType.JungleFence; + mappings[185] = ItemType.AcaciaFence; + mappings[186] = ItemType.DarkOakFence; + mappings[187] = ItemType.Pumpkin; + mappings[188] = ItemType.CarvedPumpkin; + mappings[189] = ItemType.Netherrack; + mappings[190] = ItemType.SoulSand; + mappings[191] = ItemType.Glowstone; + mappings[192] = ItemType.JackOLantern; + mappings[193] = ItemType.OakTrapdoor; + mappings[194] = ItemType.SpruceTrapdoor; + mappings[195] = ItemType.BirchTrapdoor; + mappings[196] = ItemType.JungleTrapdoor; + mappings[197] = ItemType.AcaciaTrapdoor; + mappings[198] = ItemType.DarkOakTrapdoor; + mappings[199] = ItemType.InfestedStone; + mappings[200] = ItemType.InfestedCobblestone; + mappings[201] = ItemType.InfestedStoneBricks; + mappings[202] = ItemType.InfestedMossyStoneBricks; + mappings[203] = ItemType.InfestedCrackedStoneBricks; + mappings[204] = ItemType.InfestedChiseledStoneBricks; + mappings[205] = ItemType.StoneBricks; + mappings[206] = ItemType.MossyStoneBricks; + mappings[207] = ItemType.CrackedStoneBricks; + mappings[208] = ItemType.ChiseledStoneBricks; + mappings[209] = ItemType.BrownMushroomBlock; + mappings[210] = ItemType.RedMushroomBlock; + mappings[211] = ItemType.MushroomStem; + mappings[212] = ItemType.IronBars; + mappings[213] = ItemType.GlassPane; + mappings[214] = ItemType.Melon; + mappings[215] = ItemType.Vine; + mappings[216] = ItemType.OakFenceGate; + mappings[217] = ItemType.SpruceFenceGate; + mappings[218] = ItemType.BirchFenceGate; + mappings[219] = ItemType.JungleFenceGate; + mappings[220] = ItemType.AcaciaFenceGate; + mappings[221] = ItemType.DarkOakFenceGate; + mappings[222] = ItemType.BrickStairs; + mappings[223] = ItemType.StoneBrickStairs; + mappings[224] = ItemType.Mycelium; + mappings[225] = ItemType.LilyPad; + mappings[226] = ItemType.NetherBricks; + mappings[227] = ItemType.NetherBrickFence; + mappings[228] = ItemType.NetherBrickStairs; + mappings[229] = ItemType.EnchantingTable; + mappings[230] = ItemType.EndPortalFrame; + mappings[231] = ItemType.EndStone; + mappings[232] = ItemType.EndStoneBricks; + mappings[233] = ItemType.DragonEgg; + mappings[234] = ItemType.RedstoneLamp; + mappings[235] = ItemType.SandstoneStairs; + mappings[236] = ItemType.EmeraldOre; + mappings[237] = ItemType.EnderChest; + mappings[238] = ItemType.TripwireHook; + mappings[239] = ItemType.EmeraldBlock; + mappings[240] = ItemType.SpruceStairs; + mappings[241] = ItemType.BirchStairs; + mappings[242] = ItemType.JungleStairs; + mappings[243] = ItemType.CommandBlock; + mappings[244] = ItemType.Beacon; + mappings[245] = ItemType.CobblestoneWall; + mappings[246] = ItemType.MossyCobblestoneWall; + mappings[247] = ItemType.BrickWall; + mappings[248] = ItemType.PrismarineWall; + mappings[249] = ItemType.RedSandstoneWall; + mappings[250] = ItemType.MossyStoneBrickWall; + mappings[251] = ItemType.GraniteWall; + mappings[252] = ItemType.StoneBrickWall; + mappings[253] = ItemType.NetherBrickWall; + mappings[254] = ItemType.AndesiteWall; + mappings[255] = ItemType.RedNetherBrickWall; + mappings[256] = ItemType.SandstoneWall; + mappings[257] = ItemType.EndStoneBrickWall; + mappings[258] = ItemType.DioriteWall; + mappings[259] = ItemType.OakButton; + mappings[260] = ItemType.SpruceButton; + mappings[261] = ItemType.BirchButton; + mappings[262] = ItemType.JungleButton; + mappings[263] = ItemType.AcaciaButton; + mappings[264] = ItemType.DarkOakButton; + mappings[265] = ItemType.Anvil; + mappings[266] = ItemType.ChippedAnvil; + mappings[267] = ItemType.DamagedAnvil; + mappings[268] = ItemType.TrappedChest; + mappings[269] = ItemType.LightWeightedPressurePlate; + mappings[270] = ItemType.HeavyWeightedPressurePlate; + mappings[271] = ItemType.DaylightDetector; + mappings[272] = ItemType.RedstoneBlock; + mappings[273] = ItemType.NetherQuartzOre; + mappings[274] = ItemType.Hopper; + mappings[275] = ItemType.ChiseledQuartzBlock; + mappings[276] = ItemType.QuartzBlock; + mappings[277] = ItemType.QuartzPillar; + mappings[278] = ItemType.QuartzStairs; + mappings[279] = ItemType.ActivatorRail; + mappings[280] = ItemType.Dropper; + mappings[281] = ItemType.WhiteTerracotta; + mappings[282] = ItemType.OrangeTerracotta; + mappings[283] = ItemType.MagentaTerracotta; + mappings[284] = ItemType.LightBlueTerracotta; + mappings[285] = ItemType.YellowTerracotta; + mappings[286] = ItemType.LimeTerracotta; + mappings[287] = ItemType.PinkTerracotta; + mappings[288] = ItemType.GrayTerracotta; + mappings[289] = ItemType.LightGrayTerracotta; + mappings[290] = ItemType.CyanTerracotta; + mappings[291] = ItemType.PurpleTerracotta; + mappings[292] = ItemType.BlueTerracotta; + mappings[293] = ItemType.BrownTerracotta; + mappings[294] = ItemType.GreenTerracotta; + mappings[295] = ItemType.RedTerracotta; + mappings[296] = ItemType.BlackTerracotta; + mappings[297] = ItemType.Barrier; + mappings[298] = ItemType.IronTrapdoor; + mappings[299] = ItemType.HayBlock; + mappings[300] = ItemType.WhiteCarpet; + mappings[301] = ItemType.OrangeCarpet; + mappings[302] = ItemType.MagentaCarpet; + mappings[303] = ItemType.LightBlueCarpet; + mappings[304] = ItemType.YellowCarpet; + mappings[305] = ItemType.LimeCarpet; + mappings[306] = ItemType.PinkCarpet; + mappings[307] = ItemType.GrayCarpet; + mappings[308] = ItemType.LightGrayCarpet; + mappings[309] = ItemType.CyanCarpet; + mappings[310] = ItemType.PurpleCarpet; + mappings[311] = ItemType.BlueCarpet; + mappings[312] = ItemType.BrownCarpet; + mappings[313] = ItemType.GreenCarpet; + mappings[314] = ItemType.RedCarpet; + mappings[315] = ItemType.BlackCarpet; + mappings[316] = ItemType.Terracotta; + mappings[317] = ItemType.CoalBlock; + mappings[318] = ItemType.PackedIce; + mappings[319] = ItemType.AcaciaStairs; + mappings[320] = ItemType.DarkOakStairs; + mappings[321] = ItemType.SlimeBlock; + mappings[322] = ItemType.DirtPath; + mappings[323] = ItemType.Sunflower; + mappings[324] = ItemType.Lilac; + mappings[325] = ItemType.RoseBush; + mappings[326] = ItemType.Peony; + mappings[327] = ItemType.TallGrass; + mappings[328] = ItemType.LargeFern; + mappings[329] = ItemType.WhiteStainedGlass; + mappings[330] = ItemType.OrangeStainedGlass; + mappings[331] = ItemType.MagentaStainedGlass; + mappings[332] = ItemType.LightBlueStainedGlass; + mappings[333] = ItemType.YellowStainedGlass; + mappings[334] = ItemType.LimeStainedGlass; + mappings[335] = ItemType.PinkStainedGlass; + mappings[336] = ItemType.GrayStainedGlass; + mappings[337] = ItemType.LightGrayStainedGlass; + mappings[338] = ItemType.CyanStainedGlass; + mappings[339] = ItemType.PurpleStainedGlass; + mappings[340] = ItemType.BlueStainedGlass; + mappings[341] = ItemType.BrownStainedGlass; + mappings[342] = ItemType.GreenStainedGlass; + mappings[343] = ItemType.RedStainedGlass; + mappings[344] = ItemType.BlackStainedGlass; + mappings[345] = ItemType.WhiteStainedGlassPane; + mappings[346] = ItemType.OrangeStainedGlassPane; + mappings[347] = ItemType.MagentaStainedGlassPane; + mappings[348] = ItemType.LightBlueStainedGlassPane; + mappings[349] = ItemType.YellowStainedGlassPane; + mappings[350] = ItemType.LimeStainedGlassPane; + mappings[351] = ItemType.PinkStainedGlassPane; + mappings[352] = ItemType.GrayStainedGlassPane; + mappings[353] = ItemType.LightGrayStainedGlassPane; + mappings[354] = ItemType.CyanStainedGlassPane; + mappings[355] = ItemType.PurpleStainedGlassPane; + mappings[356] = ItemType.BlueStainedGlassPane; + mappings[357] = ItemType.BrownStainedGlassPane; + mappings[358] = ItemType.GreenStainedGlassPane; + mappings[359] = ItemType.RedStainedGlassPane; + mappings[360] = ItemType.BlackStainedGlassPane; + mappings[361] = ItemType.Prismarine; + mappings[362] = ItemType.PrismarineBricks; + mappings[363] = ItemType.DarkPrismarine; + mappings[364] = ItemType.PrismarineStairs; + mappings[365] = ItemType.PrismarineBrickStairs; + mappings[366] = ItemType.DarkPrismarineStairs; + mappings[367] = ItemType.SeaLantern; + mappings[368] = ItemType.RedSandstone; + mappings[369] = ItemType.ChiseledRedSandstone; + mappings[370] = ItemType.CutRedSandstone; + mappings[371] = ItemType.RedSandstoneStairs; + mappings[372] = ItemType.RepeatingCommandBlock; + mappings[373] = ItemType.ChainCommandBlock; + mappings[374] = ItemType.MagmaBlock; + mappings[375] = ItemType.NetherWartBlock; + mappings[376] = ItemType.RedNetherBricks; + mappings[377] = ItemType.BoneBlock; + mappings[378] = ItemType.StructureVoid; + mappings[379] = ItemType.Observer; + mappings[380] = ItemType.ShulkerBox; + mappings[381] = ItemType.WhiteShulkerBox; + mappings[382] = ItemType.OrangeShulkerBox; + mappings[383] = ItemType.MagentaShulkerBox; + mappings[384] = ItemType.LightBlueShulkerBox; + mappings[385] = ItemType.YellowShulkerBox; + mappings[386] = ItemType.LimeShulkerBox; + mappings[387] = ItemType.PinkShulkerBox; + mappings[388] = ItemType.GrayShulkerBox; + mappings[389] = ItemType.LightGrayShulkerBox; + mappings[390] = ItemType.CyanShulkerBox; + mappings[391] = ItemType.PurpleShulkerBox; + mappings[392] = ItemType.BlueShulkerBox; + mappings[393] = ItemType.BrownShulkerBox; + mappings[394] = ItemType.GreenShulkerBox; + mappings[395] = ItemType.RedShulkerBox; + mappings[396] = ItemType.BlackShulkerBox; + mappings[397] = ItemType.WhiteGlazedTerracotta; + mappings[398] = ItemType.OrangeGlazedTerracotta; + mappings[399] = ItemType.MagentaGlazedTerracotta; + mappings[400] = ItemType.LightBlueGlazedTerracotta; + mappings[401] = ItemType.YellowGlazedTerracotta; + mappings[402] = ItemType.LimeGlazedTerracotta; + mappings[403] = ItemType.PinkGlazedTerracotta; + mappings[404] = ItemType.GrayGlazedTerracotta; + mappings[405] = ItemType.LightGrayGlazedTerracotta; + mappings[406] = ItemType.CyanGlazedTerracotta; + mappings[407] = ItemType.PurpleGlazedTerracotta; + mappings[408] = ItemType.BlueGlazedTerracotta; + mappings[409] = ItemType.BrownGlazedTerracotta; + mappings[410] = ItemType.GreenGlazedTerracotta; + mappings[411] = ItemType.RedGlazedTerracotta; + mappings[412] = ItemType.BlackGlazedTerracotta; + mappings[413] = ItemType.WhiteConcrete; + mappings[414] = ItemType.OrangeConcrete; + mappings[415] = ItemType.MagentaConcrete; + mappings[416] = ItemType.LightBlueConcrete; + mappings[417] = ItemType.YellowConcrete; + mappings[418] = ItemType.LimeConcrete; + mappings[419] = ItemType.PinkConcrete; + mappings[420] = ItemType.GrayConcrete; + mappings[421] = ItemType.LightGrayConcrete; + mappings[422] = ItemType.CyanConcrete; + mappings[423] = ItemType.PurpleConcrete; + mappings[424] = ItemType.BlueConcrete; + mappings[425] = ItemType.BrownConcrete; + mappings[426] = ItemType.GreenConcrete; + mappings[427] = ItemType.RedConcrete; + mappings[428] = ItemType.BlackConcrete; + mappings[429] = ItemType.WhiteConcretePowder; + mappings[430] = ItemType.OrangeConcretePowder; + mappings[431] = ItemType.MagentaConcretePowder; + mappings[432] = ItemType.LightBlueConcretePowder; + mappings[433] = ItemType.YellowConcretePowder; + mappings[434] = ItemType.LimeConcretePowder; + mappings[435] = ItemType.PinkConcretePowder; + mappings[436] = ItemType.GrayConcretePowder; + mappings[437] = ItemType.LightGrayConcretePowder; + mappings[438] = ItemType.CyanConcretePowder; + mappings[439] = ItemType.PurpleConcretePowder; + mappings[440] = ItemType.BlueConcretePowder; + mappings[441] = ItemType.BrownConcretePowder; + mappings[442] = ItemType.GreenConcretePowder; + mappings[443] = ItemType.RedConcretePowder; + mappings[444] = ItemType.BlackConcretePowder; + mappings[445] = ItemType.TurtleEgg; + mappings[446] = ItemType.DeadTubeCoralBlock; + mappings[447] = ItemType.DeadBrainCoralBlock; + mappings[448] = ItemType.DeadBubbleCoralBlock; + mappings[449] = ItemType.DeadFireCoralBlock; + mappings[450] = ItemType.DeadHornCoralBlock; + mappings[451] = ItemType.TubeCoralBlock; + mappings[452] = ItemType.BrainCoralBlock; + mappings[453] = ItemType.BubbleCoralBlock; + mappings[454] = ItemType.FireCoralBlock; + mappings[455] = ItemType.HornCoralBlock; + mappings[456] = ItemType.TubeCoral; + mappings[457] = ItemType.BrainCoral; + mappings[458] = ItemType.BubbleCoral; + mappings[459] = ItemType.FireCoral; + mappings[460] = ItemType.HornCoral; + mappings[461] = ItemType.DeadBrainCoral; + mappings[462] = ItemType.DeadBubbleCoral; + mappings[463] = ItemType.DeadFireCoral; + mappings[464] = ItemType.DeadHornCoral; + mappings[465] = ItemType.DeadTubeCoral; + mappings[466] = ItemType.TubeCoralFan; + mappings[467] = ItemType.BrainCoralFan; + mappings[468] = ItemType.BubbleCoralFan; + mappings[469] = ItemType.FireCoralFan; + mappings[470] = ItemType.HornCoralFan; + mappings[471] = ItemType.DeadTubeCoralFan; + mappings[472] = ItemType.DeadBrainCoralFan; + mappings[473] = ItemType.DeadBubbleCoralFan; + mappings[474] = ItemType.DeadFireCoralFan; + mappings[475] = ItemType.DeadHornCoralFan; + mappings[476] = ItemType.BlueIce; + mappings[477] = ItemType.Conduit; + mappings[478] = ItemType.PolishedGraniteStairs; + mappings[479] = ItemType.SmoothRedSandstoneStairs; + mappings[480] = ItemType.MossyStoneBrickStairs; + mappings[481] = ItemType.PolishedDioriteStairs; + mappings[482] = ItemType.MossyCobblestoneStairs; + mappings[483] = ItemType.EndStoneBrickStairs; + mappings[484] = ItemType.StoneStairs; + mappings[485] = ItemType.SmoothSandstoneStairs; + mappings[486] = ItemType.SmoothQuartzStairs; + mappings[487] = ItemType.GraniteStairs; + mappings[488] = ItemType.AndesiteStairs; + mappings[489] = ItemType.RedNetherBrickStairs; + mappings[490] = ItemType.PolishedAndesiteStairs; + mappings[491] = ItemType.DioriteStairs; + mappings[492] = ItemType.PolishedGraniteSlab; + mappings[493] = ItemType.SmoothRedSandstoneSlab; + mappings[494] = ItemType.MossyStoneBrickSlab; + mappings[495] = ItemType.PolishedDioriteSlab; + mappings[496] = ItemType.MossyCobblestoneSlab; + mappings[497] = ItemType.EndStoneBrickSlab; + mappings[498] = ItemType.SmoothSandstoneSlab; + mappings[499] = ItemType.SmoothQuartzSlab; + mappings[500] = ItemType.GraniteSlab; + mappings[501] = ItemType.AndesiteSlab; + mappings[502] = ItemType.RedNetherBrickSlab; + mappings[503] = ItemType.PolishedAndesiteSlab; + mappings[504] = ItemType.DioriteSlab; + mappings[505] = ItemType.Scaffolding; + mappings[506] = ItemType.IronDoor; + mappings[507] = ItemType.OakDoor; + mappings[508] = ItemType.SpruceDoor; + mappings[509] = ItemType.BirchDoor; + mappings[510] = ItemType.JungleDoor; + mappings[511] = ItemType.AcaciaDoor; + mappings[512] = ItemType.DarkOakDoor; + mappings[513] = ItemType.Repeater; + mappings[514] = ItemType.Comparator; + mappings[515] = ItemType.StructureBlock; + mappings[516] = ItemType.Jigsaw; + mappings[517] = ItemType.Composter; + mappings[518] = ItemType.TurtleHelmet; + mappings[519] = ItemType.TurtleScute; + mappings[520] = ItemType.IronShovel; + mappings[521] = ItemType.IronPickaxe; + mappings[522] = ItemType.IronAxe; + mappings[523] = ItemType.FlintAndSteel; + mappings[524] = ItemType.Apple; + mappings[525] = ItemType.Bow; + mappings[526] = ItemType.Arrow; + mappings[527] = ItemType.Coal; + mappings[528] = ItemType.Charcoal; + mappings[529] = ItemType.Diamond; + mappings[530] = ItemType.IronIngot; + mappings[531] = ItemType.GoldIngot; + mappings[532] = ItemType.IronSword; + mappings[533] = ItemType.WoodenSword; + mappings[534] = ItemType.WoodenShovel; + mappings[535] = ItemType.WoodenPickaxe; + mappings[536] = ItemType.WoodenAxe; + mappings[537] = ItemType.StoneSword; + mappings[538] = ItemType.StoneShovel; + mappings[539] = ItemType.StonePickaxe; + mappings[540] = ItemType.StoneAxe; + mappings[541] = ItemType.DiamondSword; + mappings[542] = ItemType.DiamondShovel; + mappings[543] = ItemType.DiamondPickaxe; + mappings[544] = ItemType.DiamondAxe; + mappings[545] = ItemType.Stick; + mappings[546] = ItemType.Bowl; + mappings[547] = ItemType.MushroomStew; + mappings[548] = ItemType.GoldenSword; + mappings[549] = ItemType.GoldenShovel; + mappings[550] = ItemType.GoldenPickaxe; + mappings[551] = ItemType.GoldenAxe; + mappings[552] = ItemType.String; + mappings[553] = ItemType.Feather; + mappings[554] = ItemType.Gunpowder; + mappings[555] = ItemType.WoodenHoe; + mappings[556] = ItemType.StoneHoe; + mappings[557] = ItemType.IronHoe; + mappings[558] = ItemType.DiamondHoe; + mappings[559] = ItemType.GoldenHoe; + mappings[560] = ItemType.WheatSeeds; + mappings[561] = ItemType.Wheat; + mappings[562] = ItemType.Bread; + mappings[563] = ItemType.LeatherHelmet; + mappings[564] = ItemType.LeatherChestplate; + mappings[565] = ItemType.LeatherLeggings; + mappings[566] = ItemType.LeatherBoots; + mappings[567] = ItemType.ChainmailHelmet; + mappings[568] = ItemType.ChainmailChestplate; + mappings[569] = ItemType.ChainmailLeggings; + mappings[570] = ItemType.ChainmailBoots; + mappings[571] = ItemType.IronHelmet; + mappings[572] = ItemType.IronChestplate; + mappings[573] = ItemType.IronLeggings; + mappings[574] = ItemType.IronBoots; + mappings[575] = ItemType.DiamondHelmet; + mappings[576] = ItemType.DiamondChestplate; + mappings[577] = ItemType.DiamondLeggings; + mappings[578] = ItemType.DiamondBoots; + mappings[579] = ItemType.GoldenHelmet; + mappings[580] = ItemType.GoldenChestplate; + mappings[581] = ItemType.GoldenLeggings; + mappings[582] = ItemType.GoldenBoots; + mappings[583] = ItemType.Flint; + mappings[584] = ItemType.Porkchop; + mappings[585] = ItemType.CookedPorkchop; + mappings[586] = ItemType.Painting; + mappings[587] = ItemType.GoldenApple; + mappings[588] = ItemType.EnchantedGoldenApple; + mappings[589] = ItemType.OakSign; + mappings[590] = ItemType.SpruceSign; + mappings[591] = ItemType.BirchSign; + mappings[592] = ItemType.JungleSign; + mappings[593] = ItemType.AcaciaSign; + mappings[594] = ItemType.DarkOakSign; + mappings[595] = ItemType.Bucket; + mappings[596] = ItemType.WaterBucket; + mappings[597] = ItemType.LavaBucket; + mappings[598] = ItemType.Minecart; + mappings[599] = ItemType.Saddle; + mappings[600] = ItemType.Redstone; + mappings[601] = ItemType.Snowball; + mappings[602] = ItemType.OakBoat; + mappings[603] = ItemType.Leather; + mappings[604] = ItemType.MilkBucket; + mappings[605] = ItemType.PufferfishBucket; + mappings[606] = ItemType.SalmonBucket; + mappings[607] = ItemType.CodBucket; + mappings[608] = ItemType.TropicalFishBucket; + mappings[609] = ItemType.Brick; + mappings[610] = ItemType.ClayBall; + mappings[611] = ItemType.SugarCane; + mappings[612] = ItemType.Kelp; + mappings[613] = ItemType.DriedKelpBlock; + mappings[614] = ItemType.Bamboo; + mappings[615] = ItemType.Paper; + mappings[616] = ItemType.Book; + mappings[617] = ItemType.SlimeBall; + mappings[618] = ItemType.ChestMinecart; + mappings[619] = ItemType.FurnaceMinecart; + mappings[620] = ItemType.Egg; + mappings[621] = ItemType.Compass; + mappings[622] = ItemType.FishingRod; + mappings[623] = ItemType.Clock; + mappings[624] = ItemType.GlowstoneDust; + mappings[625] = ItemType.Cod; + mappings[626] = ItemType.Salmon; + mappings[627] = ItemType.TropicalFish; + mappings[628] = ItemType.Pufferfish; + mappings[629] = ItemType.CookedCod; + mappings[630] = ItemType.CookedSalmon; + mappings[631] = ItemType.InkSac; + mappings[632] = ItemType.RedDye; + mappings[633] = ItemType.GreenDye; + mappings[634] = ItemType.CocoaBeans; + mappings[635] = ItemType.LapisLazuli; + mappings[636] = ItemType.PurpleDye; + mappings[637] = ItemType.CyanDye; + mappings[638] = ItemType.LightGrayDye; + mappings[639] = ItemType.GrayDye; + mappings[640] = ItemType.PinkDye; + mappings[641] = ItemType.LimeDye; + mappings[642] = ItemType.YellowDye; + mappings[643] = ItemType.LightBlueDye; + mappings[644] = ItemType.MagentaDye; + mappings[645] = ItemType.OrangeDye; + mappings[646] = ItemType.BoneMeal; + mappings[647] = ItemType.BlueDye; + mappings[648] = ItemType.BrownDye; + mappings[649] = ItemType.BlackDye; + mappings[650] = ItemType.WhiteDye; + mappings[651] = ItemType.Bone; + mappings[652] = ItemType.Sugar; + mappings[653] = ItemType.Cake; + mappings[654] = ItemType.WhiteBed; + mappings[655] = ItemType.OrangeBed; + mappings[656] = ItemType.MagentaBed; + mappings[657] = ItemType.LightBlueBed; + mappings[658] = ItemType.YellowBed; + mappings[659] = ItemType.LimeBed; + mappings[660] = ItemType.PinkBed; + mappings[661] = ItemType.GrayBed; + mappings[662] = ItemType.LightGrayBed; + mappings[663] = ItemType.CyanBed; + mappings[664] = ItemType.PurpleBed; + mappings[665] = ItemType.BlueBed; + mappings[666] = ItemType.BrownBed; + mappings[667] = ItemType.GreenBed; + mappings[668] = ItemType.RedBed; + mappings[669] = ItemType.BlackBed; + mappings[670] = ItemType.Cookie; + mappings[671] = ItemType.FilledMap; + mappings[672] = ItemType.Shears; + mappings[673] = ItemType.MelonSlice; + mappings[674] = ItemType.DriedKelp; + mappings[675] = ItemType.PumpkinSeeds; + mappings[676] = ItemType.MelonSeeds; + mappings[677] = ItemType.Beef; + mappings[678] = ItemType.CookedBeef; + mappings[679] = ItemType.Chicken; + mappings[680] = ItemType.CookedChicken; + mappings[681] = ItemType.RottenFlesh; + mappings[682] = ItemType.EnderPearl; + mappings[683] = ItemType.BlazeRod; + mappings[684] = ItemType.GhastTear; + mappings[685] = ItemType.GoldNugget; + mappings[686] = ItemType.NetherWart; + mappings[687] = ItemType.Potion; + mappings[688] = ItemType.GlassBottle; + mappings[689] = ItemType.SpiderEye; + mappings[690] = ItemType.FermentedSpiderEye; + mappings[691] = ItemType.BlazePowder; + mappings[692] = ItemType.MagmaCream; + mappings[693] = ItemType.BrewingStand; + mappings[694] = ItemType.Cauldron; + mappings[695] = ItemType.EnderEye; + mappings[696] = ItemType.GlisteringMelonSlice; + mappings[697] = ItemType.BatSpawnEgg; + mappings[698] = ItemType.BlazeSpawnEgg; + mappings[699] = ItemType.CatSpawnEgg; + mappings[700] = ItemType.CaveSpiderSpawnEgg; + mappings[701] = ItemType.ChickenSpawnEgg; + mappings[702] = ItemType.CodSpawnEgg; + mappings[703] = ItemType.CowSpawnEgg; + mappings[704] = ItemType.CreeperSpawnEgg; + mappings[705] = ItemType.DolphinSpawnEgg; + mappings[706] = ItemType.DonkeySpawnEgg; + mappings[707] = ItemType.DrownedSpawnEgg; + mappings[708] = ItemType.ElderGuardianSpawnEgg; + mappings[709] = ItemType.EndermanSpawnEgg; + mappings[710] = ItemType.EndermiteSpawnEgg; + mappings[711] = ItemType.EvokerSpawnEgg; + mappings[712] = ItemType.FoxSpawnEgg; + mappings[713] = ItemType.GhastSpawnEgg; + mappings[714] = ItemType.GuardianSpawnEgg; + mappings[715] = ItemType.HorseSpawnEgg; + mappings[716] = ItemType.HuskSpawnEgg; + mappings[717] = ItemType.LlamaSpawnEgg; + mappings[718] = ItemType.MagmaCubeSpawnEgg; + mappings[719] = ItemType.MooshroomSpawnEgg; + mappings[720] = ItemType.MuleSpawnEgg; + mappings[721] = ItemType.OcelotSpawnEgg; + mappings[722] = ItemType.PandaSpawnEgg; + mappings[723] = ItemType.ParrotSpawnEgg; + mappings[724] = ItemType.PhantomSpawnEgg; + mappings[725] = ItemType.PigSpawnEgg; + mappings[726] = ItemType.PillagerSpawnEgg; + mappings[727] = ItemType.PolarBearSpawnEgg; + mappings[728] = ItemType.PufferfishSpawnEgg; + mappings[729] = ItemType.RabbitSpawnEgg; + mappings[730] = ItemType.RavagerSpawnEgg; + mappings[731] = ItemType.SalmonSpawnEgg; + mappings[732] = ItemType.SheepSpawnEgg; + mappings[733] = ItemType.ShulkerSpawnEgg; + mappings[734] = ItemType.SilverfishSpawnEgg; + mappings[735] = ItemType.SkeletonSpawnEgg; + mappings[736] = ItemType.SkeletonHorseSpawnEgg; + mappings[737] = ItemType.SlimeSpawnEgg; + mappings[738] = ItemType.SpiderSpawnEgg; + mappings[739] = ItemType.SquidSpawnEgg; + mappings[740] = ItemType.StraySpawnEgg; + mappings[741] = ItemType.TraderLlamaSpawnEgg; + mappings[742] = ItemType.TropicalFishSpawnEgg; + mappings[743] = ItemType.TurtleSpawnEgg; + mappings[744] = ItemType.VexSpawnEgg; + mappings[745] = ItemType.VillagerSpawnEgg; + mappings[746] = ItemType.VindicatorSpawnEgg; + mappings[747] = ItemType.WanderingTraderSpawnEgg; + mappings[748] = ItemType.WitchSpawnEgg; + mappings[749] = ItemType.WitherSkeletonSpawnEgg; + mappings[750] = ItemType.WolfSpawnEgg; + mappings[751] = ItemType.ZombieSpawnEgg; + mappings[752] = ItemType.ZombieHorseSpawnEgg; + mappings[753] = ItemType.ZombifiedPiglinSpawnEgg; + mappings[754] = ItemType.ZombieVillagerSpawnEgg; + mappings[755] = ItemType.ExperienceBottle; + mappings[756] = ItemType.FireCharge; + mappings[757] = ItemType.WritableBook; + mappings[758] = ItemType.WrittenBook; + mappings[759] = ItemType.Emerald; + mappings[760] = ItemType.ItemFrame; + mappings[761] = ItemType.FlowerPot; + mappings[762] = ItemType.Carrot; + mappings[763] = ItemType.Potato; + mappings[764] = ItemType.BakedPotato; + mappings[765] = ItemType.PoisonousPotato; + mappings[766] = ItemType.Map; + mappings[767] = ItemType.GoldenCarrot; + mappings[768] = ItemType.SkeletonSkull; + mappings[769] = ItemType.WitherSkeletonSkull; + mappings[770] = ItemType.PlayerHead; + mappings[771] = ItemType.ZombieHead; + mappings[772] = ItemType.CreeperHead; + mappings[773] = ItemType.DragonHead; + mappings[774] = ItemType.CarrotOnAStick; + mappings[775] = ItemType.NetherStar; + mappings[776] = ItemType.PumpkinPie; + mappings[777] = ItemType.FireworkRocket; + mappings[778] = ItemType.FireworkStar; + mappings[779] = ItemType.EnchantedBook; + mappings[780] = ItemType.NetherBrick; + mappings[781] = ItemType.Quartz; + mappings[782] = ItemType.TntMinecart; + mappings[783] = ItemType.HopperMinecart; + mappings[784] = ItemType.PrismarineShard; + mappings[785] = ItemType.PrismarineCrystals; + mappings[786] = ItemType.Rabbit; + mappings[787] = ItemType.CookedRabbit; + mappings[788] = ItemType.RabbitStew; + mappings[789] = ItemType.RabbitFoot; + mappings[790] = ItemType.RabbitHide; + mappings[791] = ItemType.ArmorStand; + mappings[792] = ItemType.IronHorseArmor; + mappings[793] = ItemType.GoldenHorseArmor; + mappings[794] = ItemType.DiamondHorseArmor; + mappings[795] = ItemType.LeatherHorseArmor; + mappings[796] = ItemType.Lead; + mappings[797] = ItemType.NameTag; + mappings[798] = ItemType.CommandBlockMinecart; + mappings[799] = ItemType.Mutton; + mappings[800] = ItemType.CookedMutton; + mappings[801] = ItemType.WhiteBanner; + mappings[802] = ItemType.OrangeBanner; + mappings[803] = ItemType.MagentaBanner; + mappings[804] = ItemType.LightBlueBanner; + mappings[805] = ItemType.YellowBanner; + mappings[806] = ItemType.LimeBanner; + mappings[807] = ItemType.PinkBanner; + mappings[808] = ItemType.GrayBanner; + mappings[809] = ItemType.LightGrayBanner; + mappings[810] = ItemType.CyanBanner; + mappings[811] = ItemType.PurpleBanner; + mappings[812] = ItemType.BlueBanner; + mappings[813] = ItemType.BrownBanner; + mappings[814] = ItemType.GreenBanner; + mappings[815] = ItemType.RedBanner; + mappings[816] = ItemType.BlackBanner; + mappings[817] = ItemType.EndCrystal; + mappings[818] = ItemType.ChorusFruit; + mappings[819] = ItemType.PoppedChorusFruit; + mappings[820] = ItemType.Beetroot; + mappings[821] = ItemType.BeetrootSeeds; + mappings[822] = ItemType.BeetrootSoup; + mappings[823] = ItemType.DragonBreath; + mappings[824] = ItemType.SplashPotion; + mappings[825] = ItemType.SpectralArrow; + mappings[826] = ItemType.TippedArrow; + mappings[827] = ItemType.LingeringPotion; + mappings[828] = ItemType.Shield; + mappings[829] = ItemType.Elytra; + mappings[830] = ItemType.SpruceBoat; + mappings[831] = ItemType.BirchBoat; + mappings[832] = ItemType.JungleBoat; + mappings[833] = ItemType.AcaciaBoat; + mappings[834] = ItemType.DarkOakBoat; + mappings[835] = ItemType.TotemOfUndying; + mappings[836] = ItemType.ShulkerShell; + mappings[837] = ItemType.IronNugget; + mappings[838] = ItemType.KnowledgeBook; + mappings[839] = ItemType.DebugStick; + mappings[840] = ItemType.MusicDisc13; + mappings[841] = ItemType.MusicDiscCat; + mappings[842] = ItemType.MusicDiscBlocks; + mappings[843] = ItemType.MusicDiscChirp; + mappings[844] = ItemType.MusicDiscFar; + mappings[845] = ItemType.MusicDiscMall; + mappings[846] = ItemType.MusicDiscMellohi; + mappings[847] = ItemType.MusicDiscStal; + mappings[848] = ItemType.MusicDiscStrad; + mappings[849] = ItemType.MusicDiscWard; + mappings[850] = ItemType.MusicDisc11; + mappings[851] = ItemType.MusicDiscWait; + mappings[852] = ItemType.Trident; + mappings[853] = ItemType.PhantomMembrane; + mappings[854] = ItemType.NautilusShell; + mappings[855] = ItemType.HeartOfTheSea; + mappings[856] = ItemType.Crossbow; + mappings[857] = ItemType.SuspiciousStew; + mappings[858] = ItemType.Loom; + mappings[859] = ItemType.FlowerBannerPattern; + mappings[860] = ItemType.CreeperBannerPattern; + mappings[861] = ItemType.SkullBannerPattern; + mappings[862] = ItemType.MojangBannerPattern; + mappings[863] = ItemType.GlobeBannerPattern; + mappings[864] = ItemType.Barrel; + mappings[865] = ItemType.Smoker; + mappings[866] = ItemType.BlastFurnace; + mappings[867] = ItemType.CartographyTable; + mappings[868] = ItemType.FletchingTable; + mappings[869] = ItemType.Grindstone; + mappings[870] = ItemType.Lectern; + mappings[871] = ItemType.SmithingTable; + mappings[872] = ItemType.Stonecutter; + mappings[873] = ItemType.Bell; + mappings[874] = ItemType.Lantern; + mappings[875] = ItemType.SweetBerries; + mappings[876] = ItemType.Campfire; + } + + protected override Dictionary GetDict() + { + return mappings; + } + } +} diff --git a/MinecraftClient/Inventory/ItemPalettes/ItemPalette262.cs b/MinecraftClient/Inventory/ItemPalettes/ItemPalette262.cs new file mode 100644 index 00000000..9d92f488 --- /dev/null +++ b/MinecraftClient/Inventory/ItemPalettes/ItemPalette262.cs @@ -0,0 +1,1555 @@ +using System.Collections.Generic; + +namespace MinecraftClient.Inventory.ItemPalettes +{ + public class ItemPalette262 : ItemPalette + { + private static readonly Dictionary mappings = new(); + + static ItemPalette262() + { + mappings[0] = ItemType.Air; + mappings[1] = ItemType.Stone; + mappings[2] = ItemType.Granite; + mappings[3] = ItemType.PolishedGranite; + mappings[4] = ItemType.Diorite; + mappings[5] = ItemType.PolishedDiorite; + mappings[6] = ItemType.Andesite; + mappings[7] = ItemType.PolishedAndesite; + mappings[8] = ItemType.Deepslate; + mappings[9] = ItemType.CobbledDeepslate; + mappings[10] = ItemType.PolishedDeepslate; + mappings[11] = ItemType.Calcite; + mappings[12] = ItemType.Tuff; + mappings[13] = ItemType.TuffSlab; + mappings[14] = ItemType.TuffStairs; + mappings[15] = ItemType.TuffWall; + mappings[16] = ItemType.ChiseledTuff; + mappings[17] = ItemType.PolishedTuff; + mappings[18] = ItemType.PolishedTuffSlab; + mappings[19] = ItemType.PolishedTuffStairs; + mappings[20] = ItemType.PolishedTuffWall; + mappings[21] = ItemType.TuffBricks; + mappings[22] = ItemType.TuffBrickSlab; + mappings[23] = ItemType.TuffBrickStairs; + mappings[24] = ItemType.TuffBrickWall; + mappings[25] = ItemType.ChiseledTuffBricks; + mappings[26] = ItemType.Sulfur; + mappings[27] = ItemType.PotentSulfur; + mappings[28] = ItemType.SulfurSlab; + mappings[29] = ItemType.SulfurStairs; + mappings[30] = ItemType.SulfurWall; + mappings[31] = ItemType.PolishedSulfur; + mappings[32] = ItemType.PolishedSulfurSlab; + mappings[33] = ItemType.PolishedSulfurStairs; + mappings[34] = ItemType.PolishedSulfurWall; + mappings[35] = ItemType.SulfurBricks; + mappings[36] = ItemType.SulfurBrickSlab; + mappings[37] = ItemType.SulfurBrickStairs; + mappings[38] = ItemType.SulfurBrickWall; + mappings[39] = ItemType.ChiseledSulfur; + mappings[40] = ItemType.Cinnabar; + mappings[41] = ItemType.CinnabarSlab; + mappings[42] = ItemType.CinnabarStairs; + mappings[43] = ItemType.CinnabarWall; + mappings[44] = ItemType.PolishedCinnabar; + mappings[45] = ItemType.PolishedCinnabarSlab; + mappings[46] = ItemType.PolishedCinnabarStairs; + mappings[47] = ItemType.PolishedCinnabarWall; + mappings[48] = ItemType.CinnabarBricks; + mappings[49] = ItemType.CinnabarBrickSlab; + mappings[50] = ItemType.CinnabarBrickStairs; + mappings[51] = ItemType.CinnabarBrickWall; + mappings[52] = ItemType.ChiseledCinnabar; + mappings[53] = ItemType.DripstoneBlock; + mappings[54] = ItemType.GrassBlock; + mappings[55] = ItemType.Dirt; + mappings[56] = ItemType.CoarseDirt; + mappings[57] = ItemType.Podzol; + mappings[58] = ItemType.RootedDirt; + mappings[59] = ItemType.Mud; + mappings[60] = ItemType.CrimsonNylium; + mappings[61] = ItemType.WarpedNylium; + mappings[62] = ItemType.Cobblestone; + mappings[63] = ItemType.OakPlanks; + mappings[64] = ItemType.SprucePlanks; + mappings[65] = ItemType.BirchPlanks; + mappings[66] = ItemType.JunglePlanks; + mappings[67] = ItemType.AcaciaPlanks; + mappings[68] = ItemType.CherryPlanks; + mappings[69] = ItemType.DarkOakPlanks; + mappings[70] = ItemType.PaleOakPlanks; + mappings[71] = ItemType.MangrovePlanks; + mappings[72] = ItemType.BambooPlanks; + mappings[73] = ItemType.CrimsonPlanks; + mappings[74] = ItemType.WarpedPlanks; + mappings[75] = ItemType.BambooMosaic; + mappings[76] = ItemType.OakSapling; + mappings[77] = ItemType.SpruceSapling; + mappings[78] = ItemType.BirchSapling; + mappings[79] = ItemType.JungleSapling; + mappings[80] = ItemType.AcaciaSapling; + mappings[81] = ItemType.CherrySapling; + mappings[82] = ItemType.DarkOakSapling; + mappings[83] = ItemType.PaleOakSapling; + mappings[84] = ItemType.MangrovePropagule; + mappings[85] = ItemType.Bedrock; + mappings[86] = ItemType.Sand; + mappings[87] = ItemType.SuspiciousSand; + mappings[88] = ItemType.SuspiciousGravel; + mappings[89] = ItemType.RedSand; + mappings[90] = ItemType.Gravel; + mappings[91] = ItemType.CoalOre; + mappings[92] = ItemType.DeepslateCoalOre; + mappings[93] = ItemType.IronOre; + mappings[94] = ItemType.DeepslateIronOre; + mappings[95] = ItemType.CopperOre; + mappings[96] = ItemType.DeepslateCopperOre; + mappings[97] = ItemType.GoldOre; + mappings[98] = ItemType.DeepslateGoldOre; + mappings[99] = ItemType.RedstoneOre; + mappings[100] = ItemType.DeepslateRedstoneOre; + mappings[101] = ItemType.EmeraldOre; + mappings[102] = ItemType.DeepslateEmeraldOre; + mappings[103] = ItemType.LapisOre; + mappings[104] = ItemType.DeepslateLapisOre; + mappings[105] = ItemType.DiamondOre; + mappings[106] = ItemType.DeepslateDiamondOre; + mappings[107] = ItemType.NetherGoldOre; + mappings[108] = ItemType.NetherQuartzOre; + mappings[109] = ItemType.AncientDebris; + mappings[110] = ItemType.CoalBlock; + mappings[111] = ItemType.RawIronBlock; + mappings[112] = ItemType.RawCopperBlock; + mappings[113] = ItemType.RawGoldBlock; + mappings[114] = ItemType.HeavyCore; + mappings[115] = ItemType.AmethystBlock; + mappings[116] = ItemType.BuddingAmethyst; + mappings[117] = ItemType.IronBlock; + mappings[118] = ItemType.CopperBlock; + mappings[119] = ItemType.ExposedCopper; + mappings[120] = ItemType.WeatheredCopper; + mappings[121] = ItemType.OxidizedCopper; + mappings[122] = ItemType.WaxedCopperBlock; + mappings[123] = ItemType.WaxedExposedCopper; + mappings[124] = ItemType.WaxedWeatheredCopper; + mappings[125] = ItemType.WaxedOxidizedCopper; + mappings[126] = ItemType.GoldBlock; + mappings[127] = ItemType.DiamondBlock; + mappings[128] = ItemType.NetheriteBlock; + mappings[129] = ItemType.ChiseledCopper; + mappings[130] = ItemType.ExposedChiseledCopper; + mappings[131] = ItemType.WeatheredChiseledCopper; + mappings[132] = ItemType.OxidizedChiseledCopper; + mappings[133] = ItemType.WaxedChiseledCopper; + mappings[134] = ItemType.WaxedExposedChiseledCopper; + mappings[135] = ItemType.WaxedWeatheredChiseledCopper; + mappings[136] = ItemType.WaxedOxidizedChiseledCopper; + mappings[137] = ItemType.CutCopper; + mappings[138] = ItemType.ExposedCutCopper; + mappings[139] = ItemType.WeatheredCutCopper; + mappings[140] = ItemType.OxidizedCutCopper; + mappings[141] = ItemType.WaxedCutCopper; + mappings[142] = ItemType.WaxedExposedCutCopper; + mappings[143] = ItemType.WaxedWeatheredCutCopper; + mappings[144] = ItemType.WaxedOxidizedCutCopper; + mappings[145] = ItemType.CutCopperStairs; + mappings[146] = ItemType.ExposedCutCopperStairs; + mappings[147] = ItemType.WeatheredCutCopperStairs; + mappings[148] = ItemType.OxidizedCutCopperStairs; + mappings[149] = ItemType.WaxedCutCopperStairs; + mappings[150] = ItemType.WaxedExposedCutCopperStairs; + mappings[151] = ItemType.WaxedWeatheredCutCopperStairs; + mappings[152] = ItemType.WaxedOxidizedCutCopperStairs; + mappings[153] = ItemType.CutCopperSlab; + mappings[154] = ItemType.ExposedCutCopperSlab; + mappings[155] = ItemType.WeatheredCutCopperSlab; + mappings[156] = ItemType.OxidizedCutCopperSlab; + mappings[157] = ItemType.WaxedCutCopperSlab; + mappings[158] = ItemType.WaxedExposedCutCopperSlab; + mappings[159] = ItemType.WaxedWeatheredCutCopperSlab; + mappings[160] = ItemType.WaxedOxidizedCutCopperSlab; + mappings[161] = ItemType.OakLog; + mappings[162] = ItemType.SpruceLog; + mappings[163] = ItemType.BirchLog; + mappings[164] = ItemType.JungleLog; + mappings[165] = ItemType.AcaciaLog; + mappings[166] = ItemType.CherryLog; + mappings[167] = ItemType.PaleOakLog; + mappings[168] = ItemType.DarkOakLog; + mappings[169] = ItemType.MangroveLog; + mappings[170] = ItemType.MangroveRoots; + mappings[171] = ItemType.MuddyMangroveRoots; + mappings[172] = ItemType.CrimsonStem; + mappings[173] = ItemType.WarpedStem; + mappings[174] = ItemType.BambooBlock; + mappings[175] = ItemType.StrippedOakLog; + mappings[176] = ItemType.StrippedSpruceLog; + mappings[177] = ItemType.StrippedBirchLog; + mappings[178] = ItemType.StrippedJungleLog; + mappings[179] = ItemType.StrippedAcaciaLog; + mappings[180] = ItemType.StrippedCherryLog; + mappings[181] = ItemType.StrippedDarkOakLog; + mappings[182] = ItemType.StrippedPaleOakLog; + mappings[183] = ItemType.StrippedMangroveLog; + mappings[184] = ItemType.StrippedCrimsonStem; + mappings[185] = ItemType.StrippedWarpedStem; + mappings[186] = ItemType.StrippedOakWood; + mappings[187] = ItemType.StrippedSpruceWood; + mappings[188] = ItemType.StrippedBirchWood; + mappings[189] = ItemType.StrippedJungleWood; + mappings[190] = ItemType.StrippedAcaciaWood; + mappings[191] = ItemType.StrippedCherryWood; + mappings[192] = ItemType.StrippedDarkOakWood; + mappings[193] = ItemType.StrippedPaleOakWood; + mappings[194] = ItemType.StrippedMangroveWood; + mappings[195] = ItemType.StrippedCrimsonHyphae; + mappings[196] = ItemType.StrippedWarpedHyphae; + mappings[197] = ItemType.StrippedBambooBlock; + mappings[198] = ItemType.OakWood; + mappings[199] = ItemType.SpruceWood; + mappings[200] = ItemType.BirchWood; + mappings[201] = ItemType.JungleWood; + mappings[202] = ItemType.AcaciaWood; + mappings[203] = ItemType.CherryWood; + mappings[204] = ItemType.PaleOakWood; + mappings[205] = ItemType.DarkOakWood; + mappings[206] = ItemType.MangroveWood; + mappings[207] = ItemType.CrimsonHyphae; + mappings[208] = ItemType.WarpedHyphae; + mappings[209] = ItemType.OakLeaves; + mappings[210] = ItemType.SpruceLeaves; + mappings[211] = ItemType.BirchLeaves; + mappings[212] = ItemType.JungleLeaves; + mappings[213] = ItemType.AcaciaLeaves; + mappings[214] = ItemType.CherryLeaves; + mappings[215] = ItemType.DarkOakLeaves; + mappings[216] = ItemType.PaleOakLeaves; + mappings[217] = ItemType.MangroveLeaves; + mappings[218] = ItemType.AzaleaLeaves; + mappings[219] = ItemType.FloweringAzaleaLeaves; + mappings[220] = ItemType.Sponge; + mappings[221] = ItemType.WetSponge; + mappings[222] = ItemType.Glass; + mappings[223] = ItemType.TintedGlass; + mappings[224] = ItemType.LapisBlock; + mappings[225] = ItemType.Sandstone; + mappings[226] = ItemType.ChiseledSandstone; + mappings[227] = ItemType.CutSandstone; + mappings[228] = ItemType.Cobweb; + mappings[229] = ItemType.ShortGrass; + mappings[230] = ItemType.Fern; + mappings[231] = ItemType.Bush; + mappings[232] = ItemType.Azalea; + mappings[233] = ItemType.FloweringAzalea; + mappings[234] = ItemType.DeadBush; + mappings[235] = ItemType.FireflyBush; + mappings[236] = ItemType.ShortDryGrass; + mappings[237] = ItemType.TallDryGrass; + mappings[238] = ItemType.Seagrass; + mappings[239] = ItemType.SeaPickle; + mappings[240] = ItemType.WhiteWool; + mappings[241] = ItemType.OrangeWool; + mappings[242] = ItemType.MagentaWool; + mappings[243] = ItemType.LightBlueWool; + mappings[244] = ItemType.YellowWool; + mappings[245] = ItemType.LimeWool; + mappings[246] = ItemType.PinkWool; + mappings[247] = ItemType.GrayWool; + mappings[248] = ItemType.LightGrayWool; + mappings[249] = ItemType.CyanWool; + mappings[250] = ItemType.PurpleWool; + mappings[251] = ItemType.BlueWool; + mappings[252] = ItemType.BrownWool; + mappings[253] = ItemType.GreenWool; + mappings[254] = ItemType.RedWool; + mappings[255] = ItemType.BlackWool; + mappings[256] = ItemType.Dandelion; + mappings[257] = ItemType.GoldenDandelion; + mappings[258] = ItemType.OpenEyeblossom; + mappings[259] = ItemType.ClosedEyeblossom; + mappings[260] = ItemType.Poppy; + mappings[261] = ItemType.BlueOrchid; + mappings[262] = ItemType.Allium; + mappings[263] = ItemType.AzureBluet; + mappings[264] = ItemType.RedTulip; + mappings[265] = ItemType.OrangeTulip; + mappings[266] = ItemType.WhiteTulip; + mappings[267] = ItemType.PinkTulip; + mappings[268] = ItemType.OxeyeDaisy; + mappings[269] = ItemType.Cornflower; + mappings[270] = ItemType.LilyOfTheValley; + mappings[271] = ItemType.WitherRose; + mappings[272] = ItemType.Torchflower; + mappings[273] = ItemType.PitcherPlant; + mappings[274] = ItemType.SporeBlossom; + mappings[275] = ItemType.BrownMushroom; + mappings[276] = ItemType.RedMushroom; + mappings[277] = ItemType.CrimsonFungus; + mappings[278] = ItemType.WarpedFungus; + mappings[279] = ItemType.CrimsonRoots; + mappings[280] = ItemType.WarpedRoots; + mappings[281] = ItemType.NetherSprouts; + mappings[282] = ItemType.WeepingVines; + mappings[283] = ItemType.TwistingVines; + mappings[284] = ItemType.SugarCane; + mappings[285] = ItemType.Kelp; + mappings[286] = ItemType.PinkPetals; + mappings[287] = ItemType.Wildflowers; + mappings[288] = ItemType.LeafLitter; + mappings[289] = ItemType.MossCarpet; + mappings[290] = ItemType.MossBlock; + mappings[291] = ItemType.PaleMossCarpet; + mappings[292] = ItemType.PaleHangingMoss; + mappings[293] = ItemType.PaleMossBlock; + mappings[294] = ItemType.HangingRoots; + mappings[295] = ItemType.BigDripleaf; + mappings[296] = ItemType.SmallDripleaf; + mappings[297] = ItemType.Bamboo; + mappings[298] = ItemType.OakSlab; + mappings[299] = ItemType.SpruceSlab; + mappings[300] = ItemType.BirchSlab; + mappings[301] = ItemType.JungleSlab; + mappings[302] = ItemType.AcaciaSlab; + mappings[303] = ItemType.CherrySlab; + mappings[304] = ItemType.DarkOakSlab; + mappings[305] = ItemType.PaleOakSlab; + mappings[306] = ItemType.MangroveSlab; + mappings[307] = ItemType.BambooSlab; + mappings[308] = ItemType.BambooMosaicSlab; + mappings[309] = ItemType.CrimsonSlab; + mappings[310] = ItemType.WarpedSlab; + mappings[311] = ItemType.StoneSlab; + mappings[312] = ItemType.SmoothStoneSlab; + mappings[313] = ItemType.SandstoneSlab; + mappings[314] = ItemType.CutSandstoneSlab; + mappings[315] = ItemType.PetrifiedOakSlab; + mappings[316] = ItemType.CobblestoneSlab; + mappings[317] = ItemType.BrickSlab; + mappings[318] = ItemType.StoneBrickSlab; + mappings[319] = ItemType.MudBrickSlab; + mappings[320] = ItemType.NetherBrickSlab; + mappings[321] = ItemType.QuartzSlab; + mappings[322] = ItemType.RedSandstoneSlab; + mappings[323] = ItemType.CutRedSandstoneSlab; + mappings[324] = ItemType.PurpurSlab; + mappings[325] = ItemType.PrismarineSlab; + mappings[326] = ItemType.PrismarineBrickSlab; + mappings[327] = ItemType.DarkPrismarineSlab; + mappings[328] = ItemType.SmoothQuartz; + mappings[329] = ItemType.SmoothRedSandstone; + mappings[330] = ItemType.SmoothSandstone; + mappings[331] = ItemType.SmoothStone; + mappings[332] = ItemType.Bricks; + mappings[333] = ItemType.AcaciaShelf; + mappings[334] = ItemType.BambooShelf; + mappings[335] = ItemType.BirchShelf; + mappings[336] = ItemType.CherryShelf; + mappings[337] = ItemType.CrimsonShelf; + mappings[338] = ItemType.DarkOakShelf; + mappings[339] = ItemType.JungleShelf; + mappings[340] = ItemType.MangroveShelf; + mappings[341] = ItemType.OakShelf; + mappings[342] = ItemType.PaleOakShelf; + mappings[343] = ItemType.SpruceShelf; + mappings[344] = ItemType.WarpedShelf; + mappings[345] = ItemType.Bookshelf; + mappings[346] = ItemType.ChiseledBookshelf; + mappings[347] = ItemType.DecoratedPot; + mappings[348] = ItemType.MossyCobblestone; + mappings[349] = ItemType.Obsidian; + mappings[350] = ItemType.Torch; + mappings[351] = ItemType.EndRod; + mappings[352] = ItemType.ChorusPlant; + mappings[353] = ItemType.ChorusFlower; + mappings[354] = ItemType.PurpurBlock; + mappings[355] = ItemType.PurpurPillar; + mappings[356] = ItemType.PurpurStairs; + mappings[357] = ItemType.Spawner; + mappings[358] = ItemType.CreakingHeart; + mappings[359] = ItemType.Chest; + mappings[360] = ItemType.CraftingTable; + mappings[361] = ItemType.Farmland; + mappings[362] = ItemType.Furnace; + mappings[363] = ItemType.Ladder; + mappings[364] = ItemType.CobblestoneStairs; + mappings[365] = ItemType.Snow; + mappings[366] = ItemType.Ice; + mappings[367] = ItemType.SnowBlock; + mappings[368] = ItemType.Cactus; + mappings[369] = ItemType.CactusFlower; + mappings[370] = ItemType.Clay; + mappings[371] = ItemType.Jukebox; + mappings[372] = ItemType.OakFence; + mappings[373] = ItemType.SpruceFence; + mappings[374] = ItemType.BirchFence; + mappings[375] = ItemType.JungleFence; + mappings[376] = ItemType.AcaciaFence; + mappings[377] = ItemType.CherryFence; + mappings[378] = ItemType.DarkOakFence; + mappings[379] = ItemType.PaleOakFence; + mappings[380] = ItemType.MangroveFence; + mappings[381] = ItemType.BambooFence; + mappings[382] = ItemType.CrimsonFence; + mappings[383] = ItemType.WarpedFence; + mappings[384] = ItemType.Pumpkin; + mappings[385] = ItemType.CarvedPumpkin; + mappings[386] = ItemType.JackOLantern; + mappings[387] = ItemType.Netherrack; + mappings[388] = ItemType.SoulSand; + mappings[389] = ItemType.SoulSoil; + mappings[390] = ItemType.Basalt; + mappings[391] = ItemType.PolishedBasalt; + mappings[392] = ItemType.SmoothBasalt; + mappings[393] = ItemType.SoulTorch; + mappings[394] = ItemType.CopperTorch; + mappings[395] = ItemType.Glowstone; + mappings[396] = ItemType.InfestedStone; + mappings[397] = ItemType.InfestedCobblestone; + mappings[398] = ItemType.InfestedStoneBricks; + mappings[399] = ItemType.InfestedMossyStoneBricks; + mappings[400] = ItemType.InfestedCrackedStoneBricks; + mappings[401] = ItemType.InfestedChiseledStoneBricks; + mappings[402] = ItemType.InfestedDeepslate; + mappings[403] = ItemType.StoneBricks; + mappings[404] = ItemType.MossyStoneBricks; + mappings[405] = ItemType.CrackedStoneBricks; + mappings[406] = ItemType.ChiseledStoneBricks; + mappings[407] = ItemType.PackedMud; + mappings[408] = ItemType.MudBricks; + mappings[409] = ItemType.DeepslateBricks; + mappings[410] = ItemType.CrackedDeepslateBricks; + mappings[411] = ItemType.DeepslateTiles; + mappings[412] = ItemType.CrackedDeepslateTiles; + mappings[413] = ItemType.ChiseledDeepslate; + mappings[414] = ItemType.ReinforcedDeepslate; + mappings[415] = ItemType.BrownMushroomBlock; + mappings[416] = ItemType.RedMushroomBlock; + mappings[417] = ItemType.MushroomStem; + mappings[418] = ItemType.IronBars; + mappings[419] = ItemType.CopperBars; + mappings[420] = ItemType.ExposedCopperBars; + mappings[421] = ItemType.WeatheredCopperBars; + mappings[422] = ItemType.OxidizedCopperBars; + mappings[423] = ItemType.WaxedCopperBars; + mappings[424] = ItemType.WaxedExposedCopperBars; + mappings[425] = ItemType.WaxedWeatheredCopperBars; + mappings[426] = ItemType.WaxedOxidizedCopperBars; + mappings[427] = ItemType.IronChain; + mappings[428] = ItemType.CopperChain; + mappings[429] = ItemType.ExposedCopperChain; + mappings[430] = ItemType.WeatheredCopperChain; + mappings[431] = ItemType.OxidizedCopperChain; + mappings[432] = ItemType.WaxedCopperChain; + mappings[433] = ItemType.WaxedExposedCopperChain; + mappings[434] = ItemType.WaxedWeatheredCopperChain; + mappings[435] = ItemType.WaxedOxidizedCopperChain; + mappings[436] = ItemType.GlassPane; + mappings[437] = ItemType.Melon; + mappings[438] = ItemType.Vine; + mappings[439] = ItemType.GlowLichen; + mappings[440] = ItemType.ResinClump; + mappings[441] = ItemType.ResinBlock; + mappings[442] = ItemType.ResinBricks; + mappings[443] = ItemType.ResinBrickStairs; + mappings[444] = ItemType.ResinBrickSlab; + mappings[445] = ItemType.ResinBrickWall; + mappings[446] = ItemType.ChiseledResinBricks; + mappings[447] = ItemType.BrickStairs; + mappings[448] = ItemType.StoneBrickStairs; + mappings[449] = ItemType.MudBrickStairs; + mappings[450] = ItemType.Mycelium; + mappings[451] = ItemType.LilyPad; + mappings[452] = ItemType.NetherBricks; + mappings[453] = ItemType.CrackedNetherBricks; + mappings[454] = ItemType.ChiseledNetherBricks; + mappings[455] = ItemType.NetherBrickFence; + mappings[456] = ItemType.NetherBrickStairs; + mappings[457] = ItemType.Sculk; + mappings[458] = ItemType.SculkVein; + mappings[459] = ItemType.SculkCatalyst; + mappings[460] = ItemType.SculkShrieker; + mappings[461] = ItemType.EnchantingTable; + mappings[462] = ItemType.EndPortalFrame; + mappings[463] = ItemType.EndStone; + mappings[464] = ItemType.EndStoneBricks; + mappings[465] = ItemType.DragonEgg; + mappings[466] = ItemType.SandstoneStairs; + mappings[467] = ItemType.EnderChest; + mappings[468] = ItemType.EmeraldBlock; + mappings[469] = ItemType.OakStairs; + mappings[470] = ItemType.SpruceStairs; + mappings[471] = ItemType.BirchStairs; + mappings[472] = ItemType.JungleStairs; + mappings[473] = ItemType.AcaciaStairs; + mappings[474] = ItemType.CherryStairs; + mappings[475] = ItemType.DarkOakStairs; + mappings[476] = ItemType.PaleOakStairs; + mappings[477] = ItemType.MangroveStairs; + mappings[478] = ItemType.BambooStairs; + mappings[479] = ItemType.BambooMosaicStairs; + mappings[480] = ItemType.CrimsonStairs; + mappings[481] = ItemType.WarpedStairs; + mappings[482] = ItemType.CommandBlock; + mappings[483] = ItemType.Beacon; + mappings[484] = ItemType.CobblestoneWall; + mappings[485] = ItemType.MossyCobblestoneWall; + mappings[486] = ItemType.BrickWall; + mappings[487] = ItemType.PrismarineWall; + mappings[488] = ItemType.RedSandstoneWall; + mappings[489] = ItemType.MossyStoneBrickWall; + mappings[490] = ItemType.GraniteWall; + mappings[491] = ItemType.StoneBrickWall; + mappings[492] = ItemType.MudBrickWall; + mappings[493] = ItemType.NetherBrickWall; + mappings[494] = ItemType.AndesiteWall; + mappings[495] = ItemType.RedNetherBrickWall; + mappings[496] = ItemType.SandstoneWall; + mappings[497] = ItemType.EndStoneBrickWall; + mappings[498] = ItemType.DioriteWall; + mappings[499] = ItemType.BlackstoneWall; + mappings[500] = ItemType.PolishedBlackstoneWall; + mappings[501] = ItemType.PolishedBlackstoneBrickWall; + mappings[502] = ItemType.CobbledDeepslateWall; + mappings[503] = ItemType.PolishedDeepslateWall; + mappings[504] = ItemType.DeepslateBrickWall; + mappings[505] = ItemType.DeepslateTileWall; + mappings[506] = ItemType.Anvil; + mappings[507] = ItemType.ChippedAnvil; + mappings[508] = ItemType.DamagedAnvil; + mappings[509] = ItemType.ChiseledQuartzBlock; + mappings[510] = ItemType.QuartzBlock; + mappings[511] = ItemType.QuartzBricks; + mappings[512] = ItemType.QuartzPillar; + mappings[513] = ItemType.QuartzStairs; + mappings[514] = ItemType.WhiteTerracotta; + mappings[515] = ItemType.OrangeTerracotta; + mappings[516] = ItemType.MagentaTerracotta; + mappings[517] = ItemType.LightBlueTerracotta; + mappings[518] = ItemType.YellowTerracotta; + mappings[519] = ItemType.LimeTerracotta; + mappings[520] = ItemType.PinkTerracotta; + mappings[521] = ItemType.GrayTerracotta; + mappings[522] = ItemType.LightGrayTerracotta; + mappings[523] = ItemType.CyanTerracotta; + mappings[524] = ItemType.PurpleTerracotta; + mappings[525] = ItemType.BlueTerracotta; + mappings[526] = ItemType.BrownTerracotta; + mappings[527] = ItemType.GreenTerracotta; + mappings[528] = ItemType.RedTerracotta; + mappings[529] = ItemType.BlackTerracotta; + mappings[530] = ItemType.Barrier; + mappings[531] = ItemType.Light; + mappings[532] = ItemType.HayBlock; + mappings[533] = ItemType.WhiteCarpet; + mappings[534] = ItemType.OrangeCarpet; + mappings[535] = ItemType.MagentaCarpet; + mappings[536] = ItemType.LightBlueCarpet; + mappings[537] = ItemType.YellowCarpet; + mappings[538] = ItemType.LimeCarpet; + mappings[539] = ItemType.PinkCarpet; + mappings[540] = ItemType.GrayCarpet; + mappings[541] = ItemType.LightGrayCarpet; + mappings[542] = ItemType.CyanCarpet; + mappings[543] = ItemType.PurpleCarpet; + mappings[544] = ItemType.BlueCarpet; + mappings[545] = ItemType.BrownCarpet; + mappings[546] = ItemType.GreenCarpet; + mappings[547] = ItemType.RedCarpet; + mappings[548] = ItemType.BlackCarpet; + mappings[549] = ItemType.Terracotta; + mappings[550] = ItemType.PackedIce; + mappings[551] = ItemType.DirtPath; + mappings[552] = ItemType.Sunflower; + mappings[553] = ItemType.Lilac; + mappings[554] = ItemType.RoseBush; + mappings[555] = ItemType.Peony; + mappings[556] = ItemType.TallGrass; + mappings[557] = ItemType.LargeFern; + mappings[558] = ItemType.WhiteStainedGlass; + mappings[559] = ItemType.OrangeStainedGlass; + mappings[560] = ItemType.MagentaStainedGlass; + mappings[561] = ItemType.LightBlueStainedGlass; + mappings[562] = ItemType.YellowStainedGlass; + mappings[563] = ItemType.LimeStainedGlass; + mappings[564] = ItemType.PinkStainedGlass; + mappings[565] = ItemType.GrayStainedGlass; + mappings[566] = ItemType.LightGrayStainedGlass; + mappings[567] = ItemType.CyanStainedGlass; + mappings[568] = ItemType.PurpleStainedGlass; + mappings[569] = ItemType.BlueStainedGlass; + mappings[570] = ItemType.BrownStainedGlass; + mappings[571] = ItemType.GreenStainedGlass; + mappings[572] = ItemType.RedStainedGlass; + mappings[573] = ItemType.BlackStainedGlass; + mappings[574] = ItemType.WhiteStainedGlassPane; + mappings[575] = ItemType.OrangeStainedGlassPane; + mappings[576] = ItemType.MagentaStainedGlassPane; + mappings[577] = ItemType.LightBlueStainedGlassPane; + mappings[578] = ItemType.YellowStainedGlassPane; + mappings[579] = ItemType.LimeStainedGlassPane; + mappings[580] = ItemType.PinkStainedGlassPane; + mappings[581] = ItemType.GrayStainedGlassPane; + mappings[582] = ItemType.LightGrayStainedGlassPane; + mappings[583] = ItemType.CyanStainedGlassPane; + mappings[584] = ItemType.PurpleStainedGlassPane; + mappings[585] = ItemType.BlueStainedGlassPane; + mappings[586] = ItemType.BrownStainedGlassPane; + mappings[587] = ItemType.GreenStainedGlassPane; + mappings[588] = ItemType.RedStainedGlassPane; + mappings[589] = ItemType.BlackStainedGlassPane; + mappings[590] = ItemType.Prismarine; + mappings[591] = ItemType.PrismarineBricks; + mappings[592] = ItemType.DarkPrismarine; + mappings[593] = ItemType.PrismarineStairs; + mappings[594] = ItemType.PrismarineBrickStairs; + mappings[595] = ItemType.DarkPrismarineStairs; + mappings[596] = ItemType.SeaLantern; + mappings[597] = ItemType.RedSandstone; + mappings[598] = ItemType.ChiseledRedSandstone; + mappings[599] = ItemType.CutRedSandstone; + mappings[600] = ItemType.RedSandstoneStairs; + mappings[601] = ItemType.RepeatingCommandBlock; + mappings[602] = ItemType.ChainCommandBlock; + mappings[603] = ItemType.MagmaBlock; + mappings[604] = ItemType.NetherWartBlock; + mappings[605] = ItemType.WarpedWartBlock; + mappings[606] = ItemType.RedNetherBricks; + mappings[607] = ItemType.BoneBlock; + mappings[608] = ItemType.StructureVoid; + mappings[609] = ItemType.ShulkerBox; + mappings[610] = ItemType.WhiteShulkerBox; + mappings[611] = ItemType.OrangeShulkerBox; + mappings[612] = ItemType.MagentaShulkerBox; + mappings[613] = ItemType.LightBlueShulkerBox; + mappings[614] = ItemType.YellowShulkerBox; + mappings[615] = ItemType.LimeShulkerBox; + mappings[616] = ItemType.PinkShulkerBox; + mappings[617] = ItemType.GrayShulkerBox; + mappings[618] = ItemType.LightGrayShulkerBox; + mappings[619] = ItemType.CyanShulkerBox; + mappings[620] = ItemType.PurpleShulkerBox; + mappings[621] = ItemType.BlueShulkerBox; + mappings[622] = ItemType.BrownShulkerBox; + mappings[623] = ItemType.GreenShulkerBox; + mappings[624] = ItemType.RedShulkerBox; + mappings[625] = ItemType.BlackShulkerBox; + mappings[626] = ItemType.WhiteGlazedTerracotta; + mappings[627] = ItemType.OrangeGlazedTerracotta; + mappings[628] = ItemType.MagentaGlazedTerracotta; + mappings[629] = ItemType.LightBlueGlazedTerracotta; + mappings[630] = ItemType.YellowGlazedTerracotta; + mappings[631] = ItemType.LimeGlazedTerracotta; + mappings[632] = ItemType.PinkGlazedTerracotta; + mappings[633] = ItemType.GrayGlazedTerracotta; + mappings[634] = ItemType.LightGrayGlazedTerracotta; + mappings[635] = ItemType.CyanGlazedTerracotta; + mappings[636] = ItemType.PurpleGlazedTerracotta; + mappings[637] = ItemType.BlueGlazedTerracotta; + mappings[638] = ItemType.BrownGlazedTerracotta; + mappings[639] = ItemType.GreenGlazedTerracotta; + mappings[640] = ItemType.RedGlazedTerracotta; + mappings[641] = ItemType.BlackGlazedTerracotta; + mappings[642] = ItemType.WhiteConcrete; + mappings[643] = ItemType.OrangeConcrete; + mappings[644] = ItemType.MagentaConcrete; + mappings[645] = ItemType.LightBlueConcrete; + mappings[646] = ItemType.YellowConcrete; + mappings[647] = ItemType.LimeConcrete; + mappings[648] = ItemType.PinkConcrete; + mappings[649] = ItemType.GrayConcrete; + mappings[650] = ItemType.LightGrayConcrete; + mappings[651] = ItemType.CyanConcrete; + mappings[652] = ItemType.PurpleConcrete; + mappings[653] = ItemType.BlueConcrete; + mappings[654] = ItemType.BrownConcrete; + mappings[655] = ItemType.GreenConcrete; + mappings[656] = ItemType.RedConcrete; + mappings[657] = ItemType.BlackConcrete; + mappings[658] = ItemType.WhiteConcretePowder; + mappings[659] = ItemType.OrangeConcretePowder; + mappings[660] = ItemType.MagentaConcretePowder; + mappings[661] = ItemType.LightBlueConcretePowder; + mappings[662] = ItemType.YellowConcretePowder; + mappings[663] = ItemType.LimeConcretePowder; + mappings[664] = ItemType.PinkConcretePowder; + mappings[665] = ItemType.GrayConcretePowder; + mappings[666] = ItemType.LightGrayConcretePowder; + mappings[667] = ItemType.CyanConcretePowder; + mappings[668] = ItemType.PurpleConcretePowder; + mappings[669] = ItemType.BlueConcretePowder; + mappings[670] = ItemType.BrownConcretePowder; + mappings[671] = ItemType.GreenConcretePowder; + mappings[672] = ItemType.RedConcretePowder; + mappings[673] = ItemType.BlackConcretePowder; + mappings[674] = ItemType.TurtleEgg; + mappings[675] = ItemType.SnifferEgg; + mappings[676] = ItemType.DriedGhast; + mappings[677] = ItemType.DeadTubeCoralBlock; + mappings[678] = ItemType.DeadBrainCoralBlock; + mappings[679] = ItemType.DeadBubbleCoralBlock; + mappings[680] = ItemType.DeadFireCoralBlock; + mappings[681] = ItemType.DeadHornCoralBlock; + mappings[682] = ItemType.TubeCoralBlock; + mappings[683] = ItemType.BrainCoralBlock; + mappings[684] = ItemType.BubbleCoralBlock; + mappings[685] = ItemType.FireCoralBlock; + mappings[686] = ItemType.HornCoralBlock; + mappings[687] = ItemType.TubeCoral; + mappings[688] = ItemType.BrainCoral; + mappings[689] = ItemType.BubbleCoral; + mappings[690] = ItemType.FireCoral; + mappings[691] = ItemType.HornCoral; + mappings[692] = ItemType.DeadBrainCoral; + mappings[693] = ItemType.DeadBubbleCoral; + mappings[694] = ItemType.DeadFireCoral; + mappings[695] = ItemType.DeadHornCoral; + mappings[696] = ItemType.DeadTubeCoral; + mappings[697] = ItemType.TubeCoralFan; + mappings[698] = ItemType.BrainCoralFan; + mappings[699] = ItemType.BubbleCoralFan; + mappings[700] = ItemType.FireCoralFan; + mappings[701] = ItemType.HornCoralFan; + mappings[702] = ItemType.DeadTubeCoralFan; + mappings[703] = ItemType.DeadBrainCoralFan; + mappings[704] = ItemType.DeadBubbleCoralFan; + mappings[705] = ItemType.DeadFireCoralFan; + mappings[706] = ItemType.DeadHornCoralFan; + mappings[707] = ItemType.BlueIce; + mappings[708] = ItemType.Conduit; + mappings[709] = ItemType.PolishedGraniteStairs; + mappings[710] = ItemType.SmoothRedSandstoneStairs; + mappings[711] = ItemType.MossyStoneBrickStairs; + mappings[712] = ItemType.PolishedDioriteStairs; + mappings[713] = ItemType.MossyCobblestoneStairs; + mappings[714] = ItemType.EndStoneBrickStairs; + mappings[715] = ItemType.StoneStairs; + mappings[716] = ItemType.SmoothSandstoneStairs; + mappings[717] = ItemType.SmoothQuartzStairs; + mappings[718] = ItemType.GraniteStairs; + mappings[719] = ItemType.AndesiteStairs; + mappings[720] = ItemType.RedNetherBrickStairs; + mappings[721] = ItemType.PolishedAndesiteStairs; + mappings[722] = ItemType.DioriteStairs; + mappings[723] = ItemType.CobbledDeepslateStairs; + mappings[724] = ItemType.PolishedDeepslateStairs; + mappings[725] = ItemType.DeepslateBrickStairs; + mappings[726] = ItemType.DeepslateTileStairs; + mappings[727] = ItemType.PolishedGraniteSlab; + mappings[728] = ItemType.SmoothRedSandstoneSlab; + mappings[729] = ItemType.MossyStoneBrickSlab; + mappings[730] = ItemType.PolishedDioriteSlab; + mappings[731] = ItemType.MossyCobblestoneSlab; + mappings[732] = ItemType.EndStoneBrickSlab; + mappings[733] = ItemType.SmoothSandstoneSlab; + mappings[734] = ItemType.SmoothQuartzSlab; + mappings[735] = ItemType.GraniteSlab; + mappings[736] = ItemType.AndesiteSlab; + mappings[737] = ItemType.RedNetherBrickSlab; + mappings[738] = ItemType.PolishedAndesiteSlab; + mappings[739] = ItemType.DioriteSlab; + mappings[740] = ItemType.CobbledDeepslateSlab; + mappings[741] = ItemType.PolishedDeepslateSlab; + mappings[742] = ItemType.DeepslateBrickSlab; + mappings[743] = ItemType.DeepslateTileSlab; + mappings[744] = ItemType.Scaffolding; + mappings[745] = ItemType.Redstone; + mappings[746] = ItemType.RedstoneTorch; + mappings[747] = ItemType.RedstoneBlock; + mappings[748] = ItemType.Repeater; + mappings[749] = ItemType.Comparator; + mappings[750] = ItemType.Piston; + mappings[751] = ItemType.StickyPiston; + mappings[752] = ItemType.SlimeBlock; + mappings[753] = ItemType.HoneyBlock; + mappings[754] = ItemType.Observer; + mappings[755] = ItemType.Hopper; + mappings[756] = ItemType.Dispenser; + mappings[757] = ItemType.Dropper; + mappings[758] = ItemType.Lectern; + mappings[759] = ItemType.Target; + mappings[760] = ItemType.Lever; + mappings[761] = ItemType.LightningRod; + mappings[762] = ItemType.ExposedLightningRod; + mappings[763] = ItemType.WeatheredLightningRod; + mappings[764] = ItemType.OxidizedLightningRod; + mappings[765] = ItemType.WaxedLightningRod; + mappings[766] = ItemType.WaxedExposedLightningRod; + mappings[767] = ItemType.WaxedWeatheredLightningRod; + mappings[768] = ItemType.WaxedOxidizedLightningRod; + mappings[769] = ItemType.DaylightDetector; + mappings[770] = ItemType.SculkSensor; + mappings[771] = ItemType.CalibratedSculkSensor; + mappings[772] = ItemType.TripwireHook; + mappings[773] = ItemType.TrappedChest; + mappings[774] = ItemType.Tnt; + mappings[775] = ItemType.RedstoneLamp; + mappings[776] = ItemType.NoteBlock; + mappings[777] = ItemType.StoneButton; + mappings[778] = ItemType.PolishedBlackstoneButton; + mappings[779] = ItemType.OakButton; + mappings[780] = ItemType.SpruceButton; + mappings[781] = ItemType.BirchButton; + mappings[782] = ItemType.JungleButton; + mappings[783] = ItemType.AcaciaButton; + mappings[784] = ItemType.CherryButton; + mappings[785] = ItemType.DarkOakButton; + mappings[786] = ItemType.PaleOakButton; + mappings[787] = ItemType.MangroveButton; + mappings[788] = ItemType.BambooButton; + mappings[789] = ItemType.CrimsonButton; + mappings[790] = ItemType.WarpedButton; + mappings[791] = ItemType.StonePressurePlate; + mappings[792] = ItemType.PolishedBlackstonePressurePlate; + mappings[793] = ItemType.LightWeightedPressurePlate; + mappings[794] = ItemType.HeavyWeightedPressurePlate; + mappings[795] = ItemType.OakPressurePlate; + mappings[796] = ItemType.SprucePressurePlate; + mappings[797] = ItemType.BirchPressurePlate; + mappings[798] = ItemType.JunglePressurePlate; + mappings[799] = ItemType.AcaciaPressurePlate; + mappings[800] = ItemType.CherryPressurePlate; + mappings[801] = ItemType.DarkOakPressurePlate; + mappings[802] = ItemType.PaleOakPressurePlate; + mappings[803] = ItemType.MangrovePressurePlate; + mappings[804] = ItemType.BambooPressurePlate; + mappings[805] = ItemType.CrimsonPressurePlate; + mappings[806] = ItemType.WarpedPressurePlate; + mappings[807] = ItemType.IronDoor; + mappings[808] = ItemType.OakDoor; + mappings[809] = ItemType.SpruceDoor; + mappings[810] = ItemType.BirchDoor; + mappings[811] = ItemType.JungleDoor; + mappings[812] = ItemType.AcaciaDoor; + mappings[813] = ItemType.CherryDoor; + mappings[814] = ItemType.DarkOakDoor; + mappings[815] = ItemType.PaleOakDoor; + mappings[816] = ItemType.MangroveDoor; + mappings[817] = ItemType.BambooDoor; + mappings[818] = ItemType.CrimsonDoor; + mappings[819] = ItemType.WarpedDoor; + mappings[820] = ItemType.CopperDoor; + mappings[821] = ItemType.ExposedCopperDoor; + mappings[822] = ItemType.WeatheredCopperDoor; + mappings[823] = ItemType.OxidizedCopperDoor; + mappings[824] = ItemType.WaxedCopperDoor; + mappings[825] = ItemType.WaxedExposedCopperDoor; + mappings[826] = ItemType.WaxedWeatheredCopperDoor; + mappings[827] = ItemType.WaxedOxidizedCopperDoor; + mappings[828] = ItemType.IronTrapdoor; + mappings[829] = ItemType.OakTrapdoor; + mappings[830] = ItemType.SpruceTrapdoor; + mappings[831] = ItemType.BirchTrapdoor; + mappings[832] = ItemType.JungleTrapdoor; + mappings[833] = ItemType.AcaciaTrapdoor; + mappings[834] = ItemType.CherryTrapdoor; + mappings[835] = ItemType.DarkOakTrapdoor; + mappings[836] = ItemType.PaleOakTrapdoor; + mappings[837] = ItemType.MangroveTrapdoor; + mappings[838] = ItemType.BambooTrapdoor; + mappings[839] = ItemType.CrimsonTrapdoor; + mappings[840] = ItemType.WarpedTrapdoor; + mappings[841] = ItemType.CopperTrapdoor; + mappings[842] = ItemType.ExposedCopperTrapdoor; + mappings[843] = ItemType.WeatheredCopperTrapdoor; + mappings[844] = ItemType.OxidizedCopperTrapdoor; + mappings[845] = ItemType.WaxedCopperTrapdoor; + mappings[846] = ItemType.WaxedExposedCopperTrapdoor; + mappings[847] = ItemType.WaxedWeatheredCopperTrapdoor; + mappings[848] = ItemType.WaxedOxidizedCopperTrapdoor; + mappings[849] = ItemType.OakFenceGate; + mappings[850] = ItemType.SpruceFenceGate; + mappings[851] = ItemType.BirchFenceGate; + mappings[852] = ItemType.JungleFenceGate; + mappings[853] = ItemType.AcaciaFenceGate; + mappings[854] = ItemType.CherryFenceGate; + mappings[855] = ItemType.DarkOakFenceGate; + mappings[856] = ItemType.PaleOakFenceGate; + mappings[857] = ItemType.MangroveFenceGate; + mappings[858] = ItemType.BambooFenceGate; + mappings[859] = ItemType.CrimsonFenceGate; + mappings[860] = ItemType.WarpedFenceGate; + mappings[861] = ItemType.PoweredRail; + mappings[862] = ItemType.DetectorRail; + mappings[863] = ItemType.Rail; + mappings[864] = ItemType.ActivatorRail; + mappings[865] = ItemType.Saddle; + mappings[866] = ItemType.WhiteHarness; + mappings[867] = ItemType.OrangeHarness; + mappings[868] = ItemType.MagentaHarness; + mappings[869] = ItemType.LightBlueHarness; + mappings[870] = ItemType.YellowHarness; + mappings[871] = ItemType.LimeHarness; + mappings[872] = ItemType.PinkHarness; + mappings[873] = ItemType.GrayHarness; + mappings[874] = ItemType.LightGrayHarness; + mappings[875] = ItemType.CyanHarness; + mappings[876] = ItemType.PurpleHarness; + mappings[877] = ItemType.BlueHarness; + mappings[878] = ItemType.BrownHarness; + mappings[879] = ItemType.GreenHarness; + mappings[880] = ItemType.RedHarness; + mappings[881] = ItemType.BlackHarness; + mappings[882] = ItemType.Minecart; + mappings[883] = ItemType.ChestMinecart; + mappings[884] = ItemType.FurnaceMinecart; + mappings[885] = ItemType.TntMinecart; + mappings[886] = ItemType.HopperMinecart; + mappings[887] = ItemType.CarrotOnAStick; + mappings[888] = ItemType.WarpedFungusOnAStick; + mappings[889] = ItemType.PhantomMembrane; + mappings[890] = ItemType.Elytra; + mappings[891] = ItemType.OakBoat; + mappings[892] = ItemType.OakChestBoat; + mappings[893] = ItemType.SpruceBoat; + mappings[894] = ItemType.SpruceChestBoat; + mappings[895] = ItemType.BirchBoat; + mappings[896] = ItemType.BirchChestBoat; + mappings[897] = ItemType.JungleBoat; + mappings[898] = ItemType.JungleChestBoat; + mappings[899] = ItemType.AcaciaBoat; + mappings[900] = ItemType.AcaciaChestBoat; + mappings[901] = ItemType.CherryBoat; + mappings[902] = ItemType.CherryChestBoat; + mappings[903] = ItemType.DarkOakBoat; + mappings[904] = ItemType.DarkOakChestBoat; + mappings[905] = ItemType.PaleOakBoat; + mappings[906] = ItemType.PaleOakChestBoat; + mappings[907] = ItemType.MangroveBoat; + mappings[908] = ItemType.MangroveChestBoat; + mappings[909] = ItemType.BambooRaft; + mappings[910] = ItemType.BambooChestRaft; + mappings[911] = ItemType.StructureBlock; + mappings[912] = ItemType.Jigsaw; + mappings[913] = ItemType.TestBlock; + mappings[914] = ItemType.TestInstanceBlock; + mappings[915] = ItemType.TurtleHelmet; + mappings[916] = ItemType.TurtleScute; + mappings[917] = ItemType.ArmadilloScute; + mappings[918] = ItemType.WolfArmor; + mappings[919] = ItemType.FlintAndSteel; + mappings[920] = ItemType.Bowl; + mappings[921] = ItemType.Apple; + mappings[922] = ItemType.Bow; + mappings[923] = ItemType.Arrow; + mappings[924] = ItemType.Coal; + mappings[925] = ItemType.Charcoal; + mappings[926] = ItemType.Diamond; + mappings[927] = ItemType.Emerald; + mappings[928] = ItemType.LapisLazuli; + mappings[929] = ItemType.Quartz; + mappings[930] = ItemType.AmethystShard; + mappings[931] = ItemType.RawIron; + mappings[932] = ItemType.IronIngot; + mappings[933] = ItemType.RawCopper; + mappings[934] = ItemType.CopperIngot; + mappings[935] = ItemType.RawGold; + mappings[936] = ItemType.GoldIngot; + mappings[937] = ItemType.NetheriteIngot; + mappings[938] = ItemType.NetheriteScrap; + mappings[939] = ItemType.WoodenSword; + mappings[940] = ItemType.WoodenShovel; + mappings[941] = ItemType.WoodenPickaxe; + mappings[942] = ItemType.WoodenAxe; + mappings[943] = ItemType.WoodenHoe; + mappings[944] = ItemType.CopperSword; + mappings[945] = ItemType.CopperShovel; + mappings[946] = ItemType.CopperPickaxe; + mappings[947] = ItemType.CopperAxe; + mappings[948] = ItemType.CopperHoe; + mappings[949] = ItemType.StoneSword; + mappings[950] = ItemType.StoneShovel; + mappings[951] = ItemType.StonePickaxe; + mappings[952] = ItemType.StoneAxe; + mappings[953] = ItemType.StoneHoe; + mappings[954] = ItemType.GoldenSword; + mappings[955] = ItemType.GoldenShovel; + mappings[956] = ItemType.GoldenPickaxe; + mappings[957] = ItemType.GoldenAxe; + mappings[958] = ItemType.GoldenHoe; + mappings[959] = ItemType.IronSword; + mappings[960] = ItemType.IronShovel; + mappings[961] = ItemType.IronPickaxe; + mappings[962] = ItemType.IronAxe; + mappings[963] = ItemType.IronHoe; + mappings[964] = ItemType.DiamondSword; + mappings[965] = ItemType.DiamondShovel; + mappings[966] = ItemType.DiamondPickaxe; + mappings[967] = ItemType.DiamondAxe; + mappings[968] = ItemType.DiamondHoe; + mappings[969] = ItemType.NetheriteSword; + mappings[970] = ItemType.NetheriteShovel; + mappings[971] = ItemType.NetheritePickaxe; + mappings[972] = ItemType.NetheriteAxe; + mappings[973] = ItemType.NetheriteHoe; + mappings[974] = ItemType.Stick; + mappings[975] = ItemType.MushroomStew; + mappings[976] = ItemType.String; + mappings[977] = ItemType.Feather; + mappings[978] = ItemType.Gunpowder; + mappings[979] = ItemType.WheatSeeds; + mappings[980] = ItemType.Wheat; + mappings[981] = ItemType.Bread; + mappings[982] = ItemType.LeatherHelmet; + mappings[983] = ItemType.LeatherChestplate; + mappings[984] = ItemType.LeatherLeggings; + mappings[985] = ItemType.LeatherBoots; + mappings[986] = ItemType.CopperHelmet; + mappings[987] = ItemType.CopperChestplate; + mappings[988] = ItemType.CopperLeggings; + mappings[989] = ItemType.CopperBoots; + mappings[990] = ItemType.ChainmailHelmet; + mappings[991] = ItemType.ChainmailChestplate; + mappings[992] = ItemType.ChainmailLeggings; + mappings[993] = ItemType.ChainmailBoots; + mappings[994] = ItemType.IronHelmet; + mappings[995] = ItemType.IronChestplate; + mappings[996] = ItemType.IronLeggings; + mappings[997] = ItemType.IronBoots; + mappings[998] = ItemType.DiamondHelmet; + mappings[999] = ItemType.DiamondChestplate; + mappings[1000] = ItemType.DiamondLeggings; + mappings[1001] = ItemType.DiamondBoots; + mappings[1002] = ItemType.GoldenHelmet; + mappings[1003] = ItemType.GoldenChestplate; + mappings[1004] = ItemType.GoldenLeggings; + mappings[1005] = ItemType.GoldenBoots; + mappings[1006] = ItemType.NetheriteHelmet; + mappings[1007] = ItemType.NetheriteChestplate; + mappings[1008] = ItemType.NetheriteLeggings; + mappings[1009] = ItemType.NetheriteBoots; + mappings[1010] = ItemType.Flint; + mappings[1011] = ItemType.Porkchop; + mappings[1012] = ItemType.CookedPorkchop; + mappings[1013] = ItemType.Painting; + mappings[1014] = ItemType.GoldenApple; + mappings[1015] = ItemType.EnchantedGoldenApple; + mappings[1016] = ItemType.OakSign; + mappings[1017] = ItemType.SpruceSign; + mappings[1018] = ItemType.BirchSign; + mappings[1019] = ItemType.JungleSign; + mappings[1020] = ItemType.AcaciaSign; + mappings[1021] = ItemType.CherrySign; + mappings[1022] = ItemType.DarkOakSign; + mappings[1023] = ItemType.PaleOakSign; + mappings[1024] = ItemType.MangroveSign; + mappings[1025] = ItemType.BambooSign; + mappings[1026] = ItemType.CrimsonSign; + mappings[1027] = ItemType.WarpedSign; + mappings[1028] = ItemType.OakHangingSign; + mappings[1029] = ItemType.SpruceHangingSign; + mappings[1030] = ItemType.BirchHangingSign; + mappings[1031] = ItemType.JungleHangingSign; + mappings[1032] = ItemType.AcaciaHangingSign; + mappings[1033] = ItemType.CherryHangingSign; + mappings[1034] = ItemType.DarkOakHangingSign; + mappings[1035] = ItemType.PaleOakHangingSign; + mappings[1036] = ItemType.MangroveHangingSign; + mappings[1037] = ItemType.BambooHangingSign; + mappings[1038] = ItemType.CrimsonHangingSign; + mappings[1039] = ItemType.WarpedHangingSign; + mappings[1040] = ItemType.Bucket; + mappings[1041] = ItemType.WaterBucket; + mappings[1042] = ItemType.LavaBucket; + mappings[1043] = ItemType.PowderSnowBucket; + mappings[1044] = ItemType.Snowball; + mappings[1045] = ItemType.Leather; + mappings[1046] = ItemType.MilkBucket; + mappings[1047] = ItemType.PufferfishBucket; + mappings[1048] = ItemType.SalmonBucket; + mappings[1049] = ItemType.CodBucket; + mappings[1050] = ItemType.TropicalFishBucket; + mappings[1051] = ItemType.AxolotlBucket; + mappings[1052] = ItemType.SulfurCubeBucket; + mappings[1053] = ItemType.TadpoleBucket; + mappings[1054] = ItemType.Brick; + mappings[1055] = ItemType.ClayBall; + mappings[1056] = ItemType.DriedKelpBlock; + mappings[1057] = ItemType.Paper; + mappings[1058] = ItemType.Book; + mappings[1059] = ItemType.SlimeBall; + mappings[1060] = ItemType.Egg; + mappings[1061] = ItemType.BlueEgg; + mappings[1062] = ItemType.BrownEgg; + mappings[1063] = ItemType.Compass; + mappings[1064] = ItemType.RecoveryCompass; + mappings[1065] = ItemType.Bundle; + mappings[1066] = ItemType.WhiteBundle; + mappings[1067] = ItemType.OrangeBundle; + mappings[1068] = ItemType.MagentaBundle; + mappings[1069] = ItemType.LightBlueBundle; + mappings[1070] = ItemType.YellowBundle; + mappings[1071] = ItemType.LimeBundle; + mappings[1072] = ItemType.PinkBundle; + mappings[1073] = ItemType.GrayBundle; + mappings[1074] = ItemType.LightGrayBundle; + mappings[1075] = ItemType.CyanBundle; + mappings[1076] = ItemType.PurpleBundle; + mappings[1077] = ItemType.BlueBundle; + mappings[1078] = ItemType.BrownBundle; + mappings[1079] = ItemType.GreenBundle; + mappings[1080] = ItemType.RedBundle; + mappings[1081] = ItemType.BlackBundle; + mappings[1082] = ItemType.FishingRod; + mappings[1083] = ItemType.Clock; + mappings[1084] = ItemType.Spyglass; + mappings[1085] = ItemType.GlowstoneDust; + mappings[1086] = ItemType.Cod; + mappings[1087] = ItemType.Salmon; + mappings[1088] = ItemType.TropicalFish; + mappings[1089] = ItemType.Pufferfish; + mappings[1090] = ItemType.CookedCod; + mappings[1091] = ItemType.CookedSalmon; + mappings[1092] = ItemType.InkSac; + mappings[1093] = ItemType.GlowInkSac; + mappings[1094] = ItemType.CocoaBeans; + mappings[1095] = ItemType.WhiteDye; + mappings[1096] = ItemType.OrangeDye; + mappings[1097] = ItemType.MagentaDye; + mappings[1098] = ItemType.LightBlueDye; + mappings[1099] = ItemType.YellowDye; + mappings[1100] = ItemType.LimeDye; + mappings[1101] = ItemType.PinkDye; + mappings[1102] = ItemType.GrayDye; + mappings[1103] = ItemType.LightGrayDye; + mappings[1104] = ItemType.CyanDye; + mappings[1105] = ItemType.PurpleDye; + mappings[1106] = ItemType.BlueDye; + mappings[1107] = ItemType.BrownDye; + mappings[1108] = ItemType.GreenDye; + mappings[1109] = ItemType.RedDye; + mappings[1110] = ItemType.BlackDye; + mappings[1111] = ItemType.BoneMeal; + mappings[1112] = ItemType.Bone; + mappings[1113] = ItemType.Sugar; + mappings[1114] = ItemType.Cake; + mappings[1115] = ItemType.WhiteBed; + mappings[1116] = ItemType.OrangeBed; + mappings[1117] = ItemType.MagentaBed; + mappings[1118] = ItemType.LightBlueBed; + mappings[1119] = ItemType.YellowBed; + mappings[1120] = ItemType.LimeBed; + mappings[1121] = ItemType.PinkBed; + mappings[1122] = ItemType.GrayBed; + mappings[1123] = ItemType.LightGrayBed; + mappings[1124] = ItemType.CyanBed; + mappings[1125] = ItemType.PurpleBed; + mappings[1126] = ItemType.BlueBed; + mappings[1127] = ItemType.BrownBed; + mappings[1128] = ItemType.GreenBed; + mappings[1129] = ItemType.RedBed; + mappings[1130] = ItemType.BlackBed; + mappings[1131] = ItemType.Cookie; + mappings[1132] = ItemType.Crafter; + mappings[1133] = ItemType.FilledMap; + mappings[1134] = ItemType.Shears; + mappings[1135] = ItemType.MelonSlice; + mappings[1136] = ItemType.DriedKelp; + mappings[1137] = ItemType.PumpkinSeeds; + mappings[1138] = ItemType.MelonSeeds; + mappings[1139] = ItemType.Beef; + mappings[1140] = ItemType.CookedBeef; + mappings[1141] = ItemType.Chicken; + mappings[1142] = ItemType.CookedChicken; + mappings[1143] = ItemType.RottenFlesh; + mappings[1144] = ItemType.EnderPearl; + mappings[1145] = ItemType.BlazeRod; + mappings[1146] = ItemType.GhastTear; + mappings[1147] = ItemType.GoldNugget; + mappings[1148] = ItemType.NetherWart; + mappings[1149] = ItemType.GlassBottle; + mappings[1150] = ItemType.Potion; + mappings[1151] = ItemType.SpiderEye; + mappings[1152] = ItemType.FermentedSpiderEye; + mappings[1153] = ItemType.BlazePowder; + mappings[1154] = ItemType.MagmaCream; + mappings[1155] = ItemType.BrewingStand; + mappings[1156] = ItemType.Cauldron; + mappings[1157] = ItemType.EnderEye; + mappings[1158] = ItemType.GlisteringMelonSlice; + mappings[1159] = ItemType.ChickenSpawnEgg; + mappings[1160] = ItemType.CowSpawnEgg; + mappings[1161] = ItemType.PigSpawnEgg; + mappings[1162] = ItemType.SheepSpawnEgg; + mappings[1163] = ItemType.CamelSpawnEgg; + mappings[1164] = ItemType.DonkeySpawnEgg; + mappings[1165] = ItemType.HorseSpawnEgg; + mappings[1166] = ItemType.MuleSpawnEgg; + mappings[1167] = ItemType.CatSpawnEgg; + mappings[1168] = ItemType.ParrotSpawnEgg; + mappings[1169] = ItemType.WolfSpawnEgg; + mappings[1170] = ItemType.ArmadilloSpawnEgg; + mappings[1171] = ItemType.BatSpawnEgg; + mappings[1172] = ItemType.BeeSpawnEgg; + mappings[1173] = ItemType.FoxSpawnEgg; + mappings[1174] = ItemType.GoatSpawnEgg; + mappings[1175] = ItemType.LlamaSpawnEgg; + mappings[1176] = ItemType.OcelotSpawnEgg; + mappings[1177] = ItemType.PandaSpawnEgg; + mappings[1178] = ItemType.PolarBearSpawnEgg; + mappings[1179] = ItemType.RabbitSpawnEgg; + mappings[1180] = ItemType.AxolotlSpawnEgg; + mappings[1181] = ItemType.CodSpawnEgg; + mappings[1182] = ItemType.DolphinSpawnEgg; + mappings[1183] = ItemType.FrogSpawnEgg; + mappings[1184] = ItemType.GlowSquidSpawnEgg; + mappings[1185] = ItemType.NautilusSpawnEgg; + mappings[1186] = ItemType.PufferfishSpawnEgg; + mappings[1187] = ItemType.SalmonSpawnEgg; + mappings[1188] = ItemType.SquidSpawnEgg; + mappings[1189] = ItemType.TadpoleSpawnEgg; + mappings[1190] = ItemType.TropicalFishSpawnEgg; + mappings[1191] = ItemType.TurtleSpawnEgg; + mappings[1192] = ItemType.AllaySpawnEgg; + mappings[1193] = ItemType.MooshroomSpawnEgg; + mappings[1194] = ItemType.SnifferSpawnEgg; + mappings[1195] = ItemType.SulfurCubeSpawnEgg; + mappings[1196] = ItemType.CopperGolemSpawnEgg; + mappings[1197] = ItemType.IronGolemSpawnEgg; + mappings[1198] = ItemType.SnowGolemSpawnEgg; + mappings[1199] = ItemType.TraderLlamaSpawnEgg; + mappings[1200] = ItemType.VillagerSpawnEgg; + mappings[1201] = ItemType.WanderingTraderSpawnEgg; + mappings[1202] = ItemType.BoggedSpawnEgg; + mappings[1203] = ItemType.CamelHuskSpawnEgg; + mappings[1204] = ItemType.DrownedSpawnEgg; + mappings[1205] = ItemType.HuskSpawnEgg; + mappings[1206] = ItemType.ParchedSpawnEgg; + mappings[1207] = ItemType.SkeletonSpawnEgg; + mappings[1208] = ItemType.SkeletonHorseSpawnEgg; + mappings[1209] = ItemType.StraySpawnEgg; + mappings[1210] = ItemType.WitherSpawnEgg; + mappings[1211] = ItemType.WitherSkeletonSpawnEgg; + mappings[1212] = ItemType.ZombieSpawnEgg; + mappings[1213] = ItemType.ZombieHorseSpawnEgg; + mappings[1214] = ItemType.ZombieNautilusSpawnEgg; + mappings[1215] = ItemType.ZombieVillagerSpawnEgg; + mappings[1216] = ItemType.CaveSpiderSpawnEgg; + mappings[1217] = ItemType.SpiderSpawnEgg; + mappings[1218] = ItemType.BreezeSpawnEgg; + mappings[1219] = ItemType.CreakingSpawnEgg; + mappings[1220] = ItemType.CreeperSpawnEgg; + mappings[1221] = ItemType.ElderGuardianSpawnEgg; + mappings[1222] = ItemType.GuardianSpawnEgg; + mappings[1223] = ItemType.PhantomSpawnEgg; + mappings[1224] = ItemType.SilverfishSpawnEgg; + mappings[1225] = ItemType.SlimeSpawnEgg; + mappings[1226] = ItemType.WardenSpawnEgg; + mappings[1227] = ItemType.WitchSpawnEgg; + mappings[1228] = ItemType.EvokerSpawnEgg; + mappings[1229] = ItemType.PillagerSpawnEgg; + mappings[1230] = ItemType.RavagerSpawnEgg; + mappings[1231] = ItemType.VindicatorSpawnEgg; + mappings[1232] = ItemType.VexSpawnEgg; + mappings[1233] = ItemType.BlazeSpawnEgg; + mappings[1234] = ItemType.GhastSpawnEgg; + mappings[1235] = ItemType.HappyGhastSpawnEgg; + mappings[1236] = ItemType.HoglinSpawnEgg; + mappings[1237] = ItemType.MagmaCubeSpawnEgg; + mappings[1238] = ItemType.PiglinSpawnEgg; + mappings[1239] = ItemType.PiglinBruteSpawnEgg; + mappings[1240] = ItemType.StriderSpawnEgg; + mappings[1241] = ItemType.ZoglinSpawnEgg; + mappings[1242] = ItemType.ZombifiedPiglinSpawnEgg; + mappings[1243] = ItemType.EnderDragonSpawnEgg; + mappings[1244] = ItemType.EndermanSpawnEgg; + mappings[1245] = ItemType.EndermiteSpawnEgg; + mappings[1246] = ItemType.ShulkerSpawnEgg; + mappings[1247] = ItemType.ExperienceBottle; + mappings[1248] = ItemType.FireCharge; + mappings[1249] = ItemType.WindCharge; + mappings[1250] = ItemType.WritableBook; + mappings[1251] = ItemType.WrittenBook; + mappings[1252] = ItemType.BreezeRod; + mappings[1253] = ItemType.Mace; + mappings[1254] = ItemType.ItemFrame; + mappings[1255] = ItemType.GlowItemFrame; + mappings[1256] = ItemType.FlowerPot; + mappings[1257] = ItemType.Carrot; + mappings[1258] = ItemType.Potato; + mappings[1259] = ItemType.BakedPotato; + mappings[1260] = ItemType.PoisonousPotato; + mappings[1261] = ItemType.Map; + mappings[1262] = ItemType.GoldenCarrot; + mappings[1263] = ItemType.SkeletonSkull; + mappings[1264] = ItemType.WitherSkeletonSkull; + mappings[1265] = ItemType.PlayerHead; + mappings[1266] = ItemType.ZombieHead; + mappings[1267] = ItemType.CreeperHead; + mappings[1268] = ItemType.DragonHead; + mappings[1269] = ItemType.PiglinHead; + mappings[1270] = ItemType.NetherStar; + mappings[1271] = ItemType.PumpkinPie; + mappings[1272] = ItemType.FireworkRocket; + mappings[1273] = ItemType.FireworkStar; + mappings[1274] = ItemType.EnchantedBook; + mappings[1275] = ItemType.NetherBrick; + mappings[1276] = ItemType.ResinBrick; + mappings[1277] = ItemType.PrismarineShard; + mappings[1278] = ItemType.PrismarineCrystals; + mappings[1279] = ItemType.Rabbit; + mappings[1280] = ItemType.CookedRabbit; + mappings[1281] = ItemType.RabbitStew; + mappings[1282] = ItemType.RabbitFoot; + mappings[1283] = ItemType.RabbitHide; + mappings[1284] = ItemType.ArmorStand; + mappings[1285] = ItemType.CopperHorseArmor; + mappings[1286] = ItemType.IronHorseArmor; + mappings[1287] = ItemType.GoldenHorseArmor; + mappings[1288] = ItemType.DiamondHorseArmor; + mappings[1289] = ItemType.NetheriteHorseArmor; + mappings[1290] = ItemType.LeatherHorseArmor; + mappings[1291] = ItemType.Lead; + mappings[1292] = ItemType.NameTag; + mappings[1293] = ItemType.CommandBlockMinecart; + mappings[1294] = ItemType.Mutton; + mappings[1295] = ItemType.CookedMutton; + mappings[1296] = ItemType.WhiteBanner; + mappings[1297] = ItemType.OrangeBanner; + mappings[1298] = ItemType.MagentaBanner; + mappings[1299] = ItemType.LightBlueBanner; + mappings[1300] = ItemType.YellowBanner; + mappings[1301] = ItemType.LimeBanner; + mappings[1302] = ItemType.PinkBanner; + mappings[1303] = ItemType.GrayBanner; + mappings[1304] = ItemType.LightGrayBanner; + mappings[1305] = ItemType.CyanBanner; + mappings[1306] = ItemType.PurpleBanner; + mappings[1307] = ItemType.BlueBanner; + mappings[1308] = ItemType.BrownBanner; + mappings[1309] = ItemType.GreenBanner; + mappings[1310] = ItemType.RedBanner; + mappings[1311] = ItemType.BlackBanner; + mappings[1312] = ItemType.EndCrystal; + mappings[1313] = ItemType.ChorusFruit; + mappings[1314] = ItemType.PoppedChorusFruit; + mappings[1315] = ItemType.TorchflowerSeeds; + mappings[1316] = ItemType.PitcherPod; + mappings[1317] = ItemType.Beetroot; + mappings[1318] = ItemType.BeetrootSeeds; + mappings[1319] = ItemType.BeetrootSoup; + mappings[1320] = ItemType.DragonBreath; + mappings[1321] = ItemType.SplashPotion; + mappings[1322] = ItemType.SpectralArrow; + mappings[1323] = ItemType.TippedArrow; + mappings[1324] = ItemType.LingeringPotion; + mappings[1325] = ItemType.Shield; + mappings[1326] = ItemType.WoodenSpear; + mappings[1327] = ItemType.StoneSpear; + mappings[1328] = ItemType.CopperSpear; + mappings[1329] = ItemType.IronSpear; + mappings[1330] = ItemType.GoldenSpear; + mappings[1331] = ItemType.DiamondSpear; + mappings[1332] = ItemType.NetheriteSpear; + mappings[1333] = ItemType.TotemOfUndying; + mappings[1334] = ItemType.ShulkerShell; + mappings[1335] = ItemType.IronNugget; + mappings[1336] = ItemType.CopperNugget; + mappings[1337] = ItemType.KnowledgeBook; + mappings[1338] = ItemType.DebugStick; + mappings[1339] = ItemType.MusicDisc13; + mappings[1340] = ItemType.MusicDiscCat; + mappings[1341] = ItemType.MusicDiscBlocks; + mappings[1342] = ItemType.MusicDiscBounce; + mappings[1343] = ItemType.MusicDiscChirp; + mappings[1344] = ItemType.MusicDiscCreator; + mappings[1345] = ItemType.MusicDiscCreatorMusicBox; + mappings[1346] = ItemType.MusicDiscFar; + mappings[1347] = ItemType.MusicDiscLavaChicken; + mappings[1348] = ItemType.MusicDiscMall; + mappings[1349] = ItemType.MusicDiscMellohi; + mappings[1350] = ItemType.MusicDiscStal; + mappings[1351] = ItemType.MusicDiscStrad; + mappings[1352] = ItemType.MusicDiscWard; + mappings[1353] = ItemType.MusicDisc11; + mappings[1354] = ItemType.MusicDiscWait; + mappings[1355] = ItemType.MusicDiscOtherside; + mappings[1356] = ItemType.MusicDiscRelic; + mappings[1357] = ItemType.MusicDisc5; + mappings[1358] = ItemType.MusicDiscPigstep; + mappings[1359] = ItemType.MusicDiscPrecipice; + mappings[1360] = ItemType.MusicDiscTears; + mappings[1361] = ItemType.DiscFragment5; + mappings[1362] = ItemType.Trident; + mappings[1363] = ItemType.NautilusShell; + mappings[1364] = ItemType.IronNautilusArmor; + mappings[1365] = ItemType.GoldenNautilusArmor; + mappings[1366] = ItemType.DiamondNautilusArmor; + mappings[1367] = ItemType.NetheriteNautilusArmor; + mappings[1368] = ItemType.CopperNautilusArmor; + mappings[1369] = ItemType.HeartOfTheSea; + mappings[1370] = ItemType.Crossbow; + mappings[1371] = ItemType.SuspiciousStew; + mappings[1372] = ItemType.Loom; + mappings[1373] = ItemType.FlowerBannerPattern; + mappings[1374] = ItemType.CreeperBannerPattern; + mappings[1375] = ItemType.SkullBannerPattern; + mappings[1376] = ItemType.MojangBannerPattern; + mappings[1377] = ItemType.GlobeBannerPattern; + mappings[1378] = ItemType.PiglinBannerPattern; + mappings[1379] = ItemType.FlowBannerPattern; + mappings[1380] = ItemType.GusterBannerPattern; + mappings[1381] = ItemType.FieldMasonedBannerPattern; + mappings[1382] = ItemType.BordureIndentedBannerPattern; + mappings[1383] = ItemType.GoatHorn; + mappings[1384] = ItemType.Composter; + mappings[1385] = ItemType.Barrel; + mappings[1386] = ItemType.Smoker; + mappings[1387] = ItemType.BlastFurnace; + mappings[1388] = ItemType.CartographyTable; + mappings[1389] = ItemType.FletchingTable; + mappings[1390] = ItemType.Grindstone; + mappings[1391] = ItemType.SmithingTable; + mappings[1392] = ItemType.Stonecutter; + mappings[1393] = ItemType.Bell; + mappings[1394] = ItemType.Lantern; + mappings[1395] = ItemType.SoulLantern; + mappings[1396] = ItemType.CopperLantern; + mappings[1397] = ItemType.ExposedCopperLantern; + mappings[1398] = ItemType.WeatheredCopperLantern; + mappings[1399] = ItemType.OxidizedCopperLantern; + mappings[1400] = ItemType.WaxedCopperLantern; + mappings[1401] = ItemType.WaxedExposedCopperLantern; + mappings[1402] = ItemType.WaxedWeatheredCopperLantern; + mappings[1403] = ItemType.WaxedOxidizedCopperLantern; + mappings[1404] = ItemType.SweetBerries; + mappings[1405] = ItemType.GlowBerries; + mappings[1406] = ItemType.Campfire; + mappings[1407] = ItemType.SoulCampfire; + mappings[1408] = ItemType.Shroomlight; + mappings[1409] = ItemType.Honeycomb; + mappings[1410] = ItemType.BeeNest; + mappings[1411] = ItemType.Beehive; + mappings[1412] = ItemType.HoneyBottle; + mappings[1413] = ItemType.HoneycombBlock; + mappings[1414] = ItemType.Lodestone; + mappings[1415] = ItemType.CryingObsidian; + mappings[1416] = ItemType.Blackstone; + mappings[1417] = ItemType.BlackstoneSlab; + mappings[1418] = ItemType.BlackstoneStairs; + mappings[1419] = ItemType.GildedBlackstone; + mappings[1420] = ItemType.PolishedBlackstone; + mappings[1421] = ItemType.PolishedBlackstoneSlab; + mappings[1422] = ItemType.PolishedBlackstoneStairs; + mappings[1423] = ItemType.ChiseledPolishedBlackstone; + mappings[1424] = ItemType.PolishedBlackstoneBricks; + mappings[1425] = ItemType.PolishedBlackstoneBrickSlab; + mappings[1426] = ItemType.PolishedBlackstoneBrickStairs; + mappings[1427] = ItemType.CrackedPolishedBlackstoneBricks; + mappings[1428] = ItemType.RespawnAnchor; + mappings[1429] = ItemType.Candle; + mappings[1430] = ItemType.WhiteCandle; + mappings[1431] = ItemType.OrangeCandle; + mappings[1432] = ItemType.MagentaCandle; + mappings[1433] = ItemType.LightBlueCandle; + mappings[1434] = ItemType.YellowCandle; + mappings[1435] = ItemType.LimeCandle; + mappings[1436] = ItemType.PinkCandle; + mappings[1437] = ItemType.GrayCandle; + mappings[1438] = ItemType.LightGrayCandle; + mappings[1439] = ItemType.CyanCandle; + mappings[1440] = ItemType.PurpleCandle; + mappings[1441] = ItemType.BlueCandle; + mappings[1442] = ItemType.BrownCandle; + mappings[1443] = ItemType.GreenCandle; + mappings[1444] = ItemType.RedCandle; + mappings[1445] = ItemType.BlackCandle; + mappings[1446] = ItemType.SmallAmethystBud; + mappings[1447] = ItemType.MediumAmethystBud; + mappings[1448] = ItemType.LargeAmethystBud; + mappings[1449] = ItemType.AmethystCluster; + mappings[1450] = ItemType.PointedDripstone; + mappings[1451] = ItemType.SulfurSpike; + mappings[1452] = ItemType.OchreFroglight; + mappings[1453] = ItemType.VerdantFroglight; + mappings[1454] = ItemType.PearlescentFroglight; + mappings[1455] = ItemType.Frogspawn; + mappings[1456] = ItemType.EchoShard; + mappings[1457] = ItemType.Brush; + mappings[1458] = ItemType.NetheriteUpgradeSmithingTemplate; + mappings[1459] = ItemType.SentryArmorTrimSmithingTemplate; + mappings[1460] = ItemType.DuneArmorTrimSmithingTemplate; + mappings[1461] = ItemType.CoastArmorTrimSmithingTemplate; + mappings[1462] = ItemType.WildArmorTrimSmithingTemplate; + mappings[1463] = ItemType.WardArmorTrimSmithingTemplate; + mappings[1464] = ItemType.EyeArmorTrimSmithingTemplate; + mappings[1465] = ItemType.VexArmorTrimSmithingTemplate; + mappings[1466] = ItemType.TideArmorTrimSmithingTemplate; + mappings[1467] = ItemType.SnoutArmorTrimSmithingTemplate; + mappings[1468] = ItemType.RibArmorTrimSmithingTemplate; + mappings[1469] = ItemType.SpireArmorTrimSmithingTemplate; + mappings[1470] = ItemType.WayfinderArmorTrimSmithingTemplate; + mappings[1471] = ItemType.ShaperArmorTrimSmithingTemplate; + mappings[1472] = ItemType.SilenceArmorTrimSmithingTemplate; + mappings[1473] = ItemType.RaiserArmorTrimSmithingTemplate; + mappings[1474] = ItemType.HostArmorTrimSmithingTemplate; + mappings[1475] = ItemType.FlowArmorTrimSmithingTemplate; + mappings[1476] = ItemType.BoltArmorTrimSmithingTemplate; + mappings[1477] = ItemType.AnglerPotterySherd; + mappings[1478] = ItemType.ArcherPotterySherd; + mappings[1479] = ItemType.ArmsUpPotterySherd; + mappings[1480] = ItemType.BladePotterySherd; + mappings[1481] = ItemType.BrewerPotterySherd; + mappings[1482] = ItemType.BurnPotterySherd; + mappings[1483] = ItemType.DangerPotterySherd; + mappings[1484] = ItemType.ExplorerPotterySherd; + mappings[1485] = ItemType.FlowPotterySherd; + mappings[1486] = ItemType.FriendPotterySherd; + mappings[1487] = ItemType.GusterPotterySherd; + mappings[1488] = ItemType.HeartPotterySherd; + mappings[1489] = ItemType.HeartbreakPotterySherd; + mappings[1490] = ItemType.HowlPotterySherd; + mappings[1491] = ItemType.MinerPotterySherd; + mappings[1492] = ItemType.MournerPotterySherd; + mappings[1493] = ItemType.PlentyPotterySherd; + mappings[1494] = ItemType.PrizePotterySherd; + mappings[1495] = ItemType.ScrapePotterySherd; + mappings[1496] = ItemType.SheafPotterySherd; + mappings[1497] = ItemType.ShelterPotterySherd; + mappings[1498] = ItemType.SkullPotterySherd; + mappings[1499] = ItemType.SnortPotterySherd; + mappings[1500] = ItemType.CopperGrate; + mappings[1501] = ItemType.ExposedCopperGrate; + mappings[1502] = ItemType.WeatheredCopperGrate; + mappings[1503] = ItemType.OxidizedCopperGrate; + mappings[1504] = ItemType.WaxedCopperGrate; + mappings[1505] = ItemType.WaxedExposedCopperGrate; + mappings[1506] = ItemType.WaxedWeatheredCopperGrate; + mappings[1507] = ItemType.WaxedOxidizedCopperGrate; + mappings[1508] = ItemType.CopperBulb; + mappings[1509] = ItemType.ExposedCopperBulb; + mappings[1510] = ItemType.WeatheredCopperBulb; + mappings[1511] = ItemType.OxidizedCopperBulb; + mappings[1512] = ItemType.WaxedCopperBulb; + mappings[1513] = ItemType.WaxedExposedCopperBulb; + mappings[1514] = ItemType.WaxedWeatheredCopperBulb; + mappings[1515] = ItemType.WaxedOxidizedCopperBulb; + mappings[1516] = ItemType.CopperChest; + mappings[1517] = ItemType.ExposedCopperChest; + mappings[1518] = ItemType.WeatheredCopperChest; + mappings[1519] = ItemType.OxidizedCopperChest; + mappings[1520] = ItemType.WaxedCopperChest; + mappings[1521] = ItemType.WaxedExposedCopperChest; + mappings[1522] = ItemType.WaxedWeatheredCopperChest; + mappings[1523] = ItemType.WaxedOxidizedCopperChest; + mappings[1524] = ItemType.CopperGolemStatue; + mappings[1525] = ItemType.ExposedCopperGolemStatue; + mappings[1526] = ItemType.WeatheredCopperGolemStatue; + mappings[1527] = ItemType.OxidizedCopperGolemStatue; + mappings[1528] = ItemType.WaxedCopperGolemStatue; + mappings[1529] = ItemType.WaxedExposedCopperGolemStatue; + mappings[1530] = ItemType.WaxedWeatheredCopperGolemStatue; + mappings[1531] = ItemType.WaxedOxidizedCopperGolemStatue; + mappings[1532] = ItemType.TrialSpawner; + mappings[1533] = ItemType.TrialKey; + mappings[1534] = ItemType.OminousTrialKey; + mappings[1535] = ItemType.Vault; + mappings[1536] = ItemType.OminousBottle; + } + + protected override Dictionary GetDict() + { + return mappings; + } + } +} diff --git a/MinecraftClient/Inventory/ItemType.cs b/MinecraftClient/Inventory/ItemType.cs index aaff1d72..a6586b67 100644 --- a/MinecraftClient/Inventory/ItemType.cs +++ b/MinecraftClient/Inventory/ItemType.cs @@ -250,6 +250,7 @@ namespace MinecraftClient.Inventory ChickenSpawnEgg, ChippedAnvil, ChiseledBookshelf, + ChiseledCinnabar, ChiseledCopper, ChiseledDeepslate, ChiseledNetherBricks, @@ -259,11 +260,20 @@ namespace MinecraftClient.Inventory ChiseledResinBricks, ChiseledSandstone, ChiseledStoneBricks, + ChiseledSulfur, ChiseledTuff, ChiseledTuffBricks, ChorusFlower, ChorusFruit, ChorusPlant, + Cinnabar, + CinnabarBrickSlab, + CinnabarBrickStairs, + CinnabarBrickWall, + CinnabarBricks, + CinnabarSlab, + CinnabarStairs, + CinnabarWall, Clay, ClayBall, Clock, @@ -851,6 +861,7 @@ namespace MinecraftClient.Inventory MusicDisc13, MusicDisc5, MusicDiscBlocks, + MusicDiscBounce, MusicDiscCat, MusicDiscChirp, MusicDiscCreator, @@ -1039,6 +1050,10 @@ namespace MinecraftClient.Inventory PolishedBlackstoneSlab, PolishedBlackstoneStairs, PolishedBlackstoneWall, + PolishedCinnabar, + PolishedCinnabarSlab, + PolishedCinnabarStairs, + PolishedCinnabarWall, PolishedDeepslate, PolishedDeepslateSlab, PolishedDeepslateStairs, @@ -1049,6 +1064,10 @@ namespace MinecraftClient.Inventory PolishedGranite, PolishedGraniteSlab, PolishedGraniteStairs, + PolishedSulfur, + PolishedSulfurSlab, + PolishedSulfurStairs, + PolishedSulfurWall, PolishedTuff, PolishedTuffSlab, PolishedTuffStairs, @@ -1057,6 +1076,7 @@ namespace MinecraftClient.Inventory Poppy, Porkchop, Potato, + PotentSulfur, Potion, PowderSnowBucket, PoweredRail, @@ -1310,6 +1330,17 @@ namespace MinecraftClient.Inventory StructureVoid, Sugar, SugarCane, + Sulfur, + SulfurBrickSlab, + SulfurBrickStairs, + SulfurBrickWall, + SulfurBricks, + SulfurCubeBucket, + SulfurCubeSpawnEgg, + SulfurSlab, + SulfurSpike, + SulfurStairs, + SulfurWall, Sunflower, SuspiciousGravel, SuspiciousSand, diff --git a/MinecraftClient/Logger/FileLogLogger.cs b/MinecraftClient/Logger/FileLogLogger.cs index a7931202..ab660bdf 100644 --- a/MinecraftClient/Logger/FileLogLogger.cs +++ b/MinecraftClient/Logger/FileLogLogger.cs @@ -72,7 +72,8 @@ namespace MinecraftClient.Logger { if (ShouldDisplay(FilterChannel.Chat, msg)) { - LogAndSave(msg); + ConsoleIO.WriteChatLineIfVisible(msg); + Save(msg); } else Debug("[Logger] One Chat message filtered: " + msg); } @@ -89,6 +90,17 @@ namespace MinecraftClient.Logger } } + public override void PacketDebug(string msg) + { + if (Settings.Config.Logging.PacketDebugMessages) + { + if (ShouldDisplay(FilterChannel.Debug, msg)) + { + LogAndSave("§8[DEBUG] " + msg); + } + } + } + public override void Error(string msg) { base.Error(msg); diff --git a/MinecraftClient/Logger/FilteredLogger.cs b/MinecraftClient/Logger/FilteredLogger.cs index 09a3596c..a520434c 100644 --- a/MinecraftClient/Logger/FilteredLogger.cs +++ b/MinecraftClient/Logger/FilteredLogger.cs @@ -57,6 +57,17 @@ namespace MinecraftClient.Logger } } + public override void PacketDebug(string msg) + { + if (Settings.Config.Logging.PacketDebugMessages) + { + if (ShouldDisplay(FilterChannel.Debug, msg)) + { + Log("§8[DEBUG] " + msg); + } + } + } + public override void Info(string msg) { if (InfoEnabled) @@ -81,7 +92,7 @@ namespace MinecraftClient.Logger { if (ShouldDisplay(FilterChannel.Chat, msg)) { - Log(msg); + ConsoleIO.WriteChatLineIfVisible(msg); } else Debug("[Logger] One Chat message filtered: " + msg); } diff --git a/MinecraftClient/Logger/ILogger.cs b/MinecraftClient/Logger/ILogger.cs index ba3f143f..89a1b686 100644 --- a/MinecraftClient/Logger/ILogger.cs +++ b/MinecraftClient/Logger/ILogger.cs @@ -16,6 +16,10 @@ void Debug(string msg, params object[] args); void Debug(object msg); + void PacketDebug(string msg); + void PacketDebug(string msg, params object[] args); + void PacketDebug(object msg); + void Warn(string msg); void Warn(string msg, params object[] args); void Warn(object msg); diff --git a/MinecraftClient/Logger/LoggerBase.cs b/MinecraftClient/Logger/LoggerBase.cs index 8569bfc9..500c43b6 100644 --- a/MinecraftClient/Logger/LoggerBase.cs +++ b/MinecraftClient/Logger/LoggerBase.cs @@ -40,6 +40,18 @@ Debug(msg.ToString() ?? string.Empty); } + public abstract void PacketDebug(string msg); + + public void PacketDebug(string msg, params object[] args) + { + PacketDebug(string.Format(msg, args)); + } + + public void PacketDebug(object msg) + { + PacketDebug(msg.ToString() ?? string.Empty); + } + public abstract void Error(string msg); public void Error(string msg, params object[] args) diff --git a/MinecraftClient/Mapping/Block.cs b/MinecraftClient/Mapping/Block.cs index ffbe499c..0bbe192c 100644 --- a/MinecraftClient/Mapping/Block.cs +++ b/MinecraftClient/Mapping/Block.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Runtime.CompilerServices; using MinecraftClient.Mapping.BlockPalettes; using MinecraftClient.Protocol.Message; @@ -78,6 +79,27 @@ namespace MinecraftClient.Mapping } } + /// + /// Exact raw block state ID. For Minecraft 1.12 and older this contains the packed block ID and metadata. + /// + public int StateId => blockIdAndMeta; + + /// + /// Get the properties associated with this block's exact state ID. + /// + public IReadOnlyDictionary GetStateProperties() + { + if (Palette.IdHasMetadata) + { + return new Dictionary + { + ["metadata"] = BlockMeta.ToString(System.Globalization.CultureInfo.InvariantCulture) + }; + } + + return Palette.GetStateProperties(StateId); + } + /// /// Material of the block /// diff --git a/MinecraftClient/Mapping/BlockHardness.cs b/MinecraftClient/Mapping/BlockHardness.cs index 84cd8f92..97d1df94 100644 --- a/MinecraftClient/Mapping/BlockHardness.cs +++ b/MinecraftClient/Mapping/BlockHardness.cs @@ -5,12 +5,12 @@ namespace MinecraftClient.Mapping { /// /// Provides block hardness values and tool requirement data for mining calculations. - /// Data extracted from Minecraft 1.21.11 decompiled source (Blocks.java). + /// Data extracted from Minecraft 1.21.11 decompiled Blocks.java. /// public static class BlockHardness { /// - /// Default hardness for blocks not in the table (assumes stone-like). + /// Default hardness for blocks not in the table. Uses stone-like hardness as a safe fallback. /// public const float DefaultHardness = 1.5f; @@ -27,7 +27,7 @@ namespace MinecraftClient.Mapping /// /// Check whether a block requires the correct tool to get drops - /// (and uses the 100 divisor instead of 30 when mined without the correct tool). + /// and uses the 100 divisor instead of 30 when mined without the correct tool. /// public static bool RequiresCorrectTool(Material material) { @@ -36,172 +36,463 @@ namespace MinecraftClient.Mapping private static readonly FrozenDictionary HardnessTable = new Dictionary { - // Hardness -1.0: 15 blocks - { Material.Barrier, -1.0f }, - { Material.Bedrock, -1.0f }, - { Material.ChainCommandBlock, -1.0f }, - { Material.CommandBlock, -1.0f }, - { Material.EndGateway, -1.0f }, - { Material.EndPortal, -1.0f }, - { Material.EndPortalFrame, -1.0f }, - { Material.Jigsaw, -1.0f }, - { Material.Light, -1.0f }, - { Material.MovingPiston, -1.0f }, - { Material.NetherPortal, -1.0f }, - { Material.RepeatingCommandBlock, -1.0f }, - { Material.StructureBlock, -1.0f }, - { Material.TestBlock, -1.0f }, - { Material.TestInstanceBlock, -1.0f }, - // Hardness 0.0: 443 blocks - { Material.AcaciaButton, 0.0f }, - { Material.AcaciaLeaves, 0.0f }, - { Material.AcaciaLog, 0.0f }, + { Material.AcaciaButton, 0.5f }, + { Material.AcaciaDoor, 3.0f }, + { Material.AcaciaFence, 2.0f }, + { Material.AcaciaFenceGate, 2.0f }, + { Material.AcaciaHangingSign, 1.0f }, + { Material.AcaciaLeaves, 0.2f }, + { Material.AcaciaLog, 2.0f }, + { Material.AcaciaPlanks, 2.0f }, + { Material.AcaciaPressurePlate, 0.5f }, { Material.AcaciaSapling, 0.0f }, + { Material.AcaciaShelf, 2.0f }, + { Material.AcaciaSign, 1.0f }, + { Material.AcaciaSlab, 2.0f }, + { Material.AcaciaStairs, 2.0f }, + { Material.AcaciaTrapdoor, 3.0f }, + { Material.AcaciaWallHangingSign, 1.0f }, + { Material.AcaciaWallSign, 1.0f }, + { Material.AcaciaWood, 2.0f }, + { Material.ActivatorRail, 0.7f }, { Material.Air, 0.0f }, { Material.Allium, 0.0f }, - { Material.AndesiteSlab, 0.0f }, - { Material.AndesiteWall, 0.0f }, + { Material.AmethystBlock, 1.5f }, + { Material.AmethystCluster, 1.5f }, + { Material.AncientDebris, 30.0f }, + { Material.Andesite, 1.5f }, + { Material.AndesiteSlab, 1.5f }, + { Material.AndesiteStairs, 1.5f }, + { Material.AndesiteWall, 1.5f }, + { Material.Anvil, 5.0f }, + { Material.AttachedMelonStem, 0.0f }, + { Material.AttachedPumpkinStem, 0.0f }, { Material.Azalea, 0.0f }, - { Material.AzaleaLeaves, 0.0f }, + { Material.AzaleaLeaves, 0.2f }, { Material.AzureBluet, 0.0f }, { Material.Bamboo, 0.0f }, - { Material.BambooBlock, 0.0f }, - { Material.BambooButton, 0.0f }, + { Material.BambooBlock, 2.0f }, + { Material.BambooButton, 0.5f }, + { Material.BambooDoor, 3.0f }, + { Material.BambooFence, 2.0f }, + { Material.BambooFenceGate, 2.0f }, + { Material.BambooHangingSign, 1.0f }, + { Material.BambooMosaic, 2.0f }, + { Material.BambooMosaicSlab, 2.0f }, + { Material.BambooMosaicStairs, 2.0f }, + { Material.BambooPlanks, 2.0f }, + { Material.BambooPressurePlate, 0.5f }, { Material.BambooSapling, 0.0f }, + { Material.BambooShelf, 2.0f }, + { Material.BambooSign, 1.0f }, + { Material.BambooSlab, 2.0f }, + { Material.BambooStairs, 2.0f }, + { Material.BambooTrapdoor, 3.0f }, + { Material.BambooWallHangingSign, 1.0f }, + { Material.BambooWallSign, 1.0f }, + { Material.Barrel, 2.5f }, + { Material.Barrier, -1.0f }, + { Material.Basalt, 1.25f }, + { Material.Beacon, 3.0f }, + { Material.Bedrock, -1.0f }, + { Material.BeeNest, 0.3f }, + { Material.Beehive, 0.6f }, { Material.Beetroots, 0.0f }, - { Material.BirchButton, 0.0f }, - { Material.BirchLeaves, 0.0f }, - { Material.BirchLog, 0.0f }, + { Material.Bell, 5.0f }, + { Material.BigDripleaf, 0.1f }, + { Material.BigDripleafStem, 0.1f }, + { Material.BirchButton, 0.5f }, + { Material.BirchDoor, 3.0f }, + { Material.BirchFence, 2.0f }, + { Material.BirchFenceGate, 2.0f }, + { Material.BirchHangingSign, 1.0f }, + { Material.BirchLeaves, 0.2f }, + { Material.BirchLog, 2.0f }, + { Material.BirchPlanks, 2.0f }, + { Material.BirchPressurePlate, 0.5f }, { Material.BirchSapling, 0.0f }, - { Material.BlackCandle, 0.0f }, - { Material.BlackCandleCake, 0.0f }, - { Material.BlackShulkerBox, 0.0f }, - { Material.BlackstoneWall, 0.0f }, - { Material.BlueCandle, 0.0f }, - { Material.BlueCandleCake, 0.0f }, + { Material.BirchShelf, 2.0f }, + { Material.BirchSign, 1.0f }, + { Material.BirchSlab, 2.0f }, + { Material.BirchStairs, 2.0f }, + { Material.BirchTrapdoor, 3.0f }, + { Material.BirchWallHangingSign, 1.0f }, + { Material.BirchWallSign, 1.0f }, + { Material.BirchWood, 2.0f }, + { Material.BlackBanner, 1.0f }, + { Material.BlackBed, 0.2f }, + { Material.BlackCandle, 0.1f }, + { Material.BlackCandleCake, 0.5f }, + { Material.BlackCarpet, 0.1f }, + { Material.BlackConcrete, 1.8f }, + { Material.BlackConcretePowder, 0.5f }, + { Material.BlackGlazedTerracotta, 1.4f }, + { Material.BlackShulkerBox, 2.0f }, + { Material.BlackStainedGlass, 0.3f }, + { Material.BlackStainedGlassPane, 0.3f }, + { Material.BlackTerracotta, 1.25f }, + { Material.BlackWallBanner, 1.0f }, + { Material.BlackWool, 0.8f }, + { Material.Blackstone, 1.5f }, + { Material.BlackstoneSlab, 2.0f }, + { Material.BlackstoneStairs, 1.5f }, + { Material.BlackstoneWall, 1.5f }, + { Material.BlastFurnace, 3.5f }, + { Material.BlueBanner, 1.0f }, + { Material.BlueBed, 0.2f }, + { Material.BlueCandle, 0.1f }, + { Material.BlueCandleCake, 0.5f }, + { Material.BlueCarpet, 0.1f }, + { Material.BlueConcrete, 1.8f }, + { Material.BlueConcretePowder, 0.5f }, + { Material.BlueGlazedTerracotta, 1.4f }, + { Material.BlueIce, 2.8f }, { Material.BlueOrchid, 0.0f }, - { Material.BlueShulkerBox, 0.0f }, + { Material.BlueShulkerBox, 2.0f }, + { Material.BlueStainedGlass, 0.3f }, + { Material.BlueStainedGlassPane, 0.3f }, + { Material.BlueTerracotta, 1.25f }, + { Material.BlueWallBanner, 1.0f }, + { Material.BlueWool, 0.8f }, + { Material.BoneBlock, 2.0f }, + { Material.Bookshelf, 1.5f }, { Material.BrainCoral, 0.0f }, + { Material.BrainCoralBlock, 1.5f }, { Material.BrainCoralFan, 0.0f }, { Material.BrainCoralWallFan, 0.0f }, - { Material.BrickWall, 0.0f }, - { Material.BrownCandle, 0.0f }, - { Material.BrownCandleCake, 0.0f }, + { Material.BrewingStand, 0.5f }, + { Material.BrickSlab, 2.0f }, + { Material.BrickStairs, 2.0f }, + { Material.BrickWall, 2.0f }, + { Material.Bricks, 2.0f }, + { Material.BrownBanner, 1.0f }, + { Material.BrownBed, 0.2f }, + { Material.BrownCandle, 0.1f }, + { Material.BrownCandleCake, 0.5f }, + { Material.BrownCarpet, 0.1f }, + { Material.BrownConcrete, 1.8f }, + { Material.BrownConcretePowder, 0.5f }, + { Material.BrownGlazedTerracotta, 1.4f }, { Material.BrownMushroom, 0.0f }, - { Material.BrownShulkerBox, 0.0f }, + { Material.BrownMushroomBlock, 0.2f }, + { Material.BrownShulkerBox, 2.0f }, + { Material.BrownStainedGlass, 0.3f }, + { Material.BrownStainedGlassPane, 0.3f }, + { Material.BrownTerracotta, 1.25f }, + { Material.BrownWallBanner, 1.0f }, + { Material.BrownWool, 0.8f }, { Material.BubbleColumn, 0.0f }, { Material.BubbleCoral, 0.0f }, + { Material.BubbleCoralBlock, 1.5f }, { Material.BubbleCoralFan, 0.0f }, { Material.BubbleCoralWallFan, 0.0f }, + { Material.BuddingAmethyst, 1.5f }, { Material.Bush, 0.0f }, + { Material.Cactus, 0.4f }, { Material.CactusFlower, 0.0f }, - { Material.CalibratedSculkSensor, 0.0f }, - { Material.Candle, 0.0f }, - { Material.CandleCake, 0.0f }, + { Material.Cake, 0.5f }, + { Material.Calcite, 0.75f }, + { Material.CalibratedSculkSensor, 1.5f }, + { Material.Campfire, 2.0f }, + { Material.Candle, 0.1f }, + { Material.CandleCake, 0.5f }, { Material.Carrots, 0.0f }, + { Material.CartographyTable, 2.5f }, + { Material.CarvedPumpkin, 1.0f }, + { Material.Cauldron, 2.0f }, { Material.CaveAir, 0.0f }, { Material.CaveVines, 0.0f }, { Material.CaveVinesPlant, 0.0f }, - { Material.CherryButton, 0.0f }, - { Material.CherryLog, 0.0f }, + { Material.ChainCommandBlock, -1.0f }, + { Material.CherryButton, 0.5f }, + { Material.CherryDoor, 3.0f }, + { Material.CherryFence, 2.0f }, + { Material.CherryFenceGate, 2.0f }, + { Material.CherryHangingSign, 1.0f }, + { Material.CherryLeaves, 0.2f }, + { Material.CherryLog, 2.0f }, + { Material.CherryPlanks, 2.0f }, + { Material.CherryPressurePlate, 0.5f }, { Material.CherrySapling, 0.0f }, - { Material.ChiseledCopper, 0.0f }, - { Material.ChiseledDeepslate, 0.0f }, - { Material.ChiseledTuff, 0.0f }, - { Material.ChiseledTuffBricks, 0.0f }, + { Material.CherryShelf, 2.0f }, + { Material.CherrySign, 1.0f }, + { Material.CherrySlab, 2.0f }, + { Material.CherryStairs, 2.0f }, + { Material.CherryTrapdoor, 3.0f }, + { Material.CherryWallHangingSign, 1.0f }, + { Material.CherryWallSign, 1.0f }, + { Material.CherryWood, 2.0f }, + { Material.Chest, 2.5f }, + { Material.ChippedAnvil, 5.0f }, + { Material.ChiseledBookshelf, 1.5f }, + { Material.ChiseledCopper, 3.0f }, + { Material.ChiseledDeepslate, 3.5f }, + { Material.ChiseledNetherBricks, 2.0f }, + { Material.ChiseledPolishedBlackstone, 1.5f }, + { Material.ChiseledQuartzBlock, 0.8f }, + { Material.ChiseledRedSandstone, 0.8f }, + { Material.ChiseledResinBricks, 1.5f }, + { Material.ChiseledSandstone, 0.8f }, + { Material.ChiseledStoneBricks, 1.5f }, + { Material.ChiseledTuff, 1.5f }, + { Material.ChiseledTuffBricks, 1.5f }, + { Material.ChorusFlower, 0.4f }, + { Material.ChorusPlant, 0.4f }, + { Material.Clay, 0.6f }, { Material.ClosedEyeblossom, 0.0f }, - { Material.CobbledDeepslateSlab, 0.0f }, - { Material.CobbledDeepslateWall, 0.0f }, - { Material.CobblestoneWall, 0.0f }, + { Material.CoalBlock, 5.0f }, + { Material.CoalOre, 3.0f }, + { Material.CoarseDirt, 0.5f }, + { Material.CobbledDeepslate, 3.5f }, + { Material.CobbledDeepslateSlab, 3.5f }, + { Material.CobbledDeepslateStairs, 3.5f }, + { Material.CobbledDeepslateWall, 3.5f }, + { Material.Cobblestone, 2.0f }, + { Material.CobblestoneSlab, 2.0f }, + { Material.CobblestoneStairs, 2.0f }, + { Material.CobblestoneWall, 2.0f }, + { Material.Cobweb, 4.0f }, + { Material.Cocoa, 0.2f }, + { Material.CommandBlock, -1.0f }, { Material.Comparator, 0.0f }, - { Material.CopperOre, 0.0f }, + { Material.Composter, 0.6f }, + { Material.Conduit, 3.0f }, + { Material.CopperBlock, 3.0f }, + { Material.CopperBulb, 3.0f }, + { Material.CopperChest, 3.0f }, + { Material.CopperDoor, 3.0f }, + { Material.CopperGolemStatue, 3.0f }, + { Material.CopperGrate, 3.0f }, + { Material.CopperOre, 3.0f }, { Material.CopperTorch, 0.0f }, + { Material.CopperTrapdoor, 3.0f }, { Material.CopperWallTorch, 0.0f }, { Material.Cornflower, 0.0f }, - { Material.CrackedDeepslateBricks, 0.0f }, - { Material.CrackedDeepslateTiles, 0.0f }, - { Material.CrackedPolishedBlackstoneBricks, 0.0f }, - { Material.CrimsonButton, 0.0f }, + { Material.CrackedDeepslateBricks, 3.5f }, + { Material.CrackedDeepslateTiles, 3.5f }, + { Material.CrackedNetherBricks, 2.0f }, + { Material.CrackedPolishedBlackstoneBricks, 1.5f }, + { Material.CrackedStoneBricks, 1.5f }, + { Material.Crafter, 1.5f }, + { Material.CraftingTable, 2.5f }, + { Material.CreakingHeart, 10.0f }, + { Material.CreeperHead, 1.0f }, + { Material.CreeperWallHead, 1.0f }, + { Material.CrimsonButton, 0.5f }, + { Material.CrimsonDoor, 3.0f }, + { Material.CrimsonFence, 2.0f }, + { Material.CrimsonFenceGate, 2.0f }, { Material.CrimsonFungus, 0.0f }, + { Material.CrimsonHangingSign, 1.0f }, + { Material.CrimsonHyphae, 2.0f }, + { Material.CrimsonNylium, 0.4f }, + { Material.CrimsonPlanks, 2.0f }, + { Material.CrimsonPressurePlate, 0.5f }, { Material.CrimsonRoots, 0.0f }, - { Material.CrimsonStem, 0.0f }, - { Material.CutCopper, 0.0f }, - { Material.CutCopperSlab, 0.0f }, - { Material.CutCopperStairs, 0.0f }, - { Material.CyanCandle, 0.0f }, - { Material.CyanCandleCake, 0.0f }, - { Material.CyanShulkerBox, 0.0f }, + { Material.CrimsonShelf, 2.0f }, + { Material.CrimsonSign, 1.0f }, + { Material.CrimsonSlab, 2.0f }, + { Material.CrimsonStairs, 2.0f }, + { Material.CrimsonStem, 2.0f }, + { Material.CrimsonTrapdoor, 3.0f }, + { Material.CrimsonWallHangingSign, 1.0f }, + { Material.CrimsonWallSign, 1.0f }, + { Material.CryingObsidian, 50.0f }, + { Material.CutCopper, 3.0f }, + { Material.CutCopperSlab, 3.0f }, + { Material.CutCopperStairs, 3.0f }, + { Material.CutRedSandstone, 0.8f }, + { Material.CutRedSandstoneSlab, 2.0f }, + { Material.CutSandstone, 0.8f }, + { Material.CutSandstoneSlab, 2.0f }, + { Material.CyanBanner, 1.0f }, + { Material.CyanBed, 0.2f }, + { Material.CyanCandle, 0.1f }, + { Material.CyanCandleCake, 0.5f }, + { Material.CyanCarpet, 0.1f }, + { Material.CyanConcrete, 1.8f }, + { Material.CyanConcretePowder, 0.5f }, + { Material.CyanGlazedTerracotta, 1.4f }, + { Material.CyanShulkerBox, 2.0f }, + { Material.CyanStainedGlass, 0.3f }, + { Material.CyanStainedGlassPane, 0.3f }, + { Material.CyanTerracotta, 1.25f }, + { Material.CyanWallBanner, 1.0f }, + { Material.CyanWool, 0.8f }, + { Material.DamagedAnvil, 5.0f }, { Material.Dandelion, 0.0f }, - { Material.DarkOakButton, 0.0f }, - { Material.DarkOakLeaves, 0.0f }, - { Material.DarkOakLog, 0.0f }, + { Material.DarkOakButton, 0.5f }, + { Material.DarkOakDoor, 3.0f }, + { Material.DarkOakFence, 2.0f }, + { Material.DarkOakFenceGate, 2.0f }, + { Material.DarkOakHangingSign, 1.0f }, + { Material.DarkOakLeaves, 0.2f }, + { Material.DarkOakLog, 2.0f }, + { Material.DarkOakPlanks, 2.0f }, + { Material.DarkOakPressurePlate, 0.5f }, { Material.DarkOakSapling, 0.0f }, + { Material.DarkOakShelf, 2.0f }, + { Material.DarkOakSign, 1.0f }, + { Material.DarkOakSlab, 2.0f }, + { Material.DarkOakStairs, 2.0f }, + { Material.DarkOakTrapdoor, 3.0f }, + { Material.DarkOakWallHangingSign, 1.0f }, + { Material.DarkOakWallSign, 1.0f }, + { Material.DarkOakWood, 2.0f }, + { Material.DarkPrismarine, 1.5f }, + { Material.DarkPrismarineSlab, 1.5f }, + { Material.DarkPrismarineStairs, 1.5f }, + { Material.DaylightDetector, 0.2f }, { Material.DeadBrainCoral, 0.0f }, + { Material.DeadBrainCoralBlock, 1.5f }, { Material.DeadBrainCoralFan, 0.0f }, { Material.DeadBrainCoralWallFan, 0.0f }, { Material.DeadBubbleCoral, 0.0f }, + { Material.DeadBubbleCoralBlock, 1.5f }, { Material.DeadBubbleCoralFan, 0.0f }, { Material.DeadBubbleCoralWallFan, 0.0f }, { Material.DeadBush, 0.0f }, { Material.DeadFireCoral, 0.0f }, + { Material.DeadFireCoralBlock, 1.5f }, { Material.DeadFireCoralFan, 0.0f }, { Material.DeadFireCoralWallFan, 0.0f }, { Material.DeadHornCoral, 0.0f }, + { Material.DeadHornCoralBlock, 1.5f }, { Material.DeadHornCoralFan, 0.0f }, { Material.DeadHornCoralWallFan, 0.0f }, { Material.DeadTubeCoral, 0.0f }, + { Material.DeadTubeCoralBlock, 1.5f }, { Material.DeadTubeCoralFan, 0.0f }, { Material.DeadTubeCoralWallFan, 0.0f }, { Material.DecoratedPot, 0.0f }, - { Material.DeepslateBrickSlab, 0.0f }, - { Material.DeepslateBrickWall, 0.0f }, - { Material.DeepslateBricks, 0.0f }, - { Material.DeepslateTileSlab, 0.0f }, - { Material.DeepslateTileWall, 0.0f }, - { Material.DeepslateTiles, 0.0f }, - { Material.DioriteSlab, 0.0f }, - { Material.DioriteWall, 0.0f }, + { Material.Deepslate, 3.0f }, + { Material.DeepslateBrickSlab, 3.5f }, + { Material.DeepslateBrickStairs, 3.5f }, + { Material.DeepslateBrickWall, 3.5f }, + { Material.DeepslateBricks, 3.5f }, + { Material.DeepslateCoalOre, 4.5f }, + { Material.DeepslateCopperOre, 4.5f }, + { Material.DeepslateDiamondOre, 4.5f }, + { Material.DeepslateEmeraldOre, 4.5f }, + { Material.DeepslateGoldOre, 4.5f }, + { Material.DeepslateIronOre, 4.5f }, + { Material.DeepslateLapisOre, 4.5f }, + { Material.DeepslateRedstoneOre, 4.5f }, + { Material.DeepslateTileSlab, 3.5f }, + { Material.DeepslateTileStairs, 3.5f }, + { Material.DeepslateTileWall, 3.5f }, + { Material.DeepslateTiles, 3.5f }, + { Material.DetectorRail, 0.7f }, + { Material.DiamondBlock, 5.0f }, + { Material.DiamondOre, 3.0f }, + { Material.Diorite, 1.5f }, + { Material.DioriteSlab, 1.5f }, + { Material.DioriteStairs, 1.5f }, + { Material.DioriteWall, 1.5f }, + { Material.Dirt, 0.5f }, + { Material.DirtPath, 0.65f }, + { Material.Dispenser, 3.5f }, + { Material.DragonEgg, 3.0f }, + { Material.DragonHead, 1.0f }, + { Material.DragonWallHead, 1.0f }, { Material.DriedGhast, 0.0f }, + { Material.DriedKelpBlock, 0.5f }, + { Material.DripstoneBlock, 1.5f }, + { Material.Dropper, 3.5f }, + { Material.EmeraldBlock, 5.0f }, + { Material.EmeraldOre, 3.0f }, + { Material.EnchantingTable, 5.0f }, + { Material.EndGateway, -1.0f }, + { Material.EndPortal, -1.0f }, + { Material.EndPortalFrame, -1.0f }, { Material.EndRod, 0.0f }, - { Material.EndStoneBrickSlab, 0.0f }, - { Material.EndStoneBrickWall, 0.0f }, - { Material.ExposedChiseledCopper, 0.0f }, - { Material.ExposedCopper, 0.0f }, - { Material.ExposedCopperBulb, 0.0f }, - { Material.ExposedCopperChest, 0.0f }, - { Material.ExposedCopperDoor, 0.0f }, - { Material.ExposedCopperGolemStatue, 0.0f }, - { Material.ExposedCopperGrate, 0.0f }, - { Material.ExposedCopperTrapdoor, 0.0f }, - { Material.ExposedCutCopper, 0.0f }, - { Material.ExposedCutCopperSlab, 0.0f }, - { Material.ExposedCutCopperStairs, 0.0f }, - { Material.ExposedLightningRod, 0.0f }, + { Material.EndStone, 3.0f }, + { Material.EndStoneBrickSlab, 3.0f }, + { Material.EndStoneBrickStairs, 3.0f }, + { Material.EndStoneBrickWall, 3.0f }, + { Material.EndStoneBricks, 3.0f }, + { Material.EnderChest, 22.5f }, + { Material.ExposedChiseledCopper, 3.0f }, + { Material.ExposedCopper, 3.0f }, + { Material.ExposedCopperBulb, 3.0f }, + { Material.ExposedCopperChest, 3.0f }, + { Material.ExposedCopperDoor, 3.0f }, + { Material.ExposedCopperGolemStatue, 3.0f }, + { Material.ExposedCopperGrate, 3.0f }, + { Material.ExposedCopperTrapdoor, 3.0f }, + { Material.ExposedCutCopper, 3.0f }, + { Material.ExposedCutCopperSlab, 3.0f }, + { Material.ExposedCutCopperStairs, 3.0f }, + { Material.ExposedLightningRod, 3.0f }, + { Material.Farmland, 0.6f }, { Material.Fern, 0.0f }, { Material.Fire, 0.0f }, { Material.FireCoral, 0.0f }, + { Material.FireCoralBlock, 1.5f }, { Material.FireCoralFan, 0.0f }, { Material.FireCoralWallFan, 0.0f }, { Material.FireflyBush, 0.0f }, + { Material.FletchingTable, 2.5f }, { Material.FlowerPot, 0.0f }, { Material.FloweringAzalea, 0.0f }, - { Material.FloweringAzaleaLeaves, 0.0f }, + { Material.FloweringAzaleaLeaves, 0.2f }, { Material.Frogspawn, 0.0f }, - { Material.GildedBlackstone, 0.0f }, - { Material.GlassPane, 0.0f }, - { Material.GraniteSlab, 0.0f }, - { Material.GraniteWall, 0.0f }, - { Material.GrayCandle, 0.0f }, - { Material.GrayCandleCake, 0.0f }, - { Material.GrayShulkerBox, 0.0f }, - { Material.GreenCandle, 0.0f }, - { Material.GreenCandleCake, 0.0f }, - { Material.GreenShulkerBox, 0.0f }, + { Material.FrostedIce, 0.5f }, + { Material.Furnace, 3.5f }, + { Material.GildedBlackstone, 1.5f }, + { Material.Glass, 0.3f }, + { Material.GlassPane, 0.3f }, + { Material.GlowLichen, 0.2f }, + { Material.Glowstone, 0.3f }, + { Material.GoldBlock, 3.0f }, + { Material.GoldOre, 3.0f }, + { Material.Granite, 1.5f }, + { Material.GraniteSlab, 1.5f }, + { Material.GraniteStairs, 1.5f }, + { Material.GraniteWall, 1.5f }, + { Material.GrassBlock, 0.6f }, + { Material.Gravel, 0.6f }, + { Material.GrayBanner, 1.0f }, + { Material.GrayBed, 0.2f }, + { Material.GrayCandle, 0.1f }, + { Material.GrayCandleCake, 0.5f }, + { Material.GrayCarpet, 0.1f }, + { Material.GrayConcrete, 1.8f }, + { Material.GrayConcretePowder, 0.5f }, + { Material.GrayGlazedTerracotta, 1.4f }, + { Material.GrayShulkerBox, 2.0f }, + { Material.GrayStainedGlass, 0.3f }, + { Material.GrayStainedGlassPane, 0.3f }, + { Material.GrayTerracotta, 1.25f }, + { Material.GrayWallBanner, 1.0f }, + { Material.GrayWool, 0.8f }, + { Material.GreenBanner, 1.0f }, + { Material.GreenBed, 0.2f }, + { Material.GreenCandle, 0.1f }, + { Material.GreenCandleCake, 0.5f }, + { Material.GreenCarpet, 0.1f }, + { Material.GreenConcrete, 1.8f }, + { Material.GreenConcretePowder, 0.5f }, + { Material.GreenGlazedTerracotta, 1.4f }, + { Material.GreenShulkerBox, 2.0f }, + { Material.GreenStainedGlass, 0.3f }, + { Material.GreenStainedGlassPane, 0.3f }, + { Material.GreenTerracotta, 1.25f }, + { Material.GreenWallBanner, 1.0f }, + { Material.GreenWool, 0.8f }, + { Material.Grindstone, 2.0f }, { Material.HangingRoots, 0.0f }, + { Material.HayBlock, 0.5f }, + { Material.HeavyCore, 10.0f }, + { Material.HeavyWeightedPressurePlate, 0.5f }, { Material.HoneyBlock, 0.0f }, + { Material.HoneycombBlock, 0.6f }, + { Material.Hopper, 3.0f }, { Material.HornCoral, 0.0f }, + { Material.HornCoralBlock, 1.5f }, { Material.HornCoralFan, 0.0f }, { Material.HornCoralWallFan, 0.0f }, + { Material.Ice, 0.5f }, { Material.InfestedChiseledStoneBricks, 0.0f }, { Material.InfestedCobblestone, 0.0f }, { Material.InfestedCrackedStoneBricks, 0.0f }, @@ -209,94 +500,296 @@ namespace MinecraftClient.Mapping { Material.InfestedMossyStoneBricks, 0.0f }, { Material.InfestedStone, 0.0f }, { Material.InfestedStoneBricks, 0.0f }, - { Material.JungleButton, 0.0f }, - { Material.JungleLeaves, 0.0f }, - { Material.JungleLog, 0.0f }, + { Material.IronBars, 5.0f }, + { Material.IronBlock, 5.0f }, + { Material.IronChain, 5.0f }, + { Material.IronDoor, 5.0f }, + { Material.IronOre, 3.0f }, + { Material.IronTrapdoor, 5.0f }, + { Material.JackOLantern, 1.0f }, + { Material.Jigsaw, -1.0f }, + { Material.Jukebox, 2.0f }, + { Material.JungleButton, 0.5f }, + { Material.JungleDoor, 3.0f }, + { Material.JungleFence, 2.0f }, + { Material.JungleFenceGate, 2.0f }, + { Material.JungleHangingSign, 1.0f }, + { Material.JungleLeaves, 0.2f }, + { Material.JungleLog, 2.0f }, + { Material.JunglePlanks, 2.0f }, + { Material.JunglePressurePlate, 0.5f }, { Material.JungleSapling, 0.0f }, + { Material.JungleShelf, 2.0f }, + { Material.JungleSign, 1.0f }, + { Material.JungleSlab, 2.0f }, + { Material.JungleStairs, 2.0f }, + { Material.JungleTrapdoor, 3.0f }, + { Material.JungleWallHangingSign, 1.0f }, + { Material.JungleWallSign, 1.0f }, + { Material.JungleWood, 2.0f }, { Material.Kelp, 0.0f }, { Material.KelpPlant, 0.0f }, - { Material.LargeAmethystBud, 0.0f }, + { Material.Ladder, 0.4f }, + { Material.Lantern, 3.5f }, + { Material.LapisBlock, 3.0f }, + { Material.LapisOre, 3.0f }, + { Material.LargeAmethystBud, 1.5f }, { Material.LargeFern, 0.0f }, - { Material.LavaCauldron, 0.0f }, + { Material.Lava, 100.0f }, + { Material.LavaCauldron, 2.0f }, { Material.LeafLitter, 0.0f }, - { Material.LightBlueCandle, 0.0f }, - { Material.LightBlueCandleCake, 0.0f }, - { Material.LightBlueShulkerBox, 0.0f }, - { Material.LightGrayCandle, 0.0f }, - { Material.LightGrayCandleCake, 0.0f }, - { Material.LightGrayShulkerBox, 0.0f }, + { Material.Lectern, 2.5f }, + { Material.Lever, 0.5f }, + { Material.Light, -1.0f }, + { Material.LightBlueBanner, 1.0f }, + { Material.LightBlueBed, 0.2f }, + { Material.LightBlueCandle, 0.1f }, + { Material.LightBlueCandleCake, 0.5f }, + { Material.LightBlueCarpet, 0.1f }, + { Material.LightBlueConcrete, 1.8f }, + { Material.LightBlueConcretePowder, 0.5f }, + { Material.LightBlueGlazedTerracotta, 1.4f }, + { Material.LightBlueShulkerBox, 2.0f }, + { Material.LightBlueStainedGlass, 0.3f }, + { Material.LightBlueStainedGlassPane, 0.3f }, + { Material.LightBlueTerracotta, 1.25f }, + { Material.LightBlueWallBanner, 1.0f }, + { Material.LightBlueWool, 0.8f }, + { Material.LightGrayBanner, 1.0f }, + { Material.LightGrayBed, 0.2f }, + { Material.LightGrayCandle, 0.1f }, + { Material.LightGrayCandleCake, 0.5f }, + { Material.LightGrayCarpet, 0.1f }, + { Material.LightGrayConcrete, 1.8f }, + { Material.LightGrayConcretePowder, 0.5f }, + { Material.LightGrayGlazedTerracotta, 1.4f }, + { Material.LightGrayShulkerBox, 2.0f }, + { Material.LightGrayStainedGlass, 0.3f }, + { Material.LightGrayStainedGlassPane, 0.3f }, + { Material.LightGrayTerracotta, 1.25f }, + { Material.LightGrayWallBanner, 1.0f }, + { Material.LightGrayWool, 0.8f }, + { Material.LightWeightedPressurePlate, 0.5f }, + { Material.LightningRod, 3.0f }, { Material.Lilac, 0.0f }, { Material.LilyOfTheValley, 0.0f }, { Material.LilyPad, 0.0f }, - { Material.LimeCandle, 0.0f }, - { Material.LimeCandleCake, 0.0f }, - { Material.LimeShulkerBox, 0.0f }, - { Material.MagentaCandle, 0.0f }, - { Material.MagentaCandleCake, 0.0f }, - { Material.MagentaShulkerBox, 0.0f }, - { Material.MangroveButton, 0.0f }, - { Material.MangroveLeaves, 0.0f }, - { Material.MangroveLog, 0.0f }, + { Material.LimeBanner, 1.0f }, + { Material.LimeBed, 0.2f }, + { Material.LimeCandle, 0.1f }, + { Material.LimeCandleCake, 0.5f }, + { Material.LimeCarpet, 0.1f }, + { Material.LimeConcrete, 1.8f }, + { Material.LimeConcretePowder, 0.5f }, + { Material.LimeGlazedTerracotta, 1.4f }, + { Material.LimeShulkerBox, 2.0f }, + { Material.LimeStainedGlass, 0.3f }, + { Material.LimeStainedGlassPane, 0.3f }, + { Material.LimeTerracotta, 1.25f }, + { Material.LimeWallBanner, 1.0f }, + { Material.LimeWool, 0.8f }, + { Material.Lodestone, 3.5f }, + { Material.Loom, 2.5f }, + { Material.MagentaBanner, 1.0f }, + { Material.MagentaBed, 0.2f }, + { Material.MagentaCandle, 0.1f }, + { Material.MagentaCandleCake, 0.5f }, + { Material.MagentaCarpet, 0.1f }, + { Material.MagentaConcrete, 1.8f }, + { Material.MagentaConcretePowder, 0.5f }, + { Material.MagentaGlazedTerracotta, 1.4f }, + { Material.MagentaShulkerBox, 2.0f }, + { Material.MagentaStainedGlass, 0.3f }, + { Material.MagentaStainedGlassPane, 0.3f }, + { Material.MagentaTerracotta, 1.25f }, + { Material.MagentaWallBanner, 1.0f }, + { Material.MagentaWool, 0.8f }, + { Material.MagmaBlock, 0.5f }, + { Material.MangroveButton, 0.5f }, + { Material.MangroveDoor, 3.0f }, + { Material.MangroveFence, 2.0f }, + { Material.MangroveFenceGate, 2.0f }, + { Material.MangroveHangingSign, 1.0f }, + { Material.MangroveLeaves, 0.2f }, + { Material.MangroveLog, 2.0f }, + { Material.MangrovePlanks, 2.0f }, + { Material.MangrovePressurePlate, 0.5f }, { Material.MangrovePropagule, 0.0f }, - { Material.MediumAmethystBud, 0.0f }, - { Material.MossyCobblestoneSlab, 0.0f }, - { Material.MossyCobblestoneWall, 0.0f }, - { Material.MossyStoneBrickSlab, 0.0f }, - { Material.MossyStoneBrickWall, 0.0f }, - { Material.Mud, 0.0f }, - { Material.MudBrickWall, 0.0f }, - { Material.NetherBrickWall, 0.0f }, + { Material.MangroveRoots, 0.7f }, + { Material.MangroveShelf, 2.0f }, + { Material.MangroveSign, 1.0f }, + { Material.MangroveSlab, 2.0f }, + { Material.MangroveStairs, 2.0f }, + { Material.MangroveTrapdoor, 3.0f }, + { Material.MangroveWallHangingSign, 1.0f }, + { Material.MangroveWallSign, 1.0f }, + { Material.MangroveWood, 2.0f }, + { Material.MediumAmethystBud, 1.5f }, + { Material.Melon, 1.0f }, + { Material.MelonStem, 0.0f }, + { Material.MossBlock, 0.1f }, + { Material.MossCarpet, 0.1f }, + { Material.MossyCobblestone, 2.0f }, + { Material.MossyCobblestoneSlab, 2.0f }, + { Material.MossyCobblestoneStairs, 2.0f }, + { Material.MossyCobblestoneWall, 2.0f }, + { Material.MossyStoneBrickSlab, 1.5f }, + { Material.MossyStoneBrickStairs, 1.5f }, + { Material.MossyStoneBrickWall, 1.5f }, + { Material.MossyStoneBricks, 1.5f }, + { Material.MovingPiston, -1.0f }, + { Material.Mud, 0.5f }, + { Material.MudBrickSlab, 1.5f }, + { Material.MudBrickStairs, 1.5f }, + { Material.MudBrickWall, 1.5f }, + { Material.MudBricks, 1.5f }, + { Material.MuddyMangroveRoots, 0.7f }, + { Material.MushroomStem, 0.2f }, + { Material.Mycelium, 0.6f }, + { Material.NetherBrickFence, 2.0f }, + { Material.NetherBrickSlab, 2.0f }, + { Material.NetherBrickStairs, 2.0f }, + { Material.NetherBrickWall, 2.0f }, + { Material.NetherBricks, 2.0f }, + { Material.NetherGoldOre, 3.0f }, + { Material.NetherPortal, -1.0f }, + { Material.NetherQuartzOre, 3.0f }, { Material.NetherSprouts, 0.0f }, { Material.NetherWart, 0.0f }, - { Material.OakButton, 0.0f }, + { Material.NetherWartBlock, 1.0f }, + { Material.NetheriteBlock, 50.0f }, + { Material.Netherrack, 0.4f }, + { Material.NoteBlock, 0.8f }, + { Material.OakButton, 0.5f }, + { Material.OakDoor, 3.0f }, + { Material.OakFence, 2.0f }, + { Material.OakFenceGate, 2.0f }, + { Material.OakHangingSign, 1.0f }, { Material.OakLeaves, 0.2f }, { Material.OakLog, 2.0f }, + { Material.OakPlanks, 2.0f }, + { Material.OakPressurePlate, 0.5f }, { Material.OakSapling, 0.0f }, + { Material.OakShelf, 2.0f }, + { Material.OakSign, 1.0f }, + { Material.OakSlab, 2.0f }, + { Material.OakStairs, 2.0f }, + { Material.OakTrapdoor, 3.0f }, + { Material.OakWallHangingSign, 1.0f }, + { Material.OakWallSign, 1.0f }, + { Material.OakWood, 2.0f }, + { Material.Observer, 3.0f }, + { Material.Obsidian, 50.0f }, + { Material.OchreFroglight, 0.3f }, { Material.OpenEyeblossom, 0.0f }, - { Material.OrangeCandle, 0.0f }, - { Material.OrangeCandleCake, 0.0f }, - { Material.OrangeShulkerBox, 0.0f }, + { Material.OrangeBanner, 1.0f }, + { Material.OrangeBed, 0.2f }, + { Material.OrangeCandle, 0.1f }, + { Material.OrangeCandleCake, 0.5f }, + { Material.OrangeCarpet, 0.1f }, + { Material.OrangeConcrete, 1.8f }, + { Material.OrangeConcretePowder, 0.5f }, + { Material.OrangeGlazedTerracotta, 1.4f }, + { Material.OrangeShulkerBox, 2.0f }, + { Material.OrangeStainedGlass, 0.3f }, + { Material.OrangeStainedGlassPane, 0.3f }, + { Material.OrangeTerracotta, 1.25f }, { Material.OrangeTulip, 0.0f }, + { Material.OrangeWallBanner, 1.0f }, + { Material.OrangeWool, 0.8f }, { Material.OxeyeDaisy, 0.0f }, - { Material.OxidizedChiseledCopper, 0.0f }, - { Material.OxidizedCopper, 0.0f }, - { Material.OxidizedCopperBulb, 0.0f }, - { Material.OxidizedCopperChest, 0.0f }, - { Material.OxidizedCopperDoor, 0.0f }, - { Material.OxidizedCopperGolemStatue, 0.0f }, - { Material.OxidizedCopperGrate, 0.0f }, - { Material.OxidizedCopperTrapdoor, 0.0f }, - { Material.OxidizedCutCopper, 0.0f }, - { Material.OxidizedCutCopperSlab, 0.0f }, - { Material.OxidizedCutCopperStairs, 0.0f }, - { Material.OxidizedLightningRod, 0.0f }, + { Material.OxidizedChiseledCopper, 3.0f }, + { Material.OxidizedCopper, 3.0f }, + { Material.OxidizedCopperBulb, 3.0f }, + { Material.OxidizedCopperChest, 3.0f }, + { Material.OxidizedCopperDoor, 3.0f }, + { Material.OxidizedCopperGolemStatue, 3.0f }, + { Material.OxidizedCopperGrate, 3.0f }, + { Material.OxidizedCopperTrapdoor, 3.0f }, + { Material.OxidizedCutCopper, 3.0f }, + { Material.OxidizedCutCopperSlab, 3.0f }, + { Material.OxidizedCutCopperStairs, 3.0f }, + { Material.OxidizedLightningRod, 3.0f }, + { Material.PackedIce, 0.5f }, + { Material.PackedMud, 1.0f }, { Material.PaleHangingMoss, 0.0f }, - { Material.PaleOakButton, 0.0f }, - { Material.PaleOakLog, 0.0f }, + { Material.PaleMossBlock, 0.1f }, + { Material.PaleMossCarpet, 0.1f }, + { Material.PaleOakButton, 0.5f }, + { Material.PaleOakDoor, 3.0f }, + { Material.PaleOakFence, 2.0f }, + { Material.PaleOakFenceGate, 2.0f }, + { Material.PaleOakHangingSign, 1.0f }, + { Material.PaleOakLeaves, 0.2f }, + { Material.PaleOakLog, 2.0f }, + { Material.PaleOakPlanks, 2.0f }, + { Material.PaleOakPressurePlate, 0.5f }, { Material.PaleOakSapling, 0.0f }, + { Material.PaleOakShelf, 2.0f }, + { Material.PaleOakSign, 1.0f }, + { Material.PaleOakSlab, 2.0f }, + { Material.PaleOakStairs, 2.0f }, + { Material.PaleOakTrapdoor, 3.0f }, + { Material.PaleOakWallHangingSign, 1.0f }, + { Material.PaleOakWallSign, 1.0f }, + { Material.PaleOakWood, 2.0f }, + { Material.PearlescentFroglight, 0.3f }, { Material.Peony, 0.0f }, - { Material.PinkCandle, 0.0f }, - { Material.PinkCandleCake, 0.0f }, + { Material.PetrifiedOakSlab, 2.0f }, + { Material.PiglinHead, 1.0f }, + { Material.PiglinWallHead, 1.0f }, + { Material.PinkBanner, 1.0f }, + { Material.PinkBed, 0.2f }, + { Material.PinkCandle, 0.1f }, + { Material.PinkCandleCake, 0.5f }, + { Material.PinkCarpet, 0.1f }, + { Material.PinkConcrete, 1.8f }, + { Material.PinkConcretePowder, 0.5f }, + { Material.PinkGlazedTerracotta, 1.4f }, { Material.PinkPetals, 0.0f }, - { Material.PinkShulkerBox, 0.0f }, + { Material.PinkShulkerBox, 2.0f }, + { Material.PinkStainedGlass, 0.3f }, + { Material.PinkStainedGlassPane, 0.3f }, + { Material.PinkTerracotta, 1.25f }, { Material.PinkTulip, 0.0f }, + { Material.PinkWallBanner, 1.0f }, + { Material.PinkWool, 0.8f }, { Material.Piston, 0.0f }, + { Material.PistonHead, 1.5f }, { Material.PitcherCrop, 0.0f }, { Material.PitcherPlant, 0.0f }, - { Material.PolishedAndesiteSlab, 0.0f }, - { Material.PolishedBlackstoneBrickWall, 0.0f }, - { Material.PolishedBlackstoneButton, 0.0f }, - { Material.PolishedBlackstoneSlab, 0.0f }, - { Material.PolishedBlackstoneWall, 0.0f }, - { Material.PolishedDeepslate, 0.0f }, - { Material.PolishedDeepslateSlab, 0.0f }, - { Material.PolishedDeepslateWall, 0.0f }, - { Material.PolishedDioriteSlab, 0.0f }, - { Material.PolishedGraniteSlab, 0.0f }, - { Material.PolishedTuff, 0.0f }, - { Material.PolishedTuffSlab, 0.0f }, - { Material.PolishedTuffStairs, 0.0f }, - { Material.PolishedTuffWall, 0.0f }, + { Material.PlayerHead, 1.0f }, + { Material.PlayerWallHead, 1.0f }, + { Material.Podzol, 0.5f }, + { Material.PointedDripstone, 1.5f }, + { Material.PolishedAndesite, 1.5f }, + { Material.PolishedAndesiteSlab, 1.5f }, + { Material.PolishedAndesiteStairs, 1.5f }, + { Material.PolishedBasalt, 1.25f }, + { Material.PolishedBlackstone, 2.0f }, + { Material.PolishedBlackstoneBrickSlab, 2.0f }, + { Material.PolishedBlackstoneBrickStairs, 1.5f }, + { Material.PolishedBlackstoneBrickWall, 1.5f }, + { Material.PolishedBlackstoneBricks, 1.5f }, + { Material.PolishedBlackstoneButton, 0.5f }, + { Material.PolishedBlackstonePressurePlate, 0.5f }, + { Material.PolishedBlackstoneSlab, 2.0f }, + { Material.PolishedBlackstoneStairs, 2.0f }, + { Material.PolishedBlackstoneWall, 2.0f }, + { Material.PolishedDeepslate, 3.5f }, + { Material.PolishedDeepslateSlab, 3.5f }, + { Material.PolishedDeepslateStairs, 3.5f }, + { Material.PolishedDeepslateWall, 3.5f }, + { Material.PolishedDiorite, 1.5f }, + { Material.PolishedDioriteSlab, 1.5f }, + { Material.PolishedDioriteStairs, 1.5f }, + { Material.PolishedGranite, 1.5f }, + { Material.PolishedGraniteSlab, 1.5f }, + { Material.PolishedGraniteStairs, 1.5f }, + { Material.PolishedTuff, 1.5f }, + { Material.PolishedTuffSlab, 1.5f }, + { Material.PolishedTuffStairs, 1.5f }, + { Material.PolishedTuffWall, 1.5f }, { Material.Poppy, 0.0f }, { Material.Potatoes, 0.0f }, { Material.PottedAcaciaSapling, 0.0f }, @@ -336,777 +829,355 @@ namespace MinecraftClient.Mapping { Material.PottedWarpedRoots, 0.0f }, { Material.PottedWhiteTulip, 0.0f }, { Material.PottedWitherRose, 0.0f }, - { Material.PowderSnowCauldron, 0.0f }, - { Material.PrismarineWall, 0.0f }, - { Material.PurpleCandle, 0.0f }, - { Material.PurpleCandleCake, 0.0f }, - { Material.PurpleShulkerBox, 0.0f }, - { Material.QuartzBricks, 0.0f }, - { Material.RedCandle, 0.0f }, - { Material.RedCandleCake, 0.0f }, + { Material.PowderSnow, 0.25f }, + { Material.PowderSnowCauldron, 2.0f }, + { Material.PoweredRail, 0.7f }, + { Material.Prismarine, 1.5f }, + { Material.PrismarineBrickSlab, 1.5f }, + { Material.PrismarineBrickStairs, 1.5f }, + { Material.PrismarineBricks, 1.5f }, + { Material.PrismarineSlab, 1.5f }, + { Material.PrismarineStairs, 1.5f }, + { Material.PrismarineWall, 1.5f }, + { Material.Pumpkin, 1.0f }, + { Material.PumpkinStem, 0.0f }, + { Material.PurpleBanner, 1.0f }, + { Material.PurpleBed, 0.2f }, + { Material.PurpleCandle, 0.1f }, + { Material.PurpleCandleCake, 0.5f }, + { Material.PurpleCarpet, 0.1f }, + { Material.PurpleConcrete, 1.8f }, + { Material.PurpleConcretePowder, 0.5f }, + { Material.PurpleGlazedTerracotta, 1.4f }, + { Material.PurpleShulkerBox, 2.0f }, + { Material.PurpleStainedGlass, 0.3f }, + { Material.PurpleStainedGlassPane, 0.3f }, + { Material.PurpleTerracotta, 1.25f }, + { Material.PurpleWallBanner, 1.0f }, + { Material.PurpleWool, 0.8f }, + { Material.PurpurBlock, 1.5f }, + { Material.PurpurPillar, 1.5f }, + { Material.PurpurSlab, 2.0f }, + { Material.PurpurStairs, 1.5f }, + { Material.QuartzBlock, 0.8f }, + { Material.QuartzBricks, 0.8f }, + { Material.QuartzPillar, 0.8f }, + { Material.QuartzSlab, 2.0f }, + { Material.QuartzStairs, 0.8f }, + { Material.Rail, 0.7f }, + { Material.RawCopperBlock, 5.0f }, + { Material.RawGoldBlock, 5.0f }, + { Material.RawIronBlock, 5.0f }, + { Material.RedBanner, 1.0f }, + { Material.RedBed, 0.2f }, + { Material.RedCandle, 0.1f }, + { Material.RedCandleCake, 0.5f }, + { Material.RedCarpet, 0.1f }, + { Material.RedConcrete, 1.8f }, + { Material.RedConcretePowder, 0.5f }, + { Material.RedGlazedTerracotta, 1.4f }, { Material.RedMushroom, 0.0f }, - { Material.RedNetherBrickSlab, 0.0f }, - { Material.RedNetherBrickWall, 0.0f }, - { Material.RedSandstoneWall, 0.0f }, - { Material.RedShulkerBox, 0.0f }, + { Material.RedMushroomBlock, 0.2f }, + { Material.RedNetherBrickSlab, 2.0f }, + { Material.RedNetherBrickStairs, 2.0f }, + { Material.RedNetherBrickWall, 2.0f }, + { Material.RedNetherBricks, 2.0f }, + { Material.RedSand, 0.5f }, + { Material.RedSandstone, 0.8f }, + { Material.RedSandstoneSlab, 2.0f }, + { Material.RedSandstoneStairs, 0.8f }, + { Material.RedSandstoneWall, 0.8f }, + { Material.RedShulkerBox, 2.0f }, + { Material.RedStainedGlass, 0.3f }, + { Material.RedStainedGlassPane, 0.3f }, + { Material.RedTerracotta, 1.25f }, { Material.RedTulip, 0.0f }, + { Material.RedWallBanner, 1.0f }, + { Material.RedWool, 0.8f }, + { Material.RedstoneBlock, 5.0f }, + { Material.RedstoneLamp, 0.3f }, + { Material.RedstoneOre, 3.0f }, { Material.RedstoneTorch, 0.0f }, { Material.RedstoneWallTorch, 0.0f }, { Material.RedstoneWire, 0.0f }, + { Material.ReinforcedDeepslate, 55.0f }, { Material.Repeater, 0.0f }, + { Material.RepeatingCommandBlock, -1.0f }, { Material.ResinBlock, 0.0f }, + { Material.ResinBrickSlab, 1.5f }, + { Material.ResinBrickStairs, 1.5f }, + { Material.ResinBrickWall, 1.5f }, + { Material.ResinBricks, 1.5f }, { Material.ResinClump, 0.0f }, + { Material.RespawnAnchor, 50.0f }, + { Material.RootedDirt, 0.5f }, { Material.RoseBush, 0.0f }, - { Material.SandstoneWall, 0.0f }, + { Material.Sand, 0.5f }, + { Material.Sandstone, 0.8f }, + { Material.SandstoneSlab, 2.0f }, + { Material.SandstoneStairs, 0.8f }, + { Material.SandstoneWall, 0.8f }, { Material.Scaffolding, 0.0f }, + { Material.Sculk, 0.2f }, + { Material.SculkCatalyst, 3.0f }, + { Material.SculkSensor, 1.5f }, + { Material.SculkShrieker, 3.0f }, + { Material.SculkVein, 0.2f }, + { Material.SeaLantern, 0.3f }, { Material.SeaPickle, 0.0f }, { Material.Seagrass, 0.0f }, { Material.ShortDryGrass, 0.0f }, { Material.ShortGrass, 0.0f }, - { Material.ShulkerBox, 0.0f }, + { Material.Shroomlight, 1.0f }, + { Material.ShulkerBox, 2.0f }, + { Material.SkeletonSkull, 1.0f }, + { Material.SkeletonWallSkull, 1.0f }, { Material.SlimeBlock, 0.0f }, - { Material.SmallAmethystBud, 0.0f }, + { Material.SmallAmethystBud, 1.5f }, { Material.SmallDripleaf, 0.0f }, - { Material.SmoothBasalt, 0.0f }, - { Material.SmoothQuartzSlab, 0.0f }, - { Material.SmoothRedSandstoneSlab, 0.0f }, - { Material.SmoothSandstoneSlab, 0.0f }, + { Material.SmithingTable, 2.5f }, + { Material.Smoker, 3.5f }, + { Material.SmoothBasalt, 1.25f }, + { Material.SmoothQuartz, 2.0f }, + { Material.SmoothQuartzSlab, 2.0f }, + { Material.SmoothQuartzStairs, 2.0f }, + { Material.SmoothRedSandstone, 2.0f }, + { Material.SmoothRedSandstoneSlab, 2.0f }, + { Material.SmoothRedSandstoneStairs, 2.0f }, + { Material.SmoothSandstone, 2.0f }, + { Material.SmoothSandstoneSlab, 2.0f }, + { Material.SmoothSandstoneStairs, 2.0f }, + { Material.SmoothStone, 2.0f }, + { Material.SmoothStoneSlab, 2.0f }, + { Material.SnifferEgg, 0.5f }, + { Material.Snow, 0.1f }, + { Material.SnowBlock, 0.2f }, + { Material.SoulCampfire, 2.0f }, { Material.SoulFire, 0.0f }, + { Material.SoulLantern, 3.5f }, + { Material.SoulSand, 0.5f }, + { Material.SoulSoil, 0.5f }, { Material.SoulTorch, 0.0f }, { Material.SoulWallTorch, 0.0f }, + { Material.Spawner, 5.0f }, + { Material.Sponge, 0.6f }, { Material.SporeBlossom, 0.0f }, - { Material.SpruceButton, 0.0f }, - { Material.SpruceLeaves, 0.0f }, - { Material.SpruceLog, 0.0f }, + { Material.SpruceButton, 0.5f }, + { Material.SpruceDoor, 3.0f }, + { Material.SpruceFence, 2.0f }, + { Material.SpruceFenceGate, 2.0f }, + { Material.SpruceHangingSign, 1.0f }, + { Material.SpruceLeaves, 0.2f }, + { Material.SpruceLog, 2.0f }, + { Material.SprucePlanks, 2.0f }, + { Material.SprucePressurePlate, 0.5f }, { Material.SpruceSapling, 0.0f }, + { Material.SpruceShelf, 2.0f }, + { Material.SpruceSign, 1.0f }, + { Material.SpruceSlab, 2.0f }, + { Material.SpruceStairs, 2.0f }, + { Material.SpruceTrapdoor, 3.0f }, + { Material.SpruceWallHangingSign, 1.0f }, + { Material.SpruceWallSign, 1.0f }, + { Material.SpruceWood, 2.0f }, { Material.StickyPiston, 0.0f }, - { Material.StoneBrickWall, 0.0f }, - { Material.StoneButton, 0.0f }, - { Material.StrippedAcaciaLog, 0.0f }, - { Material.StrippedBambooBlock, 0.0f }, - { Material.StrippedBirchLog, 0.0f }, - { Material.StrippedCherryLog, 0.0f }, - { Material.StrippedCrimsonStem, 0.0f }, - { Material.StrippedDarkOakLog, 0.0f }, - { Material.StrippedJungleLog, 0.0f }, - { Material.StrippedMangroveLog, 0.0f }, - { Material.StrippedMangroveWood, 0.0f }, - { Material.StrippedOakLog, 0.0f }, - { Material.StrippedPaleOakLog, 0.0f }, - { Material.StrippedSpruceLog, 0.0f }, - { Material.StrippedWarpedStem, 0.0f }, + { Material.Stone, 1.5f }, + { Material.StoneBrickSlab, 2.0f }, + { Material.StoneBrickStairs, 1.5f }, + { Material.StoneBrickWall, 1.5f }, + { Material.StoneBricks, 1.5f }, + { Material.StoneButton, 0.5f }, + { Material.StonePressurePlate, 0.5f }, + { Material.StoneSlab, 2.0f }, + { Material.StoneStairs, 1.5f }, + { Material.Stonecutter, 3.5f }, + { Material.StrippedAcaciaLog, 2.0f }, + { Material.StrippedAcaciaWood, 2.0f }, + { Material.StrippedBambooBlock, 2.0f }, + { Material.StrippedBirchLog, 2.0f }, + { Material.StrippedBirchWood, 2.0f }, + { Material.StrippedCherryLog, 2.0f }, + { Material.StrippedCherryWood, 2.0f }, + { Material.StrippedCrimsonHyphae, 2.0f }, + { Material.StrippedCrimsonStem, 2.0f }, + { Material.StrippedDarkOakLog, 2.0f }, + { Material.StrippedDarkOakWood, 2.0f }, + { Material.StrippedJungleLog, 2.0f }, + { Material.StrippedJungleWood, 2.0f }, + { Material.StrippedMangroveLog, 2.0f }, + { Material.StrippedMangroveWood, 2.0f }, + { Material.StrippedOakLog, 2.0f }, + { Material.StrippedOakWood, 2.0f }, + { Material.StrippedPaleOakLog, 2.0f }, + { Material.StrippedPaleOakWood, 2.0f }, + { Material.StrippedSpruceLog, 2.0f }, + { Material.StrippedSpruceWood, 2.0f }, + { Material.StrippedWarpedHyphae, 2.0f }, + { Material.StrippedWarpedStem, 2.0f }, + { Material.StructureBlock, -1.0f }, { Material.StructureVoid, 0.0f }, { Material.SugarCane, 0.0f }, { Material.Sunflower, 0.0f }, + { Material.SuspiciousGravel, 0.25f }, + { Material.SuspiciousSand, 0.25f }, { Material.SweetBerryBush, 0.0f }, { Material.TallDryGrass, 0.0f }, { Material.TallGrass, 0.0f }, { Material.TallSeagrass, 0.0f }, - { Material.TintedGlass, 0.0f }, + { Material.Target, 0.5f }, + { Material.Terracotta, 1.25f }, + { Material.TestBlock, -1.0f }, + { Material.TestInstanceBlock, -1.0f }, + { Material.TintedGlass, 0.3f }, { Material.Tnt, 0.0f }, { Material.Torch, 0.0f }, { Material.Torchflower, 0.0f }, { Material.TorchflowerCrop, 0.0f }, + { Material.TrappedChest, 2.5f }, + { Material.TrialSpawner, 50.0f }, { Material.Tripwire, 0.0f }, { Material.TripwireHook, 0.0f }, { Material.TubeCoral, 0.0f }, + { Material.TubeCoralBlock, 1.5f }, { Material.TubeCoralFan, 0.0f }, { Material.TubeCoralWallFan, 0.0f }, - { Material.TuffBrickSlab, 0.0f }, - { Material.TuffBrickStairs, 0.0f }, - { Material.TuffBrickWall, 0.0f }, - { Material.TuffBricks, 0.0f }, - { Material.TuffSlab, 0.0f }, - { Material.TuffStairs, 0.0f }, - { Material.TuffWall, 0.0f }, + { Material.Tuff, 1.5f }, + { Material.TuffBrickSlab, 1.5f }, + { Material.TuffBrickStairs, 1.5f }, + { Material.TuffBrickWall, 1.5f }, + { Material.TuffBricks, 1.5f }, + { Material.TuffSlab, 1.5f }, + { Material.TuffStairs, 1.5f }, + { Material.TuffWall, 1.5f }, + { Material.TurtleEgg, 0.5f }, { Material.TwistingVines, 0.0f }, { Material.TwistingVinesPlant, 0.0f }, + { Material.Vault, 50.0f }, + { Material.VerdantFroglight, 0.3f }, + { Material.Vine, 0.2f }, { Material.VoidAir, 0.0f }, { Material.WallTorch, 0.0f }, - { Material.WarpedButton, 0.0f }, + { Material.WarpedButton, 0.5f }, + { Material.WarpedDoor, 3.0f }, + { Material.WarpedFence, 2.0f }, + { Material.WarpedFenceGate, 2.0f }, { Material.WarpedFungus, 0.0f }, - { Material.WarpedRoots, 0.0f }, - { Material.WarpedStem, 0.0f }, - { Material.WaterCauldron, 0.0f }, - { Material.WaxedChiseledCopper, 0.0f }, - { Material.WaxedCopperBlock, 0.0f }, - { Material.WaxedCopperBulb, 0.0f }, - { Material.WaxedCopperChest, 0.0f }, - { Material.WaxedCopperDoor, 0.0f }, - { Material.WaxedCopperGolemStatue, 0.0f }, - { Material.WaxedCopperGrate, 0.0f }, - { Material.WaxedCopperTrapdoor, 0.0f }, - { Material.WaxedCutCopper, 0.0f }, - { Material.WaxedCutCopperSlab, 0.0f }, - { Material.WaxedExposedChiseledCopper, 0.0f }, - { Material.WaxedExposedCopper, 0.0f }, - { Material.WaxedExposedCopperBulb, 0.0f }, - { Material.WaxedExposedCopperChest, 0.0f }, - { Material.WaxedExposedCopperDoor, 0.0f }, - { Material.WaxedExposedCopperGolemStatue, 0.0f }, - { Material.WaxedExposedCopperGrate, 0.0f }, - { Material.WaxedExposedCopperTrapdoor, 0.0f }, - { Material.WaxedExposedCutCopper, 0.0f }, - { Material.WaxedExposedCutCopperSlab, 0.0f }, - { Material.WaxedExposedLightningRod, 0.0f }, - { Material.WaxedLightningRod, 0.0f }, - { Material.WaxedOxidizedChiseledCopper, 0.0f }, - { Material.WaxedOxidizedCopper, 0.0f }, - { Material.WaxedOxidizedCopperBulb, 0.0f }, - { Material.WaxedOxidizedCopperChest, 0.0f }, - { Material.WaxedOxidizedCopperDoor, 0.0f }, - { Material.WaxedOxidizedCopperGolemStatue, 0.0f }, - { Material.WaxedOxidizedCopperGrate, 0.0f }, - { Material.WaxedOxidizedCopperTrapdoor, 0.0f }, - { Material.WaxedOxidizedCutCopper, 0.0f }, - { Material.WaxedOxidizedCutCopperSlab, 0.0f }, - { Material.WaxedOxidizedLightningRod, 0.0f }, - { Material.WaxedWeatheredChiseledCopper, 0.0f }, - { Material.WaxedWeatheredCopper, 0.0f }, - { Material.WaxedWeatheredCopperBulb, 0.0f }, - { Material.WaxedWeatheredCopperChest, 0.0f }, - { Material.WaxedWeatheredCopperDoor, 0.0f }, - { Material.WaxedWeatheredCopperGolemStatue, 0.0f }, - { Material.WaxedWeatheredCopperGrate, 0.0f }, - { Material.WaxedWeatheredCopperTrapdoor, 0.0f }, - { Material.WaxedWeatheredCutCopper, 0.0f }, - { Material.WaxedWeatheredCutCopperSlab, 0.0f }, - { Material.WaxedWeatheredLightningRod, 0.0f }, - { Material.WeatheredChiseledCopper, 0.0f }, - { Material.WeatheredCopper, 0.0f }, - { Material.WeatheredCopperBulb, 0.0f }, - { Material.WeatheredCopperChest, 0.0f }, - { Material.WeatheredCopperDoor, 0.0f }, - { Material.WeatheredCopperGolemStatue, 0.0f }, - { Material.WeatheredCopperGrate, 0.0f }, - { Material.WeatheredCopperTrapdoor, 0.0f }, - { Material.WeatheredCutCopper, 0.0f }, - { Material.WeatheredCutCopperSlab, 0.0f }, - { Material.WeatheredCutCopperStairs, 0.0f }, - { Material.WeatheredLightningRod, 0.0f }, - { Material.WeepingVines, 0.0f }, - { Material.WeepingVinesPlant, 0.0f }, - { Material.Wheat, 0.0f }, - { Material.WhiteCandle, 0.0f }, - { Material.WhiteCandleCake, 0.0f }, - { Material.WhiteShulkerBox, 0.0f }, - { Material.WhiteTulip, 0.0f }, - { Material.Wildflowers, 0.0f }, - { Material.WitherRose, 0.0f }, - { Material.YellowCandle, 0.0f }, - { Material.YellowCandleCake, 0.0f }, - { Material.YellowShulkerBox, 0.0f }, - // Hardness 0.1: 23 blocks - { Material.BigDripleaf, 0.1f }, - { Material.BigDripleafStem, 0.1f }, - { Material.BlackCarpet, 0.1f }, - { Material.BlueCarpet, 0.1f }, - { Material.BrownCarpet, 0.1f }, - { Material.CyanCarpet, 0.1f }, - { Material.GrayCarpet, 0.1f }, - { Material.GreenCarpet, 0.1f }, - { Material.LightBlueCarpet, 0.1f }, - { Material.LightGrayCarpet, 0.1f }, - { Material.LimeCarpet, 0.1f }, - { Material.MagentaCarpet, 0.1f }, - { Material.MossBlock, 0.1f }, - { Material.MossCarpet, 0.1f }, - { Material.OrangeCarpet, 0.1f }, - { Material.PaleMossBlock, 0.1f }, - { Material.PaleMossCarpet, 0.1f }, - { Material.PinkCarpet, 0.1f }, - { Material.PurpleCarpet, 0.1f }, - { Material.RedCarpet, 0.1f }, - { Material.Snow, 0.1f }, - { Material.WhiteCarpet, 0.1f }, - { Material.YellowCarpet, 0.1f }, - // Hardness 0.2: 12 blocks - { Material.BrownMushroomBlock, 0.2f }, - { Material.CherryLeaves, 0.2f }, - { Material.Cocoa, 0.2f }, - { Material.DaylightDetector, 0.2f }, - { Material.GlowLichen, 0.2f }, - { Material.MushroomStem, 0.2f }, - { Material.PaleOakLeaves, 0.2f }, - { Material.RedMushroomBlock, 0.2f }, - { Material.Sculk, 0.2f }, - { Material.SculkVein, 0.2f }, - { Material.SnowBlock, 0.2f }, - { Material.Vine, 0.2f }, - { Material.PowderSnow, 0.25f }, - { Material.SuspiciousGravel, 0.25f }, - { Material.SuspiciousSand, 0.25f }, - // Hardness 0.3: 24 blocks - { Material.BeeNest, 0.3f }, - { Material.BlackStainedGlassPane, 0.3f }, - { Material.BlueStainedGlassPane, 0.3f }, - { Material.BrownStainedGlassPane, 0.3f }, - { Material.CyanStainedGlassPane, 0.3f }, - { Material.Glass, 0.3f }, - { Material.Glowstone, 0.3f }, - { Material.GrayStainedGlassPane, 0.3f }, - { Material.GreenStainedGlassPane, 0.3f }, - { Material.LightBlueStainedGlassPane, 0.3f }, - { Material.LightGrayStainedGlassPane, 0.3f }, - { Material.LimeStainedGlassPane, 0.3f }, - { Material.MagentaStainedGlassPane, 0.3f }, - { Material.OchreFroglight, 0.3f }, - { Material.OrangeStainedGlassPane, 0.3f }, - { Material.PearlescentFroglight, 0.3f }, - { Material.PinkStainedGlassPane, 0.3f }, - { Material.PurpleStainedGlassPane, 0.3f }, - { Material.RedStainedGlassPane, 0.3f }, - { Material.RedstoneLamp, 0.3f }, - { Material.SeaLantern, 0.3f }, - { Material.VerdantFroglight, 0.3f }, - { Material.WhiteStainedGlassPane, 0.3f }, - { Material.YellowStainedGlassPane, 0.3f }, - { Material.Cactus, 0.4f }, - { Material.ChorusFlower, 0.4f }, - { Material.ChorusPlant, 0.4f }, - { Material.CrimsonNylium, 0.4f }, - { Material.Ladder, 0.4f }, - { Material.Netherrack, 0.4f }, - { Material.WarpedNylium, 0.4f }, - // Hardness 0.5: 52 blocks - { Material.AcaciaPressurePlate, 0.5f }, - { Material.BambooPressurePlate, 0.5f }, - { Material.BirchPressurePlate, 0.5f }, - { Material.BlackConcretePowder, 0.5f }, - { Material.BlueConcretePowder, 0.5f }, - { Material.BrewingStand, 0.5f }, - { Material.BrownConcretePowder, 0.5f }, - { Material.Cake, 0.5f }, - { Material.CherryPressurePlate, 0.5f }, - { Material.CoarseDirt, 0.5f }, - { Material.CrimsonPressurePlate, 0.5f }, - { Material.CyanConcretePowder, 0.5f }, - { Material.DarkOakPressurePlate, 0.5f }, - { Material.Dirt, 0.5f }, - { Material.DriedKelpBlock, 0.5f }, - { Material.FrostedIce, 0.5f }, - { Material.GrayConcretePowder, 0.5f }, - { Material.GreenConcretePowder, 0.5f }, - { Material.HayBlock, 0.5f }, - { Material.HeavyWeightedPressurePlate, 0.5f }, - { Material.Ice, 0.5f }, - { Material.JunglePressurePlate, 0.5f }, - { Material.Lever, 0.5f }, - { Material.LightBlueConcretePowder, 0.5f }, - { Material.LightGrayConcretePowder, 0.5f }, - { Material.LightWeightedPressurePlate, 0.5f }, - { Material.LimeConcretePowder, 0.5f }, - { Material.MagentaConcretePowder, 0.5f }, - { Material.MagmaBlock, 0.5f }, - { Material.MangrovePressurePlate, 0.5f }, - { Material.OakPressurePlate, 0.5f }, - { Material.OrangeConcretePowder, 0.5f }, - { Material.PackedIce, 0.5f }, - { Material.PaleOakPressurePlate, 0.5f }, - { Material.PinkConcretePowder, 0.5f }, - { Material.Podzol, 0.5f }, - { Material.PolishedBlackstonePressurePlate, 0.5f }, - { Material.PurpleConcretePowder, 0.5f }, - { Material.RedConcretePowder, 0.5f }, - { Material.RedSand, 0.5f }, - { Material.RootedDirt, 0.5f }, - { Material.Sand, 0.5f }, - { Material.SnifferEgg, 0.5f }, - { Material.SoulSand, 0.5f }, - { Material.SoulSoil, 0.5f }, - { Material.SprucePressurePlate, 0.5f }, - { Material.StonePressurePlate, 0.5f }, - { Material.Target, 0.5f }, - { Material.TurtleEgg, 0.5f }, - { Material.WarpedPressurePlate, 0.5f }, - { Material.WhiteConcretePowder, 0.5f }, - { Material.YellowConcretePowder, 0.5f }, - // Hardness 0.6: 10 blocks - { Material.Beehive, 0.6f }, - { Material.Clay, 0.6f }, - { Material.Composter, 0.6f }, - { Material.Farmland, 0.6f }, - { Material.GrassBlock, 0.6f }, - { Material.Gravel, 0.6f }, - { Material.HoneycombBlock, 0.6f }, - { Material.Mycelium, 0.6f }, - { Material.Sponge, 0.6f }, - { Material.WetSponge, 0.6f }, - { Material.DirtPath, 0.65f }, - { Material.ActivatorRail, 0.7f }, - { Material.DetectorRail, 0.7f }, - { Material.MangroveRoots, 0.7f }, - { Material.MuddyMangroveRoots, 0.7f }, - { Material.PoweredRail, 0.7f }, - { Material.Rail, 0.7f }, - { Material.Calcite, 0.75f }, - // Hardness 0.8: 26 blocks - { Material.BlackWool, 0.8f }, - { Material.BlueWool, 0.8f }, - { Material.BrownWool, 0.8f }, - { Material.ChiseledQuartzBlock, 0.8f }, - { Material.ChiseledRedSandstone, 0.8f }, - { Material.ChiseledSandstone, 0.8f }, - { Material.CutRedSandstone, 0.8f }, - { Material.CutSandstone, 0.8f }, - { Material.CyanWool, 0.8f }, - { Material.GrayWool, 0.8f }, - { Material.GreenWool, 0.8f }, - { Material.LightBlueWool, 0.8f }, - { Material.LightGrayWool, 0.8f }, - { Material.LimeWool, 0.8f }, - { Material.MagentaWool, 0.8f }, - { Material.NoteBlock, 0.8f }, - { Material.OrangeWool, 0.8f }, - { Material.PinkWool, 0.8f }, - { Material.PurpleWool, 0.8f }, - { Material.QuartzBlock, 0.8f }, - { Material.QuartzPillar, 0.8f }, - { Material.RedSandstone, 0.8f }, - { Material.RedWool, 0.8f }, - { Material.Sandstone, 0.8f }, - { Material.WhiteWool, 0.8f }, - { Material.YellowWool, 0.8f }, - // Hardness 1.0: 100 blocks - { Material.AcaciaHangingSign, 1.0f }, - { Material.AcaciaSign, 1.0f }, - { Material.AcaciaWallHangingSign, 1.0f }, - { Material.AcaciaWallSign, 1.0f }, - { Material.BambooHangingSign, 1.0f }, - { Material.BambooSign, 1.0f }, - { Material.BambooWallHangingSign, 1.0f }, - { Material.BambooWallSign, 1.0f }, - { Material.BirchHangingSign, 1.0f }, - { Material.BirchSign, 1.0f }, - { Material.BirchWallHangingSign, 1.0f }, - { Material.BirchWallSign, 1.0f }, - { Material.BlackBanner, 1.0f }, - { Material.BlackWallBanner, 1.0f }, - { Material.BlueBanner, 1.0f }, - { Material.BlueWallBanner, 1.0f }, - { Material.BrownBanner, 1.0f }, - { Material.BrownWallBanner, 1.0f }, - { Material.CarvedPumpkin, 1.0f }, - { Material.CherryHangingSign, 1.0f }, - { Material.CherrySign, 1.0f }, - { Material.CherryWallHangingSign, 1.0f }, - { Material.CherryWallSign, 1.0f }, - { Material.CreeperHead, 1.0f }, - { Material.CreeperWallHead, 1.0f }, - { Material.CrimsonHangingSign, 1.0f }, - { Material.CrimsonSign, 1.0f }, - { Material.CrimsonWallHangingSign, 1.0f }, - { Material.CrimsonWallSign, 1.0f }, - { Material.CyanBanner, 1.0f }, - { Material.CyanWallBanner, 1.0f }, - { Material.DarkOakHangingSign, 1.0f }, - { Material.DarkOakSign, 1.0f }, - { Material.DarkOakWallHangingSign, 1.0f }, - { Material.DarkOakWallSign, 1.0f }, - { Material.DragonHead, 1.0f }, - { Material.DragonWallHead, 1.0f }, - { Material.GrayBanner, 1.0f }, - { Material.GrayWallBanner, 1.0f }, - { Material.GreenBanner, 1.0f }, - { Material.GreenWallBanner, 1.0f }, - { Material.JackOLantern, 1.0f }, - { Material.JungleHangingSign, 1.0f }, - { Material.JungleSign, 1.0f }, - { Material.JungleWallHangingSign, 1.0f }, - { Material.JungleWallSign, 1.0f }, - { Material.LightBlueBanner, 1.0f }, - { Material.LightBlueWallBanner, 1.0f }, - { Material.LightGrayBanner, 1.0f }, - { Material.LightGrayWallBanner, 1.0f }, - { Material.LimeBanner, 1.0f }, - { Material.LimeWallBanner, 1.0f }, - { Material.MagentaBanner, 1.0f }, - { Material.MagentaWallBanner, 1.0f }, - { Material.MangroveHangingSign, 1.0f }, - { Material.MangroveSign, 1.0f }, - { Material.MangroveWallHangingSign, 1.0f }, - { Material.MangroveWallSign, 1.0f }, - { Material.NetherWartBlock, 1.0f }, - { Material.OakHangingSign, 1.0f }, - { Material.OakSign, 1.0f }, - { Material.OakWallHangingSign, 1.0f }, - { Material.OakWallSign, 1.0f }, - { Material.OrangeBanner, 1.0f }, - { Material.OrangeWallBanner, 1.0f }, - { Material.PackedMud, 1.0f }, - { Material.PaleOakHangingSign, 1.0f }, - { Material.PaleOakSign, 1.0f }, - { Material.PaleOakWallHangingSign, 1.0f }, - { Material.PaleOakWallSign, 1.0f }, - { Material.PiglinHead, 1.0f }, - { Material.PiglinWallHead, 1.0f }, - { Material.PinkBanner, 1.0f }, - { Material.PinkWallBanner, 1.0f }, - { Material.PlayerHead, 1.0f }, - { Material.PlayerWallHead, 1.0f }, - { Material.PurpleBanner, 1.0f }, - { Material.PurpleWallBanner, 1.0f }, - { Material.RedBanner, 1.0f }, - { Material.RedWallBanner, 1.0f }, - { Material.Shroomlight, 1.0f }, - { Material.SkeletonSkull, 1.0f }, - { Material.SkeletonWallSkull, 1.0f }, - { Material.SpruceHangingSign, 1.0f }, - { Material.SpruceSign, 1.0f }, - { Material.SpruceWallHangingSign, 1.0f }, - { Material.SpruceWallSign, 1.0f }, { Material.WarpedHangingSign, 1.0f }, + { Material.WarpedHyphae, 2.0f }, + { Material.WarpedNylium, 0.4f }, + { Material.WarpedPlanks, 2.0f }, + { Material.WarpedPressurePlate, 0.5f }, + { Material.WarpedRoots, 0.0f }, + { Material.WarpedShelf, 2.0f }, { Material.WarpedSign, 1.0f }, + { Material.WarpedSlab, 2.0f }, + { Material.WarpedStairs, 2.0f }, + { Material.WarpedStem, 2.0f }, + { Material.WarpedTrapdoor, 3.0f }, { Material.WarpedWallHangingSign, 1.0f }, { Material.WarpedWallSign, 1.0f }, { Material.WarpedWartBlock, 1.0f }, + { Material.Water, 100.0f }, + { Material.WaterCauldron, 2.0f }, + { Material.WaxedChiseledCopper, 3.0f }, + { Material.WaxedCopperBlock, 3.0f }, + { Material.WaxedCopperBulb, 3.0f }, + { Material.WaxedCopperChest, 3.0f }, + { Material.WaxedCopperDoor, 3.0f }, + { Material.WaxedCopperGolemStatue, 3.0f }, + { Material.WaxedCopperGrate, 3.0f }, + { Material.WaxedCopperTrapdoor, 3.0f }, + { Material.WaxedCutCopper, 3.0f }, + { Material.WaxedCutCopperSlab, 3.0f }, + { Material.WaxedCutCopperStairs, 3.0f }, + { Material.WaxedExposedChiseledCopper, 3.0f }, + { Material.WaxedExposedCopper, 3.0f }, + { Material.WaxedExposedCopperBulb, 3.0f }, + { Material.WaxedExposedCopperChest, 3.0f }, + { Material.WaxedExposedCopperDoor, 3.0f }, + { Material.WaxedExposedCopperGolemStatue, 3.0f }, + { Material.WaxedExposedCopperGrate, 3.0f }, + { Material.WaxedExposedCopperTrapdoor, 3.0f }, + { Material.WaxedExposedCutCopper, 3.0f }, + { Material.WaxedExposedCutCopperSlab, 3.0f }, + { Material.WaxedExposedCutCopperStairs, 3.0f }, + { Material.WaxedExposedLightningRod, 3.0f }, + { Material.WaxedLightningRod, 3.0f }, + { Material.WaxedOxidizedChiseledCopper, 3.0f }, + { Material.WaxedOxidizedCopper, 3.0f }, + { Material.WaxedOxidizedCopperBulb, 3.0f }, + { Material.WaxedOxidizedCopperChest, 3.0f }, + { Material.WaxedOxidizedCopperDoor, 3.0f }, + { Material.WaxedOxidizedCopperGolemStatue, 3.0f }, + { Material.WaxedOxidizedCopperGrate, 3.0f }, + { Material.WaxedOxidizedCopperTrapdoor, 3.0f }, + { Material.WaxedOxidizedCutCopper, 3.0f }, + { Material.WaxedOxidizedCutCopperSlab, 3.0f }, + { Material.WaxedOxidizedCutCopperStairs, 3.0f }, + { Material.WaxedOxidizedLightningRod, 3.0f }, + { Material.WaxedWeatheredChiseledCopper, 3.0f }, + { Material.WaxedWeatheredCopper, 3.0f }, + { Material.WaxedWeatheredCopperBulb, 3.0f }, + { Material.WaxedWeatheredCopperChest, 3.0f }, + { Material.WaxedWeatheredCopperDoor, 3.0f }, + { Material.WaxedWeatheredCopperGolemStatue, 3.0f }, + { Material.WaxedWeatheredCopperGrate, 3.0f }, + { Material.WaxedWeatheredCopperTrapdoor, 3.0f }, + { Material.WaxedWeatheredCutCopper, 3.0f }, + { Material.WaxedWeatheredCutCopperSlab, 3.0f }, + { Material.WaxedWeatheredCutCopperStairs, 3.0f }, + { Material.WaxedWeatheredLightningRod, 3.0f }, + { Material.WeatheredChiseledCopper, 3.0f }, + { Material.WeatheredCopper, 3.0f }, + { Material.WeatheredCopperBulb, 3.0f }, + { Material.WeatheredCopperChest, 3.0f }, + { Material.WeatheredCopperDoor, 3.0f }, + { Material.WeatheredCopperGolemStatue, 3.0f }, + { Material.WeatheredCopperGrate, 3.0f }, + { Material.WeatheredCopperTrapdoor, 3.0f }, + { Material.WeatheredCutCopper, 3.0f }, + { Material.WeatheredCutCopperSlab, 3.0f }, + { Material.WeatheredCutCopperStairs, 3.0f }, + { Material.WeatheredLightningRod, 3.0f }, + { Material.WeepingVines, 0.0f }, + { Material.WeepingVinesPlant, 0.0f }, + { Material.WetSponge, 0.6f }, + { Material.Wheat, 0.0f }, { Material.WhiteBanner, 1.0f }, + { Material.WhiteBed, 0.2f }, + { Material.WhiteCandle, 0.1f }, + { Material.WhiteCandleCake, 0.5f }, + { Material.WhiteCarpet, 0.1f }, + { Material.WhiteConcrete, 1.8f }, + { Material.WhiteConcretePowder, 0.5f }, + { Material.WhiteGlazedTerracotta, 1.4f }, + { Material.WhiteShulkerBox, 2.0f }, + { Material.WhiteStainedGlass, 0.3f }, + { Material.WhiteStainedGlassPane, 0.3f }, + { Material.WhiteTerracotta, 1.25f }, + { Material.WhiteTulip, 0.0f }, { Material.WhiteWallBanner, 1.0f }, + { Material.WhiteWool, 0.8f }, + { Material.Wildflowers, 0.0f }, + { Material.WitherRose, 0.0f }, { Material.WitherSkeletonSkull, 1.0f }, { Material.WitherSkeletonWallSkull, 1.0f }, { Material.YellowBanner, 1.0f }, + { Material.YellowBed, 0.2f }, + { Material.YellowCandle, 0.1f }, + { Material.YellowCandleCake, 0.5f }, + { Material.YellowCarpet, 0.1f }, + { Material.YellowConcrete, 1.8f }, + { Material.YellowConcretePowder, 0.5f }, + { Material.YellowGlazedTerracotta, 1.4f }, + { Material.YellowShulkerBox, 2.0f }, + { Material.YellowStainedGlass, 0.3f }, + { Material.YellowStainedGlassPane, 0.3f }, + { Material.YellowTerracotta, 1.25f }, { Material.YellowWallBanner, 1.0f }, + { Material.YellowWool, 0.8f }, { Material.ZombieHead, 1.0f }, { Material.ZombieWallHead, 1.0f }, - // Hardness 1.25: 19 blocks - { Material.Basalt, 1.25f }, - { Material.BlackTerracotta, 1.25f }, - { Material.BlueTerracotta, 1.25f }, - { Material.BrownTerracotta, 1.25f }, - { Material.CyanTerracotta, 1.25f }, - { Material.GrayTerracotta, 1.25f }, - { Material.GreenTerracotta, 1.25f }, - { Material.LightBlueTerracotta, 1.25f }, - { Material.LightGrayTerracotta, 1.25f }, - { Material.LimeTerracotta, 1.25f }, - { Material.MagentaTerracotta, 1.25f }, - { Material.OrangeTerracotta, 1.25f }, - { Material.PinkTerracotta, 1.25f }, - { Material.PolishedBasalt, 1.25f }, - { Material.PurpleTerracotta, 1.25f }, - { Material.RedTerracotta, 1.25f }, - { Material.Terracotta, 1.25f }, - { Material.WhiteTerracotta, 1.25f }, - { Material.YellowTerracotta, 1.25f }, - // Hardness 1.4: 16 blocks - { Material.BlackGlazedTerracotta, 1.4f }, - { Material.BlueGlazedTerracotta, 1.4f }, - { Material.BrownGlazedTerracotta, 1.4f }, - { Material.CyanGlazedTerracotta, 1.4f }, - { Material.GrayGlazedTerracotta, 1.4f }, - { Material.GreenGlazedTerracotta, 1.4f }, - { Material.LightBlueGlazedTerracotta, 1.4f }, - { Material.LightGrayGlazedTerracotta, 1.4f }, - { Material.LimeGlazedTerracotta, 1.4f }, - { Material.MagentaGlazedTerracotta, 1.4f }, - { Material.OrangeGlazedTerracotta, 1.4f }, - { Material.PinkGlazedTerracotta, 1.4f }, - { Material.PurpleGlazedTerracotta, 1.4f }, - { Material.RedGlazedTerracotta, 1.4f }, - { Material.WhiteGlazedTerracotta, 1.4f }, - { Material.YellowGlazedTerracotta, 1.4f }, - // Hardness 1.5: 49 blocks - { Material.AmethystBlock, 1.5f }, - { Material.AmethystCluster, 1.5f }, - { Material.Andesite, 1.5f }, - { Material.Blackstone, 1.5f }, - { Material.Bookshelf, 1.5f }, - { Material.BrainCoralBlock, 1.5f }, - { Material.BubbleCoralBlock, 1.5f }, - { Material.BuddingAmethyst, 1.5f }, - { Material.ChiseledBookshelf, 1.5f }, - { Material.ChiseledPolishedBlackstone, 1.5f }, - { Material.ChiseledResinBricks, 1.5f }, - { Material.ChiseledStoneBricks, 1.5f }, - { Material.CrackedStoneBricks, 1.5f }, - { Material.Crafter, 1.5f }, - { Material.DarkPrismarine, 1.5f }, - { Material.DarkPrismarineSlab, 1.5f }, - { Material.DeadBrainCoralBlock, 1.5f }, - { Material.DeadBubbleCoralBlock, 1.5f }, - { Material.DeadFireCoralBlock, 1.5f }, - { Material.DeadHornCoralBlock, 1.5f }, - { Material.DeadTubeCoralBlock, 1.5f }, - { Material.Diorite, 1.5f }, - { Material.DripstoneBlock, 1.5f }, - { Material.FireCoralBlock, 1.5f }, - { Material.Granite, 1.5f }, - { Material.HornCoralBlock, 1.5f }, - { Material.MossyStoneBricks, 1.5f }, - { Material.MudBrickSlab, 1.5f }, - { Material.MudBricks, 1.5f }, - { Material.PistonHead, 1.5f }, - { Material.PointedDripstone, 1.5f }, - { Material.PolishedAndesite, 1.5f }, - { Material.PolishedBlackstoneBricks, 1.5f }, - { Material.PolishedDiorite, 1.5f }, - { Material.PolishedGranite, 1.5f }, - { Material.Prismarine, 1.5f }, - { Material.PrismarineBrickSlab, 1.5f }, - { Material.PrismarineBricks, 1.5f }, - { Material.PrismarineSlab, 1.5f }, - { Material.PurpurBlock, 1.5f }, - { Material.PurpurPillar, 1.5f }, - { Material.ResinBrickSlab, 1.5f }, - { Material.ResinBrickWall, 1.5f }, - { Material.ResinBricks, 1.5f }, - { Material.SculkSensor, 1.5f }, - { Material.Stone, 1.5f }, - { Material.StoneBricks, 1.5f }, - { Material.TubeCoralBlock, 1.5f }, - { Material.Tuff, 1.5f }, - // Hardness 1.8: 16 blocks - { Material.BlackConcrete, 1.8f }, - { Material.BlueConcrete, 1.8f }, - { Material.BrownConcrete, 1.8f }, - { Material.CyanConcrete, 1.8f }, - { Material.GrayConcrete, 1.8f }, - { Material.GreenConcrete, 1.8f }, - { Material.LightBlueConcrete, 1.8f }, - { Material.LightGrayConcrete, 1.8f }, - { Material.LimeConcrete, 1.8f }, - { Material.MagentaConcrete, 1.8f }, - { Material.OrangeConcrete, 1.8f }, - { Material.PinkConcrete, 1.8f }, - { Material.PurpleConcrete, 1.8f }, - { Material.RedConcrete, 1.8f }, - { Material.WhiteConcrete, 1.8f }, - { Material.YellowConcrete, 1.8f }, - // Hardness 2.0: 117 blocks - { Material.AcaciaFence, 2.0f }, - { Material.AcaciaFenceGate, 2.0f }, - { Material.AcaciaPlanks, 2.0f }, - { Material.AcaciaShelf, 2.0f }, - { Material.AcaciaSlab, 2.0f }, - { Material.AcaciaWood, 2.0f }, - { Material.BambooFence, 2.0f }, - { Material.BambooFenceGate, 2.0f }, - { Material.BambooMosaic, 2.0f }, - { Material.BambooMosaicSlab, 2.0f }, - { Material.BambooPlanks, 2.0f }, - { Material.BambooShelf, 2.0f }, - { Material.BambooSlab, 2.0f }, - { Material.BirchFence, 2.0f }, - { Material.BirchFenceGate, 2.0f }, - { Material.BirchPlanks, 2.0f }, - { Material.BirchShelf, 2.0f }, - { Material.BirchSlab, 2.0f }, - { Material.BirchWood, 2.0f }, - { Material.BlackstoneSlab, 2.0f }, - { Material.BoneBlock, 2.0f }, - { Material.BrickSlab, 2.0f }, - { Material.Bricks, 2.0f }, - { Material.Campfire, 2.0f }, - { Material.Cauldron, 2.0f }, - { Material.CherryFence, 2.0f }, - { Material.CherryFenceGate, 2.0f }, - { Material.CherryPlanks, 2.0f }, - { Material.CherryShelf, 2.0f }, - { Material.CherrySlab, 2.0f }, - { Material.CherryWood, 2.0f }, - { Material.ChiseledNetherBricks, 2.0f }, - { Material.Cobblestone, 2.0f }, - { Material.CobblestoneSlab, 2.0f }, - { Material.CrackedNetherBricks, 2.0f }, - { Material.CrimsonFence, 2.0f }, - { Material.CrimsonFenceGate, 2.0f }, - { Material.CrimsonHyphae, 2.0f }, - { Material.CrimsonPlanks, 2.0f }, - { Material.CrimsonShelf, 2.0f }, - { Material.CrimsonSlab, 2.0f }, - { Material.CutRedSandstoneSlab, 2.0f }, - { Material.CutSandstoneSlab, 2.0f }, - { Material.DarkOakFence, 2.0f }, - { Material.DarkOakFenceGate, 2.0f }, - { Material.DarkOakPlanks, 2.0f }, - { Material.DarkOakShelf, 2.0f }, - { Material.DarkOakSlab, 2.0f }, - { Material.DarkOakWood, 2.0f }, - { Material.Grindstone, 2.0f }, - { Material.Jukebox, 2.0f }, - { Material.JungleFence, 2.0f }, - { Material.JungleFenceGate, 2.0f }, - { Material.JunglePlanks, 2.0f }, - { Material.JungleShelf, 2.0f }, - { Material.JungleSlab, 2.0f }, - { Material.JungleWood, 2.0f }, - { Material.MangroveFence, 2.0f }, - { Material.MangroveFenceGate, 2.0f }, - { Material.MangrovePlanks, 2.0f }, - { Material.MangroveShelf, 2.0f }, - { Material.MangroveSlab, 2.0f }, - { Material.MangroveWood, 2.0f }, - { Material.MossyCobblestone, 2.0f }, - { Material.NetherBrickFence, 2.0f }, - { Material.NetherBrickSlab, 2.0f }, - { Material.NetherBricks, 2.0f }, - { Material.OakFence, 2.0f }, - { Material.OakFenceGate, 2.0f }, - { Material.OakPlanks, 2.0f }, - { Material.OakShelf, 2.0f }, - { Material.OakSlab, 2.0f }, - { Material.OakWood, 2.0f }, - { Material.PaleOakFence, 2.0f }, - { Material.PaleOakFenceGate, 2.0f }, - { Material.PaleOakPlanks, 2.0f }, - { Material.PaleOakShelf, 2.0f }, - { Material.PaleOakSlab, 2.0f }, - { Material.PaleOakWood, 2.0f }, - { Material.PetrifiedOakSlab, 2.0f }, - { Material.PolishedBlackstone, 2.0f }, - { Material.PolishedBlackstoneBrickSlab, 2.0f }, - { Material.PurpurSlab, 2.0f }, - { Material.QuartzSlab, 2.0f }, - { Material.RedNetherBricks, 2.0f }, - { Material.RedSandstoneSlab, 2.0f }, - { Material.SandstoneSlab, 2.0f }, - { Material.SmoothQuartz, 2.0f }, - { Material.SmoothRedSandstone, 2.0f }, - { Material.SmoothSandstone, 2.0f }, - { Material.SmoothStone, 2.0f }, - { Material.SmoothStoneSlab, 2.0f }, - { Material.SoulCampfire, 2.0f }, - { Material.SpruceFence, 2.0f }, - { Material.SpruceFenceGate, 2.0f }, - { Material.SprucePlanks, 2.0f }, - { Material.SpruceShelf, 2.0f }, - { Material.SpruceSlab, 2.0f }, - { Material.SpruceWood, 2.0f }, - { Material.StoneBrickSlab, 2.0f }, - { Material.StoneSlab, 2.0f }, - { Material.StrippedAcaciaWood, 2.0f }, - { Material.StrippedBirchWood, 2.0f }, - { Material.StrippedCherryWood, 2.0f }, - { Material.StrippedCrimsonHyphae, 2.0f }, - { Material.StrippedDarkOakWood, 2.0f }, - { Material.StrippedJungleWood, 2.0f }, - { Material.StrippedOakWood, 2.0f }, - { Material.StrippedPaleOakWood, 2.0f }, - { Material.StrippedSpruceWood, 2.0f }, - { Material.StrippedWarpedHyphae, 2.0f }, - { Material.WarpedFence, 2.0f }, - { Material.WarpedFenceGate, 2.0f }, - { Material.WarpedHyphae, 2.0f }, - { Material.WarpedPlanks, 2.0f }, - { Material.WarpedShelf, 2.0f }, - { Material.WarpedSlab, 2.0f }, - // Hardness 2.5: 9 blocks - { Material.Barrel, 2.5f }, - { Material.CartographyTable, 2.5f }, - { Material.Chest, 2.5f }, - { Material.CraftingTable, 2.5f }, - { Material.FletchingTable, 2.5f }, - { Material.Lectern, 2.5f }, - { Material.Loom, 2.5f }, - { Material.SmithingTable, 2.5f }, - { Material.TrappedChest, 2.5f }, - { Material.BlueIce, 2.8f }, - // Hardness 3.0: 53 blocks - { Material.AcaciaDoor, 3.0f }, - { Material.AcaciaTrapdoor, 3.0f }, - { Material.BambooDoor, 3.0f }, - { Material.BambooTrapdoor, 3.0f }, - { Material.Beacon, 3.0f }, - { Material.BirchDoor, 3.0f }, - { Material.BirchTrapdoor, 3.0f }, - { Material.CherryDoor, 3.0f }, - { Material.CherryTrapdoor, 3.0f }, - { Material.CoalOre, 3.0f }, - { Material.Conduit, 3.0f }, - { Material.CopperBlock, 3.0f }, - { Material.CopperBulb, 3.0f }, - { Material.CopperChest, 3.0f }, - { Material.CopperDoor, 3.0f }, - { Material.CopperGolemStatue, 3.0f }, - { Material.CopperGrate, 3.0f }, - { Material.CopperTrapdoor, 3.0f }, - { Material.CrimsonDoor, 3.0f }, - { Material.CrimsonTrapdoor, 3.0f }, - { Material.DarkOakDoor, 3.0f }, - { Material.DarkOakTrapdoor, 3.0f }, - { Material.Deepslate, 3.0f }, - { Material.DiamondOre, 3.0f }, - { Material.DragonEgg, 3.0f }, - { Material.EmeraldOre, 3.0f }, - { Material.EndStone, 3.0f }, - { Material.EndStoneBricks, 3.0f }, - { Material.GoldBlock, 3.0f }, - { Material.GoldOre, 3.0f }, - { Material.Hopper, 3.0f }, - { Material.IronOre, 3.0f }, - { Material.JungleDoor, 3.0f }, - { Material.JungleTrapdoor, 3.0f }, - { Material.LapisBlock, 3.0f }, - { Material.LapisOre, 3.0f }, - { Material.LightningRod, 3.0f }, - { Material.MangroveDoor, 3.0f }, - { Material.MangroveTrapdoor, 3.0f }, - { Material.NetherGoldOre, 3.0f }, - { Material.NetherQuartzOre, 3.0f }, - { Material.OakDoor, 3.0f }, - { Material.OakTrapdoor, 3.0f }, - { Material.Observer, 3.0f }, - { Material.PaleOakDoor, 3.0f }, - { Material.PaleOakTrapdoor, 3.0f }, - { Material.RedstoneOre, 3.0f }, - { Material.SculkCatalyst, 3.0f }, - { Material.SculkShrieker, 3.0f }, - { Material.SpruceDoor, 3.0f }, - { Material.SpruceTrapdoor, 3.0f }, - { Material.WarpedDoor, 3.0f }, - { Material.WarpedTrapdoor, 3.0f }, - // Hardness 3.5: 10 blocks - { Material.BlastFurnace, 3.5f }, - { Material.CobbledDeepslate, 3.5f }, - { Material.Dispenser, 3.5f }, - { Material.Dropper, 3.5f }, - { Material.Furnace, 3.5f }, - { Material.Lantern, 3.5f }, - { Material.Lodestone, 3.5f }, - { Material.Smoker, 3.5f }, - { Material.SoulLantern, 3.5f }, - { Material.Stonecutter, 3.5f }, - { Material.Cobweb, 4.0f }, - { Material.DeepslateCoalOre, 4.5f }, - { Material.DeepslateCopperOre, 4.5f }, - { Material.DeepslateDiamondOre, 4.5f }, - { Material.DeepslateEmeraldOre, 4.5f }, - { Material.DeepslateGoldOre, 4.5f }, - { Material.DeepslateIronOre, 4.5f }, - { Material.DeepslateLapisOre, 4.5f }, - { Material.DeepslateRedstoneOre, 4.5f }, - // Hardness 5.0: 18 blocks - { Material.Anvil, 5.0f }, - { Material.Bell, 5.0f }, - { Material.ChippedAnvil, 5.0f }, - { Material.CoalBlock, 5.0f }, - { Material.DamagedAnvil, 5.0f }, - { Material.DiamondBlock, 5.0f }, - { Material.EmeraldBlock, 5.0f }, - { Material.EnchantingTable, 5.0f }, - { Material.IronBars, 5.0f }, - { Material.IronBlock, 5.0f }, - { Material.IronChain, 5.0f }, - { Material.IronDoor, 5.0f }, - { Material.IronTrapdoor, 5.0f }, - { Material.RawCopperBlock, 5.0f }, - { Material.RawGoldBlock, 5.0f }, - { Material.RawIronBlock, 5.0f }, - { Material.RedstoneBlock, 5.0f }, - { Material.Spawner, 5.0f }, - { Material.CreakingHeart, 10.0f }, - { Material.HeavyCore, 10.0f }, - { Material.EnderChest, 22.5f }, - { Material.AncientDebris, 30.0f }, - { Material.CryingObsidian, 50.0f }, - { Material.NetheriteBlock, 50.0f }, - { Material.Obsidian, 50.0f }, - { Material.RespawnAnchor, 50.0f }, - { Material.TrialSpawner, 50.0f }, - { Material.Vault, 50.0f }, - { Material.ReinforcedDeepslate, 55.0f }, - { Material.Lava, 100.0f }, - { Material.Water, 100.0f }, }.ToFrozenDictionary(); private static readonly FrozenSet RequiresCorrectToolSet = new HashSet @@ -1114,12 +1185,18 @@ namespace MinecraftClient.Mapping Material.AmethystBlock, Material.AncientDebris, Material.Andesite, + Material.AndesiteSlab, + Material.AndesiteStairs, + Material.AndesiteWall, Material.Anvil, Material.Basalt, Material.BlackConcrete, Material.BlackGlazedTerracotta, Material.BlackTerracotta, Material.Blackstone, + Material.BlackstoneSlab, + Material.BlackstoneStairs, + Material.BlackstoneWall, Material.BlastFurnace, Material.BlueConcrete, Material.BlueGlazedTerracotta, @@ -1127,6 +1204,8 @@ namespace MinecraftClient.Mapping Material.BoneBlock, Material.BrainCoralBlock, Material.BrickSlab, + Material.BrickStairs, + Material.BrickWall, Material.Bricks, Material.BrownConcrete, Material.BrownGlazedTerracotta, @@ -1137,27 +1216,45 @@ namespace MinecraftClient.Mapping Material.Cauldron, Material.ChainCommandBlock, Material.ChippedAnvil, + Material.ChiseledCopper, + Material.ChiseledDeepslate, Material.ChiseledNetherBricks, + Material.ChiseledPolishedBlackstone, Material.ChiseledQuartzBlock, Material.ChiseledRedSandstone, Material.ChiseledResinBricks, Material.ChiseledSandstone, Material.ChiseledStoneBricks, + Material.ChiseledTuff, + Material.ChiseledTuffBricks, Material.CoalBlock, Material.CoalOre, + Material.CobbledDeepslate, + Material.CobbledDeepslateSlab, + Material.CobbledDeepslateStairs, + Material.CobbledDeepslateWall, Material.Cobblestone, Material.CobblestoneSlab, + Material.CobblestoneStairs, + Material.CobblestoneWall, Material.Cobweb, Material.CommandBlock, Material.CopperBlock, Material.CopperBulb, Material.CopperChest, Material.CopperGrate, + Material.CopperOre, Material.CopperTrapdoor, + Material.CrackedDeepslateBricks, + Material.CrackedDeepslateTiles, Material.CrackedNetherBricks, + Material.CrackedPolishedBlackstoneBricks, Material.CrackedStoneBricks, Material.CrimsonNylium, Material.CryingObsidian, + Material.CutCopper, + Material.CutCopperSlab, + Material.CutCopperStairs, Material.CutRedSandstone, Material.CutRedSandstoneSlab, Material.CutSandstone, @@ -1168,6 +1265,7 @@ namespace MinecraftClient.Mapping Material.DamagedAnvil, Material.DarkPrismarine, Material.DarkPrismarineSlab, + Material.DarkPrismarineStairs, Material.DeadBrainCoral, Material.DeadBrainCoralBlock, Material.DeadBrainCoralFan, @@ -1189,9 +1287,28 @@ namespace MinecraftClient.Mapping Material.DeadTubeCoralFan, Material.DeadTubeCoralWallFan, Material.Deepslate, + Material.DeepslateBrickSlab, + Material.DeepslateBrickStairs, + Material.DeepslateBrickWall, + Material.DeepslateBricks, + Material.DeepslateCoalOre, + Material.DeepslateCopperOre, + Material.DeepslateDiamondOre, + Material.DeepslateEmeraldOre, + Material.DeepslateGoldOre, + Material.DeepslateIronOre, + Material.DeepslateLapisOre, + Material.DeepslateRedstoneOre, + Material.DeepslateTileSlab, + Material.DeepslateTileStairs, + Material.DeepslateTileWall, + Material.DeepslateTiles, Material.DiamondBlock, Material.DiamondOre, Material.Diorite, + Material.DioriteSlab, + Material.DioriteStairs, + Material.DioriteWall, Material.Dispenser, Material.DripstoneBlock, Material.Dropper, @@ -1199,12 +1316,29 @@ namespace MinecraftClient.Mapping Material.EmeraldOre, Material.EnchantingTable, Material.EndStone, + Material.EndStoneBrickSlab, + Material.EndStoneBrickStairs, + Material.EndStoneBrickWall, Material.EndStoneBricks, + Material.ExposedChiseledCopper, + Material.ExposedCopper, + Material.ExposedCopperBulb, + Material.ExposedCopperChest, + Material.ExposedCopperGrate, + Material.ExposedCopperTrapdoor, + Material.ExposedCutCopper, + Material.ExposedCutCopperSlab, + Material.ExposedCutCopperStairs, + Material.ExposedLightningRod, Material.FireCoralBlock, Material.Furnace, + Material.GildedBlackstone, Material.GoldBlock, Material.GoldOre, Material.Granite, + Material.GraniteSlab, + Material.GraniteStairs, + Material.GraniteWall, Material.GrayConcrete, Material.GrayGlazedTerracotta, Material.GrayTerracotta, @@ -1222,6 +1356,7 @@ namespace MinecraftClient.Mapping Material.Jigsaw, Material.LapisBlock, Material.LapisOre, + Material.LavaCauldron, Material.LightBlueConcrete, Material.LightBlueGlazedTerracotta, Material.LightBlueTerracotta, @@ -1238,11 +1373,21 @@ namespace MinecraftClient.Mapping Material.MagentaTerracotta, Material.MagmaBlock, Material.MossyCobblestone, + Material.MossyCobblestoneSlab, + Material.MossyCobblestoneStairs, + Material.MossyCobblestoneWall, + Material.MossyStoneBrickSlab, + Material.MossyStoneBrickStairs, + Material.MossyStoneBrickWall, Material.MossyStoneBricks, Material.MudBrickSlab, + Material.MudBrickStairs, + Material.MudBrickWall, Material.MudBricks, Material.NetherBrickFence, Material.NetherBrickSlab, + Material.NetherBrickStairs, + Material.NetherBrickWall, Material.NetherBricks, Material.NetherGoldOre, Material.NetherQuartzOre, @@ -1253,49 +1398,103 @@ namespace MinecraftClient.Mapping Material.OrangeConcrete, Material.OrangeGlazedTerracotta, Material.OrangeTerracotta, + Material.OxidizedChiseledCopper, + Material.OxidizedCopper, + Material.OxidizedCopperBulb, + Material.OxidizedCopperChest, + Material.OxidizedCopperGrate, + Material.OxidizedCopperTrapdoor, + Material.OxidizedCutCopper, + Material.OxidizedCutCopperSlab, + Material.OxidizedCutCopperStairs, + Material.OxidizedLightningRod, Material.PetrifiedOakSlab, Material.PinkConcrete, Material.PinkGlazedTerracotta, Material.PinkTerracotta, Material.PolishedAndesite, + Material.PolishedAndesiteSlab, + Material.PolishedAndesiteStairs, Material.PolishedBasalt, + Material.PolishedBlackstone, + Material.PolishedBlackstoneBrickSlab, + Material.PolishedBlackstoneBrickStairs, + Material.PolishedBlackstoneBrickWall, + Material.PolishedBlackstoneBricks, + Material.PolishedBlackstoneSlab, + Material.PolishedBlackstoneStairs, + Material.PolishedBlackstoneWall, + Material.PolishedDeepslate, + Material.PolishedDeepslateSlab, + Material.PolishedDeepslateStairs, + Material.PolishedDeepslateWall, Material.PolishedDiorite, + Material.PolishedDioriteSlab, + Material.PolishedDioriteStairs, Material.PolishedGranite, + Material.PolishedGraniteSlab, + Material.PolishedGraniteStairs, + Material.PolishedTuff, + Material.PolishedTuffSlab, + Material.PolishedTuffStairs, + Material.PolishedTuffWall, + Material.PowderSnowCauldron, Material.Prismarine, Material.PrismarineBrickSlab, + Material.PrismarineBrickStairs, Material.PrismarineBricks, Material.PrismarineSlab, + Material.PrismarineStairs, + Material.PrismarineWall, Material.PurpleConcrete, Material.PurpleGlazedTerracotta, Material.PurpleTerracotta, Material.PurpurBlock, Material.PurpurPillar, Material.PurpurSlab, + Material.PurpurStairs, Material.QuartzBlock, + Material.QuartzBricks, Material.QuartzPillar, Material.QuartzSlab, + Material.QuartzStairs, Material.RawCopperBlock, Material.RawGoldBlock, Material.RawIronBlock, Material.RedConcrete, Material.RedGlazedTerracotta, + Material.RedNetherBrickSlab, + Material.RedNetherBrickStairs, + Material.RedNetherBrickWall, Material.RedNetherBricks, Material.RedSandstone, Material.RedSandstoneSlab, + Material.RedSandstoneStairs, + Material.RedSandstoneWall, Material.RedTerracotta, Material.RedstoneBlock, Material.RedstoneOre, Material.RepeatingCommandBlock, Material.ResinBrickSlab, + Material.ResinBrickStairs, Material.ResinBrickWall, Material.ResinBricks, Material.RespawnAnchor, Material.Sandstone, Material.SandstoneSlab, + Material.SandstoneStairs, + Material.SandstoneWall, Material.Smoker, + Material.SmoothBasalt, Material.SmoothQuartz, + Material.SmoothQuartzSlab, + Material.SmoothQuartzStairs, Material.SmoothRedSandstone, + Material.SmoothRedSandstoneSlab, + Material.SmoothRedSandstoneStairs, Material.SmoothSandstone, + Material.SmoothSandstoneSlab, + Material.SmoothSandstoneStairs, Material.SmoothStone, Material.SmoothStoneSlab, Material.Snow, @@ -1303,18 +1502,75 @@ namespace MinecraftClient.Mapping Material.Spawner, Material.Stone, Material.StoneBrickSlab, + Material.StoneBrickStairs, + Material.StoneBrickWall, Material.StoneBricks, Material.StoneSlab, + Material.StoneStairs, Material.Stonecutter, Material.StructureBlock, Material.Terracotta, Material.TubeCoralBlock, Material.Tuff, + Material.TuffBrickSlab, + Material.TuffBrickStairs, + Material.TuffBrickWall, + Material.TuffBricks, + Material.TuffSlab, + Material.TuffStairs, + Material.TuffWall, Material.WarpedNylium, + Material.WaterCauldron, + Material.WaxedChiseledCopper, + Material.WaxedCopperBlock, + Material.WaxedCopperBulb, + Material.WaxedCopperChest, + Material.WaxedCopperGrate, + Material.WaxedCopperTrapdoor, + Material.WaxedCutCopper, Material.WaxedCutCopperSlab, + Material.WaxedCutCopperStairs, + Material.WaxedExposedChiseledCopper, + Material.WaxedExposedCopper, + Material.WaxedExposedCopperBulb, + Material.WaxedExposedCopperChest, + Material.WaxedExposedCopperGrate, + Material.WaxedExposedCopperTrapdoor, + Material.WaxedExposedCutCopper, Material.WaxedExposedCutCopperSlab, + Material.WaxedExposedCutCopperStairs, + Material.WaxedExposedLightningRod, + Material.WaxedLightningRod, + Material.WaxedOxidizedChiseledCopper, + Material.WaxedOxidizedCopper, + Material.WaxedOxidizedCopperBulb, + Material.WaxedOxidizedCopperChest, + Material.WaxedOxidizedCopperGrate, + Material.WaxedOxidizedCopperTrapdoor, + Material.WaxedOxidizedCutCopper, Material.WaxedOxidizedCutCopperSlab, + Material.WaxedOxidizedCutCopperStairs, + Material.WaxedOxidizedLightningRod, + Material.WaxedWeatheredChiseledCopper, + Material.WaxedWeatheredCopper, + Material.WaxedWeatheredCopperBulb, + Material.WaxedWeatheredCopperChest, + Material.WaxedWeatheredCopperGrate, + Material.WaxedWeatheredCopperTrapdoor, + Material.WaxedWeatheredCutCopper, Material.WaxedWeatheredCutCopperSlab, + Material.WaxedWeatheredCutCopperStairs, + Material.WaxedWeatheredLightningRod, + Material.WeatheredChiseledCopper, + Material.WeatheredCopper, + Material.WeatheredCopperBulb, + Material.WeatheredCopperChest, + Material.WeatheredCopperGrate, + Material.WeatheredCopperTrapdoor, + Material.WeatheredCutCopper, + Material.WeatheredCutCopperSlab, + Material.WeatheredCutCopperStairs, + Material.WeatheredLightningRod, Material.WhiteConcrete, Material.WhiteGlazedTerracotta, Material.WhiteTerracotta, diff --git a/MinecraftClient/Mapping/BlockPalettes/BlockPalette.cs b/MinecraftClient/Mapping/BlockPalettes/BlockPalette.cs index a3cd7986..41d24caa 100644 --- a/MinecraftClient/Mapping/BlockPalettes/BlockPalette.cs +++ b/MinecraftClient/Mapping/BlockPalettes/BlockPalette.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace MinecraftClient.Mapping.BlockPalettes { @@ -23,6 +24,46 @@ namespace MinecraftClient.Mapping.BlockPalettes return Material.Air; } + /// + /// Get block-state properties for a modern block state ID. + /// + /// Raw block state ID. + /// Block-state property names and values, or an empty map when unavailable. + public IReadOnlyDictionary GetStateProperties(int stateId) + { + BlockStateDefinition[] definitions = GetStateDefinitions(); + int low = 0; + int high = definitions.Length - 1; + + while (low <= high) + { + int middle = low + ((high - low) / 2); + BlockStateDefinition definition = definitions[middle]; + if (stateId < definition.FirstStateId) + { + high = middle - 1; + } + else if (stateId > definition.LastStateId) + { + low = middle + 1; + } + else + { + return definition.GetProperties(stateId); + } + } + + return BlockStateDefinition.EmptyProperties; + } + + /// + /// Get compact block-state definitions sorted by their first state ID. + /// + protected virtual BlockStateDefinition[] GetStateDefinitions() + { + return Array.Empty(); + } + /// /// Returns TRUE if block ID uses old metadata encoding with ID and Meta inside one ushort /// Only Palette112 should override this. diff --git a/MinecraftClient/Mapping/BlockPalettes/BlockPalette120.cs b/MinecraftClient/Mapping/BlockPalettes/BlockPalette120.cs index f6a36358..fc85d5a8 100644 --- a/MinecraftClient/Mapping/BlockPalettes/BlockPalette120.cs +++ b/MinecraftClient/Mapping/BlockPalettes/BlockPalette120.cs @@ -1655,9 +1655,3494 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(25, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(27, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(80, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(96, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(113, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(130, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(133, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(156, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(159, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(162, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(265, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(293, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(321, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(349, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(377, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(405, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(433, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(461, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(489, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(523, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(538, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1688, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1704, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1720, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1736, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1752, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1768, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1784, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1800, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1816, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1832, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1848, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1864, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1880, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1896, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1912, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1928, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1944, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1968, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1992, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2009, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2011, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2023, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2063, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2094, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2097, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2356, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(2360, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2874, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2954, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(2978, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(4278, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4286, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4294, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4302, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4334, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4366, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4398, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4430, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4462, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4494, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4526, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4558, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4590, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4654, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4662, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4682, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4762, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4770, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4778, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4786, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4794, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4802, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4810, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4818, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4826, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4834, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4898, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4962, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5026, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5090, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5154, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5218, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5282, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5346, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5410, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5474, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5538, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5546, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5554, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5562, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5570, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5578, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5586, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5594, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5602, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5610, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5618, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5626, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5650, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5652, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5716, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5718, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5720, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5722, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5724, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5726, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5728, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5730, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5732, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5734, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5736, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5738, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5740, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5748, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5772, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(5782, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5799, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5815, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(5817, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5853, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5856, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5860, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5865, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(5867, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5871, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5875, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(5882, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5962, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6026, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6090, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6154, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6218, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6282, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6346, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6410, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6474, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6550, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6614, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6678, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6742, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6774, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6780, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6813, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6817, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6821, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6829, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6837, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6869, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6997, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7029, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7109, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7189, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7269, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(7273, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7305, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7385, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(7390, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(7399, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7403, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7407, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7417, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(7419, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7431, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7513, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7521, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7537, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7666, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7746, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7826, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7906, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(7919, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8243, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8595, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8603, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8611, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8635, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8659, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8683, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8707, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8731, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8755, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8779, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8803, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8827, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8843, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8847, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8863, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8867, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8883, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8887, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8903, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8907, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8923, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8927, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8943, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8947, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8963, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8967, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8971, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8975, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8979, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(9003, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9019, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9035, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9051, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9085, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(9097, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(9100, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9180, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9204, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(9232, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9264, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9296, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9328, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9360, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9392, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9424, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9456, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9488, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9520, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9552, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9584, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9616, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9648, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9680, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9712, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9744, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9824, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9904, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9984, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10064, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10144, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10226, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10258, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10325, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10405, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10485, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10565, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10571, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10577, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10584, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10606, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10608, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10610, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10612, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10614, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10616, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10618, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10634, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10650, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10666, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10682, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10698, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10714, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10730, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10746, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10762, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10778, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10794, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10810, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10826, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10842, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10858, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10874, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10878, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10882, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10886, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10890, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10894, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10898, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10902, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10906, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10910, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10914, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10918, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10922, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10926, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10930, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10934, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10941, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11021, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11027, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11033, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11039, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11045, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11051, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11057, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11063, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11069, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11075, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11081, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11087, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11093, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11099, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11105, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11111, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11117, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11123, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11129, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11135, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11141, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11147, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11153, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11159, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11169, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11201, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11233, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11265, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11297, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11329, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11361, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11393, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11425, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11457, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11489, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11521, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11553, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11585, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11617, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11649, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11681, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11745, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11809, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11873, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11937, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12001, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12065, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12129, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12193, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12199, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12263, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(12270, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12273, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12354, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(12356, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(12366, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12368, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(12374, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12386, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12398, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(12405, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12409, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12421, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12427, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12433, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12439, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12445, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12451, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12457, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12463, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12469, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12475, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12481, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12487, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12493, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12499, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12505, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12511, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12517, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12523, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12527, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12531, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12535, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12539, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12543, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12547, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12551, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12555, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12559, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12563, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12567, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12571, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12575, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12579, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12583, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12619, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(12647, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(12659, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(12672, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12674, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12676, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12678, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12680, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12682, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12684, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12686, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12688, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12690, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12692, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12694, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12696, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12698, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12700, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12702, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12704, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12706, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12708, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12710, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12712, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12720, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12728, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12736, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12744, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12752, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12760, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12768, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12776, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12784, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12792, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12801, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12804, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(12819, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(12821, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12901, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12981, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13061, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13141, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13221, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13301, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13381, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13461, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13541, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13621, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13701, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13781, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13861, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13941, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13947, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13953, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13959, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13965, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13971, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13977, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13983, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13989, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13995, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14001, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14007, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14013, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14019, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14343, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14667, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14991, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15315, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15639, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15963, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16287, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16611, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16935, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17259, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17583, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17907, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18231, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18263, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18267, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(18279, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18287, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18297, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18309, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18326, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18330, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18362, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18366, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18370, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18402, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18434, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(18438, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18441, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18444, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18447, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18455, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18458, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18461, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18464, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18470, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18497, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18527, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18533, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18539, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18541, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18543, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18575, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18607, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18671, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18735, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18767, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18799, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18879, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18959, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18983, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19007, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19071, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19135, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19167, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19199, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19207, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19215, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(19219, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(19231, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(19240, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(19256, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19280, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19309, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(19320, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19400, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19724, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19734, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19740, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19820, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20145, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20225, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20231, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(20233, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20257, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20584, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20600, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20616, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20632, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20648, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20664, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20680, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20696, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20712, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20728, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20744, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20760, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20776, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20792, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20808, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20824, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20840, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20856, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20858, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20860, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20862, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20864, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20866, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20868, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20870, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20872, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20874, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20876, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20878, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20880, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20882, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20884, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20886, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20888, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20892, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20904, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20916, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20928, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20944, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21040, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21425, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(21553, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(21555, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21573, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21653, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21733, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21813, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21893, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21899, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21905, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21911, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21925, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22005, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22085, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22165, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22245, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22251, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22257, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22263, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22269, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22293, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22314, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(22366, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(22372, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(22389, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22421, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22429, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22445, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(22449, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(22453, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22533, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22539, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22864, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22944, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22950, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23275, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23355, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23361, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23686, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23766, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23772, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(24099, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(24108, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(24111, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(24114, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(24119, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/BlockStateDefinition.cs b/MinecraftClient/Mapping/BlockPalettes/BlockStateDefinition.cs new file mode 100644 index 00000000..2578f9ae --- /dev/null +++ b/MinecraftClient/Mapping/BlockPalettes/BlockStateDefinition.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +namespace MinecraftClient.Mapping.BlockPalettes +{ + /// + /// Compact description of the property combinations in a contiguous block-state range. + /// + public sealed class BlockStateDefinition + { + private static readonly IReadOnlyDictionary s_emptyProperties = + new ReadOnlyDictionary(new Dictionary()); + + private readonly BlockStatePropertyDefinition[] _properties; + public int FirstStateId { get; } + public int LastStateId { get; } + public static IReadOnlyDictionary EmptyProperties => s_emptyProperties; + + public BlockStateDefinition(int firstStateId, int stateCount, BlockStatePropertyDefinition[] properties) + { + ArgumentOutOfRangeException.ThrowIfNegative(firstStateId); + ArgumentOutOfRangeException.ThrowIfNegativeOrZero(stateCount); + ArgumentNullException.ThrowIfNull(properties); + + FirstStateId = firstStateId; + LastStateId = checked(firstStateId + stateCount - 1); + _properties = properties; + } + + public IReadOnlyDictionary GetProperties(int stateId) + { + if (stateId < FirstStateId || stateId > LastStateId) + return EmptyProperties; + + int offset = stateId - FirstStateId; + Dictionary result = new(_properties.Length, StringComparer.Ordinal); + for (int i = 0; i < _properties.Length; i++) + { + BlockStatePropertyDefinition property = _properties[i]; + int valueIndex = (offset / property.Stride) % property.Values.Length; + result[property.Name] = property.Values[valueIndex]; + } + + return result; + } + } + + /// + /// Property name and its values in Minecraft's block-state iteration order. + /// + public sealed class BlockStatePropertyDefinition + { + public string Name { get; } + public string[] Values { get; } + public int Stride { get; } + + public BlockStatePropertyDefinition(string name, string[] values, int stride) + { + ArgumentException.ThrowIfNullOrEmpty(name); + ArgumentNullException.ThrowIfNull(values); + if (values.Length == 0) + throw new ArgumentException("A block-state property must define at least one value.", nameof(values)); + ArgumentOutOfRangeException.ThrowIfNegativeOrZero(stride); + + Name = name; + Values = values; + Stride = stride; + } + } +} diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette112.cs b/MinecraftClient/Mapping/BlockPalettes/Palette112.cs index cdfd4a53..0a9aa947 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette112.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette112.cs @@ -183,6 +183,7 @@ namespace MinecraftClient.Mapping.BlockPalettes { 173, Material.CoalBlock }, { 174, Material.PackedIce }, { 175, Material.TallGrass }, // DoublePlant + { 207, Material.Beetroots }, // BeetrootBlock }; protected override Dictionary GetDict() diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette113.cs b/MinecraftClient/Mapping/BlockPalettes/Palette113.cs index 239df049..f70b2393 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette113.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette113.cs @@ -962,9 +962,1818 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.StructureBlock; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(21, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(23, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(25, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(27, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(34, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(50, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(72, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(75, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(78, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(81, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(84, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(87, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(90, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(93, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(96, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(99, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(102, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(105, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(108, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(111, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(114, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(117, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(120, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(123, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(126, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(129, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(132, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(135, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(138, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(141, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(144, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(158, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(172, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(186, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(200, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(214, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(233, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(248, 500, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(748, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(764, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(780, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(796, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(812, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(828, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(844, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(860, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(876, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(892, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(908, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(924, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(940, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(956, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(972, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(988, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1004, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(1016, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(1028, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1045, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(1047, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1059, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1099, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1126, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(1132, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(1136, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(1649, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1729, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1753, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(3052, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3060, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3068, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3076, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3108, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3172, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3180, 10, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 1) + ]), + new(3190, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3270, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3278, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3302, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3304, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3368, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3370, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3372, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3374, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3376, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3378, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3380, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3382, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3384, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3392, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3416, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(3426, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(3443, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(3459, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(3461, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(3497, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(3499, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(3503, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(3507, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(3514, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3594, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3658, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3722, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3786, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3850, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3914, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3988, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4052, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4116, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4180, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4212, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4245, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4249, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4253, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4261, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4269, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4301, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4333, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4413, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4493, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(4497, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4529, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4609, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(4614, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(4622, 4, + [ + new("level", ["0", "1", "2", "3"], 1) + ]), + new(4627, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4637, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(4639, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4651, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4732, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4740, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4756, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4885, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4965, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5045, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5125, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(5138, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5202, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5288, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5296, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5304, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5328, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5352, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5376, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5400, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5424, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5448, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5452, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5468, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5472, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5488, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5492, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5508, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5512, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5528, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5532, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5548, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5552, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5568, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5572, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5576, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5580, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5604, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5620, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5636, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5652, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5686, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(5698, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5701, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5781, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(5793, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(5821, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5853, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5885, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5917, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5949, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5981, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6013, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6045, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6077, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6109, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6141, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6173, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6205, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6237, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6269, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6301, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6333, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6413, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6495, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6562, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6642, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6722, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6802, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6808, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6814, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6821, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6843, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(6845, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(6847, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(6849, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(6851, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(6853, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(6855, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6871, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6887, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6903, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6919, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6935, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6951, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6967, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6983, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6999, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7015, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7031, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7047, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7063, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7079, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7095, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7111, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7115, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7119, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7123, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7127, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7131, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7135, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7139, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7143, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7147, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7151, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7155, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7159, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7163, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7167, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7171, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7178, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7258, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7264, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7270, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7276, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7282, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7288, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7294, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7300, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7306, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7312, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7318, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7324, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7330, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7336, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7342, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7348, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7358, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7390, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7422, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7454, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7486, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7518, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7550, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7582, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7614, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7646, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7678, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7742, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7806, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7870, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7934, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7998, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8004, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8068, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(8075, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(8078, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8159, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(8165, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8177, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8189, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(8196, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(8200, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8212, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8218, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8224, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8230, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8236, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8242, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8248, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8254, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8260, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8266, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8272, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8278, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8284, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8290, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8296, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8302, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8308, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8314, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8318, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8322, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8326, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8330, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8334, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8338, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8342, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8346, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8350, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8354, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8358, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8362, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8366, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8370, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8374, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8410, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(8438, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(8460, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8462, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8464, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8466, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8468, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8470, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8472, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8474, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8476, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8478, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8480, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8488, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8496, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8504, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8512, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8520, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8528, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8536, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8544, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8552, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8560, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8562, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8564, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8566, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8568, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8570, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8572, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8574, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8576, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8578, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8580, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8589, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8593, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(8595, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette114.cs b/MinecraftClient/Mapping/BlockPalettes/Palette114.cs index 4e51ffea..596c6475 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette114.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette114.cs @@ -1107,9 +1107,2228 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.Composter; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(21, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(23, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(25, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(27, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(34, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(50, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(72, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(75, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(78, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(81, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(84, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(87, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(90, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(93, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(96, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(99, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(102, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(105, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(108, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(111, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(114, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(117, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(120, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(123, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(126, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(129, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(132, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(135, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(138, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(141, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(144, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(158, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(172, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(186, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(200, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(214, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(233, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(248, 800, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1048, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1064, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1080, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1096, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1112, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1128, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1144, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1160, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1176, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1192, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1208, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1224, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1240, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1256, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1272, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1288, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1304, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(1316, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(1328, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1345, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(1347, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1359, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1399, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1429, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(1435, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(1439, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(1952, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2032, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2056, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(3355, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3363, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3371, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3379, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3411, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3443, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3475, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3507, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3539, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3571, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3635, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3643, 10, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 1) + ]), + new(3653, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3733, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3741, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3749, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3757, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3765, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3773, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3781, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3805, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3807, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3871, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3873, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3875, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3877, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3879, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3881, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3883, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3885, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3887, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3895, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3919, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(3929, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(3946, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(3962, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(3964, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4000, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(4002, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4006, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4010, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(4017, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4097, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4161, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4225, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4289, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4353, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4417, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4491, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4555, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4619, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4683, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4715, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4748, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4752, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4756, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4764, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4772, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4804, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4836, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4916, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4996, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(5000, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5032, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5112, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(5117, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(5125, 4, + [ + new("level", ["0", "1", "2", "3"], 1) + ]), + new(5130, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5140, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5142, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5154, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5235, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5243, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5259, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5388, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5468, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5548, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5628, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(5641, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5705, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5794, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5802, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5810, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5834, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5858, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5882, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5906, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5930, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5954, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5970, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5974, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5990, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5994, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6010, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6014, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6030, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6034, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6050, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6054, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6070, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6074, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6078, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6082, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6086, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6110, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6126, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6142, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6158, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6192, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(6204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6207, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6287, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(6299, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(6327, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6359, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6391, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6423, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6455, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6487, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6519, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6551, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6583, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6615, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6647, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6679, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6711, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6743, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6775, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6807, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6839, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6919, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7001, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7068, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7148, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7228, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7308, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7314, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7320, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7327, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7349, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7351, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7353, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7355, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7357, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7359, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7361, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7377, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7393, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7409, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7425, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7441, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7457, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7473, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7489, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7505, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7521, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7537, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7553, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7569, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7585, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7601, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7617, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7621, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7625, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7629, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7633, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7637, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7641, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7645, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7649, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7653, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7657, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7661, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7665, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7669, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7673, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7677, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7684, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7764, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7770, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7776, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7782, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7788, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7794, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7800, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7806, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7812, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7818, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7824, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7830, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7836, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7842, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7848, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7854, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7860, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7866, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7872, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7882, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7914, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7946, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7978, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8010, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8042, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8074, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8106, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8138, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8170, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8202, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8266, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8330, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8394, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8458, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8522, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8528, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8592, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(8599, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(8602, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8683, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(8689, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8701, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8713, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(8720, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(8724, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8736, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8742, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8748, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8754, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8760, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8766, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8772, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8778, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8784, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8790, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8796, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8802, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8808, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8814, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8820, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8826, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8832, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8838, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8842, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8846, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8850, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8854, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8858, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8862, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8866, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8870, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8874, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8878, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8882, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8886, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8890, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8894, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8898, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8934, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(8962, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(8984, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8986, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8988, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8990, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8992, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8994, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8996, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8998, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9000, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9002, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9004, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9006, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9008, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9010, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9012, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9014, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9016, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9018, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9020, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9022, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9024, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9032, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9040, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9048, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9056, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9064, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9072, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9080, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9088, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9096, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9104, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9113, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9116, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(9131, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(9133, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9213, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9293, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9373, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9453, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9533, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9613, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9693, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9773, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9853, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9933, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10013, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10093, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10173, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10253, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10259, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10265, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10271, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10277, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10283, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10289, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10295, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10301, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10307, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10313, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10319, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10325, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10331, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10395, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10459, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10523, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10587, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10651, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10715, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10779, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10843, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10907, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10971, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11035, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11099, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11131, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11135, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(11147, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(11155, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(11165, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11177, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11194, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11198, 16, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11214, 2, + [ + new("hanging", ["true", "false"], 1) + ]), + new(11216, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11248, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(11252, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(11256, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11262, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette115.cs b/MinecraftClient/Mapping/BlockPalettes/Palette115.cs index 449b95be..e17cdd82 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette115.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette115.cs @@ -1113,9 +1113,2239 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[11336] = Material.HoneycombBlock; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(21, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(23, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(25, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(27, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(34, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(50, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(72, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(75, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(78, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(81, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(84, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(87, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(90, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(93, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(96, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(99, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(102, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(105, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(108, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(111, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(114, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(117, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(120, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(123, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(126, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(129, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(132, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(135, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(138, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(141, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(144, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(158, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(172, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(186, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(200, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(214, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(233, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(248, 800, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1048, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1064, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1080, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1096, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1112, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1128, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1144, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1160, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1176, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1192, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1208, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1224, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1240, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1256, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1272, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1288, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1304, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(1316, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(1328, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1345, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(1347, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1359, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1399, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1429, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(1435, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(1439, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(1952, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2032, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2056, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(3355, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3363, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3371, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3379, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3411, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3443, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3475, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3507, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3539, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3571, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3635, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3643, 10, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 1) + ]), + new(3653, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3733, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3741, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3749, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3757, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3765, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3773, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3781, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3805, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3807, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3871, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3873, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3875, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3877, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3879, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3881, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3883, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3885, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3887, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3895, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3919, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(3929, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(3946, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(3962, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(3964, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4000, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(4002, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4006, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4010, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(4017, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4097, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4161, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4225, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4289, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4353, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4417, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4491, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4555, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4619, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4683, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4715, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4748, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4752, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4756, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4764, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4772, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4804, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4836, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4916, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4996, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(5000, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5032, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5112, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(5117, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(5125, 4, + [ + new("level", ["0", "1", "2", "3"], 1) + ]), + new(5130, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5140, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5142, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5154, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5235, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5243, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5259, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5388, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5468, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5548, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5628, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(5641, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5705, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5794, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5802, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5810, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5834, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5858, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5882, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5906, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5930, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5954, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5970, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5974, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5990, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5994, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6010, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6014, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6030, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6034, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6050, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6054, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6070, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6074, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6078, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6082, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6086, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6110, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6126, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6142, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6158, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6192, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(6204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6207, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6287, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(6299, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(6327, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6359, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6391, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6423, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6455, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6487, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6519, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6551, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6583, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6615, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6647, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6679, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6711, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6743, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6775, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6807, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6839, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6919, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7001, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7068, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7148, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7228, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7308, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7314, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7320, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7327, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7349, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7351, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7353, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7355, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7357, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7359, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7361, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7377, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7393, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7409, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7425, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7441, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7457, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7473, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7489, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7505, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7521, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7537, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7553, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7569, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7585, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7601, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7617, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7621, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7625, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7629, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7633, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7637, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7641, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7645, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7649, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7653, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7657, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7661, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7665, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7669, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7673, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7677, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7684, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7764, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7770, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7776, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7782, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7788, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7794, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7800, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7806, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7812, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7818, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7824, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7830, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7836, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7842, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7848, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7854, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7860, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7866, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7872, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7882, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7914, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7946, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7978, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8010, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8042, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8074, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8106, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8138, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8170, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8202, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8266, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8330, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8394, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8458, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8522, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8528, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8592, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(8599, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(8602, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8683, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(8689, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8701, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8713, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(8720, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(8724, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8736, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8742, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8748, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8754, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8760, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8766, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8772, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8778, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8784, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8790, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8796, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8802, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8808, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8814, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8820, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8826, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8832, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8838, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8842, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8846, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8850, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8854, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8858, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8862, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8866, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8870, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8874, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8878, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8882, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8886, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8890, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8894, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8898, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8934, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(8962, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(8984, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8986, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8988, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8990, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8992, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8994, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8996, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(8998, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9000, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9002, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9004, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9006, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9008, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9010, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9012, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9014, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9016, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9018, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9020, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9022, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9024, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9032, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9040, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9048, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9056, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9064, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9072, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9080, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9088, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9096, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9104, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9113, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9116, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(9131, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(9133, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9213, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9293, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9373, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9453, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9533, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9613, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9693, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9773, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9853, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9933, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10013, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10093, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10173, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10253, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10259, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10265, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10271, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10277, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10283, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10289, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10295, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10301, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10307, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10313, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10319, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10325, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10331, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10395, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10459, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10523, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10587, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10651, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10715, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10779, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10843, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10907, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10971, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11035, 64, + [ + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11099, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11131, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11135, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(11147, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(11155, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(11165, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11177, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11194, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11198, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11230, 2, + [ + new("hanging", ["true", "false"], 1) + ]), + new(11232, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11264, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(11268, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(11272, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11278, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(11287, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(11311, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette116.cs b/MinecraftClient/Mapping/BlockPalettes/Palette116.cs index 8927218f..59b77bf5 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette116.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette116.cs @@ -1241,9 +1241,2516 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[17111] = Material.QuartzBricks; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(21, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(23, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(25, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(27, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(34, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(50, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(73, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(76, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(79, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(82, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(85, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(88, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(91, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(94, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(97, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(100, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(103, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(106, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(109, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(112, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(115, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(118, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(121, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(124, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(127, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(130, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(133, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(159, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(173, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(187, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(201, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(215, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(234, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(249, 800, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1049, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1065, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1081, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1097, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1113, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1129, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1145, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1161, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1177, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1193, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1209, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1225, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1241, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1257, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1273, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1289, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1305, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(1317, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(1329, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1346, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(1348, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1360, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1400, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1430, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(1436, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(1440, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(1954, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2034, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2058, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(3357, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3365, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3373, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3381, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3413, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3445, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3477, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3509, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3541, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3573, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3637, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3645, 10, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 1) + ]), + new(3655, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3735, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3743, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3751, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3759, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3767, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3775, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3783, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3807, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3809, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3873, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3875, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3877, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3879, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3881, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3883, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3885, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3887, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3889, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3897, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3921, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(3931, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(3948, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(3964, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(3966, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4002, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(4005, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(4009, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4014, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(4016, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4020, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4024, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(4031, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4111, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4175, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4239, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4303, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4367, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4431, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4505, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4569, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4633, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4697, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4729, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4735, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4768, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4772, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4776, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4784, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4792, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4824, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4856, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4936, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5016, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(5020, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5052, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5132, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(5137, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(5145, 4, + [ + new("level", ["0", "1", "2", "3"], 1) + ]), + new(5150, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5160, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5162, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5174, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5255, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5263, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5279, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5408, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5488, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5568, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5648, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(5661, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(5985, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(6334, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6342, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6350, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6374, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6398, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6422, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6446, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6470, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6494, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6510, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6514, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6530, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6534, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6550, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6554, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6570, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6574, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6590, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6594, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6610, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6614, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6618, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6622, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6626, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6650, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6666, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6682, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6698, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6732, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(6744, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6747, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6827, 12, + [ + new("powered", ["true", "false"], 6), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 1) + ]), + new(6839, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(6867, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6899, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6931, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6963, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6995, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7027, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7059, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7091, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7123, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7155, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7187, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7219, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7251, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7283, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7315, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7347, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7379, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7459, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7541, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7608, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7688, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7768, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7848, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7854, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7860, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7867, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7889, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7891, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7893, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7895, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7897, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7899, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(7901, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7917, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7933, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7949, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7965, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7981, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7997, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8013, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8029, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8045, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8061, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8077, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8093, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8109, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8125, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8141, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8157, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8161, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8165, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8169, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8173, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8177, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8181, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8185, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8189, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8193, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8197, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8201, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8205, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8209, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8213, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8217, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8224, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8304, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8310, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8316, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8322, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8328, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8334, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8340, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8346, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8352, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8358, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8364, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8370, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8376, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8382, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8388, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8394, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8400, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8406, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8412, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8422, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8454, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8486, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8518, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8550, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8582, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8614, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8646, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8678, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8710, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8742, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8806, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8870, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8934, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8998, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9062, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9068, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9132, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(9139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(9142, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9223, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(9229, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9241, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9253, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(9260, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(9264, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9276, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9282, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9288, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9294, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9300, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9306, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9312, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9318, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9324, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9330, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9336, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9342, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9348, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9354, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9360, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9366, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9372, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9378, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9382, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9386, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9390, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9394, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9398, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9402, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9406, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9410, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9414, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9418, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9422, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9426, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9430, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9434, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9438, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9474, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(9502, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(9524, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9526, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9528, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9530, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9532, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9534, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9536, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9538, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9540, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9542, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9544, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9546, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9548, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9550, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9552, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9554, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9556, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9558, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9560, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9562, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9564, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9572, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9580, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9588, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9596, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9604, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9612, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9620, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9628, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9636, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9644, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9653, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9656, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(9671, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(9673, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9753, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9833, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9913, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9993, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10073, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10153, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10233, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10313, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10393, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10473, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10553, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10633, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10713, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10793, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10799, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10805, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10811, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10817, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10823, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10829, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10835, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10841, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10847, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10853, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10859, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10865, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10871, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(11195, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(11519, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(11843, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(12167, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(12491, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(12815, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13139, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13463, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13787, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14111, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14435, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14759, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14791, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14795, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(14807, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(14815, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(14825, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14837, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14854, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14858, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14890, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14894, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14898, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14930, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14962, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(14966, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14969, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14972, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14975, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14983, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14986, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14989, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14992, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14998, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(15025, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(15055, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15061, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15067, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(15069, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(15071, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(15103, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(15135, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15199, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15263, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15295, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15327, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15407, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15487, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15511, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15535, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15599, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15663, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15695, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15727, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15735, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15743, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(15747, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(15759, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(15768, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(15784, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(15808, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(15837, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(15848, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15928, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16252, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16262, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16268, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16348, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16673, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16753, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16759, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(16761, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(16785, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette117.cs b/MinecraftClient/Mapping/BlockPalettes/Palette117.cs index 154c62cc..5bff909c 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette117.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette117.cs @@ -1459,9 +1459,2979 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[20341] = Material.PottedFloweringAzaleaBush; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(21, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(23, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(25, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(27, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(34, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(50, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(76, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(79, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(82, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(85, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(88, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(91, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(94, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(97, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(100, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(103, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(106, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(109, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(112, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(115, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(118, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(121, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(124, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(127, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(130, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(133, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(162, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(176, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(190, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(204, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(218, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(232, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(246, 14, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 2), + new("persistent", ["true", "false"], 1) + ]), + new(266, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(281, 800, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1081, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1097, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1113, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1129, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1145, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1161, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1177, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1193, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1209, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1225, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1241, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1257, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1273, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1289, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1305, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1321, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1337, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1361, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1385, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1402, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(1404, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1416, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1456, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("type", ["normal", "sticky"], 1) + ]), + new(1486, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(1492, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(1496, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2010, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2090, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2114, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(3414, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3422, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3430, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3438, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3470, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3502, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3534, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3566, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3598, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3630, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3694, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3702, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3722, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3802, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3810, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3818, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3826, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3834, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3842, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3850, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3874, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3876, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3940, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3942, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3944, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3946, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3948, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3950, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(3952, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3954, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3956, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(3958, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3966, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3990, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(4000, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(4017, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(4033, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(4035, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4071, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(4074, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(4078, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4083, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(4085, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4089, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4093, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(4100, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4180, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4244, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4308, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4372, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4436, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4500, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4574, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4638, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4702, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4766, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4798, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4804, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4837, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4841, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4845, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4853, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4861, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4893, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5021, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5053, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5133, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5213, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(5217, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5249, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5329, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(5334, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(5343, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(5347, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(5351, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5361, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5363, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5375, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5457, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5465, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5481, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5610, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5690, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5770, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5850, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(5863, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(6187, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(6536, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6544, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6552, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6576, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6600, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6624, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6648, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6672, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6696, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6712, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6716, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6732, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6736, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6752, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6756, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6772, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6776, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6792, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6796, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6812, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6816, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6820, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6824, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6828, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("type", ["single", "left", "right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6852, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6868, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6884, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6900, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6934, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(6946, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6949, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7029, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7053, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(7081, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7113, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7145, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7177, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7209, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7241, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7273, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7305, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7337, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7369, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7401, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7433, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7465, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7497, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7529, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7561, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7593, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7673, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7755, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7787, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7854, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7934, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8014, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8094, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8100, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8106, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8113, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(8135, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8137, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8139, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8141, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8143, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8145, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8147, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8163, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8179, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8195, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8211, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8227, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8243, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8259, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8275, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8291, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8307, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8323, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8339, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8355, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8371, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8387, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8403, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8407, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8411, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8415, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8419, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8423, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8427, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8431, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8435, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8439, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8443, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8447, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8451, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8455, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8459, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8463, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8470, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8550, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8556, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8562, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8568, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8574, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8580, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8586, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8592, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8598, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8604, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8610, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8616, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8622, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8628, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8634, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8640, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8646, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8652, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8658, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8668, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8700, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8732, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8764, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8796, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8828, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8860, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8892, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8924, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8956, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8988, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9052, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9116, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9180, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9244, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9308, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9314, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9378, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(9385, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(9388, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9469, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(9475, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9487, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9499, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(9506, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(9510, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9522, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9528, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9534, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9540, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9546, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9552, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9558, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9564, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9570, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9576, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9582, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9588, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9594, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9600, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9606, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9612, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9618, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9624, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9628, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9632, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9636, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9640, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9644, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9648, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9652, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9656, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9660, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9664, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9668, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9672, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9676, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9680, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9684, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9720, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(9748, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(9770, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9772, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9774, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9776, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9778, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9780, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9782, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9784, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9786, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9788, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9790, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9792, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9794, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9796, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9798, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9800, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9802, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9804, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9806, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9808, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9810, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9818, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9826, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9834, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9842, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9850, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9858, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9866, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9874, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9882, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9890, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9899, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(9902, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(9917, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(9919, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9999, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10079, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10159, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10239, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10319, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10399, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10479, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10559, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10639, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10719, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10799, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10879, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10959, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11039, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11045, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11051, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11057, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11063, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11069, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11075, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11081, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11087, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11093, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11099, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11105, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11111, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11117, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(11441, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(11765, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(12089, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(12413, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(12737, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13061, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13385, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13709, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14033, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14357, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14681, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15005, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15037, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15041, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(15053, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(15061, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(15071, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15083, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15100, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15104, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15136, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15140, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15144, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15176, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15208, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(15212, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(15215, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(15218, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(15221, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(15229, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(15232, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(15235, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(15238, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(15244, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(15271, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(15301, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15307, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15313, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(15315, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(15317, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(15349, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(15381, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15445, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15509, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15541, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15573, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15653, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15733, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15757, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15781, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15845, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(15909, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15941, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15973, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15981, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15989, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(15993, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(16005, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(16014, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(16030, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(16054, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(16083, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(16094, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16174, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16498, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16508, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16514, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16594, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16919, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16999, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17005, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(17007, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(17031, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17358, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17374, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17390, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17406, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17422, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17438, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17454, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17470, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17486, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17502, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17518, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17534, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17550, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17566, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17582, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17598, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17614, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17630, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17632, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17634, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17636, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17638, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17640, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17642, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17644, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17646, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17648, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17650, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17652, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17654, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17656, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17658, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17660, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17662, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(17666, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17678, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17690, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17702, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17718, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17824, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17904, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17984, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18064, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18144, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18150, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18156, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18162, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18176, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18256, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18336, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18416, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18496, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18502, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18508, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18514, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18520, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18544, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18565, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(18617, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(18624, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18656, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18664, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18680, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(18683, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18687, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18767, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18773, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19098, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19178, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19184, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19509, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19589, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19595, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19920, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20000, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20006, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20333, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette119.cs b/MinecraftClient/Mapping/BlockPalettes/Palette119.cs index 548df06f..952bcecd 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette119.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette119.cs @@ -1521,9 +1521,3140 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(22, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(24, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(26, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(28, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(30, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(32, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(34, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(75, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(91, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(117, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(120, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(123, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(126, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(129, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(132, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(135, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(138, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(140, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(143, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(146, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(149, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(152, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(155, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(158, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(161, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(164, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(167, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(170, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(173, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(176, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(179, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(182, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(185, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(188, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(191, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(194, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(197, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(200, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(203, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(206, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(234, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(262, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(290, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(318, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(346, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(374, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(402, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(430, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(464, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(479, 800, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1279, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1295, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1311, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1327, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1343, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1359, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1375, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1391, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1407, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1423, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1439, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1455, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1471, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1487, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1503, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1519, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1535, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1559, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1583, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1600, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(1602, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1614, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(1654, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(1684, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(1690, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(1694, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2208, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2288, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(2312, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(3612, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3620, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(3628, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(3636, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3668, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3700, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3732, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3764, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3796, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3828, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3860, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(3924, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3932, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3952, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4032, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4040, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4048, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4056, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4064, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4072, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4080, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4088, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4112, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(4114, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4178, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(4180, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(4182, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(4184, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(4186, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(4188, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(4190, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(4192, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(4194, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(4196, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(4198, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4206, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4230, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(4240, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(4257, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(4273, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(4275, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4311, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(4314, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(4318, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4323, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(4325, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4329, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(4333, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(4340, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4420, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4484, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4548, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4612, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4676, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4740, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4804, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4880, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(4944, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5008, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5072, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5104, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5110, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5143, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5147, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5151, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5159, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5167, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5199, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5327, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5359, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5439, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5519, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5599, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(5603, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5635, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5715, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(5720, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(5729, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(5733, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(5737, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5747, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5749, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5761, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5843, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5851, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5867, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5996, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6076, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6156, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6236, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(6249, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(6573, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(6923, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6931, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6939, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6963, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6987, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7011, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7035, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7059, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7083, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7107, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7123, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7127, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7143, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7147, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7163, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7167, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7183, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7187, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7203, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7207, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7223, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7227, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7231, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7235, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7239, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(7263, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7279, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7295, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7311, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(7345, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(7357, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7360, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7440, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7464, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(7492, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7524, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7556, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7588, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7620, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7652, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7684, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7716, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7748, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7780, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7812, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7844, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7876, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7908, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7940, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7972, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8004, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8084, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8164, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8246, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8278, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8345, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8425, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8505, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8585, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8591, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8597, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8604, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(8626, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8628, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8630, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8632, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8634, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8636, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(8638, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8654, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8670, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8686, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8702, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8718, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8734, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8750, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8766, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8782, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8798, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8814, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8830, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8846, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8862, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8878, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8894, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8898, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8902, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8906, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8910, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8914, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8918, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8922, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8926, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8930, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8934, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8938, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8942, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8946, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8950, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8954, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8961, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9041, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9047, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9053, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9059, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9065, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9071, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9077, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9083, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9089, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9095, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9101, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9107, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9113, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9119, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9125, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9131, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9137, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9143, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9149, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9155, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9161, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9171, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9203, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9235, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9267, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9299, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9331, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9363, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9395, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9427, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9459, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9491, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9523, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9555, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9619, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9683, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9747, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9811, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9875, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9939, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9945, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10009, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(10016, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10019, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10100, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(10106, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10118, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10130, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(10137, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10141, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10153, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10159, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10165, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10171, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10177, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10183, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10189, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10195, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10201, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10207, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10213, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10219, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10225, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10231, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10237, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10243, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10249, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(10255, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10259, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10263, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10267, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10271, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10275, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10279, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10283, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10287, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10291, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10295, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10299, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10303, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10307, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10311, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10315, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10351, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(10379, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(10401, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10403, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10405, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10407, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10409, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10411, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10413, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10415, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10417, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10419, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10421, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10423, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10425, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10427, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10429, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10431, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10433, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10435, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10437, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10439, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10441, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10449, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10457, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10465, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10473, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10481, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10489, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10497, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10505, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10513, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10521, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10530, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10533, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(10548, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(10550, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10630, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10710, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10790, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10870, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10950, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11030, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11110, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11190, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11270, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11350, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11430, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11510, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11590, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11670, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11676, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11682, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11688, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11694, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11700, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11706, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11712, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11718, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11724, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11730, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11736, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11742, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11748, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(12072, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(12396, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(12720, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13044, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13368, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13692, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14016, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14340, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14664, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14988, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15312, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15636, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15960, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15992, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15996, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(16008, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(16016, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(16026, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(16038, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(16055, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(16059, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(16091, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16095, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16099, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16131, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16163, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(16167, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(16170, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(16173, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(16176, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(16184, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(16187, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(16190, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(16193, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(16199, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(16226, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(16256, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16262, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16268, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(16270, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(16272, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(16304, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(16336, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16400, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16464, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(16496, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(16528, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16608, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16688, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(16712, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(16736, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(16800, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(16864, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16896, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16928, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16936, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16944, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(16948, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(16960, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(16969, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(16985, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(17009, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(17038, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(17049, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17129, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17453, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17463, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17469, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17549, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17874, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17954, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17960, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(17962, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(17986, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18313, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18329, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18345, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18361, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18377, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18393, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18409, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18425, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18441, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18457, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18473, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18489, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18505, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18521, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18537, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18553, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18569, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18585, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18587, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18589, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18591, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18593, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18595, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18597, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18599, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18601, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18603, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18605, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18607, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18609, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18611, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18613, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18615, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18617, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(18621, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18633, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18645, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18657, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18673, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18770, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18898, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(18900, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18918, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18998, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19078, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19158, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19238, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19244, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19250, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19256, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19270, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19350, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19430, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19510, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19590, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19596, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19602, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19608, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19614, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19638, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19659, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(19711, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(19718, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19750, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19758, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19774, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(19778, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19782, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19862, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19868, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20193, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20273, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20279, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20604, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20684, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20690, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21015, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21095, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21101, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21428, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(21437, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(21440, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(21443, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette1193.cs b/MinecraftClient/Mapping/BlockPalettes/Palette1193.cs index cb15a64f..7c5254ed 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette1193.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette1193.cs @@ -1597,9 +1597,3351 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(24, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(26, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(28, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(30, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(32, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(34, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(36, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(77, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(93, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(119, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(122, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(125, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(128, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(131, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(134, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(137, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(140, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(157, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(160, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(163, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(166, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(169, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(172, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(175, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(178, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(181, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(184, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(187, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(190, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(193, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(196, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(199, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(202, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(205, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(208, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(211, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(214, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(242, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(270, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(298, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(326, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(354, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(382, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(410, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(438, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(472, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(487, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1637, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1653, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1669, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1685, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1701, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1717, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1733, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1749, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1765, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1781, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1797, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1813, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1829, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1845, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1861, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1877, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1893, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1917, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1941, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1958, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(1960, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(1972, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2012, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2042, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2045, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2304, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(2308, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2822, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2902, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(2926, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(4226, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4234, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4242, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4250, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4282, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4314, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4346, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4378, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4410, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4442, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4474, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4506, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4570, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4578, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4598, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4678, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4686, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4694, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4702, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4710, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4718, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4726, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4734, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4742, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4806, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4870, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4934, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4998, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5062, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5126, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5190, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5254, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5318, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5382, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5390, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5398, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5406, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5414, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5422, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5430, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5438, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5446, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5454, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5462, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5486, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5488, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5552, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5554, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5556, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5558, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5560, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5562, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5564, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5566, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5568, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5570, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5572, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5574, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5582, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5606, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(5616, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5633, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5649, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(5651, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5687, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5690, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5694, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5699, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(5701, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5705, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5709, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(5716, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5796, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5860, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5924, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5988, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6052, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6116, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6180, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6244, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6320, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6384, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6448, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6512, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6544, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6550, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6583, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6587, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6591, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6599, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6607, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6639, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6767, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6799, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6879, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6959, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7039, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(7043, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7075, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7155, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(7160, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(7169, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7173, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7177, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7187, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(7189, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7201, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7283, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7291, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7307, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7436, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7516, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7596, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7676, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(7689, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8013, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8363, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8371, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8379, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8403, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8427, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8451, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8475, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8499, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8523, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8547, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8571, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8587, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8591, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8607, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8611, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8627, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8631, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8647, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8651, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8667, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8671, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8687, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8691, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8707, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8711, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8715, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8719, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8723, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(8747, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8763, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8779, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8795, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8829, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(8841, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(8844, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8924, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8948, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(8976, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9008, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9040, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9072, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9104, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9136, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9168, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9200, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9232, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9264, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9296, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9328, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9360, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9392, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9424, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9456, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9488, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9568, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9648, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9728, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9808, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9890, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9922, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9989, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10069, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10149, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10229, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10235, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10241, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10248, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10270, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10272, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10274, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10276, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10278, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10280, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10282, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10298, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10314, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10330, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10346, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10362, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10378, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10394, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10410, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10426, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10442, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10458, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10474, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10490, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10506, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10522, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10538, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10542, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10546, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10550, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10554, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10558, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10562, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10566, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10570, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10574, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10578, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10582, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10586, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10590, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10594, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10598, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10605, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10685, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10691, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10697, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10703, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10709, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10715, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10721, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10727, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10733, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10739, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10745, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10751, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10757, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10763, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10769, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10775, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10781, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10787, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10793, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10799, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10805, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10811, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10817, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10827, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10859, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10891, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10923, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10955, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10987, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11019, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11051, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11083, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11115, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11147, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11179, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11211, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11243, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11275, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11339, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11403, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11467, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11531, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11595, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11659, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11723, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11729, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11793, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(11800, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11803, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11884, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(11890, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11902, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11914, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(11921, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11925, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11937, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11943, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11949, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11955, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11961, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11967, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11973, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11979, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11985, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11991, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(11997, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12003, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12009, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12015, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12021, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12027, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12033, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12039, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12043, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12047, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12051, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12055, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12059, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12063, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12067, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12071, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12075, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12079, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12083, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12087, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12091, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12095, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12099, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12135, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(12163, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(12185, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12187, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12189, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12191, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12193, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12195, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12197, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12199, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12201, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12203, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12205, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12207, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12209, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12211, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12213, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12215, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12217, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12219, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12221, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12223, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12225, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12233, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12241, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12249, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12257, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12265, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12273, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12281, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12289, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12297, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12305, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12314, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12317, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(12332, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(12334, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12414, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12494, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12574, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12654, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12734, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12814, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12894, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12974, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13054, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13134, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13214, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13294, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13374, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13454, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13460, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13466, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13472, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13478, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13484, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13490, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13496, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13502, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13508, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13514, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13520, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13526, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13532, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(13856, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14180, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14504, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14828, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15152, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15476, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15800, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16124, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16448, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16772, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17096, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17420, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17744, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17776, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(17780, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(17792, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(17800, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(17810, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(17822, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(17839, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(17843, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(17875, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17879, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17883, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17915, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(17947, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(17951, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(17954, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(17957, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(17960, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(17968, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(17971, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(17974, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(17977, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(17983, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18010, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18040, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18046, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18052, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18054, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18056, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18088, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18120, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18184, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18248, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18280, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18312, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18392, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18472, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18496, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18520, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18584, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18648, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18680, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18712, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18720, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18728, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(18732, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(18744, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(18753, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(18769, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(18793, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(18822, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(18833, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18913, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19237, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19247, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19253, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19333, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19658, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19738, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19744, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(19746, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19770, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20097, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20113, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20129, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20145, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20161, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20177, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20193, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20209, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20225, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20241, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20257, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20273, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20289, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20305, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20321, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20337, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20353, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20369, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20371, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20373, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20375, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20377, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20379, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20381, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20383, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20385, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20387, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20389, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20391, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20393, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20395, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20397, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20399, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20401, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20405, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20417, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20429, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20441, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20457, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20554, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(20682, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(20684, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20702, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20782, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20862, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20942, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21022, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21028, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21034, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21040, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21054, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21134, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21214, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21294, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21374, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21380, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21386, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21392, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21398, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21422, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21443, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(21495, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(21502, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21534, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21542, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21558, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(21562, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(21566, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21646, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21652, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21977, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22057, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22063, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22388, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22468, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22474, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22799, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22879, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22885, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23212, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(23221, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(23224, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(23227, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette1194.cs b/MinecraftClient/Mapping/BlockPalettes/Palette1194.cs index c5a45ef4..89311f25 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette1194.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette1194.cs @@ -1645,9 +1645,3469 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(25, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(27, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(80, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(96, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(113, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(126, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(129, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(132, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(135, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(138, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(141, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(144, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(147, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(150, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(152, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(155, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(158, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(161, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(164, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(167, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(170, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(173, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(176, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(179, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(182, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(185, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(188, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(191, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(194, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(197, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(200, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(203, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(206, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(209, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(212, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(215, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(218, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(221, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(224, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(227, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(230, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(233, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(261, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(289, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(317, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(345, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(373, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(401, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(429, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(457, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(485, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(519, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(534, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1684, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1700, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1716, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1732, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1748, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1764, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1780, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1796, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1812, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1828, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1844, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1860, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1876, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1892, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1908, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1924, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1940, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1964, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1988, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2005, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2007, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2019, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2059, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2090, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2093, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2352, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(2356, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2870, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2950, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(2974, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(4274, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4282, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4290, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4298, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4330, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4362, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4394, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4426, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4458, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4490, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4522, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4554, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4586, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4650, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4658, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4678, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4758, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4766, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4774, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4782, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4790, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4798, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4806, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4814, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4822, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4830, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4894, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4958, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5022, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5086, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5150, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5214, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5278, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5342, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5406, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5470, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5534, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5542, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5550, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5558, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5566, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5574, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5582, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5590, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5598, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5606, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5614, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5622, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5646, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5648, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5712, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5714, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5716, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5718, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5720, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5722, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5724, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5726, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5728, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5730, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5732, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5734, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5736, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5744, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5768, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(5778, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5795, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5811, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(5813, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5849, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5852, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5856, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5861, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(5863, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5867, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5871, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(5878, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5958, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6022, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6086, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6150, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6214, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6278, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6342, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6406, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6470, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6546, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6610, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6674, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6738, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6770, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6776, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6809, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6813, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6817, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6825, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6833, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6865, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6993, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7025, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7105, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7185, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7265, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(7269, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7301, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7381, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(7386, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(7395, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7399, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7403, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7413, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(7415, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7427, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7509, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7517, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7533, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7662, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7742, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7822, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7902, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(7915, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8239, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8591, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8599, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8607, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8631, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8655, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8679, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8703, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8727, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8751, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8775, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8799, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8823, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8839, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8843, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8859, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8863, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8879, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8883, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8899, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8903, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8919, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8923, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8939, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8943, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8959, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8963, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8967, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8971, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8975, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(8999, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9015, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9031, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9047, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9081, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(9093, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(9096, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9176, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9200, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(9228, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9260, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9292, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9324, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9356, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9388, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9420, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9452, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9484, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9516, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9548, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9580, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9612, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9644, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9676, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9708, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9740, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9820, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9900, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9980, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10060, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10140, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10222, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10254, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10321, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10401, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10481, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10561, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10567, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10573, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10580, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10602, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10604, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10606, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10608, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10610, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10612, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10614, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10630, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10646, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10662, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10678, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10694, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10710, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10726, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10742, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10758, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10774, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10790, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10806, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10822, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10838, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10854, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10870, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10874, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10878, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10882, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10886, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10890, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10894, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10898, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10902, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10906, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10910, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10914, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10918, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10922, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10926, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10930, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10937, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11017, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11023, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11029, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11035, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11041, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11047, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11053, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11059, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11065, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11071, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11077, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11083, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11089, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11095, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11101, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11107, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11113, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11119, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11125, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11131, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11137, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11143, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11149, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11155, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11165, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11197, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11229, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11261, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11293, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11325, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11357, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11389, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11421, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11453, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11485, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11517, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11549, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11581, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11613, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11645, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11677, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11741, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11805, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11869, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11933, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11997, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12061, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12125, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12189, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12195, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12259, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(12266, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12269, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12350, 3, + [ + new("age", ["0", "1", "2"], 1) + ]), + new(12353, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(12359, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12371, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12383, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(12390, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12394, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12406, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12412, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12418, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12424, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12430, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12436, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12442, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12448, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12454, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12460, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12466, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12472, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12478, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12484, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12490, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12496, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12502, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12508, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12512, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12516, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12520, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12524, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12528, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12532, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12536, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12540, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12544, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12548, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12552, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12556, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12560, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12564, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12568, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12604, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(12632, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(12654, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12656, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12658, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12660, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12662, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12664, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12666, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12668, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12670, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12672, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12674, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12676, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12678, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12680, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12682, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12684, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12686, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12688, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12690, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12692, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12694, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12702, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12710, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12718, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12726, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12734, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12742, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12750, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12758, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12766, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12774, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12783, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12786, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(12801, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(12803, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12883, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12963, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13043, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13123, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13203, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13283, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13363, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13443, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13523, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13603, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13683, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13763, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13843, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13923, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13929, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13935, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13941, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13947, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13953, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13959, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13965, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13971, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13977, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13983, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13989, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13995, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14001, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14325, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14649, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14973, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15297, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15621, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15945, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16269, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16593, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16917, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17241, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17565, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17889, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18213, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18245, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18249, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(18261, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18269, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18279, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18291, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18308, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18312, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18344, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18348, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18352, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18384, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18416, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(18420, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18423, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18426, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18429, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18437, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18440, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18443, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18446, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18452, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18479, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18509, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18515, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18521, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18523, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18525, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18557, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18589, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18653, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18717, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18749, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18781, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18861, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18941, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18965, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18989, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19053, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19117, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19149, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19181, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19189, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19197, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(19201, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(19213, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(19222, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(19238, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19262, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19291, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(19302, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19382, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19706, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19716, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19722, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19802, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20127, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20207, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20213, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(20215, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20239, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20566, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20582, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20598, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20614, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20630, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20646, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20662, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20678, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20694, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20710, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20726, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20742, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20758, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20774, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20790, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20806, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20822, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20838, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20840, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20842, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20844, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20846, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20848, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20850, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20852, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20854, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20856, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20858, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20860, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20862, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20864, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20866, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20868, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20870, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20874, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20886, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20898, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20910, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20926, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21023, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(21151, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(21153, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21171, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21251, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21331, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21411, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21491, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21497, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21503, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21509, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21523, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21603, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21683, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21763, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21843, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21849, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21855, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21861, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21867, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21891, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21912, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(21964, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(21970, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(21987, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22019, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22027, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22043, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(22047, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(22051, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22131, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22137, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22462, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22542, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22548, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22873, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22953, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22959, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23284, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23364, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23370, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23697, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(23706, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(23709, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(23712, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(23717, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette1204.cs b/MinecraftClient/Mapping/BlockPalettes/Palette1204.cs index 1043ad7f..be64f26f 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette1204.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette1204.cs @@ -1754,9 +1754,3785 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(25, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(27, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(80, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(96, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(113, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(130, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(133, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(156, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(159, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(162, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(265, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(293, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(321, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(349, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(377, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(405, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(433, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(461, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(489, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(523, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(538, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1688, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1704, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1720, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1736, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1752, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1768, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1784, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1800, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1816, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1832, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1848, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1864, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1880, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1896, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1912, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1928, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1944, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1968, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1992, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2009, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2011, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2023, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2063, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2094, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2097, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2356, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(2360, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2874, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2954, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(2978, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(4278, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4286, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4294, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4302, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4334, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4366, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4398, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4430, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4462, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4494, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4526, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4558, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4590, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4654, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4662, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4682, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4762, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4770, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4778, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4786, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4794, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4802, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4810, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4818, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4826, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4834, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4898, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4962, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5026, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5090, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5154, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5218, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5282, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5346, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5410, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5474, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5538, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5546, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5554, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5562, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5570, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5578, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5586, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5594, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5602, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5610, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5618, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5626, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5650, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5652, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5716, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5718, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5720, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5722, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5724, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5726, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5728, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5730, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5732, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5734, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5736, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5738, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5740, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5748, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5772, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(5782, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5799, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5815, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(5817, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5852, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5855, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5859, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5864, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(5866, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5870, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5874, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(5881, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5961, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6025, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6089, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6153, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6217, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6281, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6345, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6409, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6473, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6549, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6613, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6677, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6741, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6773, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6779, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6813, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6817, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6821, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6829, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6837, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6869, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6997, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7029, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7109, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7189, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7269, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(7273, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7305, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7385, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(7390, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(7399, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7403, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7407, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7417, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(7419, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7431, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7513, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7521, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7537, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7666, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7746, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7826, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7906, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(7919, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8243, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8595, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8603, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8611, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8635, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8659, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8683, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8707, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8731, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8755, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8779, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8803, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8827, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8859, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8867, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8899, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8907, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8939, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8947, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8979, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8987, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9019, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9027, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9059, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9067, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9099, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9107, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9111, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9115, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9119, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(9143, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9159, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9175, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9191, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9225, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(9237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(9240, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9320, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9344, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(9372, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9404, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9436, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9468, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9500, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9532, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9564, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9596, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9628, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9660, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9692, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9724, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9756, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9788, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9820, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9852, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9884, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9964, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10044, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10124, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10204, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10284, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10365, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10367, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10399, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10466, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10546, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10626, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10706, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10712, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10718, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10725, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10747, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10749, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10751, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10753, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10755, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10757, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10759, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10775, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10791, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10807, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10823, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10839, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10855, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10871, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10887, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10903, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10919, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10935, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10951, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10967, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10983, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10999, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11015, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11019, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11023, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11027, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11031, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11035, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11039, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11043, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11047, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11051, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11055, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11059, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11063, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11067, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11071, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11075, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11082, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11162, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11168, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11174, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11180, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11186, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11192, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11198, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11204, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11210, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11216, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11222, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11228, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11234, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11240, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11246, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11252, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11258, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11264, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11270, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11276, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11282, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11288, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11294, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11300, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11310, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11342, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11374, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11406, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11438, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11470, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11502, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11534, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11566, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11598, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11630, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11662, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11694, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11726, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11758, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11790, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11822, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11886, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11950, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12014, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12078, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12142, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12206, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12270, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12334, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12340, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12404, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(12411, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12414, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12495, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(12497, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(12507, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12509, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(12515, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12527, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12539, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(12546, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12550, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12562, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12568, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12574, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12580, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12586, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12592, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12598, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12604, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12610, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12616, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12622, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12628, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12634, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12640, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12646, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12652, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12658, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12664, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12668, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12672, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12676, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12680, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12684, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12688, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12692, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12696, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12700, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12704, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12708, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12712, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12716, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12720, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12724, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12760, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(12788, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(12800, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(12813, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12815, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12817, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12819, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12821, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12823, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12825, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12827, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12829, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12831, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12833, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12835, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12837, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12839, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12841, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12843, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12845, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12847, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12849, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12851, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12853, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12861, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12869, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12877, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12885, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12893, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12901, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12909, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12917, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12925, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12933, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12942, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12945, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(12960, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(12962, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13042, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13122, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13202, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13282, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13362, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13442, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13522, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13602, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13682, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13762, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13842, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13922, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14002, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14082, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14088, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14094, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14100, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14106, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14112, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14118, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14124, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14130, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14136, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14142, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14148, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14154, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14160, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14484, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14808, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15132, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15456, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15780, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16104, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16428, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16752, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17076, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17400, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17724, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18048, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18372, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18404, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18408, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(18420, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18428, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18438, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18450, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18467, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18471, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18503, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18507, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18511, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18543, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18575, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(18579, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18582, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18585, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18588, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18596, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18599, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18602, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18605, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18611, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18638, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18668, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18674, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18680, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18682, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18684, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18716, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18748, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18812, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18876, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18908, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18940, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19020, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19100, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19124, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19148, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19212, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19276, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19308, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19340, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19348, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19356, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(19360, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(19372, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(19381, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(19397, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19421, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19450, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(19461, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19541, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19865, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19875, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19881, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19961, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20286, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20366, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20372, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(20374, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20398, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20725, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20741, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20757, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20773, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20789, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20805, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20821, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20837, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20853, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20869, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20885, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20901, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20917, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20933, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20949, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20965, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20981, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20997, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20999, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21001, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21003, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21005, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21007, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21009, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21011, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21013, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21015, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21017, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21019, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21021, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21023, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21025, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21027, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21029, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21033, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21045, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21057, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21069, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21082, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21088, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21168, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21493, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21499, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21579, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21905, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21911, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21991, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22319, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22415, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22800, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(22928, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(22930, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22956, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23036, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23116, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23196, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23276, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23282, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23288, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23294, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23308, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23388, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23468, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23548, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23628, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23634, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23640, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23646, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23652, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23716, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23780, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23844, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23908, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23972, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24036, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24100, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24164, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24228, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24292, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24356, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24420, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24484, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24548, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24612, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24676, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24678, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24680, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24682, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24684, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24686, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24688, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24690, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24692, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24696, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24700, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24704, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24708, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24712, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24716, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24720, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24724, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24748, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24769, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(24821, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(24827, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(24844, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24876, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24884, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24900, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24904, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(24908, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24988, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24994, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25319, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25399, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25405, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25730, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25810, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25816, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26141, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26221, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26227, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26554, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(26563, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(26566, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(26569, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(26574, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26590, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(26638, 6, + [ + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette1206.cs b/MinecraftClient/Mapping/BlockPalettes/Palette1206.cs index 070d6dbb..01a9d60d 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette1206.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette1206.cs @@ -1758,9 +1758,3796 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(25, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(27, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(80, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(96, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(113, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(130, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(133, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(156, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(159, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(162, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(265, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(293, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(321, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(349, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(377, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(405, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(433, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(461, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(489, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(523, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(538, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1688, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1704, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1720, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1736, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1752, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1768, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1784, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1800, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1816, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1832, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1848, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1864, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1880, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1896, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1912, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1928, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1944, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1968, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(1992, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2009, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2011, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2023, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2063, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2094, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2097, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2356, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(2360, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2874, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2954, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(2978, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(4278, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4286, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4294, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4302, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4334, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4366, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4398, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4430, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4462, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4494, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4526, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4558, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4590, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4654, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4662, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4682, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4762, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4770, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4778, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4786, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4794, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4802, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4810, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4818, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4826, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4834, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4898, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4962, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5026, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5090, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5154, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5218, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5282, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5346, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5410, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5474, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5538, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5546, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5554, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5562, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5570, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5578, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5586, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5594, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5602, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5610, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5618, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5626, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5650, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5652, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5716, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5718, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5720, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5722, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5724, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5726, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5728, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5730, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5732, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5734, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5736, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5738, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5740, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5748, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5772, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(5782, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5799, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5815, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(5817, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(5852, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5855, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(5859, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5864, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(5866, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5870, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(5874, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(5881, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5961, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6025, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6089, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6153, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6217, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6281, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6345, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6409, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6473, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6549, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6613, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6677, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6741, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6773, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6779, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6813, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6817, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6821, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6829, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(6837, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6869, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6997, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7029, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7109, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7189, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7269, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(7273, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7305, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7385, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(7390, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(7399, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7403, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7407, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7417, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(7419, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7431, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7513, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7521, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7537, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7666, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7746, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7826, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7906, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(7919, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8243, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8595, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8603, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8611, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8635, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8659, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8683, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8707, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8731, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8755, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8779, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8803, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8827, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8859, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8867, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8899, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8907, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8939, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8947, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(8979, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8987, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9019, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9027, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9059, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9067, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9099, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9107, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9111, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9115, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9119, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(9143, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9159, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9175, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9191, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9225, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(9237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(9240, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9320, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9344, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(9372, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9404, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9436, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9468, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9500, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9532, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9564, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9596, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9628, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9660, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9692, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9724, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9756, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9788, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9820, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9852, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9884, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9964, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10044, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10124, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10204, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10284, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10365, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10367, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10399, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10466, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10546, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10626, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10706, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10712, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10718, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10725, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10747, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10749, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10751, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10753, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10755, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10757, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(10759, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10775, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10791, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10807, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10823, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10839, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10855, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10871, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10887, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10903, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10919, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10935, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10951, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10967, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10983, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10999, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11015, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11019, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11023, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11027, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11031, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11035, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11039, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11043, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11047, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11051, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11055, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11059, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11063, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11067, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11071, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11075, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11082, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11162, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11168, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11174, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11180, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11186, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11192, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11198, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11204, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11210, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11216, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11222, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11228, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11234, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11240, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11246, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11252, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11258, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11264, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11270, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11276, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11282, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11288, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11294, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11300, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11310, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11342, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11374, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11406, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11438, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11470, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11502, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11534, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11566, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11598, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11630, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11662, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11694, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11726, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11758, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11790, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11822, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11886, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11950, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12014, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12078, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12142, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12206, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12270, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12334, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12340, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12404, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(12411, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12414, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12495, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(12497, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(12507, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12509, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(12515, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12527, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12539, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(12546, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12550, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12562, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12568, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12574, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12580, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12586, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12592, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12598, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12604, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12610, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12616, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12622, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12628, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12634, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12640, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12646, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12652, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12658, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12664, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12668, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12672, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12676, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12680, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12684, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12688, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12692, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12696, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12700, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12704, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12708, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12712, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12716, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12720, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12724, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12760, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(12788, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(12800, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(12813, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12815, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12817, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12819, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12821, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12823, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12825, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12827, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12829, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12831, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12833, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12835, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12837, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12839, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12841, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12843, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12845, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12847, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12849, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12851, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12853, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12861, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12869, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12877, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12885, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12893, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12901, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12909, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12917, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12925, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12933, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12942, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12945, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(12960, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(12962, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13042, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13122, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13202, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13282, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13362, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13442, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13522, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13602, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13682, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13762, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13842, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13922, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14002, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14082, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14088, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14094, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14100, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14106, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14112, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14118, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14124, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14130, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14136, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14142, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14148, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14154, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14160, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14484, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14808, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15132, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15456, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15780, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16104, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16428, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16752, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17076, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17400, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17724, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18048, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18372, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18404, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18408, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(18420, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18428, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18438, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18450, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18467, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18471, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18503, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18507, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18511, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18543, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18575, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(18579, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18582, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18585, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18588, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18596, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18599, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18602, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18605, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(18611, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18638, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(18668, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18674, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18680, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18682, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(18684, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18716, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(18748, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18812, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18876, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18908, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18940, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19020, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19100, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19124, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19148, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19212, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19276, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19308, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19340, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19348, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19356, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(19360, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(19372, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(19381, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(19397, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19421, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19450, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(19461, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19541, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19865, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19875, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19881, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19961, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20286, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20366, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20372, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(20374, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20398, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20725, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20741, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20757, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20773, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20789, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20805, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20821, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20837, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20853, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20869, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20885, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20901, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20917, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20933, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20949, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20965, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20981, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20997, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(20999, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21001, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21003, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21005, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21007, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21009, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21011, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21013, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21015, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21017, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21019, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21021, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21023, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21025, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21027, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21029, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21033, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21045, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21057, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21069, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21082, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21088, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21168, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21493, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21499, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21579, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21905, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21911, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21991, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22319, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22415, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22800, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(22928, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(22930, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22956, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23036, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23116, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23196, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23276, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23282, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23288, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23294, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23308, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23388, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23468, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23548, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23628, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23634, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23640, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23646, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23652, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23716, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23780, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23844, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23908, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(23972, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24036, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24100, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24164, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24228, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24292, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24356, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24420, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24484, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24548, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24612, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24676, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24678, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24680, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24682, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24684, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24686, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24688, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24690, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24692, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24696, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24700, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24704, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24708, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24712, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24716, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24720, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24724, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24748, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24769, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(24821, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(24827, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(24844, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24876, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24884, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24900, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(24904, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(24908, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24988, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24994, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25319, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25399, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25405, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25730, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25810, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25816, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26141, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26221, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26227, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26554, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(26563, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(26566, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(26569, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(26574, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26590, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(26638, 12, + [ + new("ominous", ["true", "false"], 6), + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + new(26650, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("ominous", ["true", "false"], 4), + new("vault_state", ["inactive", "active", "unlocking", "ejecting"], 1) + ]), + new(26682, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette1212.cs b/MinecraftClient/Mapping/BlockPalettes/Palette1212.cs index e46c7650..c00043da 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette1212.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette1212.cs @@ -1803,9 +1803,3913 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(22, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(41, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(43, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(45, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(86, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(102, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(125, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(157, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(160, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(240, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(243, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(246, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(249, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(252, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(280, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(308, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(336, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(364, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(392, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(420, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(448, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(476, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(504, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(532, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(566, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(581, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1731, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1747, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1763, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1779, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1795, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1811, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1827, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1843, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1859, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1875, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1891, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1907, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1923, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1939, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1955, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1971, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1987, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2011, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2035, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2052, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2054, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2066, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2106, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2137, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2140, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2399, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(2403, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2917, 9, + [ + new("axis", ["x", "y", "z"], 3), + new("creaking", ["disabled", "dormant", "active"], 1) + ]), + new(2926, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3006, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(3030, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(4330, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4338, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4346, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4354, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4386, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4418, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4450, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4482, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4514, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4546, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4578, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4610, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4642, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4674, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4738, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4746, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4766, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4846, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4854, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4862, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4870, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4878, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4886, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4894, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4902, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4910, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4918, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4926, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4990, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5054, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5118, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5182, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5246, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5310, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5374, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5438, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5502, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5566, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5630, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5694, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5702, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5710, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5718, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5726, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5734, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5742, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5750, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5758, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5766, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5774, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5782, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5790, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5814, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5816, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5880, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5882, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5884, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5886, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5888, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5890, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5892, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5894, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5896, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5898, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5900, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5902, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5904, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5906, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5914, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5938, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(5948, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5965, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5981, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(5983, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6018, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6021, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6025, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6030, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(6032, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6036, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6040, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(6047, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6127, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6191, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6255, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6319, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6383, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6447, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6511, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6575, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6639, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6703, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6779, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6843, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6907, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6971, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7003, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7009, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7043, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7047, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7051, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(7059, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(7067, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7099, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7227, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7259, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7339, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7419, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7499, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(7503, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7535, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7615, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(7620, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(7629, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7633, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(7637, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7647, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(7649, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7661, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7743, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7751, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7767, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7896, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7976, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8056, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8136, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8149, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8473, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8826, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8834, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8842, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8866, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8890, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8914, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8938, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8962, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8986, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9010, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9034, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9058, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9082, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9114, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9122, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9154, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9162, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9194, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9202, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9234, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9242, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9274, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9282, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9314, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9322, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9354, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9362, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9366, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9370, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9374, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(9398, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9414, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9430, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9446, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9480, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(9492, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(9495, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9575, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9599, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(9627, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9659, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9691, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9723, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9755, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9787, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9819, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9851, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9883, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9915, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9947, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9979, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10011, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10043, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10075, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10107, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10139, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10219, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10299, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10379, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10459, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10539, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10619, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10700, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(10702, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10734, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10801, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10881, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10961, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11041, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11047, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11053, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11060, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11082, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11084, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11086, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11088, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11090, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11092, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11094, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11110, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11126, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11142, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11158, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11174, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11190, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11206, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11222, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11238, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11254, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11270, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11286, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11302, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11318, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11334, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11350, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11354, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11358, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11362, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11366, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11370, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11374, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11378, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11382, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11386, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11390, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11394, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11398, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11402, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11406, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11410, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11417, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11497, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11503, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11509, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11515, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11521, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11527, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11533, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11539, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11545, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11551, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11557, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11563, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11569, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11575, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11581, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11587, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11593, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11599, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11605, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11611, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11617, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11623, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11629, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11635, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11641, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11651, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11683, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11715, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11747, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11779, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11811, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11843, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11875, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11907, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11939, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11971, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12003, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12035, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12067, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12099, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12131, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12163, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12195, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12227, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12291, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12355, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12419, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12483, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12547, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12611, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12675, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12739, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12803, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12809, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12873, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(12880, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12883, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12964, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(12966, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(12976, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12978, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(12984, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(12996, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13008, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(13015, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(13019, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13031, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13037, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13043, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13049, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13055, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13061, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13067, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13073, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13079, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13085, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13091, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13097, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13103, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13109, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13115, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13121, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13127, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13133, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13137, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13141, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13145, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13149, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13153, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13157, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13161, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13165, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13169, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13173, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13177, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13181, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13185, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13189, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13193, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13229, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(13257, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(13269, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(13282, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13284, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13286, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13288, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13290, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13292, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13294, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13296, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13298, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13300, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13302, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13304, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13306, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13308, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13310, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13312, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13314, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13316, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13318, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13320, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13322, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13330, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13338, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13346, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13354, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13362, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13370, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13378, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13386, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13394, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13402, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13411, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13414, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(13429, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(13431, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13511, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13591, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13671, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13751, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13831, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13911, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13991, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14071, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14151, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14231, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14311, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14391, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14471, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14551, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14557, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14563, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14569, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14575, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14581, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14587, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14593, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14599, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14605, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14611, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14617, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14623, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14629, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(14953, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15277, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15601, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15925, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16249, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16573, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16897, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17221, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17545, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17869, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18193, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18517, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18841, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18873, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18877, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(18889, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18897, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(18907, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18919, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18936, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(18940, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(18972, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18976, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(18980, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19012, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19044, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(19048, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19051, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19054, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19057, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19065, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19068, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19071, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19074, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19080, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(19107, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(19137, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19143, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19149, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(19151, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(19153, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(19185, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(19217, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19281, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19345, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19377, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19409, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19489, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19569, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19593, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19617, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19681, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19745, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19777, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19809, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19817, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19825, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(19829, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(19841, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(19850, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(19866, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19890, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(19919, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(19930, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20010, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20334, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20344, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20350, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20430, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20755, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20835, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20841, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(20843, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20867, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21194, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21210, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21226, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21242, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21258, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21274, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21290, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21306, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21322, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21338, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21354, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21370, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21386, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21402, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21418, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21434, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21450, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21466, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21468, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21470, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21472, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21474, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21476, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21478, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21480, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21482, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21484, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21486, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21488, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21490, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21492, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21494, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21496, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21498, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(21502, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21514, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21526, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21538, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21551, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21557, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21637, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21962, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21968, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22048, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22374, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22380, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22460, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22788, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22884, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23269, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(23397, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(23399, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23425, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23505, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23585, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23665, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23745, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23751, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23757, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23763, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23777, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23857, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23937, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24017, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24097, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24103, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24109, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24115, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24121, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24185, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24249, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24313, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24377, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24441, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24505, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24569, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24633, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24697, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24761, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24825, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24889, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24953, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25017, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25081, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25145, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25147, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25149, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25151, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25153, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25155, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25157, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25159, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25161, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25165, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25169, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25173, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25177, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25181, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25185, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25189, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25193, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25217, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25238, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(25290, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(25296, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(25313, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25345, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25353, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25369, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25373, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(25377, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25457, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25463, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25788, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25868, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25874, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26199, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26279, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26285, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26610, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26690, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26696, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27023, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27032, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27035, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27038, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27043, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27059, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(27107, 12, + [ + new("ominous", ["true", "false"], 6), + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + new(27119, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("ominous", ["true", "false"], 4), + new("vault_state", ["inactive", "active", "unlocking", "ejecting"], 1) + ]), + new(27151, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27154, 162, + [ + new("bottom", ["true", "false"], 81), + new("east", ["none", "low", "tall"], 27), + new("north", ["none", "low", "tall"], 9), + new("south", ["none", "low", "tall"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27316, 2, + [ + new("tip", ["true", "false"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette1214.cs b/MinecraftClient/Mapping/BlockPalettes/Palette1214.cs index fbffcc7f..5d862fb6 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette1214.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette1214.cs @@ -1818,9 +1818,3945 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(22, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(41, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(43, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(45, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(86, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(102, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(125, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(157, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(160, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(240, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(243, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(246, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(249, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(252, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(280, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(308, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(336, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(364, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(392, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(420, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(448, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(476, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(504, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(532, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(566, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(581, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1731, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1747, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1763, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1779, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1795, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1811, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1827, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1843, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1859, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1875, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1891, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1907, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1923, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1939, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1955, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1971, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1987, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2011, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2035, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2052, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2054, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2066, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2106, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2137, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2140, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2399, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(2403, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2917, 12, + [ + new("active", ["true", "false"], 6), + new("axis", ["x", "y", "z"], 2), + new("natural", ["true", "false"], 1) + ]), + new(2929, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3009, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(3033, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(4333, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4341, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4349, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4357, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4389, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4421, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4453, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4485, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4517, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4549, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4581, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4613, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4645, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4677, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4741, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4749, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4769, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4849, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4857, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4865, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4873, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4881, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4889, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4897, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4905, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4913, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4921, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4929, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4993, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5057, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5121, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5185, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5249, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5313, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5377, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5441, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5505, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5569, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5633, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5697, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5705, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5713, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5721, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5729, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5737, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5745, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5753, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5761, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5769, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5777, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5785, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5793, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5817, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5819, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5883, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5885, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5887, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5889, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5891, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5893, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5895, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5897, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5899, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5901, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5903, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5905, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5907, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5909, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5917, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5941, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(5951, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5968, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5984, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(5986, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6021, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6024, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6028, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6033, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(6035, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6039, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6043, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(6050, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6130, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6194, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6258, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6322, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6386, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6450, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6514, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6578, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6642, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6706, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6782, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6846, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6910, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6974, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7006, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7012, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7046, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7050, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7054, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(7062, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(7070, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7102, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7230, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7358, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7390, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7470, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7550, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7630, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(7635, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7715, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7721, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8047, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8079, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8159, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(8164, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(8173, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(8177, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(8181, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8191, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(8193, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8205, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8287, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8295, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8311, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8440, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8520, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8600, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8680, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8693, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9017, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9370, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(9378, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(9386, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9410, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9434, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9458, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9482, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9506, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9530, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9554, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9578, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9602, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9626, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9658, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9666, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9698, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9706, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9738, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9746, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9778, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9786, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9818, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9826, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9858, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9866, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9898, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9906, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9910, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9914, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9918, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(9942, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9958, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9974, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9990, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10024, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(10036, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10039, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10119, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10143, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(10171, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10203, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10235, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10267, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10299, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10331, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10363, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10395, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10427, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10459, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10491, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10523, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10555, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10587, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10619, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10651, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10683, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10763, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10843, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10923, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11003, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11083, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11163, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11244, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(11246, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11278, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11345, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11425, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11505, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11585, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11591, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11597, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11604, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11626, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11628, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11630, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11632, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11634, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11636, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11638, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11654, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11670, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11686, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11702, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11718, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11734, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11750, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11766, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11782, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11798, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11814, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11830, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11846, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11862, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11878, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11894, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11898, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11902, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11906, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11910, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11914, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11918, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11922, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11926, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11930, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11934, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11938, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11942, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11946, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11950, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11954, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11961, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12041, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12047, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12053, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12059, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12065, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12071, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12077, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12083, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12089, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12095, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12101, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12107, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12113, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12119, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12125, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12131, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12137, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12143, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12149, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12155, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12161, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12167, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12173, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12179, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12185, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12195, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12227, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12259, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12291, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12323, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12355, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12387, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12419, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12451, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12483, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12515, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12547, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12579, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12611, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12643, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12675, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12707, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12739, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12771, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12835, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12899, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12963, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13027, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13091, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13155, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13219, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13283, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13347, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13353, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13417, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(13424, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(13427, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13508, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(13510, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(13520, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(13522, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(13528, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13540, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13552, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(13559, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(13563, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13575, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13581, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13587, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13593, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13599, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13605, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13611, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13617, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13623, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13629, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13635, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13641, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13647, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13653, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13659, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13665, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13671, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13677, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13681, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13685, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13689, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13693, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13697, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13701, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13705, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13709, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13713, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13717, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13721, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13725, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13729, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13733, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13737, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13773, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(13801, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(13813, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(13826, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13828, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13830, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13832, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13834, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13836, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13838, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13840, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13842, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13844, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13846, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13848, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13850, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13852, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13854, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13856, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13858, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13860, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13862, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13864, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13866, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13874, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13882, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13890, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13898, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13906, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13914, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13922, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13930, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13938, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13946, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13955, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13958, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(13973, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(13975, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14055, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14135, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14215, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14295, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14375, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14455, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14535, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14615, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14695, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14775, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14855, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14935, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15015, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15095, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15101, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15107, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15113, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15119, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15125, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15131, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15137, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15143, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15149, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15155, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15161, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15167, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15173, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15497, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15821, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16145, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16469, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16793, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17117, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17441, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17765, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18089, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18413, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18737, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19061, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19385, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19417, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(19421, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(19433, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(19441, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(19451, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(19463, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19480, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(19484, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19516, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19520, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19524, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19556, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19588, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(19592, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19595, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19598, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19601, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19609, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19612, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19615, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19618, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19624, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(19651, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(19681, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19687, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19693, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(19695, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(19697, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(19729, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(19761, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19825, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19889, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19921, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19953, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20033, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20113, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20137, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20161, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20225, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20289, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20321, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20353, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20361, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20369, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(20373, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(20385, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(20394, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(20410, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(20434, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(20463, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(20474, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20554, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20878, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20888, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20894, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20974, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21299, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21379, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21385, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(21387, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21411, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21738, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21754, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21770, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21786, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21802, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21818, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21834, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21850, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21866, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21882, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21898, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21914, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21930, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21946, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21962, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21978, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21994, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22010, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22012, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22014, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22016, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22018, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22020, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22022, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22024, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22026, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22028, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22030, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22032, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22034, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22036, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22038, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22040, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22042, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22046, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22058, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22070, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22082, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22095, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22101, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22181, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22506, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22512, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22592, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22918, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22924, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23004, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23332, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23428, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23813, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(23941, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(23943, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23969, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24049, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24129, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24209, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24289, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24295, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24301, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24307, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24321, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24401, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24481, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24561, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24641, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24647, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24653, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24659, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24665, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24729, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24793, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24857, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24921, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24985, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25049, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25113, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25177, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25241, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25305, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25369, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25433, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25497, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25561, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25625, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25689, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25691, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25693, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25695, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25697, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25699, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25701, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25703, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25705, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25709, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25713, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25717, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25721, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25725, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25729, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25733, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25737, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25761, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25782, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(25834, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(25840, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(25857, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25889, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25897, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25913, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25917, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(25921, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26001, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26007, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26332, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26412, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26418, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26743, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26823, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26829, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27154, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27234, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27240, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27567, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27576, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27579, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27582, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27587, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27603, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(27651, 12, + [ + new("ominous", ["true", "false"], 6), + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + new(27663, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("ominous", ["true", "false"], 4), + new("vault_state", ["inactive", "active", "unlocking", "ejecting"], 1) + ]), + new(27695, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27698, 162, + [ + new("bottom", ["true", "false"], 81), + new("east", ["none", "low", "tall"], 27), + new("north", ["none", "low", "tall"], 9), + new("south", ["none", "low", "tall"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27860, 2, + [ + new("tip", ["true", "false"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette1215.cs b/MinecraftClient/Mapping/BlockPalettes/Palette1215.cs index c01f5d00..85a52201 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette1215.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette1215.cs @@ -1830,9 +1830,3959 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(22, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(41, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(43, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(45, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(86, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(102, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(125, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(157, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(160, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(240, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(243, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(246, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(249, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(252, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(280, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(308, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(336, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(364, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(392, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(420, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(448, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(476, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(504, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(532, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(566, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(581, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1731, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1747, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1763, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1779, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1795, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1811, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1827, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1843, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1859, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1875, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1891, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1907, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1923, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1939, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1955, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1971, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1987, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2011, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2035, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2055, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2057, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2069, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2109, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2140, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2143, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2402, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(2406, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2920, 18, + [ + new("axis", ["x", "y", "z"], 6), + new("creaking_heart_state", ["uprooted", "dormant", "awake"], 2), + new("natural", ["true", "false"], 1) + ]), + new(2938, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3018, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(3042, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(4342, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4350, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4358, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4366, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4398, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4430, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4462, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4494, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4526, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4558, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4590, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4622, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4654, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4686, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4750, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4758, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4778, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4858, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4866, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4874, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4882, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4890, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4898, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4906, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4914, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4922, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4930, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4938, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5002, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5066, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5130, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5194, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5258, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5322, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5386, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5450, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5514, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5578, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5642, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5706, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5714, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5722, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5730, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5738, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5746, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5754, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5762, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5770, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5778, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5786, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5794, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5802, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5826, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5828, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5892, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5894, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5896, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5898, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5900, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5902, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5904, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5906, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5908, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5910, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5912, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5914, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5916, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5918, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5926, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5950, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(5960, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5978, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5994, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(5996, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6031, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6034, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6038, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6043, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(6045, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6049, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6053, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(6060, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6140, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6204, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6268, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6332, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6396, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6460, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6524, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6588, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6652, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6716, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6792, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6856, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6920, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6984, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7016, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7022, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7056, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7060, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7064, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(7072, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(7080, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7112, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7240, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7368, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7400, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7480, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7560, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7640, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(7645, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7725, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7731, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8057, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8089, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8169, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(8174, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(8183, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(8187, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(8191, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8201, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(8203, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8215, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8297, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8305, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8321, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8450, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8530, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8610, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8690, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8703, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9027, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9380, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(9388, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(9396, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9420, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9444, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9468, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9492, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9516, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9540, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9564, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9588, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9612, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9636, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9668, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9676, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9708, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9716, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9748, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9756, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9788, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9796, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9828, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9836, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9868, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9876, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9908, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9916, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9920, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9924, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9928, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(9952, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9968, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9984, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10000, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10034, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(10046, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10049, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10129, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10153, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(10181, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10213, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10245, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10277, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10309, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10341, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10373, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10405, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10437, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10469, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10501, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10533, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10565, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10597, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10629, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10661, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10693, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10773, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10853, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10933, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11013, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11093, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11173, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11254, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(11256, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11288, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11355, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11435, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11515, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11595, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11601, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11607, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11614, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11636, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11638, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11640, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11642, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11644, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11646, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11648, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11664, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11680, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11696, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11712, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11728, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11744, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11760, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11776, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11792, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11808, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11824, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11840, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11856, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11872, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11888, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11904, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11908, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11912, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11916, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11920, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11924, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11928, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11932, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11936, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11940, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11944, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11948, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11952, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11956, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11960, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11964, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11971, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12051, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12057, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12063, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12069, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12075, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12081, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12087, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12093, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12099, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12105, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12111, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12117, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12123, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12129, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12135, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12141, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12147, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12153, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12159, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12165, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12171, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12177, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12183, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12189, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12195, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12205, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12237, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12269, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12301, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12333, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12365, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12397, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12429, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12461, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12493, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12525, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12557, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12589, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12621, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12653, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12685, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12717, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12749, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12781, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12845, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12909, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12973, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13037, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13101, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13165, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13229, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13293, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13357, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13363, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13427, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(13434, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(13437, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13518, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(13520, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(13530, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(13532, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(13538, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13550, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13562, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(13569, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(13573, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13585, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13591, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13597, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13603, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13609, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13615, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13621, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13627, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13633, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13639, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13645, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13651, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13657, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13663, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13669, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13675, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13681, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13687, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13691, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13695, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13699, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13703, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13707, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13711, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13715, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13719, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13723, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13727, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13731, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13735, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13739, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13743, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13747, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13783, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(13811, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(13823, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(13836, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13838, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13840, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13842, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13844, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13846, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13848, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13850, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13852, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13854, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13856, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13858, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13860, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13862, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13864, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13866, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13868, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13870, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13872, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13874, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13876, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13884, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13892, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13900, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13908, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13916, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13924, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13932, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13940, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13948, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13956, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13965, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13968, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(13983, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(13985, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14065, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14145, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14225, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14305, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14385, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14465, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14545, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14625, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14705, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14785, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14865, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14945, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15025, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15105, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15111, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15117, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15123, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15129, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15135, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15141, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15147, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15153, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15159, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15165, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15171, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15177, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15183, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15507, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15831, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16155, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16479, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16803, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17127, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17451, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17775, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18099, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18423, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18747, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19071, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19395, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19427, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(19431, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(19443, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(19451, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(19461, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(19473, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19490, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(19494, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19526, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19530, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19534, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19566, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19598, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(19602, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19605, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19608, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19611, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19619, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19622, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19625, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19628, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19634, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(19661, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(19691, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19697, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19703, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(19705, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(19707, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(19739, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(19771, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19835, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19899, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19931, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19963, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20043, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20123, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20147, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20171, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20235, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20299, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20331, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20363, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20371, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20379, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(20383, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(20395, 4, + [ + new("mode", ["start", "log", "fail", "accept"], 1) + ]), + new(20400, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(20409, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(20425, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(20449, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(20478, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(20489, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20569, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20893, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20903, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20909, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20989, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21314, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21394, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21400, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(21402, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21426, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21753, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21769, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21785, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21801, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21817, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21833, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21849, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21865, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21881, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21897, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21913, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21929, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21945, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21961, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21977, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21993, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22009, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22025, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22027, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22029, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22031, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22033, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22035, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22037, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22039, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22041, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22043, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22045, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22047, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22049, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22051, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22053, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22055, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22057, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22061, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22073, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22085, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22097, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22110, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22116, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22196, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22521, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22527, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22607, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22933, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22939, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23019, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23347, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23443, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23828, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(23956, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(23958, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23984, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24064, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24144, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24224, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24304, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24310, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24316, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24322, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24336, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24416, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24496, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24576, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24656, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24662, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24668, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24674, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24680, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24744, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24808, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24872, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24936, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25000, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25064, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25128, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25192, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25256, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25320, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25384, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25448, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25512, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25576, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25640, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25704, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25706, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25708, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25710, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25712, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25714, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25716, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25718, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25720, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25724, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25728, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25732, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25736, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25740, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25744, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25748, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25752, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25776, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25797, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(25849, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(25855, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(25871, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(25887, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("segment_amount", ["1", "2", "3", "4"], 1) + ]), + new(25904, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25936, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25944, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25960, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25964, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(25968, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26048, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26054, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26379, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26459, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26465, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26790, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26870, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26876, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27201, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27281, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27287, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27614, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27623, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27626, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27629, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27634, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27650, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(27698, 12, + [ + new("ominous", ["true", "false"], 6), + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + new(27710, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("ominous", ["true", "false"], 4), + new("vault_state", ["inactive", "active", "unlocking", "ejecting"], 1) + ]), + new(27742, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27745, 162, + [ + new("bottom", ["true", "false"], 81), + new("east", ["none", "low", "tall"], 27), + new("north", ["none", "low", "tall"], 9), + new("south", ["none", "low", "tall"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27907, 2, + [ + new("tip", ["true", "false"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette1216.cs b/MinecraftClient/Mapping/BlockPalettes/Palette1216.cs index f235183c..9b300577 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette1216.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette1216.cs @@ -1832,9 +1832,3965 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.ZombieWallHead; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(22, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(41, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(43, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(45, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(86, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(102, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(125, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(157, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(160, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(240, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(243, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(246, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(249, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(252, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(280, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(308, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(336, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(364, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(392, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(420, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(448, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(476, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(504, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(532, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(566, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(581, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1731, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1747, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1763, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1779, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1795, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1811, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1827, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1843, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1859, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1875, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1891, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1907, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1923, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1939, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1955, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1971, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1987, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2011, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2035, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2055, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2057, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2069, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2109, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2140, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2143, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2402, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(2406, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(2920, 18, + [ + new("axis", ["x", "y", "z"], 6), + new("creaking_heart_state", ["uprooted", "dormant", "awake"], 2), + new("natural", ["true", "false"], 1) + ]), + new(2938, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3018, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(3042, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(4342, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4350, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(4358, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(4366, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4398, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4430, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4462, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4494, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4526, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4558, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4590, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4622, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4654, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4686, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(4750, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4758, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4778, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4858, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4866, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4874, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4882, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4890, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4898, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4906, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4914, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4922, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4930, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(4938, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5002, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5066, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5130, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5194, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5258, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5322, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5386, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5450, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5514, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5578, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5642, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5706, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5714, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5722, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5730, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5738, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5746, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5754, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5762, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5770, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5778, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5786, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5794, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5802, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5826, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5828, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5892, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5894, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5896, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5898, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5900, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5902, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5904, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5906, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5908, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5910, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(5912, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5914, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5916, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(5918, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5926, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5950, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(5960, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5978, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(5994, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(5996, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6031, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6034, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6038, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6043, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(6045, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6049, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6053, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(6060, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6140, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6204, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6268, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6332, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6396, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6460, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6524, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6588, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6652, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6716, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6792, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6856, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6920, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6984, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7016, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7022, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7056, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7060, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7064, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(7072, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(7080, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7112, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7240, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7368, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7400, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7480, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7560, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7640, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(7645, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7725, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7731, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(8057, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8089, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8169, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(8174, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(8183, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(8187, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(8191, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8201, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(8203, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8215, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8297, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8305, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8321, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8450, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8530, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8610, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8690, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(8703, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9027, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9380, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(9388, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(9396, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9420, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9444, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9468, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9492, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9516, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9540, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9564, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9588, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9612, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9636, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9668, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9676, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9708, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9716, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9748, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9756, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9788, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9796, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9828, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9836, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9868, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9876, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9908, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9916, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9920, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9924, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9928, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(9952, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9968, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(9984, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10000, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10034, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(10046, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(10049, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10129, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10153, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(10181, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10213, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10245, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10277, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10309, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10341, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10373, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10405, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10437, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10469, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10501, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10533, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10565, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10597, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10629, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10661, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(10693, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10773, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10853, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(10933, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11013, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11093, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11173, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11254, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(11256, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11288, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11355, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11435, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11515, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11595, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11601, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11607, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11614, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11636, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11638, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11640, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11642, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11644, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11646, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(11648, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11664, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11680, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11696, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11712, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11728, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11744, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11760, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11776, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11792, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11808, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11824, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11840, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11856, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11872, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11888, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11904, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11908, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11912, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11916, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11920, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11924, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11928, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11932, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11936, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11940, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11944, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11948, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11952, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11956, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11960, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11964, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11971, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12051, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12057, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12063, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12069, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12075, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12081, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12087, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12093, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12099, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12105, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12111, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12117, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12123, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12129, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12135, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12141, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12147, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12153, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12159, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12165, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12171, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12177, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12183, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12189, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12195, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12205, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12237, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12269, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12301, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12333, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12365, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12397, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12429, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12461, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12493, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12525, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12557, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12589, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12621, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12653, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12685, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12717, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12749, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(12781, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12845, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12909, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(12973, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13037, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13101, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13165, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13229, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13293, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13357, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13363, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13427, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(13434, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(13437, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13518, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(13520, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(13530, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(13532, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(13538, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13550, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13562, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(13569, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(13573, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13585, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13591, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13597, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13603, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13609, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13615, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13621, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13627, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13633, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13639, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13645, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13651, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13657, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13663, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13669, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13675, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13681, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(13687, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13691, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13695, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13699, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13703, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13707, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13711, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13715, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13719, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13723, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13727, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13731, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13735, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13739, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13743, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13747, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13783, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(13811, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(13823, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(13826, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("hydration", ["0", "1", "2", "3"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13868, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13870, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13872, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13874, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13876, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13878, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13880, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13882, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13884, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13886, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13888, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13890, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13892, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13894, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13896, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13898, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13900, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13902, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13904, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13906, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(13908, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13916, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13924, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13932, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13940, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13948, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13956, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13964, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13972, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13980, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13988, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13997, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14000, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(14015, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(14017, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14097, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14177, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14257, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14337, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14417, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14497, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14577, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14657, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14737, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14817, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14897, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14977, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15057, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15137, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15143, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15149, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15155, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15161, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15167, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15173, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15179, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15185, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15191, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15197, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15203, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15209, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15215, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15539, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(15863, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16187, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16511, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16835, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17159, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17483, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17807, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18131, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18455, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18779, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19103, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19427, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19459, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(19463, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(19475, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(19483, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(19493, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(19505, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19522, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(19526, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19558, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19562, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19566, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19598, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19630, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(19634, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19637, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19640, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19643, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19651, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19654, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19657, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19660, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(19666, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(19693, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(19723, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19729, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19735, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(19737, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(19739, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(19771, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(19803, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19867, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(19931, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19963, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(19995, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20075, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20155, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20179, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20203, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20267, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20331, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20363, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20395, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20403, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20411, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(20415, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(20427, 4, + [ + new("mode", ["start", "log", "fail", "accept"], 1) + ]), + new(20432, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(20441, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(20457, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(20481, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(20510, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(20521, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20601, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20925, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20935, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20941, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21021, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21346, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21426, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21432, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(21434, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21458, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(21785, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21801, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21817, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21833, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21849, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21865, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21881, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21897, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21913, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21929, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21945, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21961, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21977, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21993, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22009, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22025, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22041, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22057, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22059, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22061, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22063, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22065, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22067, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22069, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22071, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22073, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22075, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22077, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22079, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22081, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22083, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22085, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22087, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22089, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(22093, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22105, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22117, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22129, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22142, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22148, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22228, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22553, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22559, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22639, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22965, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22971, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23051, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23379, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23475, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23860, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(23988, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(23990, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24016, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24096, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24176, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24256, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24336, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24342, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24348, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24354, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24368, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24448, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24528, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24608, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24688, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24694, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24700, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24706, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24712, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24776, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24840, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24904, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(24968, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25032, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25096, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25160, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25224, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25288, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25352, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25416, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25480, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25544, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25608, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25672, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25736, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25738, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25740, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25742, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25744, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25746, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25748, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25750, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25752, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25756, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25760, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25764, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25768, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25772, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25776, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25780, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25784, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25808, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25829, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(25881, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(25887, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(25903, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(25919, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("segment_amount", ["1", "2", "3", "4"], 1) + ]), + new(25936, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25968, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25976, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25992, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(25996, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(26000, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26080, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26086, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26411, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26491, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26497, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26822, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26902, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26908, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27233, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27313, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27319, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27646, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27655, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27658, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27661, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27666, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27682, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(27730, 12, + [ + new("ominous", ["true", "false"], 6), + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + new(27742, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("ominous", ["true", "false"], 4), + new("vault_state", ["inactive", "active", "unlocking", "ejecting"], 1) + ]), + new(27774, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27777, 162, + [ + new("bottom", ["true", "false"], 81), + new("east", ["none", "low", "tall"], 27), + new("north", ["none", "low", "tall"], 9), + new("south", ["none", "low", "tall"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27939, 2, + [ + new("tip", ["true", "false"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette1219.cs b/MinecraftClient/Mapping/BlockPalettes/Palette1219.cs index 9994f3c3..7ac2ce58 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette1219.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette1219.cs @@ -2342,9 +2342,4335 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.FireflyBush; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(22, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(41, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(43, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(45, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(86, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(102, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(125, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(157, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(160, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(240, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(243, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(246, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(249, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(252, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(280, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(308, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(336, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(364, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(392, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(420, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(448, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(476, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(504, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(532, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(566, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(581, 1150, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1731, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1747, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1763, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1779, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1795, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1811, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1827, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1843, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1859, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1875, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1891, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1907, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1923, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1939, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1955, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1971, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1987, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2011, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2035, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2055, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2057, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2069, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2109, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2140, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2143, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2399, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2463, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2527, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2591, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2655, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2719, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2783, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2847, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2911, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2975, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3039, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3103, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3170, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(3174, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(3688, 18, + [ + new("axis", ["x", "y", "z"], 6), + new("creaking_heart_state", ["uprooted", "dormant", "awake"], 2), + new("natural", ["true", "false"], 1) + ]), + new(3706, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3786, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(3810, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(5110, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5118, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5126, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5134, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5166, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5198, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5230, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5262, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5294, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5326, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5358, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5390, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5422, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5454, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5518, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5526, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5546, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5626, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5634, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5642, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5650, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5658, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5666, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5674, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5682, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5690, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5698, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5706, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5770, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5834, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5898, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5962, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6026, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6090, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6154, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6218, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6282, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6346, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6410, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6474, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6482, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6490, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6498, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6506, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6514, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6522, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6530, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6538, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6546, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6554, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6562, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6570, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6594, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6596, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6660, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6662, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6664, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6666, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6668, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6670, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6672, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6674, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6676, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6678, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6680, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6682, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6684, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6686, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(6694, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6718, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(6728, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6746, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6762, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(6764, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(6799, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6802, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(6806, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6811, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6816, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(6818, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6822, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(6826, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(6833, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6913, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6977, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7041, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7105, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7169, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7233, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7297, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7361, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7425, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7489, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7565, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7629, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7693, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7757, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7789, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7821, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7853, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7885, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7917, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7949, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7981, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8013, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8045, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8051, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8057, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8063, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8069, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8075, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8081, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8087, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8093, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8099, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8133, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8137, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8141, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8149, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8157, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8189, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8317, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8445, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8477, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8557, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8637, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8717, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(8722, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8802, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8808, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9134, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9166, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9246, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(9251, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(9260, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(9264, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(9268, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9278, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(9280, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9292, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9374, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9382, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9398, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9527, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9607, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9687, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9767, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9780, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(10104, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(10457, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(10465, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(10473, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10497, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10521, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10545, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10569, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10593, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10617, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10641, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10665, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10689, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10713, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10745, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10753, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10785, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10793, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10825, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10833, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10865, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10873, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10905, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10913, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10945, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10953, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10985, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10993, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(10997, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11001, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11005, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(11029, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11045, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11061, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11077, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11111, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(11123, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11126, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11206, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11230, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(11258, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11290, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11322, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11354, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11386, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11418, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11450, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11482, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11514, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11546, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11578, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11610, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11642, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11674, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11706, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11738, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11770, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11850, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11930, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12010, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12090, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12170, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12250, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12331, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12333, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12365, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12432, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12512, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12592, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12672, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12678, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12684, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12691, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12713, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12715, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12717, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12719, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12721, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12723, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12725, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12741, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12757, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12773, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12789, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12805, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12821, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12837, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12853, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12869, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12885, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12901, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12917, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12933, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12949, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12965, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12981, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12985, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12989, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12993, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(12997, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13001, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13005, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13009, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13013, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13017, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13021, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13025, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13029, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13033, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13037, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13041, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13048, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13128, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13134, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13140, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13146, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13152, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13158, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13164, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13170, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13176, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13182, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13188, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13194, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13200, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13206, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13212, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13218, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13224, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13230, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13236, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13242, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13248, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13254, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13260, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13266, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13272, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13282, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13314, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13346, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13378, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13410, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13442, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13474, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13506, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13538, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13570, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13602, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13634, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13666, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13698, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13730, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13762, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13794, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13826, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13858, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13922, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13986, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14050, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14114, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14178, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14242, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14306, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14370, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14434, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14440, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14504, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(14511, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14514, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14595, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(14597, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(14607, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(14609, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(14615, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14627, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14639, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(14646, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14650, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14662, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14668, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14674, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14680, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14686, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14692, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14698, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14704, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14710, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14716, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14722, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14728, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14734, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14740, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14746, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14752, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14758, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14764, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14768, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14772, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14776, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14780, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14784, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14788, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14792, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14796, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14800, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14804, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14808, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14812, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14816, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14820, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14824, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14860, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(14888, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(14900, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(14903, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("hydration", ["0", "1", "2", "3"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14945, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14947, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14949, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14951, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14953, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14955, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14957, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14959, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14961, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14963, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14965, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14967, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14969, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14971, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14973, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14975, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14977, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14979, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14981, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14983, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(14985, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14993, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15001, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15009, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15017, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15025, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15033, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15041, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15049, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15057, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15065, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15074, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15077, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(15092, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(15094, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15174, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15254, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15334, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15414, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15494, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15574, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15654, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15734, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15814, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15894, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15974, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16054, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16134, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16214, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16220, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16226, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16232, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16238, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16244, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16250, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16256, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16262, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16268, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16274, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16280, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16286, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16292, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16616, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16940, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17264, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17588, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17912, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18236, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18560, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18884, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19208, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19532, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19856, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20180, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20504, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20536, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20540, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(20552, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(20560, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(20570, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20582, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20599, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20603, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20635, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20639, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20643, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20647, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20651, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20655, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20659, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20663, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20667, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20671, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20675, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20707, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20739, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(20743, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20746, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20749, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20752, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20760, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20763, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20766, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20769, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20775, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(20802, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(20832, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20838, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20844, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(20846, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(20848, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(20880, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(20912, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20976, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21040, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21072, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21104, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21184, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21264, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21288, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21312, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21376, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21440, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21472, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21504, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21512, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21520, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(21524, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(21536, 4, + [ + new("mode", ["start", "log", "fail", "accept"], 1) + ]), + new(21541, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(21550, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(21566, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(21590, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(21619, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(21630, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21710, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22034, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22044, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22050, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22130, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22455, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22535, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22541, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(22543, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(22567, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22894, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22910, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22926, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22942, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22958, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22974, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22990, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23006, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23022, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23038, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23054, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23070, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23086, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23102, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23118, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23134, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23150, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23166, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23168, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23170, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23172, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23174, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23176, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23178, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23180, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23182, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23184, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23186, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23188, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23190, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23192, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23194, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23196, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23198, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23202, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23214, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23226, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23238, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23251, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23257, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23337, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23662, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23668, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23748, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(24074, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24080, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24160, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(24488, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24584, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24969, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(25097, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(25099, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25125, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25205, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25285, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25365, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25445, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25451, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25457, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25463, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25477, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25557, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25637, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25717, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25797, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25803, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25809, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25815, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25821, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25885, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(25949, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26013, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26077, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26141, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26205, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26269, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26333, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26397, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26461, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26525, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26589, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26653, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26717, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26781, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26845, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(26847, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(26849, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(26851, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(26853, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(26855, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(26857, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(26859, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(26861, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26865, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26869, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26873, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26877, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26881, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26885, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26889, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26893, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(26917, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(26941, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(26965, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(26989, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27013, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27037, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27061, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27085, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27117, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27149, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27181, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27213, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27245, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27277, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27309, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27341, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27365, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27389, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27413, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27437, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27461, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27485, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27509, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27533, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27554, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(27606, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(27612, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(27628, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(27644, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("segment_amount", ["1", "2", "3", "4"], 1) + ]), + new(27661, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27693, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27701, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27717, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27721, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27725, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27805, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27811, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(28136, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28216, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28222, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(28547, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28627, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28633, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(28958, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29038, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29044, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(29371, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29380, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29383, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29386, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29391, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29407, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(29455, 12, + [ + new("ominous", ["true", "false"], 6), + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + new(29467, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("ominous", ["true", "false"], 4), + new("vault_state", ["inactive", "active", "unlocking", "ejecting"], 1) + ]), + new(29499, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29502, 162, + [ + new("bottom", ["true", "false"], 81), + new("east", ["none", "low", "tall"], 27), + new("north", ["none", "low", "tall"], 9), + new("south", ["none", "low", "tall"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(29664, 2, + [ + new("tip", ["true", "false"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette261.cs b/MinecraftClient/Mapping/BlockPalettes/Palette261.cs index 5a2b7ac0..d9259455 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette261.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette261.cs @@ -2346,9 +2346,4335 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.FireflyBush; } + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(22, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(41, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(43, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(45, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(86, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(102, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(125, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(157, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(160, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(240, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(243, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(246, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(249, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(252, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(280, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(308, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(336, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(364, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(392, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(420, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(448, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(476, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(504, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(532, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(566, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(581, 1350, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "trumpet", "trumpet_exposed", "trumpet_oxidized", "trumpet_weathered", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1931, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1947, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1963, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1979, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1995, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2011, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2027, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2043, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2059, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2075, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2091, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2107, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2123, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2139, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2155, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2171, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2187, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2211, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2235, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2255, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2257, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2269, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2309, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2341, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2344, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2600, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2664, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2728, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2792, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2856, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2920, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2984, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3048, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3112, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3176, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3240, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3304, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3371, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(3375, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(3889, 18, + [ + new("axis", ["x", "y", "z"], 6), + new("creaking_heart_state", ["uprooted", "dormant", "awake"], 2), + new("natural", ["true", "false"], 1) + ]), + new(3907, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3987, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(4011, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(5311, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5319, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5327, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5335, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5367, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5399, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5431, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5463, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5495, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5527, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5559, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5591, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5623, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5655, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5719, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5727, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5747, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5827, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5835, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5843, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5851, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5859, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5867, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5875, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5883, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5891, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5899, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5907, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5971, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6035, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6099, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6163, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6227, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6291, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6355, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6419, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6483, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6547, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6611, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6675, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6683, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6691, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6699, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6707, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6715, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6723, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6731, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6739, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6747, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6755, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6763, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6771, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6795, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6797, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6861, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6863, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6865, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6867, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6869, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6871, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6873, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6875, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6877, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6879, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6881, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6883, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6885, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6887, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(6895, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6919, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(6929, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6947, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6963, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(6965, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7000, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7003, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7007, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7012, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7017, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(7019, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7023, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7027, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(7034, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7114, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7178, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7242, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7306, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7370, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7434, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7498, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7562, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7626, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7690, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7766, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7830, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7894, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7958, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7990, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8022, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8054, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8086, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8118, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8150, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8182, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8214, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8246, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8252, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8258, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8264, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8270, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8276, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8282, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8288, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8294, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8300, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8334, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8338, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8342, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8350, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8358, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8390, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8518, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8646, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8678, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8758, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8838, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8918, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(8923, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9003, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9009, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9335, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9367, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9447, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(9452, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(9461, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(9465, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(9469, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9479, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(9481, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9493, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9575, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9583, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9599, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9728, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9808, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9888, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9968, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9981, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(10305, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(10659, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(10667, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(10675, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10699, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10723, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10747, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10771, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10795, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10819, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10843, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10867, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10891, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10915, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10947, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10955, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10987, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10995, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11027, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11035, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11067, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11075, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11107, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11115, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11147, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11155, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11187, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11195, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11199, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11203, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11207, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(11231, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11247, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11263, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11279, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11313, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(11325, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11328, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11408, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11432, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(11460, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11492, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11524, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11556, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11588, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11620, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11652, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11684, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11716, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11748, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11780, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11812, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11844, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11876, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11908, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11940, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11972, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12052, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12132, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12212, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12292, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12372, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12452, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12533, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12535, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12567, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12634, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12714, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12794, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12874, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12880, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12886, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12893, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12915, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12917, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12919, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12921, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12923, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12925, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12927, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12943, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12959, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12975, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12991, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13007, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13023, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13039, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13055, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13071, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13087, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13103, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13119, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13135, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13151, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13167, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13183, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13187, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13191, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13195, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13199, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13203, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13207, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13211, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13215, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13219, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13223, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13227, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13231, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13235, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13239, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13243, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13250, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13330, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13336, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13342, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13348, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13354, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13360, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13366, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13372, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13378, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13384, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13390, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13396, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13402, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13408, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13414, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13420, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13426, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13432, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13438, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13444, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13450, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13456, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13462, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13468, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13474, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13484, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13516, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13548, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13580, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13612, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13644, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13676, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13708, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13740, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13772, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13804, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13836, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13868, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13900, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13932, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13964, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13996, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14028, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14060, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14124, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14188, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14252, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14316, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14380, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14444, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14508, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14572, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14636, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14642, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14706, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(14713, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14716, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14797, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(14799, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(14809, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(14811, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(14817, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14829, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14841, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(14848, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14852, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14864, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14870, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14876, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14882, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14888, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14894, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14900, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14906, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14912, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14918, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14924, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14930, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14936, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14942, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14948, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14954, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14960, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14966, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14970, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14974, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14978, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14982, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14986, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14990, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14994, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14998, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15002, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15006, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15010, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15014, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15018, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15022, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15026, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15062, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(15090, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(15102, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(15105, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("hydration", ["0", "1", "2", "3"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15147, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15149, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15151, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15153, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15155, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15157, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15159, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15161, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15165, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15167, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15169, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15171, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15173, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15175, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15177, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15179, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15181, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15183, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15185, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15187, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15195, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15203, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15211, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15219, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15227, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15235, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15243, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15251, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15259, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15267, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15276, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15279, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(15294, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(15296, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15376, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15456, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15536, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15616, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15696, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15776, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15856, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15936, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16016, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16096, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16176, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16256, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16336, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16416, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16422, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16428, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16434, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16440, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16446, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16452, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16458, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16464, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16470, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16476, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16482, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16488, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16494, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16818, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17142, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17466, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17790, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18114, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18438, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18762, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19086, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19410, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19734, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20058, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20382, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20706, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20738, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20742, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(20754, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(20762, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(20772, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20784, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20801, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20805, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20837, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20841, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20845, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20849, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20853, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20857, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20861, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20865, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20869, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20873, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20877, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20909, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20941, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(20945, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20948, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20951, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20954, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20962, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20965, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20968, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20971, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20977, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(21004, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(21034, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21040, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21046, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(21048, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(21050, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(21082, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(21114, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21178, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21242, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21274, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21306, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21386, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21466, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21490, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21514, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21578, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21642, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21674, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21706, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21714, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21722, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(21726, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(21738, 4, + [ + new("mode", ["start", "log", "fail", "accept"], 1) + ]), + new(21743, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(21752, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(21768, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(21792, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(21821, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(21832, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21912, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22236, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22246, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22252, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22332, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22657, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22737, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22743, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(22745, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(22769, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23096, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23112, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23128, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23144, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23160, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23176, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23192, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23208, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23224, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23240, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23256, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23272, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23288, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23304, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23320, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23336, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23352, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23368, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23370, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23372, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23374, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23376, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23378, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23380, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23382, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23384, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23386, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23388, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23390, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23392, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23394, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23396, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23398, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23400, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23404, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23416, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23428, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23440, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23453, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23459, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23539, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23864, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23870, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23950, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(24276, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24282, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24362, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(24690, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24786, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25171, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(25299, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(25301, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25327, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25407, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25487, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25567, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25647, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25653, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25659, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25665, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25679, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25759, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25839, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25919, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25999, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26005, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26011, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26017, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26023, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26087, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26151, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26215, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26279, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26343, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26407, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26471, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(26535, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26599, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26663, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26727, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26791, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26855, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26919, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26983, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27047, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27049, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27051, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27053, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27055, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27057, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27059, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27061, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27063, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(27067, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(27071, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(27075, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(27079, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(27083, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(27087, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(27091, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(27095, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27119, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27143, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27167, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27191, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27215, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27239, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27263, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(27287, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27319, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27351, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27383, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27415, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27447, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27479, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27511, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27543, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27567, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27591, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27615, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27639, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27663, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27687, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27711, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27735, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27756, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(27808, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(27814, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(27830, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(27846, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("segment_amount", ["1", "2", "3", "4"], 1) + ]), + new(27863, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27895, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27903, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27919, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(27923, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(27927, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28007, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28013, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(28338, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28418, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28424, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(28749, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28829, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28835, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(29160, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29240, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29246, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(29573, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29582, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29585, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29588, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29593, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29609, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(29657, 12, + [ + new("ominous", ["true", "false"], 6), + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + new(29669, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("ominous", ["true", "false"], 4), + new("vault_state", ["inactive", "active", "unlocking", "ejecting"], 1) + ]), + new(29701, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29704, 162, + [ + new("bottom", ["true", "false"], 81), + new("east", ["none", "low", "tall"], 27), + new("north", ["none", "low", "tall"], 9), + new("south", ["none", "low", "tall"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(29866, 2, + [ + new("tip", ["true", "false"], 1) + ]), + ]; + // + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette262.cs b/MinecraftClient/Mapping/BlockPalettes/Palette262.cs new file mode 100644 index 00000000..7b79dc19 --- /dev/null +++ b/MinecraftClient/Mapping/BlockPalettes/Palette262.cs @@ -0,0 +1,6872 @@ +using System.Collections.Generic; + +namespace MinecraftClient.Mapping.BlockPalettes +{ + public class Palette262 : BlockPalette + { + private static readonly Dictionary materials = new(); + + static Palette262() + { + for (int i = 0; i <= 0; i++) + materials[i] = Material.Air; + for (int i = 1; i <= 1; i++) + materials[i] = Material.Stone; + for (int i = 2; i <= 2; i++) + materials[i] = Material.Granite; + for (int i = 3; i <= 3; i++) + materials[i] = Material.PolishedGranite; + for (int i = 4; i <= 4; i++) + materials[i] = Material.Diorite; + for (int i = 5; i <= 5; i++) + materials[i] = Material.PolishedDiorite; + for (int i = 6; i <= 6; i++) + materials[i] = Material.Andesite; + for (int i = 7; i <= 7; i++) + materials[i] = Material.PolishedAndesite; + for (int i = 8; i <= 9; i++) + materials[i] = Material.GrassBlock; + for (int i = 10; i <= 10; i++) + materials[i] = Material.Dirt; + for (int i = 11; i <= 11; i++) + materials[i] = Material.CoarseDirt; + for (int i = 12; i <= 13; i++) + materials[i] = Material.Podzol; + for (int i = 14; i <= 14; i++) + materials[i] = Material.Cobblestone; + for (int i = 15; i <= 15; i++) + materials[i] = Material.OakPlanks; + for (int i = 16; i <= 16; i++) + materials[i] = Material.SprucePlanks; + for (int i = 17; i <= 17; i++) + materials[i] = Material.BirchPlanks; + for (int i = 18; i <= 18; i++) + materials[i] = Material.JunglePlanks; + for (int i = 19; i <= 19; i++) + materials[i] = Material.AcaciaPlanks; + for (int i = 20; i <= 20; i++) + materials[i] = Material.CherryPlanks; + for (int i = 21; i <= 21; i++) + materials[i] = Material.DarkOakPlanks; + for (int i = 22; i <= 24; i++) + materials[i] = Material.PaleOakWood; + for (int i = 25; i <= 25; i++) + materials[i] = Material.PaleOakPlanks; + for (int i = 26; i <= 26; i++) + materials[i] = Material.MangrovePlanks; + for (int i = 27; i <= 27; i++) + materials[i] = Material.BambooPlanks; + for (int i = 28; i <= 28; i++) + materials[i] = Material.BambooMosaic; + for (int i = 29; i <= 30; i++) + materials[i] = Material.OakSapling; + for (int i = 31; i <= 32; i++) + materials[i] = Material.SpruceSapling; + for (int i = 33; i <= 34; i++) + materials[i] = Material.BirchSapling; + for (int i = 35; i <= 36; i++) + materials[i] = Material.JungleSapling; + for (int i = 37; i <= 38; i++) + materials[i] = Material.AcaciaSapling; + for (int i = 39; i <= 40; i++) + materials[i] = Material.CherrySapling; + for (int i = 41; i <= 42; i++) + materials[i] = Material.DarkOakSapling; + for (int i = 43; i <= 44; i++) + materials[i] = Material.PaleOakSapling; + for (int i = 45; i <= 84; i++) + materials[i] = Material.MangrovePropagule; + for (int i = 85; i <= 85; i++) + materials[i] = Material.Bedrock; + for (int i = 86; i <= 101; i++) + materials[i] = Material.Water; + for (int i = 102; i <= 117; i++) + materials[i] = Material.Lava; + for (int i = 118; i <= 118; i++) + materials[i] = Material.Sand; + for (int i = 119; i <= 122; i++) + materials[i] = Material.SuspiciousSand; + for (int i = 123; i <= 123; i++) + materials[i] = Material.RedSand; + for (int i = 124; i <= 124; i++) + materials[i] = Material.Gravel; + for (int i = 125; i <= 128; i++) + materials[i] = Material.SuspiciousGravel; + for (int i = 129; i <= 129; i++) + materials[i] = Material.GoldOre; + for (int i = 130; i <= 130; i++) + materials[i] = Material.DeepslateGoldOre; + for (int i = 131; i <= 131; i++) + materials[i] = Material.IronOre; + for (int i = 132; i <= 132; i++) + materials[i] = Material.DeepslateIronOre; + for (int i = 133; i <= 133; i++) + materials[i] = Material.CoalOre; + for (int i = 134; i <= 134; i++) + materials[i] = Material.DeepslateCoalOre; + for (int i = 135; i <= 135; i++) + materials[i] = Material.NetherGoldOre; + for (int i = 136; i <= 138; i++) + materials[i] = Material.OakLog; + for (int i = 139; i <= 141; i++) + materials[i] = Material.SpruceLog; + for (int i = 142; i <= 144; i++) + materials[i] = Material.BirchLog; + for (int i = 145; i <= 147; i++) + materials[i] = Material.JungleLog; + for (int i = 148; i <= 150; i++) + materials[i] = Material.AcaciaLog; + for (int i = 151; i <= 153; i++) + materials[i] = Material.CherryLog; + for (int i = 154; i <= 156; i++) + materials[i] = Material.DarkOakLog; + for (int i = 157; i <= 159; i++) + materials[i] = Material.PaleOakLog; + for (int i = 160; i <= 162; i++) + materials[i] = Material.MangroveLog; + for (int i = 163; i <= 164; i++) + materials[i] = Material.MangroveRoots; + for (int i = 165; i <= 167; i++) + materials[i] = Material.MuddyMangroveRoots; + for (int i = 168; i <= 170; i++) + materials[i] = Material.BambooBlock; + for (int i = 171; i <= 173; i++) + materials[i] = Material.StrippedSpruceLog; + for (int i = 174; i <= 176; i++) + materials[i] = Material.StrippedBirchLog; + for (int i = 177; i <= 179; i++) + materials[i] = Material.StrippedJungleLog; + for (int i = 180; i <= 182; i++) + materials[i] = Material.StrippedAcaciaLog; + for (int i = 183; i <= 185; i++) + materials[i] = Material.StrippedCherryLog; + for (int i = 186; i <= 188; i++) + materials[i] = Material.StrippedDarkOakLog; + for (int i = 189; i <= 191; i++) + materials[i] = Material.StrippedPaleOakLog; + for (int i = 192; i <= 194; i++) + materials[i] = Material.StrippedOakLog; + for (int i = 195; i <= 197; i++) + materials[i] = Material.StrippedMangroveLog; + for (int i = 198; i <= 200; i++) + materials[i] = Material.StrippedBambooBlock; + for (int i = 201; i <= 203; i++) + materials[i] = Material.OakWood; + for (int i = 204; i <= 206; i++) + materials[i] = Material.SpruceWood; + for (int i = 207; i <= 209; i++) + materials[i] = Material.BirchWood; + for (int i = 210; i <= 212; i++) + materials[i] = Material.JungleWood; + for (int i = 213; i <= 215; i++) + materials[i] = Material.AcaciaWood; + for (int i = 216; i <= 218; i++) + materials[i] = Material.CherryWood; + for (int i = 219; i <= 221; i++) + materials[i] = Material.DarkOakWood; + for (int i = 222; i <= 224; i++) + materials[i] = Material.MangroveWood; + for (int i = 225; i <= 227; i++) + materials[i] = Material.StrippedOakWood; + for (int i = 228; i <= 230; i++) + materials[i] = Material.StrippedSpruceWood; + for (int i = 231; i <= 233; i++) + materials[i] = Material.StrippedBirchWood; + for (int i = 234; i <= 236; i++) + materials[i] = Material.StrippedJungleWood; + for (int i = 237; i <= 239; i++) + materials[i] = Material.StrippedAcaciaWood; + for (int i = 240; i <= 242; i++) + materials[i] = Material.StrippedCherryWood; + for (int i = 243; i <= 245; i++) + materials[i] = Material.StrippedDarkOakWood; + for (int i = 246; i <= 248; i++) + materials[i] = Material.StrippedPaleOakWood; + for (int i = 249; i <= 251; i++) + materials[i] = Material.StrippedMangroveWood; + for (int i = 252; i <= 279; i++) + materials[i] = Material.OakLeaves; + for (int i = 280; i <= 307; i++) + materials[i] = Material.SpruceLeaves; + for (int i = 308; i <= 335; i++) + materials[i] = Material.BirchLeaves; + for (int i = 336; i <= 363; i++) + materials[i] = Material.JungleLeaves; + for (int i = 364; i <= 391; i++) + materials[i] = Material.AcaciaLeaves; + for (int i = 392; i <= 419; i++) + materials[i] = Material.CherryLeaves; + for (int i = 420; i <= 447; i++) + materials[i] = Material.DarkOakLeaves; + for (int i = 448; i <= 475; i++) + materials[i] = Material.PaleOakLeaves; + for (int i = 476; i <= 503; i++) + materials[i] = Material.MangroveLeaves; + for (int i = 504; i <= 531; i++) + materials[i] = Material.AzaleaLeaves; + for (int i = 532; i <= 559; i++) + materials[i] = Material.FloweringAzaleaLeaves; + for (int i = 560; i <= 560; i++) + materials[i] = Material.Sponge; + for (int i = 561; i <= 561; i++) + materials[i] = Material.WetSponge; + for (int i = 562; i <= 562; i++) + materials[i] = Material.Glass; + for (int i = 563; i <= 563; i++) + materials[i] = Material.LapisOre; + for (int i = 564; i <= 564; i++) + materials[i] = Material.DeepslateLapisOre; + for (int i = 565; i <= 565; i++) + materials[i] = Material.LapisBlock; + for (int i = 566; i <= 577; i++) + materials[i] = Material.Dispenser; + for (int i = 578; i <= 578; i++) + materials[i] = Material.Sandstone; + for (int i = 579; i <= 579; i++) + materials[i] = Material.ChiseledSandstone; + for (int i = 580; i <= 580; i++) + materials[i] = Material.CutSandstone; + for (int i = 581; i <= 1930; i++) + materials[i] = Material.NoteBlock; + for (int i = 1931; i <= 1946; i++) + materials[i] = Material.WhiteBed; + for (int i = 1947; i <= 1962; i++) + materials[i] = Material.OrangeBed; + for (int i = 1963; i <= 1978; i++) + materials[i] = Material.MagentaBed; + for (int i = 1979; i <= 1994; i++) + materials[i] = Material.LightBlueBed; + for (int i = 1995; i <= 2010; i++) + materials[i] = Material.YellowBed; + for (int i = 2011; i <= 2026; i++) + materials[i] = Material.LimeBed; + for (int i = 2027; i <= 2042; i++) + materials[i] = Material.PinkBed; + for (int i = 2043; i <= 2058; i++) + materials[i] = Material.GrayBed; + for (int i = 2059; i <= 2074; i++) + materials[i] = Material.LightGrayBed; + for (int i = 2075; i <= 2090; i++) + materials[i] = Material.CyanBed; + for (int i = 2091; i <= 2106; i++) + materials[i] = Material.PurpleBed; + for (int i = 2107; i <= 2122; i++) + materials[i] = Material.BlueBed; + for (int i = 2123; i <= 2138; i++) + materials[i] = Material.BrownBed; + for (int i = 2139; i <= 2154; i++) + materials[i] = Material.GreenBed; + for (int i = 2155; i <= 2170; i++) + materials[i] = Material.RedBed; + for (int i = 2171; i <= 2186; i++) + materials[i] = Material.BlackBed; + for (int i = 2187; i <= 2210; i++) + materials[i] = Material.PoweredRail; + for (int i = 2211; i <= 2234; i++) + materials[i] = Material.DetectorRail; + for (int i = 2235; i <= 2246; i++) + materials[i] = Material.StickyPiston; + for (int i = 2247; i <= 2247; i++) + materials[i] = Material.Cobweb; + for (int i = 2248; i <= 2248; i++) + materials[i] = Material.ShortGrass; + for (int i = 2249; i <= 2249; i++) + materials[i] = Material.Fern; + for (int i = 2250; i <= 2250; i++) + materials[i] = Material.DeadBush; + for (int i = 2251; i <= 2251; i++) + materials[i] = Material.Bush; + for (int i = 2252; i <= 2252; i++) + materials[i] = Material.ShortDryGrass; + for (int i = 2253; i <= 2253; i++) + materials[i] = Material.TallDryGrass; + for (int i = 2254; i <= 2254; i++) + materials[i] = Material.Seagrass; + for (int i = 2255; i <= 2256; i++) + materials[i] = Material.TallSeagrass; + for (int i = 2257; i <= 2268; i++) + materials[i] = Material.Piston; + for (int i = 2269; i <= 2292; i++) + materials[i] = Material.PistonHead; + for (int i = 2293; i <= 2293; i++) + materials[i] = Material.WhiteWool; + for (int i = 2294; i <= 2294; i++) + materials[i] = Material.OrangeWool; + for (int i = 2295; i <= 2295; i++) + materials[i] = Material.MagentaWool; + for (int i = 2296; i <= 2296; i++) + materials[i] = Material.LightBlueWool; + for (int i = 2297; i <= 2297; i++) + materials[i] = Material.YellowWool; + for (int i = 2298; i <= 2298; i++) + materials[i] = Material.LimeWool; + for (int i = 2299; i <= 2299; i++) + materials[i] = Material.PinkWool; + for (int i = 2300; i <= 2300; i++) + materials[i] = Material.GrayWool; + for (int i = 2301; i <= 2301; i++) + materials[i] = Material.LightGrayWool; + for (int i = 2302; i <= 2302; i++) + materials[i] = Material.CyanWool; + for (int i = 2303; i <= 2303; i++) + materials[i] = Material.PurpleWool; + for (int i = 2304; i <= 2304; i++) + materials[i] = Material.BlueWool; + for (int i = 2305; i <= 2305; i++) + materials[i] = Material.BrownWool; + for (int i = 2306; i <= 2306; i++) + materials[i] = Material.GreenWool; + for (int i = 2307; i <= 2307; i++) + materials[i] = Material.RedWool; + for (int i = 2308; i <= 2308; i++) + materials[i] = Material.BlackWool; + for (int i = 2309; i <= 2320; i++) + materials[i] = Material.MovingPiston; + for (int i = 2321; i <= 2321; i++) + materials[i] = Material.Dandelion; + for (int i = 2322; i <= 2322; i++) + materials[i] = Material.GoldenDandelion; + for (int i = 2323; i <= 2323; i++) + materials[i] = Material.Torchflower; + for (int i = 2324; i <= 2324; i++) + materials[i] = Material.Poppy; + for (int i = 2325; i <= 2325; i++) + materials[i] = Material.BlueOrchid; + for (int i = 2326; i <= 2326; i++) + materials[i] = Material.Allium; + for (int i = 2327; i <= 2327; i++) + materials[i] = Material.AzureBluet; + for (int i = 2328; i <= 2328; i++) + materials[i] = Material.RedTulip; + for (int i = 2329; i <= 2329; i++) + materials[i] = Material.OrangeTulip; + for (int i = 2330; i <= 2330; i++) + materials[i] = Material.WhiteTulip; + for (int i = 2331; i <= 2331; i++) + materials[i] = Material.PinkTulip; + for (int i = 2332; i <= 2332; i++) + materials[i] = Material.OxeyeDaisy; + for (int i = 2333; i <= 2333; i++) + materials[i] = Material.Cornflower; + for (int i = 2334; i <= 2334; i++) + materials[i] = Material.WitherRose; + for (int i = 2335; i <= 2335; i++) + materials[i] = Material.LilyOfTheValley; + for (int i = 2336; i <= 2336; i++) + materials[i] = Material.BrownMushroom; + for (int i = 2337; i <= 2337; i++) + materials[i] = Material.RedMushroom; + for (int i = 2338; i <= 2338; i++) + materials[i] = Material.GoldBlock; + for (int i = 2339; i <= 2339; i++) + materials[i] = Material.IronBlock; + for (int i = 2340; i <= 2340; i++) + materials[i] = Material.Bricks; + for (int i = 2341; i <= 2342; i++) + materials[i] = Material.Tnt; + for (int i = 2343; i <= 2343; i++) + materials[i] = Material.Bookshelf; + for (int i = 2344; i <= 2599; i++) + materials[i] = Material.ChiseledBookshelf; + for (int i = 2600; i <= 2663; i++) + materials[i] = Material.AcaciaShelf; + for (int i = 2664; i <= 2727; i++) + materials[i] = Material.BambooShelf; + for (int i = 2728; i <= 2791; i++) + materials[i] = Material.BirchShelf; + for (int i = 2792; i <= 2855; i++) + materials[i] = Material.CherryShelf; + for (int i = 2856; i <= 2919; i++) + materials[i] = Material.CrimsonShelf; + for (int i = 2920; i <= 2983; i++) + materials[i] = Material.DarkOakShelf; + for (int i = 2984; i <= 3047; i++) + materials[i] = Material.JungleShelf; + for (int i = 3048; i <= 3111; i++) + materials[i] = Material.MangroveShelf; + for (int i = 3112; i <= 3175; i++) + materials[i] = Material.OakShelf; + for (int i = 3176; i <= 3239; i++) + materials[i] = Material.PaleOakShelf; + for (int i = 3240; i <= 3303; i++) + materials[i] = Material.SpruceShelf; + for (int i = 3304; i <= 3367; i++) + materials[i] = Material.WarpedShelf; + for (int i = 3368; i <= 3368; i++) + materials[i] = Material.MossyCobblestone; + for (int i = 3369; i <= 3369; i++) + materials[i] = Material.Obsidian; + for (int i = 3370; i <= 3370; i++) + materials[i] = Material.Torch; + for (int i = 3371; i <= 3374; i++) + materials[i] = Material.WallTorch; + for (int i = 3375; i <= 3886; i++) + materials[i] = Material.Fire; + for (int i = 3887; i <= 3887; i++) + materials[i] = Material.SoulFire; + for (int i = 3888; i <= 3888; i++) + materials[i] = Material.Spawner; + for (int i = 3889; i <= 3906; i++) + materials[i] = Material.CreakingHeart; + for (int i = 3907; i <= 3986; i++) + materials[i] = Material.OakStairs; + for (int i = 3987; i <= 4010; i++) + materials[i] = Material.Chest; + for (int i = 4011; i <= 5306; i++) + materials[i] = Material.RedstoneWire; + for (int i = 5307; i <= 5307; i++) + materials[i] = Material.DiamondOre; + for (int i = 5308; i <= 5308; i++) + materials[i] = Material.DeepslateDiamondOre; + for (int i = 5309; i <= 5309; i++) + materials[i] = Material.DiamondBlock; + for (int i = 5310; i <= 5310; i++) + materials[i] = Material.CraftingTable; + for (int i = 5311; i <= 5318; i++) + materials[i] = Material.Wheat; + for (int i = 5319; i <= 5326; i++) + materials[i] = Material.Farmland; + for (int i = 5327; i <= 5334; i++) + materials[i] = Material.Furnace; + for (int i = 5335; i <= 5366; i++) + materials[i] = Material.OakSign; + for (int i = 5367; i <= 5398; i++) + materials[i] = Material.SpruceSign; + for (int i = 5399; i <= 5430; i++) + materials[i] = Material.BirchSign; + for (int i = 5431; i <= 5462; i++) + materials[i] = Material.AcaciaSign; + for (int i = 5463; i <= 5494; i++) + materials[i] = Material.CherrySign; + for (int i = 5495; i <= 5526; i++) + materials[i] = Material.JungleSign; + for (int i = 5527; i <= 5558; i++) + materials[i] = Material.DarkOakSign; + for (int i = 5559; i <= 5590; i++) + materials[i] = Material.PaleOakSign; + for (int i = 5591; i <= 5622; i++) + materials[i] = Material.MangroveSign; + for (int i = 5623; i <= 5654; i++) + materials[i] = Material.BambooSign; + for (int i = 5655; i <= 5718; i++) + materials[i] = Material.OakDoor; + for (int i = 5719; i <= 5726; i++) + materials[i] = Material.Ladder; + for (int i = 5727; i <= 5746; i++) + materials[i] = Material.Rail; + for (int i = 5747; i <= 5826; i++) + materials[i] = Material.CobblestoneStairs; + for (int i = 5827; i <= 5834; i++) + materials[i] = Material.OakWallSign; + for (int i = 5835; i <= 5842; i++) + materials[i] = Material.SpruceWallSign; + for (int i = 5843; i <= 5850; i++) + materials[i] = Material.BirchWallSign; + for (int i = 5851; i <= 5858; i++) + materials[i] = Material.AcaciaWallSign; + for (int i = 5859; i <= 5866; i++) + materials[i] = Material.CherryWallSign; + for (int i = 5867; i <= 5874; i++) + materials[i] = Material.JungleWallSign; + for (int i = 5875; i <= 5882; i++) + materials[i] = Material.DarkOakWallSign; + for (int i = 5883; i <= 5890; i++) + materials[i] = Material.PaleOakWallSign; + for (int i = 5891; i <= 5898; i++) + materials[i] = Material.MangroveWallSign; + for (int i = 5899; i <= 5906; i++) + materials[i] = Material.BambooWallSign; + for (int i = 5907; i <= 5970; i++) + materials[i] = Material.OakHangingSign; + for (int i = 5971; i <= 6034; i++) + materials[i] = Material.SpruceHangingSign; + for (int i = 6035; i <= 6098; i++) + materials[i] = Material.BirchHangingSign; + for (int i = 6099; i <= 6162; i++) + materials[i] = Material.AcaciaHangingSign; + for (int i = 6163; i <= 6226; i++) + materials[i] = Material.CherryHangingSign; + for (int i = 6227; i <= 6290; i++) + materials[i] = Material.JungleHangingSign; + for (int i = 6291; i <= 6354; i++) + materials[i] = Material.DarkOakHangingSign; + for (int i = 6355; i <= 6418; i++) + materials[i] = Material.PaleOakHangingSign; + for (int i = 6419; i <= 6482; i++) + materials[i] = Material.CrimsonHangingSign; + for (int i = 6483; i <= 6546; i++) + materials[i] = Material.WarpedHangingSign; + for (int i = 6547; i <= 6610; i++) + materials[i] = Material.MangroveHangingSign; + for (int i = 6611; i <= 6674; i++) + materials[i] = Material.BambooHangingSign; + for (int i = 6675; i <= 6682; i++) + materials[i] = Material.OakWallHangingSign; + for (int i = 6683; i <= 6690; i++) + materials[i] = Material.SpruceWallHangingSign; + for (int i = 6691; i <= 6698; i++) + materials[i] = Material.BirchWallHangingSign; + for (int i = 6699; i <= 6706; i++) + materials[i] = Material.AcaciaWallHangingSign; + for (int i = 6707; i <= 6714; i++) + materials[i] = Material.CherryWallHangingSign; + for (int i = 6715; i <= 6722; i++) + materials[i] = Material.JungleWallHangingSign; + for (int i = 6723; i <= 6730; i++) + materials[i] = Material.DarkOakWallHangingSign; + for (int i = 6731; i <= 6738; i++) + materials[i] = Material.PaleOakWallHangingSign; + for (int i = 6739; i <= 6746; i++) + materials[i] = Material.MangroveWallHangingSign; + for (int i = 6747; i <= 6754; i++) + materials[i] = Material.CrimsonWallHangingSign; + for (int i = 6755; i <= 6762; i++) + materials[i] = Material.WarpedWallHangingSign; + for (int i = 6763; i <= 6770; i++) + materials[i] = Material.BambooWallHangingSign; + for (int i = 6771; i <= 6794; i++) + materials[i] = Material.Lever; + for (int i = 6795; i <= 6796; i++) + materials[i] = Material.StonePressurePlate; + for (int i = 6797; i <= 6860; i++) + materials[i] = Material.IronDoor; + for (int i = 6861; i <= 6862; i++) + materials[i] = Material.OakPressurePlate; + for (int i = 6863; i <= 6864; i++) + materials[i] = Material.SprucePressurePlate; + for (int i = 6865; i <= 6866; i++) + materials[i] = Material.BirchPressurePlate; + for (int i = 6867; i <= 6868; i++) + materials[i] = Material.JunglePressurePlate; + for (int i = 6869; i <= 6870; i++) + materials[i] = Material.AcaciaPressurePlate; + for (int i = 6871; i <= 6872; i++) + materials[i] = Material.CherryPressurePlate; + for (int i = 6873; i <= 6874; i++) + materials[i] = Material.DarkOakPressurePlate; + for (int i = 6875; i <= 6876; i++) + materials[i] = Material.PaleOakPressurePlate; + for (int i = 6877; i <= 6878; i++) + materials[i] = Material.MangrovePressurePlate; + for (int i = 6879; i <= 6880; i++) + materials[i] = Material.BambooPressurePlate; + for (int i = 6881; i <= 6882; i++) + materials[i] = Material.RedstoneOre; + for (int i = 6883; i <= 6884; i++) + materials[i] = Material.DeepslateRedstoneOre; + for (int i = 6885; i <= 6886; i++) + materials[i] = Material.RedstoneTorch; + for (int i = 6887; i <= 6894; i++) + materials[i] = Material.RedstoneWallTorch; + for (int i = 6895; i <= 6918; i++) + materials[i] = Material.StoneButton; + for (int i = 6919; i <= 6926; i++) + materials[i] = Material.Snow; + for (int i = 6927; i <= 6927; i++) + materials[i] = Material.Ice; + for (int i = 6928; i <= 6928; i++) + materials[i] = Material.SnowBlock; + for (int i = 6929; i <= 6944; i++) + materials[i] = Material.Cactus; + for (int i = 6945; i <= 6945; i++) + materials[i] = Material.CactusFlower; + for (int i = 6946; i <= 6946; i++) + materials[i] = Material.Clay; + for (int i = 6947; i <= 6962; i++) + materials[i] = Material.SugarCane; + for (int i = 6963; i <= 6964; i++) + materials[i] = Material.Jukebox; + for (int i = 6965; i <= 6996; i++) + materials[i] = Material.OakFence; + for (int i = 6997; i <= 6997; i++) + materials[i] = Material.Netherrack; + for (int i = 6998; i <= 6998; i++) + materials[i] = Material.SoulSand; + for (int i = 6999; i <= 6999; i++) + materials[i] = Material.SoulSoil; + for (int i = 7000; i <= 7002; i++) + materials[i] = Material.Basalt; + for (int i = 7003; i <= 7005; i++) + materials[i] = Material.PolishedBasalt; + for (int i = 7006; i <= 7006; i++) + materials[i] = Material.SoulTorch; + for (int i = 7007; i <= 7010; i++) + materials[i] = Material.SoulWallTorch; + for (int i = 7011; i <= 7011; i++) + materials[i] = Material.CopperTorch; + for (int i = 7012; i <= 7015; i++) + materials[i] = Material.CopperWallTorch; + for (int i = 7016; i <= 7016; i++) + materials[i] = Material.Glowstone; + for (int i = 7017; i <= 7018; i++) + materials[i] = Material.NetherPortal; + for (int i = 7019; i <= 7022; i++) + materials[i] = Material.CarvedPumpkin; + for (int i = 7023; i <= 7026; i++) + materials[i] = Material.JackOLantern; + for (int i = 7027; i <= 7033; i++) + materials[i] = Material.Cake; + for (int i = 7034; i <= 7097; i++) + materials[i] = Material.Repeater; + for (int i = 7098; i <= 7098; i++) + materials[i] = Material.WhiteStainedGlass; + for (int i = 7099; i <= 7099; i++) + materials[i] = Material.OrangeStainedGlass; + for (int i = 7100; i <= 7100; i++) + materials[i] = Material.MagentaStainedGlass; + for (int i = 7101; i <= 7101; i++) + materials[i] = Material.LightBlueStainedGlass; + for (int i = 7102; i <= 7102; i++) + materials[i] = Material.YellowStainedGlass; + for (int i = 7103; i <= 7103; i++) + materials[i] = Material.LimeStainedGlass; + for (int i = 7104; i <= 7104; i++) + materials[i] = Material.PinkStainedGlass; + for (int i = 7105; i <= 7105; i++) + materials[i] = Material.GrayStainedGlass; + for (int i = 7106; i <= 7106; i++) + materials[i] = Material.LightGrayStainedGlass; + for (int i = 7107; i <= 7107; i++) + materials[i] = Material.CyanStainedGlass; + for (int i = 7108; i <= 7108; i++) + materials[i] = Material.PurpleStainedGlass; + for (int i = 7109; i <= 7109; i++) + materials[i] = Material.BlueStainedGlass; + for (int i = 7110; i <= 7110; i++) + materials[i] = Material.BrownStainedGlass; + for (int i = 7111; i <= 7111; i++) + materials[i] = Material.GreenStainedGlass; + for (int i = 7112; i <= 7112; i++) + materials[i] = Material.RedStainedGlass; + for (int i = 7113; i <= 7113; i++) + materials[i] = Material.BlackStainedGlass; + for (int i = 7114; i <= 7177; i++) + materials[i] = Material.OakTrapdoor; + for (int i = 7178; i <= 7241; i++) + materials[i] = Material.SpruceTrapdoor; + for (int i = 7242; i <= 7305; i++) + materials[i] = Material.BirchTrapdoor; + for (int i = 7306; i <= 7369; i++) + materials[i] = Material.JungleTrapdoor; + for (int i = 7370; i <= 7433; i++) + materials[i] = Material.AcaciaTrapdoor; + for (int i = 7434; i <= 7497; i++) + materials[i] = Material.CherryTrapdoor; + for (int i = 7498; i <= 7561; i++) + materials[i] = Material.DarkOakTrapdoor; + for (int i = 7562; i <= 7625; i++) + materials[i] = Material.PaleOakTrapdoor; + for (int i = 7626; i <= 7689; i++) + materials[i] = Material.MangroveTrapdoor; + for (int i = 7690; i <= 7753; i++) + materials[i] = Material.BambooTrapdoor; + for (int i = 7754; i <= 7754; i++) + materials[i] = Material.StoneBricks; + for (int i = 7755; i <= 7755; i++) + materials[i] = Material.MossyStoneBricks; + for (int i = 7756; i <= 7756; i++) + materials[i] = Material.CrackedStoneBricks; + for (int i = 7757; i <= 7757; i++) + materials[i] = Material.ChiseledStoneBricks; + for (int i = 7758; i <= 7758; i++) + materials[i] = Material.PackedMud; + for (int i = 7759; i <= 7759; i++) + materials[i] = Material.MudBricks; + for (int i = 7760; i <= 7760; i++) + materials[i] = Material.InfestedStone; + for (int i = 7761; i <= 7761; i++) + materials[i] = Material.InfestedCobblestone; + for (int i = 7762; i <= 7762; i++) + materials[i] = Material.InfestedStoneBricks; + for (int i = 7763; i <= 7763; i++) + materials[i] = Material.InfestedMossyStoneBricks; + for (int i = 7764; i <= 7764; i++) + materials[i] = Material.InfestedCrackedStoneBricks; + for (int i = 7765; i <= 7765; i++) + materials[i] = Material.InfestedChiseledStoneBricks; + for (int i = 7766; i <= 7829; i++) + materials[i] = Material.BrownMushroomBlock; + for (int i = 7830; i <= 7893; i++) + materials[i] = Material.RedMushroomBlock; + for (int i = 7894; i <= 7957; i++) + materials[i] = Material.MushroomStem; + for (int i = 7958; i <= 7989; i++) + materials[i] = Material.IronBars; + for (int i = 7990; i <= 8021; i++) + materials[i] = Material.CopperBars; + for (int i = 8022; i <= 8053; i++) + materials[i] = Material.ExposedCopperBars; + for (int i = 8054; i <= 8085; i++) + materials[i] = Material.WeatheredCopperBars; + for (int i = 8086; i <= 8117; i++) + materials[i] = Material.OxidizedCopperBars; + for (int i = 8118; i <= 8149; i++) + materials[i] = Material.WaxedCopperBars; + for (int i = 8150; i <= 8181; i++) + materials[i] = Material.WaxedExposedCopperBars; + for (int i = 8182; i <= 8213; i++) + materials[i] = Material.WaxedWeatheredCopperBars; + for (int i = 8214; i <= 8245; i++) + materials[i] = Material.WaxedOxidizedCopperBars; + for (int i = 8246; i <= 8251; i++) + materials[i] = Material.IronChain; + for (int i = 8252; i <= 8257; i++) + materials[i] = Material.CopperChain; + for (int i = 8258; i <= 8263; i++) + materials[i] = Material.ExposedCopperChain; + for (int i = 8264; i <= 8269; i++) + materials[i] = Material.WeatheredCopperChain; + for (int i = 8270; i <= 8275; i++) + materials[i] = Material.OxidizedCopperChain; + for (int i = 8276; i <= 8281; i++) + materials[i] = Material.WaxedCopperChain; + for (int i = 8282; i <= 8287; i++) + materials[i] = Material.WaxedExposedCopperChain; + for (int i = 8288; i <= 8293; i++) + materials[i] = Material.WaxedWeatheredCopperChain; + for (int i = 8294; i <= 8299; i++) + materials[i] = Material.WaxedOxidizedCopperChain; + for (int i = 8300; i <= 8331; i++) + materials[i] = Material.GlassPane; + for (int i = 8332; i <= 8332; i++) + materials[i] = Material.Pumpkin; + for (int i = 8333; i <= 8333; i++) + materials[i] = Material.Melon; + for (int i = 8334; i <= 8337; i++) + materials[i] = Material.AttachedPumpkinStem; + for (int i = 8338; i <= 8341; i++) + materials[i] = Material.AttachedMelonStem; + for (int i = 8342; i <= 8349; i++) + materials[i] = Material.PumpkinStem; + for (int i = 8350; i <= 8357; i++) + materials[i] = Material.MelonStem; + for (int i = 8358; i <= 8389; i++) + materials[i] = Material.Vine; + for (int i = 8390; i <= 8517; i++) + materials[i] = Material.GlowLichen; + for (int i = 8518; i <= 8645; i++) + materials[i] = Material.ResinClump; + for (int i = 8646; i <= 8677; i++) + materials[i] = Material.OakFenceGate; + for (int i = 8678; i <= 8757; i++) + materials[i] = Material.BrickStairs; + for (int i = 8758; i <= 8837; i++) + materials[i] = Material.StoneBrickStairs; + for (int i = 8838; i <= 8917; i++) + materials[i] = Material.MudBrickStairs; + for (int i = 8918; i <= 8919; i++) + materials[i] = Material.Mycelium; + for (int i = 8920; i <= 8920; i++) + materials[i] = Material.LilyPad; + for (int i = 8921; i <= 8921; i++) + materials[i] = Material.ResinBlock; + for (int i = 8922; i <= 8922; i++) + materials[i] = Material.ResinBricks; + for (int i = 8923; i <= 9002; i++) + materials[i] = Material.ResinBrickStairs; + for (int i = 9003; i <= 9008; i++) + materials[i] = Material.ResinBrickSlab; + for (int i = 9009; i <= 9332; i++) + materials[i] = Material.ResinBrickWall; + for (int i = 9333; i <= 9333; i++) + materials[i] = Material.ChiseledResinBricks; + for (int i = 9334; i <= 9334; i++) + materials[i] = Material.NetherBricks; + for (int i = 9335; i <= 9366; i++) + materials[i] = Material.NetherBrickFence; + for (int i = 9367; i <= 9446; i++) + materials[i] = Material.NetherBrickStairs; + for (int i = 9447; i <= 9450; i++) + materials[i] = Material.NetherWart; + for (int i = 9451; i <= 9451; i++) + materials[i] = Material.EnchantingTable; + for (int i = 9452; i <= 9459; i++) + materials[i] = Material.BrewingStand; + for (int i = 9460; i <= 9460; i++) + materials[i] = Material.Cauldron; + for (int i = 9461; i <= 9463; i++) + materials[i] = Material.WaterCauldron; + for (int i = 9464; i <= 9464; i++) + materials[i] = Material.LavaCauldron; + for (int i = 9465; i <= 9467; i++) + materials[i] = Material.PowderSnowCauldron; + for (int i = 9468; i <= 9468; i++) + materials[i] = Material.EndPortal; + for (int i = 9469; i <= 9476; i++) + materials[i] = Material.EndPortalFrame; + for (int i = 9477; i <= 9477; i++) + materials[i] = Material.EndStone; + for (int i = 9478; i <= 9478; i++) + materials[i] = Material.DragonEgg; + for (int i = 9479; i <= 9480; i++) + materials[i] = Material.RedstoneLamp; + for (int i = 9481; i <= 9492; i++) + materials[i] = Material.Cocoa; + for (int i = 9493; i <= 9572; i++) + materials[i] = Material.SandstoneStairs; + for (int i = 9573; i <= 9573; i++) + materials[i] = Material.EmeraldOre; + for (int i = 9574; i <= 9574; i++) + materials[i] = Material.DeepslateEmeraldOre; + for (int i = 9575; i <= 9582; i++) + materials[i] = Material.EnderChest; + for (int i = 9583; i <= 9598; i++) + materials[i] = Material.TripwireHook; + for (int i = 9599; i <= 9726; i++) + materials[i] = Material.Tripwire; + for (int i = 9727; i <= 9727; i++) + materials[i] = Material.EmeraldBlock; + for (int i = 9728; i <= 9807; i++) + materials[i] = Material.SpruceStairs; + for (int i = 9808; i <= 9887; i++) + materials[i] = Material.BirchStairs; + for (int i = 9888; i <= 9967; i++) + materials[i] = Material.JungleStairs; + for (int i = 9968; i <= 9979; i++) + materials[i] = Material.CommandBlock; + for (int i = 9980; i <= 9980; i++) + materials[i] = Material.Beacon; + for (int i = 9981; i <= 10304; i++) + materials[i] = Material.CobblestoneWall; + for (int i = 10305; i <= 10628; i++) + materials[i] = Material.MossyCobblestoneWall; + for (int i = 10629; i <= 10629; i++) + materials[i] = Material.FlowerPot; + for (int i = 10630; i <= 10630; i++) + materials[i] = Material.PottedTorchflower; + for (int i = 10631; i <= 10631; i++) + materials[i] = Material.PottedOakSapling; + for (int i = 10632; i <= 10632; i++) + materials[i] = Material.PottedSpruceSapling; + for (int i = 10633; i <= 10633; i++) + materials[i] = Material.PottedBirchSapling; + for (int i = 10634; i <= 10634; i++) + materials[i] = Material.PottedJungleSapling; + for (int i = 10635; i <= 10635; i++) + materials[i] = Material.PottedAcaciaSapling; + for (int i = 10636; i <= 10636; i++) + materials[i] = Material.PottedCherrySapling; + for (int i = 10637; i <= 10637; i++) + materials[i] = Material.PottedDarkOakSapling; + for (int i = 10638; i <= 10638; i++) + materials[i] = Material.PottedPaleOakSapling; + for (int i = 10639; i <= 10639; i++) + materials[i] = Material.PottedMangrovePropagule; + for (int i = 10640; i <= 10640; i++) + materials[i] = Material.PottedFern; + for (int i = 10641; i <= 10641; i++) + materials[i] = Material.PottedDandelion; + for (int i = 10642; i <= 10642; i++) + materials[i] = Material.PottedGoldenDandelion; + for (int i = 10643; i <= 10643; i++) + materials[i] = Material.PottedPoppy; + for (int i = 10644; i <= 10644; i++) + materials[i] = Material.PottedBlueOrchid; + for (int i = 10645; i <= 10645; i++) + materials[i] = Material.PottedAllium; + for (int i = 10646; i <= 10646; i++) + materials[i] = Material.PottedAzureBluet; + for (int i = 10647; i <= 10647; i++) + materials[i] = Material.PottedRedTulip; + for (int i = 10648; i <= 10648; i++) + materials[i] = Material.PottedOrangeTulip; + for (int i = 10649; i <= 10649; i++) + materials[i] = Material.PottedWhiteTulip; + for (int i = 10650; i <= 10650; i++) + materials[i] = Material.PottedPinkTulip; + for (int i = 10651; i <= 10651; i++) + materials[i] = Material.PottedOxeyeDaisy; + for (int i = 10652; i <= 10652; i++) + materials[i] = Material.PottedCornflower; + for (int i = 10653; i <= 10653; i++) + materials[i] = Material.PottedLilyOfTheValley; + for (int i = 10654; i <= 10654; i++) + materials[i] = Material.PottedWitherRose; + for (int i = 10655; i <= 10655; i++) + materials[i] = Material.PottedRedMushroom; + for (int i = 10656; i <= 10656; i++) + materials[i] = Material.PottedBrownMushroom; + for (int i = 10657; i <= 10657; i++) + materials[i] = Material.PottedDeadBush; + for (int i = 10658; i <= 10658; i++) + materials[i] = Material.PottedCactus; + for (int i = 10659; i <= 10666; i++) + materials[i] = Material.Carrots; + for (int i = 10667; i <= 10674; i++) + materials[i] = Material.Potatoes; + for (int i = 10675; i <= 10698; i++) + materials[i] = Material.OakButton; + for (int i = 10699; i <= 10722; i++) + materials[i] = Material.SpruceButton; + for (int i = 10723; i <= 10746; i++) + materials[i] = Material.BirchButton; + for (int i = 10747; i <= 10770; i++) + materials[i] = Material.JungleButton; + for (int i = 10771; i <= 10794; i++) + materials[i] = Material.AcaciaButton; + for (int i = 10795; i <= 10818; i++) + materials[i] = Material.CherryButton; + for (int i = 10819; i <= 10842; i++) + materials[i] = Material.DarkOakButton; + for (int i = 10843; i <= 10866; i++) + materials[i] = Material.PaleOakButton; + for (int i = 10867; i <= 10890; i++) + materials[i] = Material.MangroveButton; + for (int i = 10891; i <= 10914; i++) + materials[i] = Material.BambooButton; + for (int i = 10915; i <= 10946; i++) + materials[i] = Material.SkeletonSkull; + for (int i = 10947; i <= 10954; i++) + materials[i] = Material.SkeletonWallSkull; + for (int i = 10955; i <= 10986; i++) + materials[i] = Material.WitherSkeletonSkull; + for (int i = 10987; i <= 10994; i++) + materials[i] = Material.WitherSkeletonWallSkull; + for (int i = 10995; i <= 11026; i++) + materials[i] = Material.ZombieHead; + for (int i = 11027; i <= 11034; i++) + materials[i] = Material.ZombieWallHead; + for (int i = 11035; i <= 11066; i++) + materials[i] = Material.PlayerHead; + for (int i = 11067; i <= 11074; i++) + materials[i] = Material.PlayerWallHead; + for (int i = 11075; i <= 11106; i++) + materials[i] = Material.CreeperHead; + for (int i = 11107; i <= 11114; i++) + materials[i] = Material.CreeperWallHead; + for (int i = 11115; i <= 11146; i++) + materials[i] = Material.DragonHead; + for (int i = 11147; i <= 11154; i++) + materials[i] = Material.DragonWallHead; + for (int i = 11155; i <= 11186; i++) + materials[i] = Material.PiglinHead; + for (int i = 11187; i <= 11194; i++) + materials[i] = Material.PiglinWallHead; + for (int i = 11195; i <= 11198; i++) + materials[i] = Material.Anvil; + for (int i = 11199; i <= 11202; i++) + materials[i] = Material.ChippedAnvil; + for (int i = 11203; i <= 11206; i++) + materials[i] = Material.DamagedAnvil; + for (int i = 11207; i <= 11230; i++) + materials[i] = Material.TrappedChest; + for (int i = 11231; i <= 11246; i++) + materials[i] = Material.LightWeightedPressurePlate; + for (int i = 11247; i <= 11262; i++) + materials[i] = Material.HeavyWeightedPressurePlate; + for (int i = 11263; i <= 11278; i++) + materials[i] = Material.Comparator; + for (int i = 11279; i <= 11310; i++) + materials[i] = Material.DaylightDetector; + for (int i = 11311; i <= 11311; i++) + materials[i] = Material.RedstoneBlock; + for (int i = 11312; i <= 11312; i++) + materials[i] = Material.NetherQuartzOre; + for (int i = 11313; i <= 11322; i++) + materials[i] = Material.Hopper; + for (int i = 11323; i <= 11323; i++) + materials[i] = Material.QuartzBlock; + for (int i = 11324; i <= 11324; i++) + materials[i] = Material.ChiseledQuartzBlock; + for (int i = 11325; i <= 11327; i++) + materials[i] = Material.QuartzPillar; + for (int i = 11328; i <= 11407; i++) + materials[i] = Material.QuartzStairs; + for (int i = 11408; i <= 11431; i++) + materials[i] = Material.ActivatorRail; + for (int i = 11432; i <= 11443; i++) + materials[i] = Material.Dropper; + for (int i = 11444; i <= 11444; i++) + materials[i] = Material.WhiteTerracotta; + for (int i = 11445; i <= 11445; i++) + materials[i] = Material.OrangeTerracotta; + for (int i = 11446; i <= 11446; i++) + materials[i] = Material.MagentaTerracotta; + for (int i = 11447; i <= 11447; i++) + materials[i] = Material.LightBlueTerracotta; + for (int i = 11448; i <= 11448; i++) + materials[i] = Material.YellowTerracotta; + for (int i = 11449; i <= 11449; i++) + materials[i] = Material.LimeTerracotta; + for (int i = 11450; i <= 11450; i++) + materials[i] = Material.PinkTerracotta; + for (int i = 11451; i <= 11451; i++) + materials[i] = Material.GrayTerracotta; + for (int i = 11452; i <= 11452; i++) + materials[i] = Material.LightGrayTerracotta; + for (int i = 11453; i <= 11453; i++) + materials[i] = Material.CyanTerracotta; + for (int i = 11454; i <= 11454; i++) + materials[i] = Material.PurpleTerracotta; + for (int i = 11455; i <= 11455; i++) + materials[i] = Material.BlueTerracotta; + for (int i = 11456; i <= 11456; i++) + materials[i] = Material.BrownTerracotta; + for (int i = 11457; i <= 11457; i++) + materials[i] = Material.GreenTerracotta; + for (int i = 11458; i <= 11458; i++) + materials[i] = Material.RedTerracotta; + for (int i = 11459; i <= 11459; i++) + materials[i] = Material.BlackTerracotta; + for (int i = 11460; i <= 11491; i++) + materials[i] = Material.WhiteStainedGlassPane; + for (int i = 11492; i <= 11523; i++) + materials[i] = Material.OrangeStainedGlassPane; + for (int i = 11524; i <= 11555; i++) + materials[i] = Material.MagentaStainedGlassPane; + for (int i = 11556; i <= 11587; i++) + materials[i] = Material.LightBlueStainedGlassPane; + for (int i = 11588; i <= 11619; i++) + materials[i] = Material.YellowStainedGlassPane; + for (int i = 11620; i <= 11651; i++) + materials[i] = Material.LimeStainedGlassPane; + for (int i = 11652; i <= 11683; i++) + materials[i] = Material.PinkStainedGlassPane; + for (int i = 11684; i <= 11715; i++) + materials[i] = Material.GrayStainedGlassPane; + for (int i = 11716; i <= 11747; i++) + materials[i] = Material.LightGrayStainedGlassPane; + for (int i = 11748; i <= 11779; i++) + materials[i] = Material.CyanStainedGlassPane; + for (int i = 11780; i <= 11811; i++) + materials[i] = Material.PurpleStainedGlassPane; + for (int i = 11812; i <= 11843; i++) + materials[i] = Material.BlueStainedGlassPane; + for (int i = 11844; i <= 11875; i++) + materials[i] = Material.BrownStainedGlassPane; + for (int i = 11876; i <= 11907; i++) + materials[i] = Material.GreenStainedGlassPane; + for (int i = 11908; i <= 11939; i++) + materials[i] = Material.RedStainedGlassPane; + for (int i = 11940; i <= 11971; i++) + materials[i] = Material.BlackStainedGlassPane; + for (int i = 11972; i <= 12051; i++) + materials[i] = Material.AcaciaStairs; + for (int i = 12052; i <= 12131; i++) + materials[i] = Material.CherryStairs; + for (int i = 12132; i <= 12211; i++) + materials[i] = Material.DarkOakStairs; + for (int i = 12212; i <= 12291; i++) + materials[i] = Material.PaleOakStairs; + for (int i = 12292; i <= 12371; i++) + materials[i] = Material.MangroveStairs; + for (int i = 12372; i <= 12451; i++) + materials[i] = Material.BambooStairs; + for (int i = 12452; i <= 12531; i++) + materials[i] = Material.BambooMosaicStairs; + for (int i = 12532; i <= 12532; i++) + materials[i] = Material.SlimeBlock; + for (int i = 12533; i <= 12534; i++) + materials[i] = Material.Barrier; + for (int i = 12535; i <= 12566; i++) + materials[i] = Material.Light; + for (int i = 12567; i <= 12630; i++) + materials[i] = Material.IronTrapdoor; + for (int i = 12631; i <= 12631; i++) + materials[i] = Material.Prismarine; + for (int i = 12632; i <= 12632; i++) + materials[i] = Material.PrismarineBricks; + for (int i = 12633; i <= 12633; i++) + materials[i] = Material.DarkPrismarine; + for (int i = 12634; i <= 12713; i++) + materials[i] = Material.PrismarineStairs; + for (int i = 12714; i <= 12793; i++) + materials[i] = Material.PrismarineBrickStairs; + for (int i = 12794; i <= 12873; i++) + materials[i] = Material.DarkPrismarineStairs; + for (int i = 12874; i <= 12879; i++) + materials[i] = Material.PrismarineSlab; + for (int i = 12880; i <= 12885; i++) + materials[i] = Material.PrismarineBrickSlab; + for (int i = 12886; i <= 12891; i++) + materials[i] = Material.DarkPrismarineSlab; + for (int i = 12892; i <= 12892; i++) + materials[i] = Material.SeaLantern; + for (int i = 12893; i <= 12895; i++) + materials[i] = Material.HayBlock; + for (int i = 12896; i <= 12896; i++) + materials[i] = Material.WhiteCarpet; + for (int i = 12897; i <= 12897; i++) + materials[i] = Material.OrangeCarpet; + for (int i = 12898; i <= 12898; i++) + materials[i] = Material.MagentaCarpet; + for (int i = 12899; i <= 12899; i++) + materials[i] = Material.LightBlueCarpet; + for (int i = 12900; i <= 12900; i++) + materials[i] = Material.YellowCarpet; + for (int i = 12901; i <= 12901; i++) + materials[i] = Material.LimeCarpet; + for (int i = 12902; i <= 12902; i++) + materials[i] = Material.PinkCarpet; + for (int i = 12903; i <= 12903; i++) + materials[i] = Material.GrayCarpet; + for (int i = 12904; i <= 12904; i++) + materials[i] = Material.LightGrayCarpet; + for (int i = 12905; i <= 12905; i++) + materials[i] = Material.CyanCarpet; + for (int i = 12906; i <= 12906; i++) + materials[i] = Material.PurpleCarpet; + for (int i = 12907; i <= 12907; i++) + materials[i] = Material.BlueCarpet; + for (int i = 12908; i <= 12908; i++) + materials[i] = Material.BrownCarpet; + for (int i = 12909; i <= 12909; i++) + materials[i] = Material.GreenCarpet; + for (int i = 12910; i <= 12910; i++) + materials[i] = Material.RedCarpet; + for (int i = 12911; i <= 12911; i++) + materials[i] = Material.BlackCarpet; + for (int i = 12912; i <= 12912; i++) + materials[i] = Material.Terracotta; + for (int i = 12913; i <= 12913; i++) + materials[i] = Material.CoalBlock; + for (int i = 12914; i <= 12914; i++) + materials[i] = Material.PackedIce; + for (int i = 12915; i <= 12916; i++) + materials[i] = Material.Sunflower; + for (int i = 12917; i <= 12918; i++) + materials[i] = Material.Lilac; + for (int i = 12919; i <= 12920; i++) + materials[i] = Material.RoseBush; + for (int i = 12921; i <= 12922; i++) + materials[i] = Material.Peony; + for (int i = 12923; i <= 12924; i++) + materials[i] = Material.TallGrass; + for (int i = 12925; i <= 12926; i++) + materials[i] = Material.LargeFern; + for (int i = 12927; i <= 12942; i++) + materials[i] = Material.WhiteBanner; + for (int i = 12943; i <= 12958; i++) + materials[i] = Material.OrangeBanner; + for (int i = 12959; i <= 12974; i++) + materials[i] = Material.MagentaBanner; + for (int i = 12975; i <= 12990; i++) + materials[i] = Material.LightBlueBanner; + for (int i = 12991; i <= 13006; i++) + materials[i] = Material.YellowBanner; + for (int i = 13007; i <= 13022; i++) + materials[i] = Material.LimeBanner; + for (int i = 13023; i <= 13038; i++) + materials[i] = Material.PinkBanner; + for (int i = 13039; i <= 13054; i++) + materials[i] = Material.GrayBanner; + for (int i = 13055; i <= 13070; i++) + materials[i] = Material.LightGrayBanner; + for (int i = 13071; i <= 13086; i++) + materials[i] = Material.CyanBanner; + for (int i = 13087; i <= 13102; i++) + materials[i] = Material.PurpleBanner; + for (int i = 13103; i <= 13118; i++) + materials[i] = Material.BlueBanner; + for (int i = 13119; i <= 13134; i++) + materials[i] = Material.BrownBanner; + for (int i = 13135; i <= 13150; i++) + materials[i] = Material.GreenBanner; + for (int i = 13151; i <= 13166; i++) + materials[i] = Material.RedBanner; + for (int i = 13167; i <= 13182; i++) + materials[i] = Material.BlackBanner; + for (int i = 13183; i <= 13186; i++) + materials[i] = Material.WhiteWallBanner; + for (int i = 13187; i <= 13190; i++) + materials[i] = Material.OrangeWallBanner; + for (int i = 13191; i <= 13194; i++) + materials[i] = Material.MagentaWallBanner; + for (int i = 13195; i <= 13198; i++) + materials[i] = Material.LightBlueWallBanner; + for (int i = 13199; i <= 13202; i++) + materials[i] = Material.YellowWallBanner; + for (int i = 13203; i <= 13206; i++) + materials[i] = Material.LimeWallBanner; + for (int i = 13207; i <= 13210; i++) + materials[i] = Material.PinkWallBanner; + for (int i = 13211; i <= 13214; i++) + materials[i] = Material.GrayWallBanner; + for (int i = 13215; i <= 13218; i++) + materials[i] = Material.LightGrayWallBanner; + for (int i = 13219; i <= 13222; i++) + materials[i] = Material.CyanWallBanner; + for (int i = 13223; i <= 13226; i++) + materials[i] = Material.PurpleWallBanner; + for (int i = 13227; i <= 13230; i++) + materials[i] = Material.BlueWallBanner; + for (int i = 13231; i <= 13234; i++) + materials[i] = Material.BrownWallBanner; + for (int i = 13235; i <= 13238; i++) + materials[i] = Material.GreenWallBanner; + for (int i = 13239; i <= 13242; i++) + materials[i] = Material.RedWallBanner; + for (int i = 13243; i <= 13246; i++) + materials[i] = Material.BlackWallBanner; + for (int i = 13247; i <= 13247; i++) + materials[i] = Material.RedSandstone; + for (int i = 13248; i <= 13248; i++) + materials[i] = Material.ChiseledRedSandstone; + for (int i = 13249; i <= 13249; i++) + materials[i] = Material.CutRedSandstone; + for (int i = 13250; i <= 13329; i++) + materials[i] = Material.RedSandstoneStairs; + for (int i = 13330; i <= 13335; i++) + materials[i] = Material.OakSlab; + for (int i = 13336; i <= 13341; i++) + materials[i] = Material.SpruceSlab; + for (int i = 13342; i <= 13347; i++) + materials[i] = Material.BirchSlab; + for (int i = 13348; i <= 13353; i++) + materials[i] = Material.JungleSlab; + for (int i = 13354; i <= 13359; i++) + materials[i] = Material.AcaciaSlab; + for (int i = 13360; i <= 13365; i++) + materials[i] = Material.CherrySlab; + for (int i = 13366; i <= 13371; i++) + materials[i] = Material.DarkOakSlab; + for (int i = 13372; i <= 13377; i++) + materials[i] = Material.PaleOakSlab; + for (int i = 13378; i <= 13383; i++) + materials[i] = Material.MangroveSlab; + for (int i = 13384; i <= 13389; i++) + materials[i] = Material.BambooSlab; + for (int i = 13390; i <= 13395; i++) + materials[i] = Material.BambooMosaicSlab; + for (int i = 13396; i <= 13401; i++) + materials[i] = Material.StoneSlab; + for (int i = 13402; i <= 13407; i++) + materials[i] = Material.SmoothStoneSlab; + for (int i = 13408; i <= 13413; i++) + materials[i] = Material.SandstoneSlab; + for (int i = 13414; i <= 13419; i++) + materials[i] = Material.CutSandstoneSlab; + for (int i = 13420; i <= 13425; i++) + materials[i] = Material.PetrifiedOakSlab; + for (int i = 13426; i <= 13431; i++) + materials[i] = Material.CobblestoneSlab; + for (int i = 13432; i <= 13437; i++) + materials[i] = Material.BrickSlab; + for (int i = 13438; i <= 13443; i++) + materials[i] = Material.StoneBrickSlab; + for (int i = 13444; i <= 13449; i++) + materials[i] = Material.MudBrickSlab; + for (int i = 13450; i <= 13455; i++) + materials[i] = Material.NetherBrickSlab; + for (int i = 13456; i <= 13461; i++) + materials[i] = Material.QuartzSlab; + for (int i = 13462; i <= 13467; i++) + materials[i] = Material.RedSandstoneSlab; + for (int i = 13468; i <= 13473; i++) + materials[i] = Material.CutRedSandstoneSlab; + for (int i = 13474; i <= 13479; i++) + materials[i] = Material.PurpurSlab; + for (int i = 13480; i <= 13480; i++) + materials[i] = Material.SmoothStone; + for (int i = 13481; i <= 13481; i++) + materials[i] = Material.SmoothSandstone; + for (int i = 13482; i <= 13482; i++) + materials[i] = Material.SmoothQuartz; + for (int i = 13483; i <= 13483; i++) + materials[i] = Material.SmoothRedSandstone; + for (int i = 13484; i <= 13515; i++) + materials[i] = Material.SpruceFenceGate; + for (int i = 13516; i <= 13547; i++) + materials[i] = Material.BirchFenceGate; + for (int i = 13548; i <= 13579; i++) + materials[i] = Material.JungleFenceGate; + for (int i = 13580; i <= 13611; i++) + materials[i] = Material.AcaciaFenceGate; + for (int i = 13612; i <= 13643; i++) + materials[i] = Material.CherryFenceGate; + for (int i = 13644; i <= 13675; i++) + materials[i] = Material.DarkOakFenceGate; + for (int i = 13676; i <= 13707; i++) + materials[i] = Material.PaleOakFenceGate; + for (int i = 13708; i <= 13739; i++) + materials[i] = Material.MangroveFenceGate; + for (int i = 13740; i <= 13771; i++) + materials[i] = Material.BambooFenceGate; + for (int i = 13772; i <= 13803; i++) + materials[i] = Material.SpruceFence; + for (int i = 13804; i <= 13835; i++) + materials[i] = Material.BirchFence; + for (int i = 13836; i <= 13867; i++) + materials[i] = Material.JungleFence; + for (int i = 13868; i <= 13899; i++) + materials[i] = Material.AcaciaFence; + for (int i = 13900; i <= 13931; i++) + materials[i] = Material.CherryFence; + for (int i = 13932; i <= 13963; i++) + materials[i] = Material.DarkOakFence; + for (int i = 13964; i <= 13995; i++) + materials[i] = Material.PaleOakFence; + for (int i = 13996; i <= 14027; i++) + materials[i] = Material.MangroveFence; + for (int i = 14028; i <= 14059; i++) + materials[i] = Material.BambooFence; + for (int i = 14060; i <= 14123; i++) + materials[i] = Material.SpruceDoor; + for (int i = 14124; i <= 14187; i++) + materials[i] = Material.BirchDoor; + for (int i = 14188; i <= 14251; i++) + materials[i] = Material.JungleDoor; + for (int i = 14252; i <= 14315; i++) + materials[i] = Material.AcaciaDoor; + for (int i = 14316; i <= 14379; i++) + materials[i] = Material.CherryDoor; + for (int i = 14380; i <= 14443; i++) + materials[i] = Material.DarkOakDoor; + for (int i = 14444; i <= 14507; i++) + materials[i] = Material.PaleOakDoor; + for (int i = 14508; i <= 14571; i++) + materials[i] = Material.MangroveDoor; + for (int i = 14572; i <= 14635; i++) + materials[i] = Material.BambooDoor; + for (int i = 14636; i <= 14641; i++) + materials[i] = Material.EndRod; + for (int i = 14642; i <= 14705; i++) + materials[i] = Material.ChorusPlant; + for (int i = 14706; i <= 14711; i++) + materials[i] = Material.ChorusFlower; + for (int i = 14712; i <= 14712; i++) + materials[i] = Material.PurpurBlock; + for (int i = 14713; i <= 14715; i++) + materials[i] = Material.PurpurPillar; + for (int i = 14716; i <= 14795; i++) + materials[i] = Material.PurpurStairs; + for (int i = 14796; i <= 14796; i++) + materials[i] = Material.EndStoneBricks; + for (int i = 14797; i <= 14798; i++) + materials[i] = Material.TorchflowerCrop; + for (int i = 14799; i <= 14808; i++) + materials[i] = Material.PitcherCrop; + for (int i = 14809; i <= 14810; i++) + materials[i] = Material.PitcherPlant; + for (int i = 14811; i <= 14814; i++) + materials[i] = Material.Beetroots; + for (int i = 14815; i <= 14815; i++) + materials[i] = Material.DirtPath; + for (int i = 14816; i <= 14816; i++) + materials[i] = Material.EndGateway; + for (int i = 14817; i <= 14828; i++) + materials[i] = Material.RepeatingCommandBlock; + for (int i = 14829; i <= 14840; i++) + materials[i] = Material.ChainCommandBlock; + for (int i = 14841; i <= 14844; i++) + materials[i] = Material.FrostedIce; + for (int i = 14845; i <= 14845; i++) + materials[i] = Material.MagmaBlock; + for (int i = 14846; i <= 14846; i++) + materials[i] = Material.NetherWartBlock; + for (int i = 14847; i <= 14847; i++) + materials[i] = Material.RedNetherBricks; + for (int i = 14848; i <= 14850; i++) + materials[i] = Material.BoneBlock; + for (int i = 14851; i <= 14851; i++) + materials[i] = Material.StructureVoid; + for (int i = 14852; i <= 14863; i++) + materials[i] = Material.Observer; + for (int i = 14864; i <= 14869; i++) + materials[i] = Material.ShulkerBox; + for (int i = 14870; i <= 14875; i++) + materials[i] = Material.WhiteShulkerBox; + for (int i = 14876; i <= 14881; i++) + materials[i] = Material.OrangeShulkerBox; + for (int i = 14882; i <= 14887; i++) + materials[i] = Material.MagentaShulkerBox; + for (int i = 14888; i <= 14893; i++) + materials[i] = Material.LightBlueShulkerBox; + for (int i = 14894; i <= 14899; i++) + materials[i] = Material.YellowShulkerBox; + for (int i = 14900; i <= 14905; i++) + materials[i] = Material.LimeShulkerBox; + for (int i = 14906; i <= 14911; i++) + materials[i] = Material.PinkShulkerBox; + for (int i = 14912; i <= 14917; i++) + materials[i] = Material.GrayShulkerBox; + for (int i = 14918; i <= 14923; i++) + materials[i] = Material.LightGrayShulkerBox; + for (int i = 14924; i <= 14929; i++) + materials[i] = Material.CyanShulkerBox; + for (int i = 14930; i <= 14935; i++) + materials[i] = Material.PurpleShulkerBox; + for (int i = 14936; i <= 14941; i++) + materials[i] = Material.BlueShulkerBox; + for (int i = 14942; i <= 14947; i++) + materials[i] = Material.BrownShulkerBox; + for (int i = 14948; i <= 14953; i++) + materials[i] = Material.GreenShulkerBox; + for (int i = 14954; i <= 14959; i++) + materials[i] = Material.RedShulkerBox; + for (int i = 14960; i <= 14965; i++) + materials[i] = Material.BlackShulkerBox; + for (int i = 14966; i <= 14969; i++) + materials[i] = Material.WhiteGlazedTerracotta; + for (int i = 14970; i <= 14973; i++) + materials[i] = Material.OrangeGlazedTerracotta; + for (int i = 14974; i <= 14977; i++) + materials[i] = Material.MagentaGlazedTerracotta; + for (int i = 14978; i <= 14981; i++) + materials[i] = Material.LightBlueGlazedTerracotta; + for (int i = 14982; i <= 14985; i++) + materials[i] = Material.YellowGlazedTerracotta; + for (int i = 14986; i <= 14989; i++) + materials[i] = Material.LimeGlazedTerracotta; + for (int i = 14990; i <= 14993; i++) + materials[i] = Material.PinkGlazedTerracotta; + for (int i = 14994; i <= 14997; i++) + materials[i] = Material.GrayGlazedTerracotta; + for (int i = 14998; i <= 15001; i++) + materials[i] = Material.LightGrayGlazedTerracotta; + for (int i = 15002; i <= 15005; i++) + materials[i] = Material.CyanGlazedTerracotta; + for (int i = 15006; i <= 15009; i++) + materials[i] = Material.PurpleGlazedTerracotta; + for (int i = 15010; i <= 15013; i++) + materials[i] = Material.BlueGlazedTerracotta; + for (int i = 15014; i <= 15017; i++) + materials[i] = Material.BrownGlazedTerracotta; + for (int i = 15018; i <= 15021; i++) + materials[i] = Material.GreenGlazedTerracotta; + for (int i = 15022; i <= 15025; i++) + materials[i] = Material.RedGlazedTerracotta; + for (int i = 15026; i <= 15029; i++) + materials[i] = Material.BlackGlazedTerracotta; + for (int i = 15030; i <= 15030; i++) + materials[i] = Material.WhiteConcrete; + for (int i = 15031; i <= 15031; i++) + materials[i] = Material.OrangeConcrete; + for (int i = 15032; i <= 15032; i++) + materials[i] = Material.MagentaConcrete; + for (int i = 15033; i <= 15033; i++) + materials[i] = Material.LightBlueConcrete; + for (int i = 15034; i <= 15034; i++) + materials[i] = Material.YellowConcrete; + for (int i = 15035; i <= 15035; i++) + materials[i] = Material.LimeConcrete; + for (int i = 15036; i <= 15036; i++) + materials[i] = Material.PinkConcrete; + for (int i = 15037; i <= 15037; i++) + materials[i] = Material.GrayConcrete; + for (int i = 15038; i <= 15038; i++) + materials[i] = Material.LightGrayConcrete; + for (int i = 15039; i <= 15039; i++) + materials[i] = Material.CyanConcrete; + for (int i = 15040; i <= 15040; i++) + materials[i] = Material.PurpleConcrete; + for (int i = 15041; i <= 15041; i++) + materials[i] = Material.BlueConcrete; + for (int i = 15042; i <= 15042; i++) + materials[i] = Material.BrownConcrete; + for (int i = 15043; i <= 15043; i++) + materials[i] = Material.GreenConcrete; + for (int i = 15044; i <= 15044; i++) + materials[i] = Material.RedConcrete; + for (int i = 15045; i <= 15045; i++) + materials[i] = Material.BlackConcrete; + for (int i = 15046; i <= 15046; i++) + materials[i] = Material.WhiteConcretePowder; + for (int i = 15047; i <= 15047; i++) + materials[i] = Material.OrangeConcretePowder; + for (int i = 15048; i <= 15048; i++) + materials[i] = Material.MagentaConcretePowder; + for (int i = 15049; i <= 15049; i++) + materials[i] = Material.LightBlueConcretePowder; + for (int i = 15050; i <= 15050; i++) + materials[i] = Material.YellowConcretePowder; + for (int i = 15051; i <= 15051; i++) + materials[i] = Material.LimeConcretePowder; + for (int i = 15052; i <= 15052; i++) + materials[i] = Material.PinkConcretePowder; + for (int i = 15053; i <= 15053; i++) + materials[i] = Material.GrayConcretePowder; + for (int i = 15054; i <= 15054; i++) + materials[i] = Material.LightGrayConcretePowder; + for (int i = 15055; i <= 15055; i++) + materials[i] = Material.CyanConcretePowder; + for (int i = 15056; i <= 15056; i++) + materials[i] = Material.PurpleConcretePowder; + for (int i = 15057; i <= 15057; i++) + materials[i] = Material.BlueConcretePowder; + for (int i = 15058; i <= 15058; i++) + materials[i] = Material.BrownConcretePowder; + for (int i = 15059; i <= 15059; i++) + materials[i] = Material.GreenConcretePowder; + for (int i = 15060; i <= 15060; i++) + materials[i] = Material.RedConcretePowder; + for (int i = 15061; i <= 15061; i++) + materials[i] = Material.BlackConcretePowder; + for (int i = 15062; i <= 15087; i++) + materials[i] = Material.Kelp; + for (int i = 15088; i <= 15088; i++) + materials[i] = Material.KelpPlant; + for (int i = 15089; i <= 15089; i++) + materials[i] = Material.DriedKelpBlock; + for (int i = 15090; i <= 15101; i++) + materials[i] = Material.TurtleEgg; + for (int i = 15102; i <= 15104; i++) + materials[i] = Material.SnifferEgg; + for (int i = 15105; i <= 15136; i++) + materials[i] = Material.DriedGhast; + for (int i = 15137; i <= 15137; i++) + materials[i] = Material.DeadTubeCoralBlock; + for (int i = 15138; i <= 15138; i++) + materials[i] = Material.DeadBrainCoralBlock; + for (int i = 15139; i <= 15139; i++) + materials[i] = Material.DeadBubbleCoralBlock; + for (int i = 15140; i <= 15140; i++) + materials[i] = Material.DeadFireCoralBlock; + for (int i = 15141; i <= 15141; i++) + materials[i] = Material.DeadHornCoralBlock; + for (int i = 15142; i <= 15142; i++) + materials[i] = Material.TubeCoralBlock; + for (int i = 15143; i <= 15143; i++) + materials[i] = Material.BrainCoralBlock; + for (int i = 15144; i <= 15144; i++) + materials[i] = Material.BubbleCoralBlock; + for (int i = 15145; i <= 15145; i++) + materials[i] = Material.FireCoralBlock; + for (int i = 15146; i <= 15146; i++) + materials[i] = Material.HornCoralBlock; + for (int i = 15147; i <= 15148; i++) + materials[i] = Material.DeadTubeCoral; + for (int i = 15149; i <= 15150; i++) + materials[i] = Material.DeadBrainCoral; + for (int i = 15151; i <= 15152; i++) + materials[i] = Material.DeadBubbleCoral; + for (int i = 15153; i <= 15154; i++) + materials[i] = Material.DeadFireCoral; + for (int i = 15155; i <= 15156; i++) + materials[i] = Material.DeadHornCoral; + for (int i = 15157; i <= 15158; i++) + materials[i] = Material.TubeCoral; + for (int i = 15159; i <= 15160; i++) + materials[i] = Material.BrainCoral; + for (int i = 15161; i <= 15162; i++) + materials[i] = Material.BubbleCoral; + for (int i = 15163; i <= 15164; i++) + materials[i] = Material.FireCoral; + for (int i = 15165; i <= 15166; i++) + materials[i] = Material.HornCoral; + for (int i = 15167; i <= 15168; i++) + materials[i] = Material.DeadTubeCoralFan; + for (int i = 15169; i <= 15170; i++) + materials[i] = Material.DeadBrainCoralFan; + for (int i = 15171; i <= 15172; i++) + materials[i] = Material.DeadBubbleCoralFan; + for (int i = 15173; i <= 15174; i++) + materials[i] = Material.DeadFireCoralFan; + for (int i = 15175; i <= 15176; i++) + materials[i] = Material.DeadHornCoralFan; + for (int i = 15177; i <= 15178; i++) + materials[i] = Material.TubeCoralFan; + for (int i = 15179; i <= 15180; i++) + materials[i] = Material.BrainCoralFan; + for (int i = 15181; i <= 15182; i++) + materials[i] = Material.BubbleCoralFan; + for (int i = 15183; i <= 15184; i++) + materials[i] = Material.FireCoralFan; + for (int i = 15185; i <= 15186; i++) + materials[i] = Material.HornCoralFan; + for (int i = 15187; i <= 15194; i++) + materials[i] = Material.DeadTubeCoralWallFan; + for (int i = 15195; i <= 15202; i++) + materials[i] = Material.DeadBrainCoralWallFan; + for (int i = 15203; i <= 15210; i++) + materials[i] = Material.DeadBubbleCoralWallFan; + for (int i = 15211; i <= 15218; i++) + materials[i] = Material.DeadFireCoralWallFan; + for (int i = 15219; i <= 15226; i++) + materials[i] = Material.DeadHornCoralWallFan; + for (int i = 15227; i <= 15234; i++) + materials[i] = Material.TubeCoralWallFan; + for (int i = 15235; i <= 15242; i++) + materials[i] = Material.BrainCoralWallFan; + for (int i = 15243; i <= 15250; i++) + materials[i] = Material.BubbleCoralWallFan; + for (int i = 15251; i <= 15258; i++) + materials[i] = Material.FireCoralWallFan; + for (int i = 15259; i <= 15266; i++) + materials[i] = Material.HornCoralWallFan; + for (int i = 15267; i <= 15274; i++) + materials[i] = Material.SeaPickle; + for (int i = 15275; i <= 15275; i++) + materials[i] = Material.BlueIce; + for (int i = 15276; i <= 15277; i++) + materials[i] = Material.Conduit; + for (int i = 15278; i <= 15278; i++) + materials[i] = Material.BambooSapling; + for (int i = 15279; i <= 15290; i++) + materials[i] = Material.Bamboo; + for (int i = 15291; i <= 15291; i++) + materials[i] = Material.PottedBamboo; + for (int i = 15292; i <= 15292; i++) + materials[i] = Material.VoidAir; + for (int i = 15293; i <= 15293; i++) + materials[i] = Material.CaveAir; + for (int i = 15294; i <= 15295; i++) + materials[i] = Material.BubbleColumn; + for (int i = 15296; i <= 15375; i++) + materials[i] = Material.PolishedGraniteStairs; + for (int i = 15376; i <= 15455; i++) + materials[i] = Material.SmoothRedSandstoneStairs; + for (int i = 15456; i <= 15535; i++) + materials[i] = Material.MossyStoneBrickStairs; + for (int i = 15536; i <= 15615; i++) + materials[i] = Material.PolishedDioriteStairs; + for (int i = 15616; i <= 15695; i++) + materials[i] = Material.MossyCobblestoneStairs; + for (int i = 15696; i <= 15775; i++) + materials[i] = Material.EndStoneBrickStairs; + for (int i = 15776; i <= 15855; i++) + materials[i] = Material.StoneStairs; + for (int i = 15856; i <= 15935; i++) + materials[i] = Material.SmoothSandstoneStairs; + for (int i = 15936; i <= 16015; i++) + materials[i] = Material.SmoothQuartzStairs; + for (int i = 16016; i <= 16095; i++) + materials[i] = Material.GraniteStairs; + for (int i = 16096; i <= 16175; i++) + materials[i] = Material.AndesiteStairs; + for (int i = 16176; i <= 16255; i++) + materials[i] = Material.RedNetherBrickStairs; + for (int i = 16256; i <= 16335; i++) + materials[i] = Material.PolishedAndesiteStairs; + for (int i = 16336; i <= 16415; i++) + materials[i] = Material.DioriteStairs; + for (int i = 16416; i <= 16421; i++) + materials[i] = Material.PolishedGraniteSlab; + for (int i = 16422; i <= 16427; i++) + materials[i] = Material.SmoothRedSandstoneSlab; + for (int i = 16428; i <= 16433; i++) + materials[i] = Material.MossyStoneBrickSlab; + for (int i = 16434; i <= 16439; i++) + materials[i] = Material.PolishedDioriteSlab; + for (int i = 16440; i <= 16445; i++) + materials[i] = Material.MossyCobblestoneSlab; + for (int i = 16446; i <= 16451; i++) + materials[i] = Material.EndStoneBrickSlab; + for (int i = 16452; i <= 16457; i++) + materials[i] = Material.SmoothSandstoneSlab; + for (int i = 16458; i <= 16463; i++) + materials[i] = Material.SmoothQuartzSlab; + for (int i = 16464; i <= 16469; i++) + materials[i] = Material.GraniteSlab; + for (int i = 16470; i <= 16475; i++) + materials[i] = Material.AndesiteSlab; + for (int i = 16476; i <= 16481; i++) + materials[i] = Material.RedNetherBrickSlab; + for (int i = 16482; i <= 16487; i++) + materials[i] = Material.PolishedAndesiteSlab; + for (int i = 16488; i <= 16493; i++) + materials[i] = Material.DioriteSlab; + for (int i = 16494; i <= 16817; i++) + materials[i] = Material.BrickWall; + for (int i = 16818; i <= 17141; i++) + materials[i] = Material.PrismarineWall; + for (int i = 17142; i <= 17465; i++) + materials[i] = Material.RedSandstoneWall; + for (int i = 17466; i <= 17789; i++) + materials[i] = Material.MossyStoneBrickWall; + for (int i = 17790; i <= 18113; i++) + materials[i] = Material.GraniteWall; + for (int i = 18114; i <= 18437; i++) + materials[i] = Material.StoneBrickWall; + for (int i = 18438; i <= 18761; i++) + materials[i] = Material.MudBrickWall; + for (int i = 18762; i <= 19085; i++) + materials[i] = Material.NetherBrickWall; + for (int i = 19086; i <= 19409; i++) + materials[i] = Material.AndesiteWall; + for (int i = 19410; i <= 19733; i++) + materials[i] = Material.RedNetherBrickWall; + for (int i = 19734; i <= 20057; i++) + materials[i] = Material.SandstoneWall; + for (int i = 20058; i <= 20381; i++) + materials[i] = Material.EndStoneBrickWall; + for (int i = 20382; i <= 20705; i++) + materials[i] = Material.DioriteWall; + for (int i = 20706; i <= 20737; i++) + materials[i] = Material.Scaffolding; + for (int i = 20738; i <= 20741; i++) + materials[i] = Material.Loom; + for (int i = 20742; i <= 20753; i++) + materials[i] = Material.Barrel; + for (int i = 20754; i <= 20761; i++) + materials[i] = Material.Smoker; + for (int i = 20762; i <= 20769; i++) + materials[i] = Material.BlastFurnace; + for (int i = 20770; i <= 20770; i++) + materials[i] = Material.CartographyTable; + for (int i = 20771; i <= 20771; i++) + materials[i] = Material.FletchingTable; + for (int i = 20772; i <= 20783; i++) + materials[i] = Material.Grindstone; + for (int i = 20784; i <= 20799; i++) + materials[i] = Material.Lectern; + for (int i = 20800; i <= 20800; i++) + materials[i] = Material.SmithingTable; + for (int i = 20801; i <= 20804; i++) + materials[i] = Material.Stonecutter; + for (int i = 20805; i <= 20836; i++) + materials[i] = Material.Bell; + for (int i = 20837; i <= 20840; i++) + materials[i] = Material.Lantern; + for (int i = 20841; i <= 20844; i++) + materials[i] = Material.SoulLantern; + for (int i = 20845; i <= 20848; i++) + materials[i] = Material.CopperLantern; + for (int i = 20849; i <= 20852; i++) + materials[i] = Material.ExposedCopperLantern; + for (int i = 20853; i <= 20856; i++) + materials[i] = Material.WeatheredCopperLantern; + for (int i = 20857; i <= 20860; i++) + materials[i] = Material.OxidizedCopperLantern; + for (int i = 20861; i <= 20864; i++) + materials[i] = Material.WaxedCopperLantern; + for (int i = 20865; i <= 20868; i++) + materials[i] = Material.WaxedExposedCopperLantern; + for (int i = 20869; i <= 20872; i++) + materials[i] = Material.WaxedWeatheredCopperLantern; + for (int i = 20873; i <= 20876; i++) + materials[i] = Material.WaxedOxidizedCopperLantern; + for (int i = 20877; i <= 20908; i++) + materials[i] = Material.Campfire; + for (int i = 20909; i <= 20940; i++) + materials[i] = Material.SoulCampfire; + for (int i = 20941; i <= 20944; i++) + materials[i] = Material.SweetBerryBush; + for (int i = 20945; i <= 20947; i++) + materials[i] = Material.WarpedStem; + for (int i = 20948; i <= 20950; i++) + materials[i] = Material.StrippedWarpedStem; + for (int i = 20951; i <= 20953; i++) + materials[i] = Material.WarpedHyphae; + for (int i = 20954; i <= 20956; i++) + materials[i] = Material.StrippedWarpedHyphae; + for (int i = 20957; i <= 20957; i++) + materials[i] = Material.WarpedNylium; + for (int i = 20958; i <= 20958; i++) + materials[i] = Material.WarpedFungus; + for (int i = 20959; i <= 20959; i++) + materials[i] = Material.WarpedWartBlock; + for (int i = 20960; i <= 20960; i++) + materials[i] = Material.WarpedRoots; + for (int i = 20961; i <= 20961; i++) + materials[i] = Material.NetherSprouts; + for (int i = 20962; i <= 20964; i++) + materials[i] = Material.CrimsonStem; + for (int i = 20965; i <= 20967; i++) + materials[i] = Material.StrippedCrimsonStem; + for (int i = 20968; i <= 20970; i++) + materials[i] = Material.CrimsonHyphae; + for (int i = 20971; i <= 20973; i++) + materials[i] = Material.StrippedCrimsonHyphae; + for (int i = 20974; i <= 20974; i++) + materials[i] = Material.CrimsonNylium; + for (int i = 20975; i <= 20975; i++) + materials[i] = Material.CrimsonFungus; + for (int i = 20976; i <= 20976; i++) + materials[i] = Material.Shroomlight; + for (int i = 20977; i <= 21002; i++) + materials[i] = Material.WeepingVines; + for (int i = 21003; i <= 21003; i++) + materials[i] = Material.WeepingVinesPlant; + for (int i = 21004; i <= 21029; i++) + materials[i] = Material.TwistingVines; + for (int i = 21030; i <= 21030; i++) + materials[i] = Material.TwistingVinesPlant; + for (int i = 21031; i <= 21031; i++) + materials[i] = Material.CrimsonRoots; + for (int i = 21032; i <= 21032; i++) + materials[i] = Material.CrimsonPlanks; + for (int i = 21033; i <= 21033; i++) + materials[i] = Material.WarpedPlanks; + for (int i = 21034; i <= 21039; i++) + materials[i] = Material.CrimsonSlab; + for (int i = 21040; i <= 21045; i++) + materials[i] = Material.WarpedSlab; + for (int i = 21046; i <= 21047; i++) + materials[i] = Material.CrimsonPressurePlate; + for (int i = 21048; i <= 21049; i++) + materials[i] = Material.WarpedPressurePlate; + for (int i = 21050; i <= 21081; i++) + materials[i] = Material.CrimsonFence; + for (int i = 21082; i <= 21113; i++) + materials[i] = Material.WarpedFence; + for (int i = 21114; i <= 21177; i++) + materials[i] = Material.CrimsonTrapdoor; + for (int i = 21178; i <= 21241; i++) + materials[i] = Material.WarpedTrapdoor; + for (int i = 21242; i <= 21273; i++) + materials[i] = Material.CrimsonFenceGate; + for (int i = 21274; i <= 21305; i++) + materials[i] = Material.WarpedFenceGate; + for (int i = 21306; i <= 21385; i++) + materials[i] = Material.CrimsonStairs; + for (int i = 21386; i <= 21465; i++) + materials[i] = Material.WarpedStairs; + for (int i = 21466; i <= 21489; i++) + materials[i] = Material.CrimsonButton; + for (int i = 21490; i <= 21513; i++) + materials[i] = Material.WarpedButton; + for (int i = 21514; i <= 21577; i++) + materials[i] = Material.CrimsonDoor; + for (int i = 21578; i <= 21641; i++) + materials[i] = Material.WarpedDoor; + for (int i = 21642; i <= 21673; i++) + materials[i] = Material.CrimsonSign; + for (int i = 21674; i <= 21705; i++) + materials[i] = Material.WarpedSign; + for (int i = 21706; i <= 21713; i++) + materials[i] = Material.CrimsonWallSign; + for (int i = 21714; i <= 21721; i++) + materials[i] = Material.WarpedWallSign; + for (int i = 21722; i <= 21725; i++) + materials[i] = Material.StructureBlock; + for (int i = 21726; i <= 21737; i++) + materials[i] = Material.Jigsaw; + for (int i = 21738; i <= 21741; i++) + materials[i] = Material.TestBlock; + for (int i = 21742; i <= 21742; i++) + materials[i] = Material.TestInstanceBlock; + for (int i = 21743; i <= 21751; i++) + materials[i] = Material.Composter; + for (int i = 21752; i <= 21767; i++) + materials[i] = Material.Target; + for (int i = 21768; i <= 21791; i++) + materials[i] = Material.BeeNest; + for (int i = 21792; i <= 21815; i++) + materials[i] = Material.Beehive; + for (int i = 21816; i <= 21816; i++) + materials[i] = Material.HoneyBlock; + for (int i = 21817; i <= 21817; i++) + materials[i] = Material.HoneycombBlock; + for (int i = 21818; i <= 21818; i++) + materials[i] = Material.NetheriteBlock; + for (int i = 21819; i <= 21819; i++) + materials[i] = Material.AncientDebris; + for (int i = 21820; i <= 21820; i++) + materials[i] = Material.CryingObsidian; + for (int i = 21821; i <= 21825; i++) + materials[i] = Material.RespawnAnchor; + for (int i = 21826; i <= 21826; i++) + materials[i] = Material.PottedCrimsonFungus; + for (int i = 21827; i <= 21827; i++) + materials[i] = Material.PottedWarpedFungus; + for (int i = 21828; i <= 21828; i++) + materials[i] = Material.PottedCrimsonRoots; + for (int i = 21829; i <= 21829; i++) + materials[i] = Material.PottedWarpedRoots; + for (int i = 21830; i <= 21830; i++) + materials[i] = Material.Lodestone; + for (int i = 21831; i <= 21831; i++) + materials[i] = Material.Blackstone; + for (int i = 21832; i <= 21911; i++) + materials[i] = Material.BlackstoneStairs; + for (int i = 21912; i <= 22235; i++) + materials[i] = Material.BlackstoneWall; + for (int i = 22236; i <= 22241; i++) + materials[i] = Material.BlackstoneSlab; + for (int i = 22242; i <= 22242; i++) + materials[i] = Material.PolishedBlackstone; + for (int i = 22243; i <= 22243; i++) + materials[i] = Material.PolishedBlackstoneBricks; + for (int i = 22244; i <= 22244; i++) + materials[i] = Material.CrackedPolishedBlackstoneBricks; + for (int i = 22245; i <= 22245; i++) + materials[i] = Material.ChiseledPolishedBlackstone; + for (int i = 22246; i <= 22251; i++) + materials[i] = Material.PolishedBlackstoneBrickSlab; + for (int i = 22252; i <= 22331; i++) + materials[i] = Material.PolishedBlackstoneBrickStairs; + for (int i = 22332; i <= 22655; i++) + materials[i] = Material.PolishedBlackstoneBrickWall; + for (int i = 22656; i <= 22656; i++) + materials[i] = Material.GildedBlackstone; + for (int i = 22657; i <= 22736; i++) + materials[i] = Material.PolishedBlackstoneStairs; + for (int i = 22737; i <= 22742; i++) + materials[i] = Material.PolishedBlackstoneSlab; + for (int i = 22743; i <= 22744; i++) + materials[i] = Material.PolishedBlackstonePressurePlate; + for (int i = 22745; i <= 22768; i++) + materials[i] = Material.PolishedBlackstoneButton; + for (int i = 22769; i <= 23092; i++) + materials[i] = Material.PolishedBlackstoneWall; + for (int i = 23093; i <= 23093; i++) + materials[i] = Material.ChiseledNetherBricks; + for (int i = 23094; i <= 23094; i++) + materials[i] = Material.CrackedNetherBricks; + for (int i = 23095; i <= 23095; i++) + materials[i] = Material.QuartzBricks; + for (int i = 23096; i <= 23111; i++) + materials[i] = Material.Candle; + for (int i = 23112; i <= 23127; i++) + materials[i] = Material.WhiteCandle; + for (int i = 23128; i <= 23143; i++) + materials[i] = Material.OrangeCandle; + for (int i = 23144; i <= 23159; i++) + materials[i] = Material.MagentaCandle; + for (int i = 23160; i <= 23175; i++) + materials[i] = Material.LightBlueCandle; + for (int i = 23176; i <= 23191; i++) + materials[i] = Material.YellowCandle; + for (int i = 23192; i <= 23207; i++) + materials[i] = Material.LimeCandle; + for (int i = 23208; i <= 23223; i++) + materials[i] = Material.PinkCandle; + for (int i = 23224; i <= 23239; i++) + materials[i] = Material.GrayCandle; + for (int i = 23240; i <= 23255; i++) + materials[i] = Material.LightGrayCandle; + for (int i = 23256; i <= 23271; i++) + materials[i] = Material.CyanCandle; + for (int i = 23272; i <= 23287; i++) + materials[i] = Material.PurpleCandle; + for (int i = 23288; i <= 23303; i++) + materials[i] = Material.BlueCandle; + for (int i = 23304; i <= 23319; i++) + materials[i] = Material.BrownCandle; + for (int i = 23320; i <= 23335; i++) + materials[i] = Material.GreenCandle; + for (int i = 23336; i <= 23351; i++) + materials[i] = Material.RedCandle; + for (int i = 23352; i <= 23367; i++) + materials[i] = Material.BlackCandle; + for (int i = 23368; i <= 23369; i++) + materials[i] = Material.CandleCake; + for (int i = 23370; i <= 23371; i++) + materials[i] = Material.WhiteCandleCake; + for (int i = 23372; i <= 23373; i++) + materials[i] = Material.OrangeCandleCake; + for (int i = 23374; i <= 23375; i++) + materials[i] = Material.MagentaCandleCake; + for (int i = 23376; i <= 23377; i++) + materials[i] = Material.LightBlueCandleCake; + for (int i = 23378; i <= 23379; i++) + materials[i] = Material.YellowCandleCake; + for (int i = 23380; i <= 23381; i++) + materials[i] = Material.LimeCandleCake; + for (int i = 23382; i <= 23383; i++) + materials[i] = Material.PinkCandleCake; + for (int i = 23384; i <= 23385; i++) + materials[i] = Material.GrayCandleCake; + for (int i = 23386; i <= 23387; i++) + materials[i] = Material.LightGrayCandleCake; + for (int i = 23388; i <= 23389; i++) + materials[i] = Material.CyanCandleCake; + for (int i = 23390; i <= 23391; i++) + materials[i] = Material.PurpleCandleCake; + for (int i = 23392; i <= 23393; i++) + materials[i] = Material.BlueCandleCake; + for (int i = 23394; i <= 23395; i++) + materials[i] = Material.BrownCandleCake; + for (int i = 23396; i <= 23397; i++) + materials[i] = Material.GreenCandleCake; + for (int i = 23398; i <= 23399; i++) + materials[i] = Material.RedCandleCake; + for (int i = 23400; i <= 23401; i++) + materials[i] = Material.BlackCandleCake; + for (int i = 23402; i <= 23402; i++) + materials[i] = Material.AmethystBlock; + for (int i = 23403; i <= 23403; i++) + materials[i] = Material.BuddingAmethyst; + for (int i = 23404; i <= 23415; i++) + materials[i] = Material.AmethystCluster; + for (int i = 23416; i <= 23427; i++) + materials[i] = Material.LargeAmethystBud; + for (int i = 23428; i <= 23439; i++) + materials[i] = Material.MediumAmethystBud; + for (int i = 23440; i <= 23451; i++) + materials[i] = Material.SmallAmethystBud; + for (int i = 23452; i <= 23452; i++) + materials[i] = Material.Tuff; + for (int i = 23453; i <= 23458; i++) + materials[i] = Material.TuffSlab; + for (int i = 23459; i <= 23538; i++) + materials[i] = Material.TuffStairs; + for (int i = 23539; i <= 23862; i++) + materials[i] = Material.TuffWall; + for (int i = 23863; i <= 23863; i++) + materials[i] = Material.PolishedTuff; + for (int i = 23864; i <= 23869; i++) + materials[i] = Material.PolishedTuffSlab; + for (int i = 23870; i <= 23949; i++) + materials[i] = Material.PolishedTuffStairs; + for (int i = 23950; i <= 24273; i++) + materials[i] = Material.PolishedTuffWall; + for (int i = 24274; i <= 24274; i++) + materials[i] = Material.ChiseledTuff; + for (int i = 24275; i <= 24275; i++) + materials[i] = Material.TuffBricks; + for (int i = 24276; i <= 24281; i++) + materials[i] = Material.TuffBrickSlab; + for (int i = 24282; i <= 24361; i++) + materials[i] = Material.TuffBrickStairs; + for (int i = 24362; i <= 24685; i++) + materials[i] = Material.TuffBrickWall; + for (int i = 24686; i <= 24686; i++) + materials[i] = Material.ChiseledTuffBricks; + for (int i = 24687; i <= 24687; i++) + materials[i] = Material.Sulfur; + for (int i = 24688; i <= 24692; i++) + materials[i] = Material.PotentSulfur; + for (int i = 24693; i <= 24698; i++) + materials[i] = Material.SulfurSlab; + for (int i = 24699; i <= 24778; i++) + materials[i] = Material.SulfurStairs; + for (int i = 24779; i <= 25102; i++) + materials[i] = Material.SulfurWall; + for (int i = 25103; i <= 25103; i++) + materials[i] = Material.PolishedSulfur; + for (int i = 25104; i <= 25109; i++) + materials[i] = Material.PolishedSulfurSlab; + for (int i = 25110; i <= 25189; i++) + materials[i] = Material.PolishedSulfurStairs; + for (int i = 25190; i <= 25513; i++) + materials[i] = Material.PolishedSulfurWall; + for (int i = 25514; i <= 25514; i++) + materials[i] = Material.SulfurBricks; + for (int i = 25515; i <= 25520; i++) + materials[i] = Material.SulfurBrickSlab; + for (int i = 25521; i <= 25600; i++) + materials[i] = Material.SulfurBrickStairs; + for (int i = 25601; i <= 25924; i++) + materials[i] = Material.SulfurBrickWall; + for (int i = 25925; i <= 25925; i++) + materials[i] = Material.ChiseledSulfur; + for (int i = 25926; i <= 25926; i++) + materials[i] = Material.Cinnabar; + for (int i = 25927; i <= 25932; i++) + materials[i] = Material.CinnabarSlab; + for (int i = 25933; i <= 26012; i++) + materials[i] = Material.CinnabarStairs; + for (int i = 26013; i <= 26336; i++) + materials[i] = Material.CinnabarWall; + for (int i = 26337; i <= 26337; i++) + materials[i] = Material.PolishedCinnabar; + for (int i = 26338; i <= 26343; i++) + materials[i] = Material.PolishedCinnabarSlab; + for (int i = 26344; i <= 26423; i++) + materials[i] = Material.PolishedCinnabarStairs; + for (int i = 26424; i <= 26747; i++) + materials[i] = Material.PolishedCinnabarWall; + for (int i = 26748; i <= 26748; i++) + materials[i] = Material.CinnabarBricks; + for (int i = 26749; i <= 26754; i++) + materials[i] = Material.CinnabarBrickSlab; + for (int i = 26755; i <= 26834; i++) + materials[i] = Material.CinnabarBrickStairs; + for (int i = 26835; i <= 27158; i++) + materials[i] = Material.CinnabarBrickWall; + for (int i = 27159; i <= 27159; i++) + materials[i] = Material.ChiseledCinnabar; + for (int i = 27160; i <= 27160; i++) + materials[i] = Material.Calcite; + for (int i = 27161; i <= 27161; i++) + materials[i] = Material.TintedGlass; + for (int i = 27162; i <= 27162; i++) + materials[i] = Material.PowderSnow; + for (int i = 27163; i <= 27258; i++) + materials[i] = Material.SculkSensor; + for (int i = 27259; i <= 27642; i++) + materials[i] = Material.CalibratedSculkSensor; + for (int i = 27643; i <= 27643; i++) + materials[i] = Material.Sculk; + for (int i = 27644; i <= 27771; i++) + materials[i] = Material.SculkVein; + for (int i = 27772; i <= 27773; i++) + materials[i] = Material.SculkCatalyst; + for (int i = 27774; i <= 27781; i++) + materials[i] = Material.SculkShrieker; + for (int i = 27782; i <= 27782; i++) + materials[i] = Material.CopperBlock; + for (int i = 27783; i <= 27783; i++) + materials[i] = Material.ExposedCopper; + for (int i = 27784; i <= 27784; i++) + materials[i] = Material.WeatheredCopper; + for (int i = 27785; i <= 27785; i++) + materials[i] = Material.OxidizedCopper; + for (int i = 27786; i <= 27786; i++) + materials[i] = Material.WaxedCopperBlock; + for (int i = 27787; i <= 27787; i++) + materials[i] = Material.WaxedExposedCopper; + for (int i = 27788; i <= 27788; i++) + materials[i] = Material.WaxedWeatheredCopper; + for (int i = 27789; i <= 27789; i++) + materials[i] = Material.WaxedOxidizedCopper; + for (int i = 27790; i <= 27790; i++) + materials[i] = Material.CopperOre; + for (int i = 27791; i <= 27791; i++) + materials[i] = Material.DeepslateCopperOre; + for (int i = 27792; i <= 27792; i++) + materials[i] = Material.CutCopper; + for (int i = 27793; i <= 27793; i++) + materials[i] = Material.ExposedCutCopper; + for (int i = 27794; i <= 27794; i++) + materials[i] = Material.WeatheredCutCopper; + for (int i = 27795; i <= 27795; i++) + materials[i] = Material.OxidizedCutCopper; + for (int i = 27796; i <= 27796; i++) + materials[i] = Material.WaxedCutCopper; + for (int i = 27797; i <= 27797; i++) + materials[i] = Material.WaxedExposedCutCopper; + for (int i = 27798; i <= 27798; i++) + materials[i] = Material.WaxedWeatheredCutCopper; + for (int i = 27799; i <= 27799; i++) + materials[i] = Material.WaxedOxidizedCutCopper; + for (int i = 27800; i <= 27800; i++) + materials[i] = Material.ChiseledCopper; + for (int i = 27801; i <= 27801; i++) + materials[i] = Material.ExposedChiseledCopper; + for (int i = 27802; i <= 27802; i++) + materials[i] = Material.WeatheredChiseledCopper; + for (int i = 27803; i <= 27803; i++) + materials[i] = Material.OxidizedChiseledCopper; + for (int i = 27804; i <= 27804; i++) + materials[i] = Material.WaxedChiseledCopper; + for (int i = 27805; i <= 27805; i++) + materials[i] = Material.WaxedExposedChiseledCopper; + for (int i = 27806; i <= 27806; i++) + materials[i] = Material.WaxedWeatheredChiseledCopper; + for (int i = 27807; i <= 27807; i++) + materials[i] = Material.WaxedOxidizedChiseledCopper; + for (int i = 27808; i <= 27887; i++) + materials[i] = Material.CutCopperStairs; + for (int i = 27888; i <= 27967; i++) + materials[i] = Material.ExposedCutCopperStairs; + for (int i = 27968; i <= 28047; i++) + materials[i] = Material.WeatheredCutCopperStairs; + for (int i = 28048; i <= 28127; i++) + materials[i] = Material.OxidizedCutCopperStairs; + for (int i = 28128; i <= 28207; i++) + materials[i] = Material.WaxedCutCopperStairs; + for (int i = 28208; i <= 28287; i++) + materials[i] = Material.WaxedExposedCutCopperStairs; + for (int i = 28288; i <= 28367; i++) + materials[i] = Material.WaxedWeatheredCutCopperStairs; + for (int i = 28368; i <= 28447; i++) + materials[i] = Material.WaxedOxidizedCutCopperStairs; + for (int i = 28448; i <= 28453; i++) + materials[i] = Material.CutCopperSlab; + for (int i = 28454; i <= 28459; i++) + materials[i] = Material.ExposedCutCopperSlab; + for (int i = 28460; i <= 28465; i++) + materials[i] = Material.WeatheredCutCopperSlab; + for (int i = 28466; i <= 28471; i++) + materials[i] = Material.OxidizedCutCopperSlab; + for (int i = 28472; i <= 28477; i++) + materials[i] = Material.WaxedCutCopperSlab; + for (int i = 28478; i <= 28483; i++) + materials[i] = Material.WaxedExposedCutCopperSlab; + for (int i = 28484; i <= 28489; i++) + materials[i] = Material.WaxedWeatheredCutCopperSlab; + for (int i = 28490; i <= 28495; i++) + materials[i] = Material.WaxedOxidizedCutCopperSlab; + for (int i = 28496; i <= 28559; i++) + materials[i] = Material.CopperDoor; + for (int i = 28560; i <= 28623; i++) + materials[i] = Material.ExposedCopperDoor; + for (int i = 28624; i <= 28687; i++) + materials[i] = Material.WeatheredCopperDoor; + for (int i = 28688; i <= 28751; i++) + materials[i] = Material.OxidizedCopperDoor; + for (int i = 28752; i <= 28815; i++) + materials[i] = Material.WaxedCopperDoor; + for (int i = 28816; i <= 28879; i++) + materials[i] = Material.WaxedExposedCopperDoor; + for (int i = 28880; i <= 28943; i++) + materials[i] = Material.WaxedWeatheredCopperDoor; + for (int i = 28944; i <= 29007; i++) + materials[i] = Material.WaxedOxidizedCopperDoor; + for (int i = 29008; i <= 29071; i++) + materials[i] = Material.CopperTrapdoor; + for (int i = 29072; i <= 29135; i++) + materials[i] = Material.ExposedCopperTrapdoor; + for (int i = 29136; i <= 29199; i++) + materials[i] = Material.WeatheredCopperTrapdoor; + for (int i = 29200; i <= 29263; i++) + materials[i] = Material.OxidizedCopperTrapdoor; + for (int i = 29264; i <= 29327; i++) + materials[i] = Material.WaxedCopperTrapdoor; + for (int i = 29328; i <= 29391; i++) + materials[i] = Material.WaxedExposedCopperTrapdoor; + for (int i = 29392; i <= 29455; i++) + materials[i] = Material.WaxedWeatheredCopperTrapdoor; + for (int i = 29456; i <= 29519; i++) + materials[i] = Material.WaxedOxidizedCopperTrapdoor; + for (int i = 29520; i <= 29521; i++) + materials[i] = Material.CopperGrate; + for (int i = 29522; i <= 29523; i++) + materials[i] = Material.ExposedCopperGrate; + for (int i = 29524; i <= 29525; i++) + materials[i] = Material.WeatheredCopperGrate; + for (int i = 29526; i <= 29527; i++) + materials[i] = Material.OxidizedCopperGrate; + for (int i = 29528; i <= 29529; i++) + materials[i] = Material.WaxedCopperGrate; + for (int i = 29530; i <= 29531; i++) + materials[i] = Material.WaxedExposedCopperGrate; + for (int i = 29532; i <= 29533; i++) + materials[i] = Material.WaxedWeatheredCopperGrate; + for (int i = 29534; i <= 29535; i++) + materials[i] = Material.WaxedOxidizedCopperGrate; + for (int i = 29536; i <= 29539; i++) + materials[i] = Material.CopperBulb; + for (int i = 29540; i <= 29543; i++) + materials[i] = Material.ExposedCopperBulb; + for (int i = 29544; i <= 29547; i++) + materials[i] = Material.WeatheredCopperBulb; + for (int i = 29548; i <= 29551; i++) + materials[i] = Material.OxidizedCopperBulb; + for (int i = 29552; i <= 29555; i++) + materials[i] = Material.WaxedCopperBulb; + for (int i = 29556; i <= 29559; i++) + materials[i] = Material.WaxedExposedCopperBulb; + for (int i = 29560; i <= 29563; i++) + materials[i] = Material.WaxedWeatheredCopperBulb; + for (int i = 29564; i <= 29567; i++) + materials[i] = Material.WaxedOxidizedCopperBulb; + for (int i = 29568; i <= 29591; i++) + materials[i] = Material.CopperChest; + for (int i = 29592; i <= 29615; i++) + materials[i] = Material.ExposedCopperChest; + for (int i = 29616; i <= 29639; i++) + materials[i] = Material.WeatheredCopperChest; + for (int i = 29640; i <= 29663; i++) + materials[i] = Material.OxidizedCopperChest; + for (int i = 29664; i <= 29687; i++) + materials[i] = Material.WaxedCopperChest; + for (int i = 29688; i <= 29711; i++) + materials[i] = Material.WaxedExposedCopperChest; + for (int i = 29712; i <= 29735; i++) + materials[i] = Material.WaxedWeatheredCopperChest; + for (int i = 29736; i <= 29759; i++) + materials[i] = Material.WaxedOxidizedCopperChest; + for (int i = 29760; i <= 29791; i++) + materials[i] = Material.CopperGolemStatue; + for (int i = 29792; i <= 29823; i++) + materials[i] = Material.ExposedCopperGolemStatue; + for (int i = 29824; i <= 29855; i++) + materials[i] = Material.WeatheredCopperGolemStatue; + for (int i = 29856; i <= 29887; i++) + materials[i] = Material.OxidizedCopperGolemStatue; + for (int i = 29888; i <= 29919; i++) + materials[i] = Material.WaxedCopperGolemStatue; + for (int i = 29920; i <= 29951; i++) + materials[i] = Material.WaxedExposedCopperGolemStatue; + for (int i = 29952; i <= 29983; i++) + materials[i] = Material.WaxedWeatheredCopperGolemStatue; + for (int i = 29984; i <= 30015; i++) + materials[i] = Material.WaxedOxidizedCopperGolemStatue; + for (int i = 30016; i <= 30039; i++) + materials[i] = Material.LightningRod; + for (int i = 30040; i <= 30063; i++) + materials[i] = Material.ExposedLightningRod; + for (int i = 30064; i <= 30087; i++) + materials[i] = Material.WeatheredLightningRod; + for (int i = 30088; i <= 30111; i++) + materials[i] = Material.OxidizedLightningRod; + for (int i = 30112; i <= 30135; i++) + materials[i] = Material.WaxedLightningRod; + for (int i = 30136; i <= 30159; i++) + materials[i] = Material.WaxedExposedLightningRod; + for (int i = 30160; i <= 30183; i++) + materials[i] = Material.WaxedWeatheredLightningRod; + for (int i = 30184; i <= 30207; i++) + materials[i] = Material.WaxedOxidizedLightningRod; + for (int i = 30208; i <= 30208; i++) + materials[i] = Material.DripstoneBlock; + for (int i = 30209; i <= 30228; i++) + materials[i] = Material.PointedDripstone; + for (int i = 30229; i <= 30248; i++) + materials[i] = Material.SulfurSpike; + for (int i = 30249; i <= 30300; i++) + materials[i] = Material.CaveVines; + for (int i = 30301; i <= 30302; i++) + materials[i] = Material.CaveVinesPlant; + for (int i = 30303; i <= 30303; i++) + materials[i] = Material.SporeBlossom; + for (int i = 30304; i <= 30304; i++) + materials[i] = Material.Azalea; + for (int i = 30305; i <= 30305; i++) + materials[i] = Material.FloweringAzalea; + for (int i = 30306; i <= 30306; i++) + materials[i] = Material.MossCarpet; + for (int i = 30307; i <= 30322; i++) + materials[i] = Material.PinkPetals; + for (int i = 30323; i <= 30338; i++) + materials[i] = Material.Wildflowers; + for (int i = 30339; i <= 30354; i++) + materials[i] = Material.LeafLitter; + for (int i = 30355; i <= 30355; i++) + materials[i] = Material.MossBlock; + for (int i = 30356; i <= 30387; i++) + materials[i] = Material.BigDripleaf; + for (int i = 30388; i <= 30395; i++) + materials[i] = Material.BigDripleafStem; + for (int i = 30396; i <= 30411; i++) + materials[i] = Material.SmallDripleaf; + for (int i = 30412; i <= 30413; i++) + materials[i] = Material.HangingRoots; + for (int i = 30414; i <= 30414; i++) + materials[i] = Material.RootedDirt; + for (int i = 30415; i <= 30415; i++) + materials[i] = Material.Mud; + for (int i = 30416; i <= 30418; i++) + materials[i] = Material.Deepslate; + for (int i = 30419; i <= 30419; i++) + materials[i] = Material.CobbledDeepslate; + for (int i = 30420; i <= 30499; i++) + materials[i] = Material.CobbledDeepslateStairs; + for (int i = 30500; i <= 30505; i++) + materials[i] = Material.CobbledDeepslateSlab; + for (int i = 30506; i <= 30829; i++) + materials[i] = Material.CobbledDeepslateWall; + for (int i = 30830; i <= 30830; i++) + materials[i] = Material.PolishedDeepslate; + for (int i = 30831; i <= 30910; i++) + materials[i] = Material.PolishedDeepslateStairs; + for (int i = 30911; i <= 30916; i++) + materials[i] = Material.PolishedDeepslateSlab; + for (int i = 30917; i <= 31240; i++) + materials[i] = Material.PolishedDeepslateWall; + for (int i = 31241; i <= 31241; i++) + materials[i] = Material.DeepslateTiles; + for (int i = 31242; i <= 31321; i++) + materials[i] = Material.DeepslateTileStairs; + for (int i = 31322; i <= 31327; i++) + materials[i] = Material.DeepslateTileSlab; + for (int i = 31328; i <= 31651; i++) + materials[i] = Material.DeepslateTileWall; + for (int i = 31652; i <= 31652; i++) + materials[i] = Material.DeepslateBricks; + for (int i = 31653; i <= 31732; i++) + materials[i] = Material.DeepslateBrickStairs; + for (int i = 31733; i <= 31738; i++) + materials[i] = Material.DeepslateBrickSlab; + for (int i = 31739; i <= 32062; i++) + materials[i] = Material.DeepslateBrickWall; + for (int i = 32063; i <= 32063; i++) + materials[i] = Material.ChiseledDeepslate; + for (int i = 32064; i <= 32064; i++) + materials[i] = Material.CrackedDeepslateBricks; + for (int i = 32065; i <= 32065; i++) + materials[i] = Material.CrackedDeepslateTiles; + for (int i = 32066; i <= 32068; i++) + materials[i] = Material.InfestedDeepslate; + for (int i = 32069; i <= 32069; i++) + materials[i] = Material.SmoothBasalt; + for (int i = 32070; i <= 32070; i++) + materials[i] = Material.RawIronBlock; + for (int i = 32071; i <= 32071; i++) + materials[i] = Material.RawCopperBlock; + for (int i = 32072; i <= 32072; i++) + materials[i] = Material.RawGoldBlock; + for (int i = 32073; i <= 32073; i++) + materials[i] = Material.PottedAzaleaBush; + for (int i = 32074; i <= 32074; i++) + materials[i] = Material.PottedFloweringAzaleaBush; + for (int i = 32075; i <= 32077; i++) + materials[i] = Material.OchreFroglight; + for (int i = 32078; i <= 32080; i++) + materials[i] = Material.VerdantFroglight; + for (int i = 32081; i <= 32083; i++) + materials[i] = Material.PearlescentFroglight; + for (int i = 32084; i <= 32084; i++) + materials[i] = Material.Frogspawn; + for (int i = 32085; i <= 32085; i++) + materials[i] = Material.ReinforcedDeepslate; + for (int i = 32086; i <= 32101; i++) + materials[i] = Material.DecoratedPot; + for (int i = 32102; i <= 32149; i++) + materials[i] = Material.Crafter; + for (int i = 32150; i <= 32161; i++) + materials[i] = Material.TrialSpawner; + for (int i = 32162; i <= 32193; i++) + materials[i] = Material.Vault; + for (int i = 32194; i <= 32195; i++) + materials[i] = Material.HeavyCore; + for (int i = 32196; i <= 32196; i++) + materials[i] = Material.PaleMossBlock; + for (int i = 32197; i <= 32358; i++) + materials[i] = Material.PaleMossCarpet; + for (int i = 32359; i <= 32360; i++) + materials[i] = Material.PaleHangingMoss; + for (int i = 32361; i <= 32361; i++) + materials[i] = Material.OpenEyeblossom; + for (int i = 32362; i <= 32362; i++) + materials[i] = Material.ClosedEyeblossom; + for (int i = 32363; i <= 32363; i++) + materials[i] = Material.PottedOpenEyeblossom; + for (int i = 32364; i <= 32364; i++) + materials[i] = Material.PottedClosedEyeblossom; + for (int i = 32365; i <= 32365; i++) + materials[i] = Material.FireflyBush; + } + + // + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(22, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(41, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(43, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(45, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(86, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(102, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(125, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(157, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(160, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(240, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(243, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(246, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(249, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(252, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(280, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(308, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(336, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(364, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(392, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(420, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(448, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(476, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(504, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(532, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(566, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(581, 1350, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "trumpet", "trumpet_exposed", "trumpet_oxidized", "trumpet_weathered", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1931, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1947, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1963, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1979, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1995, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2011, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2027, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2043, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2059, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2075, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2091, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2107, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2123, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2139, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2155, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2171, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2187, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2211, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2235, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2255, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2257, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2269, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2309, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2341, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2344, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2600, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2664, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2728, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2792, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2856, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2920, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2984, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3048, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3112, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3176, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3240, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3304, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3371, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(3375, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(3889, 18, + [ + new("axis", ["x", "y", "z"], 6), + new("creaking_heart_state", ["uprooted", "dormant", "awake"], 2), + new("natural", ["true", "false"], 1) + ]), + new(3907, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3987, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(4011, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(5311, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5319, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5327, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5335, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5367, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5399, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5431, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5463, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5495, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5527, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5559, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5591, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5623, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5655, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5719, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5727, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5747, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5827, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5835, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5843, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5851, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5859, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5867, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5875, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5883, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5891, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5899, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5907, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5971, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6035, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6099, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6163, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6227, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6291, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6355, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6419, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6483, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6547, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6611, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6675, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6683, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6691, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6699, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6707, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6715, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6723, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6731, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6739, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6747, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6755, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6763, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6771, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6795, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6797, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6861, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6863, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6865, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6867, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6869, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6871, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6873, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6875, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6877, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6879, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6881, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6883, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6885, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6887, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(6895, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6919, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(6929, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6947, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6963, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(6965, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7000, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7003, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7007, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7012, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7017, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(7019, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7023, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7027, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(7034, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7114, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7178, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7242, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7306, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7370, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7434, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7498, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7562, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7626, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7690, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7766, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7830, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7894, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7958, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7990, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8022, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8054, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8086, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8118, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8150, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8182, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8214, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8246, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8252, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8258, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8264, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8270, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8276, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8282, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8288, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8294, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8300, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8334, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8338, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8342, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8350, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8358, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8390, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8518, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8646, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8678, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8758, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8838, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8918, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(8923, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9003, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9009, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9335, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9367, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9447, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(9452, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(9461, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(9465, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(9469, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9479, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(9481, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9493, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9575, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9583, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9599, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9728, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9808, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9888, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9968, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9981, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(10305, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(10659, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(10667, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(10675, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10699, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10723, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10747, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10771, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10795, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10819, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10843, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10867, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10891, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10915, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10947, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10955, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10987, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10995, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11027, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11035, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11067, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11075, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11107, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11115, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11147, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11155, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11187, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11195, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11199, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11203, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11207, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(11231, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11247, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11263, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11279, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11313, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(11325, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11328, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11408, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11432, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(11460, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11492, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11524, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11556, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11588, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11620, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11652, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11684, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11716, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11748, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11780, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11812, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11844, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11876, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11908, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11940, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11972, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12052, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12132, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12212, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12292, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12372, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12452, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12533, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12535, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12567, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12634, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12714, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12794, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12874, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12880, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12886, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12893, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12915, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12917, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12919, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12921, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12923, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12925, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12927, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12943, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12959, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12975, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12991, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13007, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13023, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13039, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13055, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13071, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13087, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13103, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13119, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13135, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13151, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13167, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13183, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13187, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13191, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13195, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13199, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13203, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13207, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13211, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13215, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13219, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13223, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13227, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13231, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13235, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13239, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13243, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13250, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13330, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13336, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13342, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13348, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13354, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13360, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13366, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13372, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13378, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13384, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13390, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13396, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13402, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13408, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13414, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13420, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13426, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13432, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13438, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13444, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13450, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13456, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13462, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13468, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13474, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13484, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13516, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13548, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13580, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13612, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13644, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13676, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13708, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13740, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13772, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13804, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13836, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13868, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13900, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13932, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13964, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13996, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14028, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14060, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14124, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14188, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14252, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14316, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14380, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14444, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14508, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14572, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14636, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14642, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14706, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(14713, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14716, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14797, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(14799, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(14809, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(14811, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(14817, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14829, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14841, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(14848, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14852, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14864, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14870, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14876, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14882, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14888, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14894, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14900, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14906, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14912, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14918, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14924, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14930, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14936, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14942, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14948, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14954, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14960, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14966, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14970, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14974, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14978, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14982, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14986, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14990, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14994, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14998, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15002, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15006, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15010, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15014, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15018, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15022, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15026, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15062, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(15090, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(15102, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(15105, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("hydration", ["0", "1", "2", "3"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15147, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15149, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15151, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15153, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15155, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15157, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15159, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15161, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15165, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15167, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15169, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15171, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15173, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15175, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15177, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15179, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15181, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15183, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15185, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15187, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15195, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15203, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15211, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15219, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15227, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15235, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15243, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15251, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15259, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15267, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15276, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15279, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(15294, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(15296, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15376, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15456, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15536, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15616, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15696, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15776, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15856, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15936, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16016, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16096, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16176, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16256, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16336, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16416, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16422, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16428, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16434, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16440, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16446, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16452, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16458, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16464, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16470, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16476, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16482, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16488, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16494, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16818, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17142, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17466, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17790, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18114, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18438, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18762, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19086, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19410, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19734, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20058, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20382, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20706, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20738, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20742, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(20754, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(20762, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(20772, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20784, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20801, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20805, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20837, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20841, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20845, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20849, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20853, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20857, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20861, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20865, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20869, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20873, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20877, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20909, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20941, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(20945, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20948, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20951, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20954, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20962, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20965, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20968, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20971, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20977, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(21004, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(21034, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21040, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21046, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(21048, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(21050, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(21082, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(21114, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21178, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21242, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21274, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21306, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21386, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21466, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21490, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21514, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21578, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21642, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21674, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21706, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21714, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21722, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(21726, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(21738, 4, + [ + new("mode", ["start", "log", "fail", "accept"], 1) + ]), + new(21743, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(21752, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(21768, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(21792, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(21821, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(21832, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21912, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22236, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22246, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22252, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22332, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22657, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22737, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22743, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(22745, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(22769, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23096, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23112, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23128, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23144, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23160, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23176, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23192, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23208, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23224, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23240, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23256, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23272, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23288, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23304, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23320, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23336, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23352, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23368, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23370, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23372, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23374, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23376, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23378, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23380, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23382, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23384, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23386, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23388, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23390, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23392, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23394, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23396, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23398, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23400, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23404, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23416, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23428, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23440, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23453, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23459, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23539, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23864, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23870, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23950, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(24276, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24282, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24362, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(24688, 5, + [ + new("potent_sulfur_state", ["dry", "wet", "dormant", "erupting", "continuous"], 1) + ]), + new(24693, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24699, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24779, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25104, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25110, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25190, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25515, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25521, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25601, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25927, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25933, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26013, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26338, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26344, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26424, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26749, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26755, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26835, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27163, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27259, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27644, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(27772, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(27774, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27808, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27888, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27968, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28048, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28128, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28208, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28288, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28368, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28448, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28454, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28460, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28466, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28472, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28478, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28484, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28490, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28496, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28560, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28624, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28688, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28752, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28816, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28880, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28944, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29008, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29072, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29136, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29200, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29264, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29328, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29392, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29456, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29520, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29522, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29524, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29526, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29528, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29530, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29532, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29534, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29536, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29540, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29544, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29548, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29552, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29556, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29560, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29564, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29568, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29592, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29616, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29640, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29664, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29688, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29712, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29736, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29760, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29792, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29824, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29856, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29888, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29920, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29952, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29984, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30016, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30040, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30064, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30088, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30112, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30136, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30160, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30184, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30209, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30229, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30249, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(30301, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(30307, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(30323, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(30339, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("segment_amount", ["1", "2", "3", "4"], 1) + ]), + new(30356, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30388, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30396, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30412, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(30416, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(30420, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30500, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30506, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(30831, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30911, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30917, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(31242, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(31322, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(31328, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(31653, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(31733, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(31739, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(32066, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(32075, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(32078, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(32081, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(32086, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(32102, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(32150, 12, + [ + new("ominous", ["true", "false"], 6), + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + new(32162, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("ominous", ["true", "false"], 4), + new("vault_state", ["inactive", "active", "unlocking", "ejecting"], 1) + ]), + new(32194, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(32197, 162, + [ + new("bottom", ["true", "false"], 81), + new("east", ["none", "low", "tall"], 27), + new("north", ["none", "low", "tall"], 9), + new("south", ["none", "low", "tall"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(32359, 2, + [ + new("tip", ["true", "false"], 1) + ]), + ]; + // + + protected override Dictionary GetDict() + { + return materials; + } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } + } +} diff --git a/MinecraftClient/Mapping/EntityMetadataPalette.cs b/MinecraftClient/Mapping/EntityMetadataPalette.cs index 98875ffb..85f6c1b4 100644 --- a/MinecraftClient/Mapping/EntityMetadataPalette.cs +++ b/MinecraftClient/Mapping/EntityMetadataPalette.cs @@ -27,7 +27,7 @@ public abstract class EntityMetadataPalette <= Protocol18Handler.MC_1_21_7_Version => new EntityMetadataPalette1215(), // 1.21.5 - 1.21.8 <= Protocol18Handler.MC_1_21_9_Version => new EntityMetadataPalette1219(), // 1.21.9 - 1.21.10 <= Protocol18Handler.MC_1_21_11_Version => new EntityMetadataPalette12111(), // 1.21.11 - <= Protocol18Handler.MC_26_1_Version => new EntityMetadataPalette261(), // 26.1 + <= Protocol18Handler.MC_26_2_Version => new EntityMetadataPalette261(), // 26.1 - 26.2 (serializers unchanged in 26.2) _ => throw new NotImplementedException() }; } diff --git a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1122.cs b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1122.cs index 1bb24765..1f9e08cf 100644 --- a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1122.cs +++ b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1122.cs @@ -22,7 +22,7 @@ public class EntityMetadataPalette1122 : EntityMetadataPalette { 12, EntityMetaDataType.OptionalBlockId }, { 13, EntityMetaDataType.Nbt }, }; - + public override Dictionary GetEntityMetadataMappingsList() { return entityMetadataMappings; diff --git a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1191.cs b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1191.cs index bea16c9a..ef7f4117 100644 --- a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1191.cs +++ b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1191.cs @@ -33,7 +33,7 @@ public class EntityMetadataPalette1191 : EntityMetadataPalette { 21, EntityMetaDataType.OptionalGlobalPosition }, { 22, EntityMetaDataType.PaintingVariant } }; - + public override Dictionary GetEntityMetadataMappingsList() { return entityMetadataMappings; diff --git a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1193.cs b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1193.cs index b6dffe4c..664b2cfa 100644 --- a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1193.cs +++ b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1193.cs @@ -34,7 +34,7 @@ public class EntityMetadataPalette1193 : EntityMetadataPalette { 22, EntityMetaDataType.OptionalGlobalPosition }, { 23, EntityMetaDataType.PaintingVariant } }; - + public override Dictionary GetEntityMetadataMappingsList() { return entityMetadataMappings; diff --git a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1194.cs b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1194.cs index 2ac0e467..2b180afc 100644 --- a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1194.cs +++ b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette1194.cs @@ -38,7 +38,7 @@ public class EntityMetadataPalette1194 : EntityMetadataPalette { 26, EntityMetaDataType.Vector3 }, { 27, EntityMetaDataType.Quaternion }, }; - + public override Dictionary GetEntityMetadataMappingsList() { return entityMetadataMappings; diff --git a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette18.cs b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette18.cs index c862092c..41da3b2f 100644 --- a/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette18.cs +++ b/MinecraftClient/Mapping/EntityMetadataPalettes/EntityMetadataPalette18.cs @@ -16,7 +16,7 @@ public class EntityMetadataPalette18 : EntityMetadataPalette { 6, EntityMetaDataType.Vector3Int }, { 7, EntityMetaDataType.Rotation } }; - + public override Dictionary GetEntityMetadataMappingsList() { return entityMetadataMappings; diff --git a/MinecraftClient/Mapping/EntityPalettes/EntityPalette262.cs b/MinecraftClient/Mapping/EntityPalettes/EntityPalette262.cs new file mode 100644 index 00000000..326ec108 --- /dev/null +++ b/MinecraftClient/Mapping/EntityPalettes/EntityPalette262.cs @@ -0,0 +1,176 @@ +using System.Collections.Generic; + +namespace MinecraftClient.Mapping.EntityPalettes +{ + public class EntityPalette262 : EntityPalette + { + private static readonly Dictionary mappings = new(); + + static EntityPalette262() + { + mappings[0] = EntityType.AcaciaBoat; + mappings[1] = EntityType.AcaciaChestBoat; + mappings[2] = EntityType.Allay; + mappings[3] = EntityType.AreaEffectCloud; + mappings[4] = EntityType.Armadillo; + mappings[5] = EntityType.ArmorStand; + mappings[6] = EntityType.Arrow; + mappings[7] = EntityType.Axolotl; + mappings[8] = EntityType.BambooChestRaft; + mappings[9] = EntityType.BambooRaft; + mappings[10] = EntityType.Bat; + mappings[11] = EntityType.Bee; + mappings[12] = EntityType.BirchBoat; + mappings[13] = EntityType.BirchChestBoat; + mappings[14] = EntityType.Blaze; + mappings[15] = EntityType.BlockDisplay; + mappings[16] = EntityType.Bogged; + mappings[17] = EntityType.Breeze; + mappings[18] = EntityType.BreezeWindCharge; + mappings[19] = EntityType.Camel; + mappings[20] = EntityType.CamelHusk; + mappings[21] = EntityType.Cat; + mappings[22] = EntityType.CaveSpider; + mappings[23] = EntityType.CherryBoat; + mappings[24] = EntityType.CherryChestBoat; + mappings[25] = EntityType.ChestMinecart; + mappings[26] = EntityType.Chicken; + mappings[27] = EntityType.Cod; + mappings[28] = EntityType.CopperGolem; + mappings[29] = EntityType.CommandBlockMinecart; + mappings[30] = EntityType.Cow; + mappings[31] = EntityType.Creaking; + mappings[32] = EntityType.Creeper; + mappings[33] = EntityType.DarkOakBoat; + mappings[34] = EntityType.DarkOakChestBoat; + mappings[35] = EntityType.Dolphin; + mappings[36] = EntityType.Donkey; + mappings[37] = EntityType.DragonFireball; + mappings[38] = EntityType.Drowned; + mappings[39] = EntityType.Egg; + mappings[40] = EntityType.ElderGuardian; + mappings[41] = EntityType.Enderman; + mappings[42] = EntityType.Endermite; + mappings[43] = EntityType.EnderDragon; + mappings[44] = EntityType.EnderPearl; + mappings[45] = EntityType.EndCrystal; + mappings[46] = EntityType.Evoker; + mappings[47] = EntityType.EvokerFangs; + mappings[48] = EntityType.ExperienceBottle; + mappings[49] = EntityType.ExperienceOrb; + mappings[50] = EntityType.EyeOfEnder; + mappings[51] = EntityType.FallingBlock; + mappings[52] = EntityType.Fireball; + mappings[53] = EntityType.FireworkRocket; + mappings[54] = EntityType.Fox; + mappings[55] = EntityType.Frog; + mappings[56] = EntityType.FurnaceMinecart; + mappings[57] = EntityType.Ghast; + mappings[58] = EntityType.HappyGhast; + mappings[59] = EntityType.Giant; + mappings[60] = EntityType.GlowItemFrame; + mappings[61] = EntityType.GlowSquid; + mappings[62] = EntityType.Goat; + mappings[63] = EntityType.Guardian; + mappings[64] = EntityType.Hoglin; + mappings[65] = EntityType.HopperMinecart; + mappings[66] = EntityType.Horse; + mappings[67] = EntityType.Husk; + mappings[68] = EntityType.Illusioner; + mappings[69] = EntityType.Interaction; + mappings[70] = EntityType.IronGolem; + mappings[71] = EntityType.Item; + mappings[72] = EntityType.ItemDisplay; + mappings[73] = EntityType.ItemFrame; + mappings[74] = EntityType.JungleBoat; + mappings[75] = EntityType.JungleChestBoat; + mappings[76] = EntityType.LeashKnot; + mappings[77] = EntityType.LightningBolt; + mappings[78] = EntityType.Llama; + mappings[79] = EntityType.LlamaSpit; + mappings[80] = EntityType.MagmaCube; + mappings[81] = EntityType.MangroveBoat; + mappings[82] = EntityType.MangroveChestBoat; + mappings[83] = EntityType.Mannequin; + mappings[84] = EntityType.Marker; + mappings[85] = EntityType.Minecart; + mappings[86] = EntityType.Mooshroom; + mappings[87] = EntityType.Mule; + mappings[88] = EntityType.Nautilus; + mappings[89] = EntityType.OakBoat; + mappings[90] = EntityType.OakChestBoat; + mappings[91] = EntityType.Ocelot; + mappings[92] = EntityType.OminousItemSpawner; + mappings[93] = EntityType.Painting; + mappings[94] = EntityType.PaleOakBoat; + mappings[95] = EntityType.PaleOakChestBoat; + mappings[96] = EntityType.Panda; + mappings[97] = EntityType.Parched; + mappings[98] = EntityType.Parrot; + mappings[99] = EntityType.Phantom; + mappings[100] = EntityType.Pig; + mappings[101] = EntityType.Piglin; + mappings[102] = EntityType.PiglinBrute; + mappings[103] = EntityType.Pillager; + mappings[104] = EntityType.PolarBear; + mappings[105] = EntityType.SplashPotion; + mappings[106] = EntityType.LingeringPotion; + mappings[107] = EntityType.Pufferfish; + mappings[108] = EntityType.Rabbit; + mappings[109] = EntityType.Ravager; + mappings[110] = EntityType.Salmon; + mappings[111] = EntityType.Sheep; + mappings[112] = EntityType.Shulker; + mappings[113] = EntityType.ShulkerBullet; + mappings[114] = EntityType.Silverfish; + mappings[115] = EntityType.Skeleton; + mappings[116] = EntityType.SkeletonHorse; + mappings[117] = EntityType.Slime; + mappings[118] = EntityType.SmallFireball; + mappings[119] = EntityType.Sniffer; + mappings[120] = EntityType.Snowball; + mappings[121] = EntityType.SnowGolem; + mappings[122] = EntityType.SpawnerMinecart; + mappings[123] = EntityType.SpectralArrow; + mappings[124] = EntityType.Spider; + mappings[125] = EntityType.SpruceBoat; + mappings[126] = EntityType.SpruceChestBoat; + mappings[127] = EntityType.Squid; + mappings[128] = EntityType.Stray; + mappings[129] = EntityType.Strider; + mappings[130] = EntityType.SulfurCube; + mappings[131] = EntityType.Tadpole; + mappings[132] = EntityType.TextDisplay; + mappings[133] = EntityType.Tnt; + mappings[134] = EntityType.TntMinecart; + mappings[135] = EntityType.TraderLlama; + mappings[136] = EntityType.Trident; + mappings[137] = EntityType.TropicalFish; + mappings[138] = EntityType.Turtle; + mappings[139] = EntityType.Vex; + mappings[140] = EntityType.Villager; + mappings[141] = EntityType.Vindicator; + mappings[142] = EntityType.WanderingTrader; + mappings[143] = EntityType.Warden; + mappings[144] = EntityType.WindCharge; + mappings[145] = EntityType.Witch; + mappings[146] = EntityType.Wither; + mappings[147] = EntityType.WitherSkeleton; + mappings[148] = EntityType.WitherSkull; + mappings[149] = EntityType.Wolf; + mappings[150] = EntityType.Zoglin; + mappings[151] = EntityType.Zombie; + mappings[152] = EntityType.ZombieHorse; + mappings[153] = EntityType.ZombieNautilus; + mappings[154] = EntityType.ZombieVillager; + mappings[155] = EntityType.ZombifiedPiglin; + mappings[156] = EntityType.Player; + mappings[157] = EntityType.FishingBobber; + } + + protected override Dictionary GetDict() + { + return mappings; + } + } +} diff --git a/MinecraftClient/Mapping/EntityType.cs b/MinecraftClient/Mapping/EntityType.cs index 7c4748fd..60db8869 100644 --- a/MinecraftClient/Mapping/EntityType.cs +++ b/MinecraftClient/Mapping/EntityType.cs @@ -150,6 +150,7 @@ namespace MinecraftClient.Mapping Squid, Stray, Strider, + SulfurCube, Tadpole, TextDisplay, Tnt, diff --git a/MinecraftClient/Mapping/EntityTypeExtensions.cs b/MinecraftClient/Mapping/EntityTypeExtensions.cs index 8609a2c2..0e7a85fb 100644 --- a/MinecraftClient/Mapping/EntityTypeExtensions.cs +++ b/MinecraftClient/Mapping/EntityTypeExtensions.cs @@ -117,7 +117,8 @@ namespace MinecraftClient.Mapping return true; default: return false; - }; + } + ; } } } diff --git a/MinecraftClient/Mapping/Material.cs b/MinecraftClient/Mapping/Material.cs index 75fb26d0..6404fdb1 100644 --- a/MinecraftClient/Mapping/Material.cs +++ b/MinecraftClient/Mapping/Material.cs @@ -204,6 +204,7 @@ namespace MinecraftClient.Mapping Chest, ChippedAnvil, ChiseledBookshelf, + ChiseledCinnabar, ChiseledCopper, ChiseledDeepslate, ChiseledNetherBricks, @@ -213,10 +214,19 @@ namespace MinecraftClient.Mapping ChiseledResinBricks, ChiseledSandstone, ChiseledStoneBricks, + ChiseledSulfur, ChiseledTuff, ChiseledTuffBricks, ChorusFlower, ChorusPlant, + Cinnabar, + CinnabarBrickSlab, + CinnabarBrickStairs, + CinnabarBrickWall, + CinnabarBricks, + CinnabarSlab, + CinnabarStairs, + CinnabarWall, Clay, ClosedEyeblossom, CoalBlock, @@ -765,6 +775,10 @@ namespace MinecraftClient.Mapping PolishedBlackstoneSlab, PolishedBlackstoneStairs, PolishedBlackstoneWall, + PolishedCinnabar, + PolishedCinnabarSlab, + PolishedCinnabarStairs, + PolishedCinnabarWall, PolishedDeepslate, PolishedDeepslateSlab, PolishedDeepslateStairs, @@ -775,12 +789,17 @@ namespace MinecraftClient.Mapping PolishedGranite, PolishedGraniteSlab, PolishedGraniteStairs, + PolishedSulfur, + PolishedSulfurSlab, + PolishedSulfurStairs, + PolishedSulfurWall, PolishedTuff, PolishedTuffSlab, PolishedTuffStairs, PolishedTuffWall, Poppy, Potatoes, + PotentSulfur, PottedAcaciaSapling, PottedAllium, PottedAzaleaBush, @@ -1007,6 +1026,15 @@ namespace MinecraftClient.Mapping StructureBlock, StructureVoid, SugarCane, + Sulfur, + SulfurBrickSlab, + SulfurBrickStairs, + SulfurBrickWall, + SulfurBricks, + SulfurSlab, + SulfurSpike, + SulfurStairs, + SulfurWall, Sunflower, SuspiciousGravel, SuspiciousSand, diff --git a/MinecraftClient/Mapping/MiningCalculator.cs b/MinecraftClient/Mapping/MiningCalculator.cs index 6f49fd4a..458057f2 100644 --- a/MinecraftClient/Mapping/MiningCalculator.cs +++ b/MinecraftClient/Mapping/MiningCalculator.cs @@ -16,6 +16,15 @@ namespace MinecraftClient.Mapping /// public static class MiningCalculator { + public sealed class MiningOptions + { + public static readonly MiningOptions Vanilla = new(); + + public bool ApplyEfficiencyEnchantments { get; init; } = true; + + public bool ApplyHasteEffects { get; init; } = true; + } + /// /// Compute the number of ticks required to break a block in survival mode. /// Returns 0 for instant-break blocks, -1 for unbreakable blocks. @@ -37,8 +46,10 @@ namespace MinecraftClient.Mapping Dictionary playerAttributes, bool isUnderwater, bool isOnGround, - int protocolVersion) + int protocolVersion, + MiningOptions? options = null) { + options ??= MiningOptions.Vanilla; float hardness = BlockHardness.GetHardness(blockMaterial); if (hardness < 0) @@ -49,7 +60,7 @@ namespace MinecraftClient.Mapping float destroySpeed = GetDestroySpeed( blockMaterial, heldItem, helmetItem, effects, playerAttributes, - isUnderwater, isOnGround, protocolVersion); + isUnderwater, isOnGround, protocolVersion, options); bool correctTool = HasCorrectToolForDrops(blockMaterial, heldItem, protocolVersion); int divisor = correctTool ? 30 : 100; @@ -73,18 +84,22 @@ namespace MinecraftClient.Mapping Dictionary playerAttributes, bool isUnderwater, bool isOnGround, - int protocolVersion) + int protocolVersion, + MiningOptions options) { float speed = GetToolSpeed(blockMaterial, heldItem, protocolVersion); - if (speed > 1.0f) + if (speed > 1.0f && options.ApplyEfficiencyEnchantments) { speed += GetEfficiencyBonus(heldItem, playerAttributes, protocolVersion); } - int digSpeedAmplifier = GetDigSpeedAmplifier(effects); - if (digSpeedAmplifier >= 0) - speed *= 1.0f + (digSpeedAmplifier + 1) * 0.2f; + if (options.ApplyHasteEffects) + { + int digSpeedAmplifier = GetDigSpeedAmplifier(effects); + if (digSpeedAmplifier >= 0) + speed *= 1.0f + (digSpeedAmplifier + 1) * 0.2f; + } // Mining Fatigue if (effects.TryGetValue(Effects.MiningFatigue, out var fatigueData)) diff --git a/MinecraftClient/Mapping/World.cs b/MinecraftClient/Mapping/World.cs index 6e4c4ecc..832bf5d0 100644 --- a/MinecraftClient/Mapping/World.cs +++ b/MinecraftClient/Mapping/World.cs @@ -19,7 +19,7 @@ namespace MinecraftClient.Mapping /// /// The dimension info of the world /// - private static Dimension curDimension= new(); + private static Dimension curDimension = new(); private static readonly Dictionary dimensionList = new(); @@ -69,7 +69,16 @@ namespace MinecraftClient.Mapping /// Registry Codec nbt data public static void StoreDimensionList(Dictionary registryCodec) { - var dimensionListNbt = (object[])(((Dictionary)registryCodec["minecraft:dimension_type"])["value"]); + const string namespacedDimensionTypeKey = "minecraft:dimension_type"; + const string legacyDimensionTypeKey = "dimension_type"; + + if (!registryCodec.TryGetValue(namespacedDimensionTypeKey, out var dimensionTypeRegistry) + && !registryCodec.TryGetValue(legacyDimensionTypeKey, out dimensionTypeRegistry)) + { + return; + } + + var dimensionListNbt = (object[])(((Dictionary)dimensionTypeRegistry)["value"]); foreach (var (dimensionName, dimensionType) in from Dictionary dimensionNbt in dimensionListNbt let dimensionName = (string)dimensionNbt["name"] let dimensionType = (Dictionary)dimensionNbt["element"] @@ -82,7 +91,7 @@ namespace MinecraftClient.Mapping public static void LoadDefaultDimensions1206Plus() { // TODO: Move this to a JSON file. - + var defaultRegistryCodec = new Dictionary { { "minecraft:dimension_type", new Dictionary @@ -314,29 +323,58 @@ namespace MinecraftClient.Mapping /// /// The name of the dimension type /// The dimension type (NBT Tag Compound) - public static void SetDimension(string name) - { - // Try to get the dimension using the name as is - if (dimensionList.TryGetValue(name, out Dimension? dimension)) - { - curDimension = dimension; - return; // Dimension found - } + public static void SetDimension(string name) + { + // Try to get the dimension using the name as is + if (dimensionList.TryGetValue(name, out Dimension? dimension)) + { + curDimension = dimension; + return; // Dimension found + } - // If not found, check if name lacks 'minecraft:' prefix and try again - if (!name.StartsWith("minecraft:")) - { - string prefixedName = "minecraft:" + name; - if (dimensionList.TryGetValue(prefixedName, out dimension)) - { - curDimension = dimension; - return; // Dimension found with prefixed name - } - } + // If not found, check if name lacks 'minecraft:' prefix and try again + if (!name.StartsWith("minecraft:")) + { + string prefixedName = "minecraft:" + name; + if (dimensionList.TryGetValue(prefixedName, out dimension)) + { + curDimension = dimension; + return; // Dimension found with prefixed name + } + } + else + { + string unprefixedName = name["minecraft:".Length..]; + if (dimensionList.TryGetValue(unprefixedName, out dimension)) + { + curDimension = dimension; + return; + } + } - // If still not found, dimension does not exist - throw new KeyNotFoundException($"Dimension '{name}' not found in dimensions dictionary."); - } + if (TryStoreDefaultVanillaDimension(name) + && dimensionList.TryGetValue(name, out dimension)) + { + curDimension = dimension; + return; + } + + // If still not found, dimension does not exist + throw new KeyNotFoundException($"Dimension '{name}' not found in dimensions dictionary."); + } + + private static bool TryStoreDefaultVanillaDimension(string name) + { + var normalizedName = name.StartsWith("minecraft:") + ? name + : "minecraft:" + name; + + if (normalizedName is not ("minecraft:overworld" or "minecraft:the_nether" or "minecraft:the_end")) + return false; + + StoreOneDimension(name, new Dictionary()); + return true; + } @@ -437,7 +475,7 @@ namespace MinecraftClient.Mapping public void SetBlock(Location location, Block block) { ChunkColumn? column = this[location.ChunkX, location.ChunkZ]; - if (column is not null && column.ColumnSize >= location.ChunkY) + if (column is not null && location.ChunkY >= 0 && location.ChunkY < column.ColumnSize) { Chunk? chunk = column.GetChunk(location); if (chunk is null) diff --git a/MinecraftClient/McClient.cs b/MinecraftClient/McClient.cs index 4d23bb60..f868b1f9 100644 --- a/MinecraftClient/McClient.cs +++ b/MinecraftClient/McClient.cs @@ -1,15 +1,18 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; +using System.Threading.Tasks; using Brigadier.NET; using Brigadier.NET.Exceptions; using MinecraftClient.ChatBots; using MinecraftClient.CommandHandler; using MinecraftClient.CommandHandler.Patch; using MinecraftClient.Commands; +using MinecraftClient.Dialogs; using MinecraftClient.Inventory; using MinecraftClient.Logger; using MinecraftClient.Mapping; @@ -38,6 +41,9 @@ namespace MinecraftClient private readonly Dictionary onlinePlayers = new(); private static bool commandsLoaded = false; + private readonly Lock tabListHeaderFooterLock = new(); + private string tabListHeader = string.Empty; + private string tabListFooter = string.Empty; private readonly Queue chatQueue = new(); private static DateTime nextMessageSendTime = DateTime.MinValue; @@ -50,6 +56,7 @@ namespace MinecraftClient private readonly List bots = new(); private static readonly List botsOnHold = new(); private static readonly Dictionary inventories = new(); + private static readonly HashSet inventoriesWithFullContents = new(); private readonly Dictionary unlockedRecipes = new(StringComparer.Ordinal); private readonly Dictionary achievements = new(StringComparer.Ordinal); private string? activeAdvancementTab; @@ -116,7 +123,7 @@ namespace MinecraftClient // scoreboard teams (key = team name) private readonly Dictionary teams = new(StringComparer.Ordinal); - + // Sneaking public bool IsSneaking { get; set; } = false; private bool isUnderSlab = false; @@ -138,7 +145,7 @@ namespace MinecraftClient // ChatBot OnNetworkPacket event private bool networkPacketCaptureEnabled = false; - + // Cookies private Dictionary Cookies { get; set; } = new(); @@ -222,12 +229,17 @@ namespace MinecraftClient TcpClient client = null!; IMinecraftCom handler = null!; SessionToken _sessionToken; - CancellationTokenSource? cmdprompt = null; Tuple? timeoutdetector = null; private int transferInProgress = 0; + private readonly ConnectionAttemptLifecycle connectionLifecycle = new(); + private int disconnectOwnerThreadId; + private readonly TaskCompletionSource disconnectCompletion = new(TaskCreationOptions.RunContinuationsAsynchronously); public ILogger Log; - + public DialogManager Dialogs { get; } + internal long ConnectionAttempt { get; } + internal Task DisconnectCompletion => disconnectCompletion.Task; + private static IMinecraftComHandler? instance; public static IMinecraftComHandler? Instance => instance; @@ -241,10 +253,23 @@ namespace MinecraftClient /// Minecraft protocol version to use /// ForgeInfo item stating that Forge is enabled public McClient(SessionToken session, PlayerKeyPair? playerKeyPair, string server_ip, ushort port, int protocolversion, ForgeInfo? forgeInfo) + : this(session, playerKeyPair, server_ip, port, protocolversion, forgeInfo, Program.CurrentConnectionAttempt) + { + } + + internal McClient( + SessionToken session, + PlayerKeyPair? playerKeyPair, + string server_ip, + ushort port, + int protocolversion, + ForgeInfo? forgeInfo, + long connectionAttempt) { CmdResult.currentHandler = this; instance = this; - + ConnectionAttempt = connectionAttempt; + terrainAndMovementsEnabled = Config.Main.Advanced.TerrainAndMovements; inventoryHandlingEnabled = Config.Main.Advanced.InventoryHandling; entityHandlingEnabled = Config.Main.Advanced.EntityHandling; @@ -268,6 +293,7 @@ namespace MinecraftClient Log.ChatEnabled = Config.Logging.ChatMessages; Log.WarnEnabled = Config.Logging.WarningMessages; Log.ErrorEnabled = Config.Logging.ErrorMessages; + Dialogs = new DialogManager(this); // SENTRY: Send our client version and server version to Sentry SentrySdk.ConfigureScope(scope => @@ -275,7 +301,7 @@ namespace MinecraftClient scope.SetTag("Protocol Version", protocolversion.ToString()); scope.SetTag("Minecraft Version", ProtocolHandler.ProtocolVersion2MCVer(protocolversion)); scope.SetTag("MCC Build", Program.BuildInfo is null ? "Debug" : Program.BuildInfo); - + if (forgeInfo is not null) scope.SetTag("Forge Version", forgeInfo.Version.ToString()); @@ -285,22 +311,28 @@ namespace MinecraftClient MinecraftVersion = ProtocolHandler.ProtocolVersion2MCVer(protocolversion), ForgeInfo = forgeInfo?.Version }; - - scope.Contexts["Client Configuration"] = new + + scope.Contexts["Client Configuration"] = new { TerrainAndMovementsEnabled = terrainAndMovementsEnabled, InventoryHandlingEnabled = inventoryHandlingEnabled, EntityHandlingEnabled = entityHandlingEnabled }; }); - + SentrySdk.StartSession(); - + /* Load commands from Commands namespace */ LoadCommands(); if (botsOnHold.Count == 0) + { RegisterBots(); + } + else + { + ConnectionAttemptLifecycle.RestoreHeldBots(botsOnHold, bot => BotLoad(bot, false)); + } try { @@ -308,6 +340,8 @@ namespace MinecraftClient client.ReceiveBufferSize = 1024 * 1024; client.ReceiveTimeout = Config.Main.Advanced.TcpTimeout * 1000; // Default: 30 seconds handler = Protocol.ProtocolHandler.GetProtocolHandler(client, protocolversion, forgeInfo, this); + if (forgeInfo is not null && forgeInfo.Version == FMLVersion.FML) + ChatParser.LoadForgeModTranslations(forgeInfo.Mods.Select(static mod => mod.ModID)); Log.Info(Translations.mcc_version_supported); timeoutdetector = new(new Thread(new ParameterizedThreadStart(TimeoutDetector)), new CancellationTokenSource()); @@ -318,16 +352,9 @@ namespace MinecraftClient { if (handler.Login(this.playerKeyPair, session)) { - foreach (ChatBot bot in botsOnHold) - BotLoad(bot, false); - botsOnHold.Clear(); - Log.Info(string.Format(Translations.mcc_joined, Config.Main.Advanced.InternalCmdChar.ToLogString())); - cmdprompt = new CancellationTokenSource(); - ConsoleIO.Backend.BeginReadThread(); - ConsoleIO.Backend.MessageReceived += ConsoleReaderOnMessageReceived; - ConsoleIO.Backend.OnInputChange += ConsoleIO.AutocompleteHandler; + StartConsoleSession(); } else { @@ -351,13 +378,23 @@ namespace MinecraftClient return; - Retry: + Retry: if (timeoutdetector is not null) { timeoutdetector.Item2.Cancel(); timeoutdetector = null; } + if (connectionLifecycle.IsFailureClaimed) + return; + + if (!InternalConfig.InteractiveMode) + { + StopConsoleSession(); + Program.HandleFailure(null, false, ChatBot.DisconnectReason.ConnectionLost); + return; + } + if (!Config.ChatBot.AutoRelog.Enabled) { if (ReconnectionAttemptsLeft > 0) @@ -366,39 +403,18 @@ namespace MinecraftClient Thread.Sleep(5000); ReconnectionAttemptsLeft--; Program.Restart(); - } - else if (InternalConfig.InteractiveMode) - { - ConsoleIO.Backend.StopReadThread(); - ConsoleIO.Backend.MessageReceived -= ConsoleReaderOnMessageReceived; - ConsoleIO.Backend.OnInputChange -= ConsoleIO.AutocompleteHandler; - Program.HandleFailure(); + return; } - throw new Exception("Initialization failed."); - } - else - { - // AutoRelog is enabled - invoke its static handler to trigger reconnection. - // Use the same "Connection has been lost" message that OnConnectionLost uses - // for ConnectionLost, so it matches the default Kick_Messages. - if (AutoRelog.OnDisconnectStatic(ChatBot.DisconnectReason.ConnectionLost, Translations.mcc_disconnect_lost)) - return; // AutoRelog is triggering a restart - - // AutoRelog chose not to reconnect (e.g., message didn't match - // kick messages and Ignore_Kick_Message is false, or retry limit reached) - if (InternalConfig.InteractiveMode) - { - ConsoleIO.Backend.StopReadThread(); - ConsoleIO.Backend.MessageReceived -= ConsoleReaderOnMessageReceived; - ConsoleIO.Backend.OnInputChange -= ConsoleIO.AutocompleteHandler; - Program.HandleFailure(); - } - - throw new Exception("Initialization failed."); + StopConsoleSession(); + Program.HandleFailure(); + return; } + + OnConnectionLost(ChatBot.DisconnectReason.ConnectionLost, Translations.mcc_disconnect_lost); + return; } - + public void Transfer(string newHost, int newPort) { // Do not block here: a new handler can start processing packets before the @@ -411,33 +427,36 @@ namespace MinecraftClient IMinecraftCom oldHandler = handler; TcpClient oldClient = client; + string resolvedHost = newHost; + int resolvedPort = newPort; try { - Log.Info($"Initiating a transfer to: {newHost}:{newPort}"); - + ResolveTransferAddress(ref resolvedHost, ref resolvedPort); + Log.Info($"Initiating a transfer to: {resolvedHost}:{resolvedPort}"); + // Unload bots UnloadAllBots(); bots.Clear(); ResetStateForTransfer(); - + // Retire the old handler so its updater exits without reporting a stale disconnect. oldHandler.Dispose(); oldClient.Close(); - host = newHost; - port = newPort; + host = resolvedHost; + port = resolvedPort; UpdateKeepAlive(); // Establish new connection - client = ProxyHandler.NewTcpClient(newHost, newPort); + client = ProxyHandler.NewTcpClient(resolvedHost, resolvedPort); client.ReceiveBufferSize = 1024 * 1024; client.ReceiveTimeout = Config.Main.Advanced.TcpTimeout * 1000; // Reinitialize the protocol handler handler = Protocol.ProtocolHandler.GetProtocolHandler(client, protocolversion, null, this); - Log.Info($"Connected to {newHost}:{newPort}"); + Log.Info($"Connected to {resolvedHost}:{resolvedPort}"); // Retry login process if (handler.Login(playerKeyPair, _sessionToken, isTransfer: true)) @@ -447,12 +466,9 @@ namespace MinecraftClient botsOnHold.Clear(); UpdateKeepAlive(); - Log.Info($"Successfully transferred connection and logged in to {newHost}:{newPort}."); + Log.Info($"Successfully transferred connection and logged in to {resolvedHost}:{resolvedPort}."); - cmdprompt = new CancellationTokenSource(); - ConsoleIO.Backend.BeginReadThread(); - ConsoleIO.Backend.MessageReceived += ConsoleReaderOnMessageReceived; - ConsoleIO.Backend.OnInputChange += ConsoleIO.AutocompleteHandler; + StartConsoleSession(); } else { @@ -462,7 +478,7 @@ namespace MinecraftClient } catch (Exception ex) { - Log.Error($"Transfer to {newHost}:{newPort} failed: {ex.Message}"); + Log.Error($"Transfer to {resolvedHost}:{resolvedPort} failed: {ex.Message}"); try { @@ -487,22 +503,24 @@ namespace MinecraftClient timeoutdetector = null; } + if (!InternalConfig.InteractiveMode) + { + StopConsoleSession(); + Program.HandleFailure(null, false, ChatBot.DisconnectReason.ConnectionLost); + return; + } + if (ReconnectionAttemptsLeft > 0) { Log.Info($"Reconnecting... Attempts left: {ReconnectionAttemptsLeft}"); Thread.Sleep(5000); ReconnectionAttemptsLeft--; Program.Restart(); - } - else if (InternalConfig.InteractiveMode) - { - ConsoleIO.Backend.StopReadThread(); - ConsoleIO.Backend.MessageReceived -= ConsoleReaderOnMessageReceived; - ConsoleIO.Backend.OnInputChange -= ConsoleIO.AutocompleteHandler; - Program.HandleFailure(); + return; } - throw new Exception("Transfer failed and reconnection attempts exhausted.", ex); + StopConsoleSession(); + Program.HandleFailure(); } finally { @@ -510,6 +528,31 @@ namespace MinecraftClient } } + private static void ResolveTransferAddress(ref string host, ref int port) + { + if (Config.Main.Advanced.ResolveSrvRecords == MainConfigHelper.MainConfig.AdvancedConfig.ResolveSrvRecordType.no + || port != 25565 + || IPAddress.TryParse(host, out _)) + { + return; + } + + ushort resolvedPort = (ushort)port; + ProtocolHandler.MinecraftServiceLookup(ref host, ref resolvedPort); + port = resolvedPort; + } + + private void StartConsoleSession() + { + Program.EndOfflinePrompt(ConnectionAttempt); + ConsoleInputRouter.RouteToClient(this); + } + + private void StopConsoleSession() + { + ConsoleInputRouter.ClearClient(this); + } + private void ResetStateForTransfer() { ClearTasks(); @@ -696,7 +739,7 @@ namespace MinecraftClient if (!playerEffects.Remove(effect, out var effectData)) continue; - ConsoleIO.WriteLine(string.Format(Translations.bot_effect_expired, effectData.GetDisplayName())); + AnnouncePlayerEffectExpired(effectData); if (entities.TryGetValue(playerEntityID, out var playerEntity)) playerEntity.ActiveEffects.Remove(effect); @@ -775,33 +818,21 @@ namespace MinecraftClient /// public void Disconnect() { - instance = null; - - DispatchBotEvent(bot => bot.OnDisconnect(ChatBot.DisconnectReason.UserLogout, "")); - - botsOnHold.Clear(); - botsOnHold.AddRange(bots); - - if (handler is not null) + if (!TryBeginDisconnect()) { - handler.Disconnect(); - handler.Dispose(); + if (Volatile.Read(ref disconnectOwnerThreadId) != Environment.CurrentManagedThreadId) + disconnectCompletion.Task.GetAwaiter().GetResult(); + return; } - if (cmdprompt is not null) + try { - cmdprompt.Cancel(); - cmdprompt = null; + DispatchBotEvent(bot => bot.OnDisconnect(ChatBot.DisconnectReason.UserLogout, string.Empty)); } - - if (timeoutdetector is not null) + finally { - timeoutdetector.Item2.Cancel(); - timeoutdetector = null; + CompleteDisconnect(sendDisconnectPacket: true); } - - if (client is not null) - client.Close(); } /// @@ -809,73 +840,133 @@ namespace MinecraftClient /// public void OnConnectionLost(ChatBot.DisconnectReason reason, string message) { - instance = null; + if (reason == ChatBot.DisconnectReason.UserLogout) + throw new InvalidOperationException(Translations.exception_user_logout); - ConsoleIO.CancelAutocomplete(); + if (!TryBeginDisconnect()) + return; - handler.Dispose(); - - world.Clear(); - ClearKnownSigns(); - - if (timeoutdetector is not null) + bool restartScheduled = false; + try { - if (timeoutdetector is not null && Thread.CurrentThread != timeoutdetector.Item1) - timeoutdetector.Item2.Cancel(); - timeoutdetector = null; - } + ConsoleIO.CancelAutocomplete(); - bool will_restart = false; + world.Clear(); + ClearKnownSigns(); - switch (reason) - { - case ChatBot.DisconnectReason.ConnectionLost: - message = Translations.mcc_disconnect_lost; - Log.Info(message); - break; + bool exitOnFailure = Program.PrepareExitOnFailure(); - case ChatBot.DisconnectReason.InGameKick: - Log.Info(Translations.mcc_disconnect_server); - Log.Info(message); - break; - - case ChatBot.DisconnectReason.LoginRejected: - Log.Info(Translations.mcc_disconnect_login); - Log.Info(message); - break; - - case ChatBot.DisconnectReason.UserLogout: - throw new InvalidOperationException(Translations.exception_user_logout); - } - - //Process AutoRelog last to make sure other bots can perform their cleanup tasks first (issue #1517) - List onDisconnectBotList = bots.Where(bot => bot is not AutoRelog).ToList(); - onDisconnectBotList.AddRange(bots.Where(bot => bot is AutoRelog)); - - foreach (ChatBot bot in onDisconnectBotList) - { - try + switch (reason) { - will_restart |= bot.OnDisconnect(reason, message); + case ChatBot.DisconnectReason.ConnectionLost: + message = Translations.mcc_disconnect_lost; + Log.Info(message); + break; + + case ChatBot.DisconnectReason.InGameKick: + Log.Info(Translations.mcc_disconnect_server); + Log.Info(message); + break; + + case ChatBot.DisconnectReason.LoginRejected: + Log.Info(Translations.mcc_disconnect_login); + Log.Info(message); + break; } - catch (Exception e) + + // Process AutoRelog last so every other bot can complete cleanup first. + List onDisconnectBotList = bots.Where(bot => bot is not AutoRelog).ToList(); + onDisconnectBotList.AddRange(bots.Where(bot => bot is AutoRelog)); + + foreach (ChatBot bot in onDisconnectBotList) { - if (e is not ThreadAbortException) + try { - Log.Warn("OnDisconnect: Got error from " + bot.ToString() + ": " + e.ToString()); + _ = bot.OnDisconnect(reason, message); + } + catch (Exception exception) when (exception is not ThreadAbortException) + { + Log.Warn("OnDisconnect: Got error from " + bot + ": " + exception); } - else throw; //ThreadAbortException should not be caught } + + restartScheduled = !exitOnFailure && Program.HasRestartPending(ConnectionAttempt); + } + finally + { + CompleteDisconnect(sendDisconnectPacket: false); } - SentrySdk.EndSession(); - - if (!will_restart) - { - ConsoleIO.Backend.StopReadThread(); - ConsoleIO.Backend.MessageReceived -= ConsoleReaderOnMessageReceived; - ConsoleIO.Backend.OnInputChange -= ConsoleIO.AutocompleteHandler; + if (!restartScheduled) Program.HandleFailure(null, false, reason); + } + + private bool TryBeginDisconnect() + { + if (!connectionLifecycle.TryBeginDisconnect()) + return false; + + Volatile.Write(ref disconnectOwnerThreadId, Environment.CurrentManagedThreadId); + instance = null; + StopConsoleSession(); + return true; + } + + private void CompleteDisconnect(bool sendDisconnectPacket) + { + try + { + foreach (ChatBot bot in bots.Where(bot => bot.ScriptOwnerKey is not null).ToList()) + { + try + { + BotUnLoad(bot); + } + catch (Exception exception) when (exception is not ThreadAbortException) + { + Log.Warn(exception.ToString()); + } + } + + botsOnHold.Clear(); + botsOnHold.AddRange(bots.Where(bot => bot.ScriptOwnerKey is null)); + + if (timeoutdetector is not null) + { + CancellationTokenSource timeoutCancellation = timeoutdetector.Item2; + timeoutdetector = null; + RunDisconnectCleanup(timeoutCancellation.Cancel); + } + + if (handler is not null) + { + if (sendDisconnectPacket) + RunDisconnectCleanup(handler.Disconnect); + RunDisconnectCleanup(handler.Dispose); + } + + if (client is not null) + RunDisconnectCleanup(client.Close); + ClearTasks(); + RunDisconnectCleanup(() => SentrySdk.EndSession()); + } + finally + { + connectionLifecycle.CompleteDisconnect(); + Volatile.Write(ref disconnectOwnerThreadId, 0); + disconnectCompletion.TrySetResult(true); + } + } + + private void RunDisconnectCleanup(Action cleanup) + { + try + { + cleanup(); + } + catch (Exception exception) when (exception is not ThreadAbortException) + { + Log.Warn(exception.ToString()); } } @@ -885,19 +976,16 @@ namespace MinecraftClient private void ConsoleReaderOnMessageReceived(object? sender, string e) { - if (client.Client is null) return; if (client.Client.Connected) - { - new Thread(() => - { - InvokeOnMainThread(() => HandleCommandPromptText(e)); - }).Start(); - } - else - return; + InvokeOnMainThreadAsync(() => HandleCommandPromptText(e)); + } + + internal void RouteConsoleInput(string input) + { + ConsoleReaderOnMessageReceived(this, input); } /// @@ -1126,6 +1214,23 @@ namespace MinecraftClient InvokeOnMainThread(() => { task(); return true; }); } + /// + /// Queue work for the network main thread without blocking the calling thread. + /// + internal void InvokeOnMainThreadAsync(Action task) + { + ArgumentNullException.ThrowIfNull(task); + + if (!InvokeRequired) + { + task(); + return; + } + + lock (threadTasksLock) + threadTasks.Enqueue(task); + } + /// /// Clear all tasks /// @@ -1177,7 +1282,7 @@ namespace MinecraftClient bots.Add(b); if (init) DispatchBotEvent(bot => bot.Initialize(), [b]); - if (handler is not null) + if (CanSendMessage) DispatchBotEvent(bot => bot.AfterGameJoined(), [b]); } @@ -1205,6 +1310,21 @@ namespace MinecraftClient } } + internal void UnloadBotsByScriptOwnerKey(string scriptOwnerKey) + { + if (InvokeRequired) + { + InvokeOnMainThread(() => UnloadBotsByScriptOwnerKey(scriptOwnerKey)); + return; + } + + foreach (ChatBot bot in GetLoadedChatBots()) + { + if (bot.ScriptOwnerKey == scriptOwnerKey) + BotUnLoad(bot); + } + } + /// /// Clear bots /// @@ -1550,6 +1670,86 @@ namespace MinecraftClient return null; } + internal TabListSnapshot GetTabListSnapshot() + { + List<(Guid Uuid, string Name, string DisplayName, int Gamemode, int Ping, int TabListOrder, bool Listed)> players; + lock (onlinePlayers) + { + players = onlinePlayers + .Select(static pair => ( + pair.Key, + pair.Value.Name, + pair.Value.DisplayName ?? string.Empty, + pair.Value.Gamemode, + pair.Value.Ping, + pair.Value.TabListOrder, + pair.Value.Listed)) + .ToList(); + } + + Dictionary teamSnapshot; + lock (teams) + { + teamSnapshot = teams.ToDictionary( + static pair => pair.Key, + static pair => + { + var sourceTeam = pair.Value; + var copy = new PlayerTeam + { + Name = sourceTeam.Name, + DisplayName = sourceTeam.DisplayName, + AllowFriendlyFire = sourceTeam.AllowFriendlyFire, + SeeFriendlyInvisibles = sourceTeam.SeeFriendlyInvisibles, + NameTagVisibility = sourceTeam.NameTagVisibility, + CollisionRule = sourceTeam.CollisionRule, + Color = sourceTeam.Color, + Prefix = sourceTeam.Prefix, + Suffix = sourceTeam.Suffix + }; + + foreach (string member in sourceTeam.Members) + copy.Members.Add(member); + + return copy; + }, + StringComparer.OrdinalIgnoreCase); + } + + string header; + string footer; + lock (tabListHeaderFooterLock) + { + header = tabListHeader; + footer = tabListFooter; + } + + var entries = players + .Select(player => + { + PlayerTeam? team = teamSnapshot.Values.FirstOrDefault( + team => team.Members.Contains(player.Name)); + + string displayName = !string.IsNullOrWhiteSpace(player.DisplayName) + ? player.DisplayName + : TabListFormatter.FormatTeamMemberName(player.Name, team); + + return new TabListEntry( + player.Uuid, + player.Name, + displayName, + team?.Name ?? string.Empty, + !string.IsNullOrWhiteSpace(team?.DisplayName) ? team.DisplayName : team?.Name ?? string.Empty, + player.Gamemode, + player.Ping, + player.TabListOrder, + player.Listed); + }) + .ToList(); + + return new TabListSnapshot(header, footer, entries); + } + public PlayerKeyPair? GetPlayerKeyPair() { return playerKeyPair; @@ -1635,6 +1835,14 @@ namespace MinecraftClient } } + public bool SendCustomClickAction(string id, Dictionary? payload) + { + if (InvokeRequired) + return InvokeOnMainThread(() => SendCustomClickAction(id, payload)); + + return handler.SendCustomClickAction(id, payload); + } + /// /// Allow to respawn after death /// @@ -1727,6 +1935,72 @@ namespace MinecraftClient return handler.SendPluginChannelPacket(channel, data); } + public Item? GetHeldBook(BookHand hand = BookHand.Main) + { + if (InvokeRequired) + return InvokeOnMainThread(() => GetHeldBook(hand)); + + if (!inventoryHandlingEnabled || !inventories.TryGetValue(0, out Container? inventory)) + return null; + + int slot = hand == BookHand.Off ? 45 : 36 + CurrentSlot; + return inventory.Items.TryGetValue(slot, out Item? item) ? item : null; + } + + public bool TryGetHeldBookContent(out BookContent content, BookHand hand = BookHand.Main) + { + if (InvokeRequired) + { + (bool ok, BookContent value) = InvokeOnMainThread(() => + { + bool ok = TryGetHeldBookContent(out BookContent value, hand); + return (ok, value); + }); + content = value; + return ok; + } + + return BookContentHelper.TryRead(GetHeldBook(hand), out content); + } + + public bool SendBookEdit(IReadOnlyList pages, string? title = null) + { + if (InvokeRequired) + return InvokeOnMainThread(() => SendBookEdit(pages, title)); + + Item? currentBook = GetHeldBook(BookHand.Main); + if (!BookContentHelper.IsWritableBook(currentBook)) + return false; + + IReadOnlyList normalizedPages = BookContentHelper.NormalizePages(pages); + bool sent = handler.SendEditBook(currentBook!, normalizedPages, title, username, CurrentSlot); + if (sent && GetProtocolVersion() < Protocol18Handler.MC_1_17_Version) + SetHeldBook(BookHand.Main, CreateLocalBookResult(currentBook!, normalizedPages, title)); + + return sent; + } + + private Item CreateLocalBookResult(Item currentBook, IReadOnlyList pages, string? title) + { + return title is null + ? BookContentHelper.CreateWritablePayload(currentBook, pages) + : BookContentHelper.CreateWrittenPayload( + currentBook, + pages, + title, + username, + encodePagesAsJson: GetProtocolVersion() < Protocol18Handler.MC_1_9_Version); + } + + private void SetHeldBook(BookHand hand, Item item) + { + if (!inventoryHandlingEnabled || !inventories.TryGetValue(0, out Container? inventory)) + return; + + int slot = hand == BookHand.Off ? 45 : 36 + CurrentSlot; + inventory.Items[slot] = item; + } + /// /// Send the Entity Action packet with the Specified ID /// @@ -1773,8 +2047,8 @@ namespace MinecraftClient if (item.Count <= spaceLeft) { // Can fit into the stack - item.Count = 0; curItem.Count += item.Count; + item.Count = 0; changedSlots.Add(new Tuple((short)curId, curItem)); changedSlots.Add(new Tuple((short)slotId, null)); @@ -1831,6 +2105,108 @@ namespace MinecraftClient }; } + private static bool TryGetMirroredPlayerInventoryRange(Container inventory, out int firstWindowSlot, out int lastWindowSlot) + { + firstWindowSlot = -1; + lastWindowSlot = -1; + + if (inventory.Type is ContainerType.PlayerInventory or ContainerType.Unknown) + return false; + + const int mirroredPlayerInventorySlotCount = 36; + int slotCount = inventory.Type.SlotCount(); + if (slotCount <= mirroredPlayerInventorySlotCount) + return false; + + firstWindowSlot = slotCount - mirroredPlayerInventorySlotCount; + lastWindowSlot = slotCount - 1; + return true; + } + + private static bool AreSameInventorySlot(Item? left, Item? right) + { + if (left is null || left.IsEmpty) + return right is null || right.IsEmpty; + if (right is null || right.IsEmpty) + return false; + + return left.Type == right.Type + && left.Count == right.Count + && left.Data == right.Data + && ReferenceEquals(left.NBT, right.NBT) + && ReferenceEquals(left.Components, right.Components); + } + + private bool SetPlayerInventorySlot(int playerInventorySlot, Item? item) + { + if (!inventories.TryGetValue(0, out Container? playerInventory)) + return false; + + if (item is null || item.IsEmpty) + return playerInventory.Items.Remove(playerInventorySlot); + + Item itemClone = item.CloneWithCount(item.Count); + + playerInventory.Items.TryGetValue(playerInventorySlot, out Item? previousItem); + if (AreSameInventorySlot(previousItem, itemClone)) + return false; + + playerInventory.Items[playerInventorySlot] = itemClone; + + return true; + } + + private bool SyncPlayerInventorySlotsFromWindow(Container? inventory) + { + if (inventory is null) + return false; + + if (!inventoriesWithFullContents.Contains(inventory.ID)) + return false; + + if (!TryGetMirroredPlayerInventoryRange(inventory, out int firstWindowSlot, out int lastWindowSlot)) + return false; + + if (!inventories.TryGetValue(0, out Container? playerInventory)) + return false; + + const int firstPlayerInventorySlot = 9; + const int lastPlayerInventorySlot = firstPlayerInventorySlot + 36 - 1; + Dictionary mirroredItems = new(); + + for (int windowSlot = firstWindowSlot; windowSlot <= lastWindowSlot; windowSlot++) + { + if (!inventory.Items.TryGetValue(windowSlot, out Item? item) || item.IsEmpty) + continue; + + int playerInventorySlot = windowSlot - firstWindowSlot + firstPlayerInventorySlot; + mirroredItems[playerInventorySlot] = item.CloneWithCount(item.Count); + } + + bool changed = false; + for (int playerInventorySlot = firstPlayerInventorySlot; playerInventorySlot <= lastPlayerInventorySlot; playerInventorySlot++) + { + playerInventory.Items.TryGetValue(playerInventorySlot, out Item? previousItem); + mirroredItems.TryGetValue(playerInventorySlot, out Item? mirroredItem); + if (AreSameInventorySlot(previousItem, mirroredItem)) + continue; + + changed = true; + break; + } + + if (!changed) + return false; + + for (int playerInventorySlot = firstPlayerInventorySlot; playerInventorySlot <= lastPlayerInventorySlot; playerInventorySlot++) + playerInventory.Items.Remove(playerInventorySlot); + + foreach ((int playerInventorySlot, Item item) in mirroredItems) + playerInventory.Items[playerInventorySlot] = item; + + return changed; + } + /// /// Click a slot in the specified window /// @@ -1895,6 +2271,10 @@ namespace MinecraftClient playerInventory.Items.Remove(-1); } + // Clean up cursor item if count reached zero + if (playerInventory.Items.TryGetValue(-1, out Item? cursorAfterLeft) && cursorAfterLeft.IsEmpty) + playerInventory.Items.Remove(-1); + if (inventory.Items.ContainsKey(slotId)) changedSlots.Add(new Tuple((short)slotId, inventory.Items[slotId])); else @@ -1951,6 +2331,10 @@ namespace MinecraftClient inventory.Items[slotId] = itemClone; playerInventory.Items[-1].Count--; } + + // Clean up cursor item if count reached zero + if (playerInventory.Items.TryGetValue(-1, out Item? cursorItem) && cursorItem.IsEmpty) + playerInventory.Items.Remove(-1); } else { @@ -2536,6 +2920,11 @@ namespace MinecraftClient changedSlots.Add(new Tuple((short)slotId, inventory.Items[slotId])); } } + if (item!.Count <= 0 && inventory.Items.ContainsKey(slotId)) + { + inventory.Items.Remove(slotId); + changedSlots.Add(new Tuple((short)slotId, null)); + } } break; case WindowActionType.DropItem: @@ -2559,6 +2948,8 @@ namespace MinecraftClient } } + SyncPlayerInventorySlotsFromWindow(inventory); + return handler.SendWindowAction(windowId, slotId, action, item, changedSlots, inventories[windowId].StateID); } @@ -2573,7 +2964,16 @@ namespace MinecraftClient /// TRUE if item given successfully public bool DoCreativeGive(int slot, ItemType itemType, int count, Dictionary? nbt = null) { - return InvokeOnMainThread(() => handler.SendCreativeInventoryAction(slot, itemType, count, nbt)); + return InvokeOnMainThread(() => + { + if (!handler.SendCreativeInventoryAction(slot, itemType, count, nbt)) + return false; + + if (slot is >= 1 and <= 45) + SetPlayerInventorySlot(slot, new Item(itemType, count, nbt)); + + return true; + }); } /// @@ -2600,7 +3000,10 @@ namespace MinecraftClient if (inventories.ContainsKey(windowId)) { if (windowId != 0) + { inventories.Remove(windowId); + inventoriesWithFullContents.Remove(windowId); + } bool result = handler.SendCloseWindow(windowId); DispatchBotEvent(bot => bot.OnInventoryClose(windowId)); return result; @@ -2621,6 +3024,7 @@ namespace MinecraftClient return InvokeOnMainThread(ClearInventories); inventories.Clear(); + inventoriesWithFullContents.Clear(); inventories[0] = new Container(0, ContainerType.PlayerInventory, "Player Inventory"); ClearUnlockedRecipes(); return true; @@ -2653,7 +3057,7 @@ namespace MinecraftClient _ => handler.SendInteractEntity(entityID, (int)type), }; } - + return false; } @@ -2684,7 +3088,8 @@ namespace MinecraftClient /// Location of block to dig /// Also perform the "arm swing" animation /// Also look at the block before digging - public bool DigBlock(Location location, Direction blockFace, bool swingArms = true, bool lookAtBlock = true, double duration = 0) + public bool DigBlock(Location location, Direction blockFace, bool swingArms = true, bool lookAtBlock = true, + double duration = 0, MiningCalculator.MiningOptions? miningOptions = null) { // TODO select best face from current player location @@ -2692,7 +3097,8 @@ namespace MinecraftClient return false; if (InvokeRequired) - return InvokeOnMainThread(() => DigBlock(location, blockFace, swingArms, lookAtBlock, duration)); + return InvokeOnMainThread(() => DigBlock(location, blockFace, swingArms, lookAtBlock, duration, + miningOptions)); lock (DigLock) { @@ -2707,10 +3113,12 @@ namespace MinecraftClient UpdateLocation(GetCurrentLocation(), location); // Auto-compute dig duration for survival/adventure mode when not explicitly supplied + bool autoComputedDuration = false; if (duration <= 0 && protocolversion >= Protocol18Handler.MC_1_8_Version && gamemode is 0 or 2) // Survival or Adventure { - duration = ComputeAutoDigDuration(location); + autoComputedDuration = true; + duration = ComputeAutoDigDuration(location, miningOptions); } // Send dig start and dig end, will need to wait for server response to know dig result @@ -2718,6 +3126,9 @@ namespace MinecraftClient bool result = handler.SendPlayerDigging(0, location, blockFace, sequenceId++) && (!swingArms || DoAnimation((int)Hand.MainHand)); + if (autoComputedDuration && duration <= 0) + return result; + if (duration <= 0) result &= handler.SendPlayerDigging(2, location, blockFace, sequenceId++); else @@ -2735,7 +3146,7 @@ namespace MinecraftClient /// enchantments, effects, attributes, and player state. /// Returns 0 for instant-break blocks. /// - private double ComputeAutoDigDuration(Location location) + private double ComputeAutoDigDuration(Location location, MiningCalculator.MiningOptions? miningOptions = null) { try { @@ -2763,16 +3174,49 @@ namespace MinecraftClient playerAttributes, playerPhysics.InWater, playerPhysics.OnGround, - protocolversion); + protocolversion, + miningOptions); - if (ticks <= 0) + if (ticks < 0) + return -1; + + if (ticks == 0) return 0; return (double)ticks / Settings.ClientTicksPerSecond; } catch { - return 0; + return ComputeConservativeAutoDigDuration(location); + } + } + + private double ComputeConservativeAutoDigDuration(Location location) + { + try + { + Block block = world.GetBlock(location); + if (block.Type == Material.Air) + return 0; + + int ticks = MiningCalculator.ComputeDigTicks( + blockMaterial: block.Type, + heldItem: null, + helmetItem: null, + effects: new(), + playerAttributes: new(), + isUnderwater: playerPhysics.InWater, + isOnGround: playerPhysics.OnGround, + protocolVersion: protocolversion); + + if (ticks < 0) + return -1; + + return ticks == 0 ? 1.0 : (double)ticks / Settings.ClientTicksPerSecond; + } + catch + { + return 1.0; } } @@ -2897,7 +3341,7 @@ namespace MinecraftClient return false; } } - + /// /// Send the server a command to type in the item name in the Anvil inventory when it's open. /// @@ -2909,7 +3353,7 @@ namespace MinecraftClient if (inventories.Values.ToList().Last().Type != ContainerType.Anvil) return false; - + return handler.SendRenameItem(itemName); } @@ -3001,6 +3445,36 @@ namespace MinecraftClient DispatchBotEvent(bot => bot.OnNetworkPacket(packetID, packetData, isLogin, isInbound)); } + public void OnDialogRegistryData(int protocolId, string resourceId, DialogDefinition dialog) + { + Dialogs.StoreRegistryDialog(protocolId, resourceId, dialog); + } + + public void OnDialogShown(DialogDefinition dialog, DialogPhase phase) + { + var instance = Dialogs.Show(dialog, phase); + if (!Tui.DialogTuiHost.TryOpen(this, instance, force: phase == DialogPhase.Configuration)) + ConsoleIO.WriteLineFormatted(DialogFormatter.Render(instance), acceptnewlines: true); + } + + public void OnDialogRegistryReferenceShown(int protocolId, DialogPhase phase) + { + var instance = Dialogs.ShowRegistryReference(protocolId, phase); + if (!Tui.DialogTuiHost.TryOpen(this, instance, force: phase == DialogPhase.Configuration)) + ConsoleIO.WriteLineFormatted(DialogFormatter.Render(instance), acceptnewlines: true); + } + + public void OnDialogCleared() + { + Dialogs.Clear(); + Tui.DialogTuiHost.CloseCurrent(); + } + + public void OnServerLinksUpdated(IReadOnlyList links) + { + Dialogs.SetServerLinks(links); + } + /// /// Called when a server was successfully joined /// @@ -3015,7 +3489,8 @@ namespace MinecraftClient if (!String.IsNullOrWhiteSpace(bandString)) handler.SendBrandInfo(bandString.Trim()); - if (Config.MCSettings.Enabled) + // 1.20.2+ expects ClientInformation during configuration; older servers still want it here. + if (Config.MCSettings.Enabled && protocolversion < Protocol18Handler.MC_1_20_2_Version) handler.SendClientSettings( Config.MCSettings.Locale, Config.MCSettings.RenderDistance, @@ -3321,6 +3796,8 @@ namespace MinecraftClient { UpdateKeepAlive(); + Log.Debug(string.Format(Translations.protocol_chat_raw_message, message.content)); + List links = new(); string messageText; @@ -3332,7 +3809,7 @@ namespace MinecraftClient if (!Config.Signature.ShowIllegalSignedChat && !message.isSystemChat && !(bool)message.isSignatureLegal!) return; messageText = ChatParser.ParseSignedChat(message, links); - + if (message.isSystemChat) { if (Config.Signature.MarkSystemMessage) @@ -3393,6 +3870,7 @@ namespace MinecraftClient /// Inventory ID public void OnInventoryOpen(int inventoryID, Container inventory) { + inventoriesWithFullContents.Remove(inventoryID); inventories[inventoryID] = inventory; if (inventoryID != 0) @@ -3419,9 +3897,15 @@ namespace MinecraftClient if (inventories.ContainsKey(inventoryID)) { if (inventoryID == 0) + { inventories[0].Items.Clear(); // Don't delete player inventory + inventoriesWithFullContents.Clear(); + } else + { inventories.Remove(inventoryID); + inventoriesWithFullContents.Remove(inventoryID); + } } if (inventoryID != 0) @@ -3547,8 +4031,16 @@ namespace MinecraftClient { if (inventories.ContainsKey(inventoryID)) { + // Filter out empty items (Count=0 or Air) that some servers may send + foreach (int key in itemList.Where(slot => slot.Value.IsEmpty).Select(slot => slot.Key).ToList()) + itemList.Remove(key); + inventories[inventoryID].Items = itemList; inventories[inventoryID].StateID = stateId; + inventoriesWithFullContents.Add(inventoryID); + bool playerInventoryChanged = SyncPlayerInventorySlotsFromWindow(inventories[inventoryID]); + if (playerInventoryChanged) + DispatchBotEvent(bot => bot.OnInventoryUpdate(0)); DispatchBotEvent(bot => bot.OnInventoryUpdate(inventoryID)); } } @@ -3573,7 +4065,7 @@ namespace MinecraftClient inventoryID = 0; // Prevent key not found for some bots relied to this event if (inventories.ContainsKey(0)) { - if (item is not null) + if (item is not null && !item.IsEmpty) inventories[0].Items[-1] = item; else inventories[0].Items.Remove(-1); @@ -3589,6 +4081,9 @@ namespace MinecraftClient inventories[inventoryID].Items.Remove(slotID); } else inventories[inventoryID].Items[slotID] = item; + + if (SyncPlayerInventorySlotsFromWindow(inventories[inventoryID])) + DispatchBotEvent(bot => bot.OnInventoryUpdate(0)); } } DispatchBotEvent(bot => bot.OnInventoryUpdate(inventoryID)); @@ -3694,6 +4189,17 @@ namespace MinecraftClient } } + public void OnBookOpen(int hand) + { + if (InvokeRequired) + { + InvokeOnMainThread(() => OnBookOpen(hand)); + return; + } + + Tui.BookTuiHost.OpenFromServer(this, hand == (int)BookHand.Off ? BookHand.Off : BookHand.Main); + } + /// /// Called when an entity spawned /// @@ -3707,6 +4213,33 @@ namespace MinecraftClient DispatchBotEvent(bot => bot.OnEntitySpawn(entity)); } + private static bool ShouldAnnouncePlayerEffectGain(EffectData effectData, EffectData? previousPlayerEffect) + { + if (!Config.Main.Advanced.ShowEffectMessages) + return false; + + return previousPlayerEffect is null + || previousPlayerEffect.IsExpired + || previousPlayerEffect.Amplifier != effectData.Amplifier; + } + + private static void AnnouncePlayerEffectGain(EffectData effectData) + { + if (!Config.Main.Advanced.ShowEffectMessages) + return; + + ConsoleIO.WriteLine(string.Format(Translations.bot_effect_gained, + effectData.GetDisplayNameWithArticle(), effectData.GetInitialDurationText())); + } + + private static void AnnouncePlayerEffectExpired(EffectData effectData) + { + if (!Config.Main.Advanced.ShowEffectMessages) + return; + + ConsoleIO.WriteLine(string.Format(Translations.bot_effect_expired, effectData.GetDisplayName())); + } + /// /// Called when an entity effects /// @@ -3726,16 +4259,8 @@ namespace MinecraftClient playerEffects.TryGetValue(effect, out var previousPlayerEffect); playerEffects[effect] = effectData; - bool shouldAnnounceEffectGain = previousPlayerEffect is null - || previousPlayerEffect.Amplifier != amplifier - || (effectData.IsInfinite && !previousPlayerEffect.IsInfinite) - || (!effectData.IsInfinite && duration > previousPlayerEffect.RemainingTicks + 20); - - if (shouldAnnounceEffectGain) - { - ConsoleIO.WriteLine(string.Format(Translations.bot_effect_gained, - effectData.GetDisplayNameWithArticle(), effectData.GetInitialDurationText())); - } + if (ShouldAnnouncePlayerEffectGain(effectData, previousPlayerEffect)) + AnnouncePlayerEffectGain(effectData); } if (entity is not null) @@ -3763,7 +4288,7 @@ namespace MinecraftClient removedEffectData ??= playerEffectData; if (entityid == playerEntityID && removedEffectData is not null) - ConsoleIO.WriteLine(string.Format(Translations.bot_effect_expired, removedEffectData.GetDisplayName())); + AnnouncePlayerEffectExpired(removedEffectData); if (entity is not null) DispatchBotEvent(bot => bot.OnRemoveEntityEffect(entity, effect)); @@ -4260,6 +4785,11 @@ namespace MinecraftClient /// Footer public void OnTabListHeaderAndFooter(string header, string footer) { + lock (tabListHeaderFooterLock) + { + tabListHeader = header; + tabListFooter = footer; + } DispatchBotEvent(bot => bot.OnTabListHeaderAndFooter(header, footer)); } @@ -4289,7 +4819,7 @@ namespace MinecraftClient Entity entity = entities[entityID]; entity.Metadata = metadata; int itemEntityMetadataFieldIndex = protocolversion < Protocol18Handler.MC_1_17_Version ? 7 : 8; - + if (entity.Type.ContainsItem() && metadata.TryGetValue(itemEntityMetadataFieldIndex, out object? itemObj) && itemObj is not null && itemObj.GetType() == typeof(Item)) { Item item = (Item)itemObj; @@ -4410,6 +4940,9 @@ namespace MinecraftClient { switch (reason) { + case 3: + OnGamemodeUpdate(Guid.Empty, (int)value); + break; case 7: DispatchBotEvent(bot => bot.OnRainLevelChange(value)); break; diff --git a/MinecraftClient/Mcp/MccMcpCapabilities.cs b/MinecraftClient/Mcp/MccMcpCapabilities.cs index 60a03f76..a0fd4310 100644 --- a/MinecraftClient/Mcp/MccMcpCapabilities.cs +++ b/MinecraftClient/Mcp/MccMcpCapabilities.cs @@ -1090,6 +1090,8 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities typeLabel, blockId = block.BlockId, blockMeta = block.BlockMeta, + stateId = block.StateId, + properties = block.GetStateProperties(), distance = Math.Sqrt(dx * dx + dy * dy + dz * dz) }); } @@ -1139,7 +1141,7 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities int cy = (int)Math.Floor(playerLocation.Y) - 1; int cz = (int)Math.Floor(playerLocation.Z); - List<(int x, int y, int z, string material, string typeLabel, int blockId, byte blockMeta, double distance)> found = new(); + List<(int x, int y, int z, string material, string typeLabel, int blockId, byte blockMeta, int stateId, IReadOnlyDictionary properties, double distance)> found = new(); World world = client.GetWorld(); for (int y = cy - radius; y <= cy + radius && found.Count < limit; y++) @@ -1167,6 +1169,8 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities block.GetTypeString(), block.BlockId, block.BlockMeta, + block.StateId, + block.GetStateProperties(), Math.Sqrt(dx * dx + dy * dy + dz * dz))); } } @@ -1190,6 +1194,8 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities entry.typeLabel, entry.blockId, entry.blockMeta, + entry.stateId, + entry.properties, entry.distance }) .ToArray() @@ -1392,18 +1398,18 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities bool success = client.SendLocationUpdate(); return success ? MccMcpResult.Ok(new - { - success, - direction = parsedDirection.ToString(), - yaw = client.GetYaw(), - pitch = client.GetPitch(), - location = ToCoordinate(current) - }) + { + success, + direction = parsedDirection.ToString(), + yaw = client.GetYaw(), + pitch = client.GetPitch(), + location = ToCoordinate(current) + }) : MccMcpResult.Fail("action_failed", data: new - { - success, - direction = parsedDirection.ToString() - }); + { + success, + direction = parsedDirection.ToString() + }); }); } @@ -1426,19 +1432,19 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities bool success = client.SendLocationUpdate(); return success ? MccMcpResult.Ok(new - { - success, - yaw = client.GetYaw(), - pitch = client.GetPitch(), - location = ToCoordinate(current) - }) + { + success, + yaw = client.GetYaw(), + pitch = client.GetPitch(), + location = ToCoordinate(current) + }) : MccMcpResult.Fail("action_failed", data: new - { - success, - yaw, - pitch, - location = ToCoordinate(current) - }); + { + success, + yaw, + pitch, + location = ToCoordinate(current) + }); }); } @@ -1853,7 +1859,9 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities z, material = block.Type.ToString(), blockId = block.BlockId, - blockMeta = block.BlockMeta + blockMeta = block.BlockMeta, + stateId = block.StateId, + properties = block.GetStateProperties() }); }); } @@ -3121,7 +3129,9 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities material = block.Type.ToString(), typeLabel = block.GetTypeString(), blockId = block.BlockId, - blockMeta = block.BlockMeta + blockMeta = block.BlockMeta, + stateId = block.StateId, + properties = block.GetStateProperties() }; } diff --git a/MinecraftClient/MinecraftClient.csproj b/MinecraftClient/MinecraftClient.csproj index e8e9206b..85d23745 100644 --- a/MinecraftClient/MinecraftClient.csproj +++ b/MinecraftClient/MinecraftClient.csproj @@ -8,6 +8,9 @@ enable true true + + false false @@ -35,53 +38,28 @@ - + - + - - - - - + + + + + - + - + NU1701 - + - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/MinecraftClient/Physics/BlockShapeData.json b/MinecraftClient/Physics/BlockShapeData.json index 2a7f10ff..71b589ff 100644 --- a/MinecraftClient/Physics/BlockShapeData.json +++ b/MinecraftClient/Physics/BlockShapeData.json @@ -1 +1 @@ -{"shapes":{"0":[],"1":[[0.0,0.0,0.0,1.0,1.0,1.0]],"2":[[0.0,0.0,0.0,0.1875,0.5625,0.1875],[0.8125,0.0,0.0,1.0,0.5625,0.1875],[0.0,0.1875,0.1875,1.0,0.5625,1.0],[0.1875,0.1875,0.0,0.8125,0.5625,0.1875]],"3":[[0.0,0.0,0.8125,0.1875,0.5625,1.0],[0.8125,0.0,0.8125,1.0,0.5625,1.0],[0.0,0.1875,0.0,1.0,0.5625,0.8125],[0.1875,0.1875,0.8125,0.8125,0.5625,1.0]],"4":[[0.0,0.0,0.0,0.1875,0.5625,0.1875],[0.0,0.0,0.8125,0.1875,0.5625,1.0],[0.0,0.1875,0.1875,1.0,0.5625,0.8125],[0.1875,0.1875,0.0,1.0,0.5625,0.1875],[0.1875,0.1875,0.8125,1.0,0.5625,1.0]],"5":[[0.8125,0.0,0.0,1.0,0.5625,0.1875],[0.8125,0.0,0.8125,1.0,0.5625,1.0],[0.0,0.1875,0.0,0.8125,0.5625,1.0],[0.8125,0.1875,0.1875,1.0,0.5625,0.8125]],"6":[[0.0,0.0,0.25,1.0,1.0,1.0]],"7":[[0.0,0.0,0.0,0.75,1.0,1.0]],"8":[[0.0,0.0,0.0,1.0,1.0,0.75]],"9":[[0.25,0.0,0.0,1.0,1.0,1.0]],"10":[[0.0,0.0,0.0,1.0,0.75,1.0]],"11":[[0.0,0.25,0.0,1.0,1.0,1.0]],"12":[[0.0,0.0,0.0,1.0,1.0,0.25],[0.375,0.375,0.25,0.625,0.625,1.0]],"13":[[0.0,0.0,0.0,1.0,1.0,0.25],[0.375,0.375,0.25,0.625,0.625,1.25]],"14":[[0.75,0.0,0.0,1.0,1.0,1.0],[0.0,0.375,0.375,0.75,0.625,0.625]],"15":[[0.75,0.0,0.0,1.0,1.0,1.0],[-0.25,0.375,0.375,0.75,0.625,0.625]],"16":[[0.0,0.0,0.75,1.0,1.0,1.0],[0.375,0.375,0.0,0.625,0.625,0.75]],"17":[[0.0,0.0,0.75,1.0,1.0,1.0],[0.375,0.375,-0.25,0.625,0.625,0.75]],"18":[[0.0,0.0,0.0,0.25,1.0,1.0],[0.25,0.375,0.375,1.0,0.625,0.625]],"19":[[0.0,0.0,0.0,0.25,1.0,1.0],[0.25,0.375,0.375,1.25,0.625,0.625]],"20":[[0.375,0.0,0.375,0.625,1.0,0.625],[0.0,0.75,0.0,0.375,1.0,1.0],[0.375,0.75,0.0,1.0,1.0,0.375],[0.375,0.75,0.625,1.0,1.0,1.0],[0.625,0.75,0.375,1.0,1.0,0.625]],"21":[[0.375,-0.25,0.375,0.625,1.0,0.625],[0.0,0.75,0.0,0.375,1.0,1.0],[0.375,0.75,0.0,1.0,1.0,0.375],[0.375,0.75,0.625,1.0,1.0,1.0],[0.625,0.75,0.375,1.0,1.0,0.625]],"22":[[0.0,0.0,0.0,1.0,0.25,1.0],[0.375,0.25,0.375,0.625,1.0,0.625]],"23":[[0.0,0.0,0.0,1.0,0.25,1.0],[0.375,0.25,0.375,0.625,1.25,0.625]],"24":[[0.0,0.0,0.6875,1.0,0.25,1.0],[0.0,0.25,0.8125,1.0,1.0,1.0],[0.0,0.75,0.6875,1.0,1.0,0.8125]],"25":[[0.0,0.0,0.0,1.0,0.25,0.3125],[0.0,0.25,0.0,1.0,1.0,0.1875],[0.0,0.75,0.1875,1.0,1.0,0.3125]],"26":[[0.6875,0.0,0.0,1.0,0.25,1.0],[0.8125,0.25,0.0,1.0,1.0,1.0],[0.6875,0.75,0.0,0.8125,1.0,1.0]],"27":[[0.0,0.0,0.0,0.3125,0.25,1.0],[0.0,0.25,0.0,0.1875,1.0,1.0],[0.1875,0.75,0.0,0.3125,1.0,1.0]],"28":[[0.0,0.0,0.0,1.0,1.0,0.5],[0.0,0.5,0.5,1.0,1.0,1.0]],"29":[[0.0,0.0,0.0,0.5,1.0,1.0],[0.5,0.0,0.0,1.0,1.0,0.5],[0.5,0.5,0.5,1.0,1.0,1.0]],"30":[[0.0,0.0,0.0,1.0,1.0,0.5],[0.5,0.0,0.5,1.0,1.0,1.0],[0.0,0.5,0.5,0.5,1.0,1.0]],"31":[[0.0,0.0,0.0,0.5,1.0,0.5],[0.0,0.5,0.5,1.0,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"32":[[0.5,0.0,0.0,1.0,1.0,0.5],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.5,1.0,1.0,1.0]],"33":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,1.0,1.0,0.5]],"34":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"35":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,1.0,1.0,0.5],[0.5,0.5,0.5,1.0,1.0,1.0]],"36":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,0.5]],"37":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"38":[[0.0,0.0,0.5,1.0,1.0,1.0],[0.0,0.5,0.0,1.0,1.0,0.5]],"39":[[0.0,0.0,0.5,1.0,1.0,1.0],[0.5,0.0,0.0,1.0,1.0,0.5],[0.0,0.5,0.0,0.5,1.0,0.5]],"40":[[0.0,0.0,0.0,0.5,1.0,1.0],[0.5,0.0,0.5,1.0,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"41":[[0.5,0.0,0.5,1.0,1.0,1.0],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"42":[[0.0,0.0,0.5,0.5,1.0,1.0],[0.0,0.5,0.0,1.0,1.0,0.5],[0.5,0.5,0.5,1.0,1.0,1.0]],"43":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,1.0,1.0,1.0]],"44":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,1.0,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"45":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.5,1.0,1.0,1.0]],"46":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.5,1.0,1.0,1.0]],"47":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,0.5,1.0,1.0]],"48":[[0.0,0.0,0.0,0.5,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,1.0]],"49":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0]],"50":[[0.5,0.0,0.0,1.0,1.0,1.0],[0.0,0.5,0.0,0.5,1.0,1.0]],"51":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.0,1.0,1.0,1.0]],"52":[[0.0625,0.0,0.0625,0.9375,0.875,0.9375]],"53":[[0.0625,0.0,0.0625,1.0,0.875,0.9375]],"54":[[0.0,0.0,0.0625,0.9375,0.875,0.9375]],"55":[[0.0625,0.0,0.0,0.9375,0.875,0.9375]],"56":[[0.0625,0.0,0.0625,0.9375,0.875,1.0]],"57":[[0.0,0.0,0.0,1.0,0.9375,1.0]],"58":[[0.0,0.0,0.0,0.1875,1.0,1.0]],"59":[[0.0,0.0,0.8125,1.0,1.0,1.0]],"60":[[0.8125,0.0,0.0,1.0,1.0,1.0]],"61":[[0.0,0.0,0.0,1.0,1.0,0.1875]],"62":[[0.0,0.0,0.8125,1.0,1.0,1.0]],"63":[[0.0,0.0,0.0,1.0,1.0,0.1875]],"64":[[0.8125,0.0,0.0,1.0,1.0,1.0]],"65":[[0.0,0.0,0.0,0.1875,1.0,1.0]],"66":[[0.0,0.875,0.375,1.0,1.0,0.625]],"67":[[0.375,0.875,0.0,0.625,1.0,1.0]],"68":[[0.0,0.0,0.0,1.0,0.125,1.0]],"69":[[0.0,0.0,0.0,1.0,0.25,1.0]],"70":[[0.0,0.0,0.0,1.0,0.375,1.0]],"71":[[0.0,0.0,0.0,1.0,0.5,1.0]],"72":[[0.0,0.0,0.0,1.0,0.625,1.0]],"73":[[0.0,0.0,0.0,1.0,0.75,1.0]],"74":[[0.0,0.0,0.0,1.0,0.875,1.0]],"75":[[0.0625,0.0,0.0625,0.9375,0.9375,0.9375]],"76":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"77":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"78":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"79":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"80":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"81":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"82":[[0.0,0.0,0.375,1.0,1.5,0.625]],"83":[[0.375,0.0,0.375,1.0,1.5,0.625]],"84":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"85":[[0.375,0.0,0.0,0.625,1.5,1.0]],"86":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"87":[[0.375,0.0,0.0,0.625,1.5,0.625]],"88":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"89":[[0.375,0.0,0.375,0.625,1.5,1.0]],"90":[[0.0,0.0,0.375,0.625,1.5,0.625]],"91":[[0.375,0.0,0.375,0.625,1.5,0.625]],"92":[[0.0,0.0,0.0,1.0,0.875,1.0]],"93":[[0.0625,0.0,0.0625,0.9375,0.5,0.9375]],"94":[[0.1875,0.0,0.0625,0.9375,0.5,0.9375]],"95":[[0.3125,0.0,0.0625,0.9375,0.5,0.9375]],"96":[[0.4375,0.0,0.0625,0.9375,0.5,0.9375]],"97":[[0.5625,0.0,0.0625,0.9375,0.5,0.9375]],"98":[[0.6875,0.0,0.0625,0.9375,0.5,0.9375]],"99":[[0.8125,0.0,0.0625,0.9375,0.5,0.9375]],"100":[[0.0,0.0,0.0,1.0,0.125,1.0]],"101":[[0.0,0.0,0.8125,1.0,1.0,1.0]],"102":[[0.0,0.8125,0.0,1.0,1.0,1.0]],"103":[[0.0,0.0,0.0,1.0,0.1875,1.0]],"104":[[0.0,0.0,0.0,1.0,1.0,0.1875]],"105":[[0.8125,0.0,0.0,1.0,1.0,1.0]],"106":[[0.0,0.0,0.0,0.1875,1.0,1.0]],"107":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"108":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"109":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"110":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"111":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"112":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"113":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"114":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"115":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"116":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"117":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"118":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"119":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"120":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"121":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"122":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"123":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"124":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"125":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"126":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"127":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"128":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"129":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"130":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"131":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"132":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"133":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"134":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"135":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"136":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"137":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"138":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"139":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"140":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"141":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"142":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"143":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"144":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"145":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"146":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"147":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"148":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"149":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"150":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"151":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"152":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"153":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"154":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"155":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"156":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"157":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"158":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"159":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"160":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"161":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"162":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"163":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"164":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"165":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"166":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"167":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"168":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"169":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"170":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"171":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"172":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"173":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"174":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"175":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"176":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"177":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"178":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"179":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"180":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"181":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"182":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"183":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"184":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"185":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"186":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"187":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"188":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"189":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"190":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"191":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"192":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"193":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"194":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"195":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"196":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"197":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"198":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"199":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"200":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"201":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"202":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"203":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"204":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"205":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"206":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"207":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"208":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"209":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"210":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"211":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"212":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"213":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"214":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"215":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"216":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"217":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"218":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"219":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"220":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"221":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"222":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"223":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"224":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"225":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"226":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"227":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"228":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"229":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"230":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"231":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"232":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"233":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"234":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"235":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"236":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"237":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"238":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"239":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"240":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"241":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"242":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"243":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"244":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"245":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"246":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"247":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"248":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"249":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"250":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"251":[[0.0,0.40625,0.40625,1.0,0.59375,0.59375]],"252":[[0.40625,0.0,0.40625,0.59375,1.0,0.59375]],"253":[[0.40625,0.40625,0.0,0.59375,0.59375,1.0]],"254":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"255":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"256":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"257":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"258":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"259":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"260":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"261":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"262":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"263":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"264":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"265":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"266":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"267":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"268":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"269":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"270":[[0.0,0.0,0.375,1.0,1.5,0.625]],"271":[[0.375,0.0,0.0,0.625,1.5,1.0]],"272":[[0.0625,0.0,0.0625,0.9375,0.09375,0.9375]],"273":[[0.0,0.5,0.0,1.0,1.0,1.0]],"274":[[0.0,0.0,0.0,1.0,0.5,1.0]],"275":[[0.25,0.0,0.25,0.75,1.5,0.75]],"276":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"277":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"278":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"279":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"280":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"281":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"282":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"283":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"284":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"285":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"286":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"287":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"288":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"289":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"290":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"291":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"292":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"293":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"294":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"295":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"296":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"297":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"298":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"299":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"300":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"301":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"302":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"303":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"304":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"305":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"306":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"307":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"308":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"309":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"310":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"311":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"312":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"313":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"314":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"315":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"316":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"317":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"318":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"319":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"320":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"321":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"322":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"323":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"324":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"325":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"326":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"327":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"328":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"329":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"330":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"331":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"332":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"333":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"334":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"335":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"336":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"337":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"338":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"339":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"340":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"341":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"342":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"343":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"344":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"345":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"346":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"347":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"348":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"349":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"350":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"351":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"352":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"353":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"354":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"355":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"356":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"357":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"358":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"359":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"360":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"361":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"362":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"363":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"364":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"365":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"366":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"367":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"368":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"369":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"370":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"371":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"372":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"373":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"374":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"375":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"376":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"377":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"378":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"379":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"380":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"381":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"382":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"383":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"384":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"385":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"386":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"387":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"388":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"389":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"390":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"391":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"392":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"393":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"394":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"395":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"396":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"397":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"398":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"399":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"400":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"401":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"402":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"403":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"404":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"405":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"406":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"407":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"408":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"409":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"410":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"411":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"412":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"413":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"414":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"415":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"416":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"417":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"418":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"419":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"420":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"421":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"422":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"423":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"424":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"425":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"426":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"427":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"428":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"429":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"430":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"431":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"432":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"433":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"434":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"435":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"436":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"437":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"438":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"439":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"440":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"441":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"442":[[0.0,0.0,0.375,1.0,1.5,0.625]],"443":[[0.375,0.0,0.375,1.0,1.5,0.625]],"444":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"445":[[0.375,0.0,0.0,0.625,1.5,1.0]],"446":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"447":[[0.375,0.0,0.0,0.625,1.5,0.625]],"448":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"449":[[0.375,0.0,0.375,0.625,1.5,1.0]],"450":[[0.0,0.0,0.375,0.625,1.5,0.625]],"451":[[0.375,0.0,0.375,0.625,1.5,0.625]],"452":[[0.0,0.0,0.0,1.0,0.75,1.0]],"453":[[0.0625,0.0,0.0625,0.9375,0.125,0.9375],[0.4375,0.125,0.4375,0.5625,0.875,0.5625]],"454":[[0.0,0.0,0.0,0.125,1.0,0.25],[0.0,0.0,0.75,0.125,1.0,1.0],[0.125,0.0,0.0,0.25,1.0,0.125],[0.125,0.0,0.875,0.25,1.0,1.0],[0.75,0.0,0.0,1.0,1.0,0.125],[0.75,0.0,0.875,1.0,1.0,1.0],[0.875,0.0,0.125,1.0,1.0,0.25],[0.875,0.0,0.75,1.0,1.0,0.875],[0.0,0.1875,0.25,1.0,0.25,0.75],[0.125,0.1875,0.125,0.875,0.25,0.25],[0.125,0.1875,0.75,0.875,0.25,0.875],[0.25,0.1875,0.0,0.75,1.0,0.125],[0.25,0.1875,0.875,0.75,1.0,1.0],[0.0,0.25,0.25,0.125,1.0,0.75],[0.875,0.25,0.25,1.0,1.0,0.75]],"455":[[0.0,0.0,0.0,1.0,0.8125,1.0],[0.25,0.8125,0.25,0.75,1.0,0.75]],"456":[[0.0,0.0,0.0,1.0,0.8125,1.0]],"457":[[0.0625,0.0,0.0625,0.9375,1.0,0.9375]],"458":[[0.375,0.4375,0.0625,0.625,0.75,0.3125]],"459":[[0.375,0.4375,0.6875,0.625,0.75,0.9375]],"460":[[0.0625,0.4375,0.375,0.3125,0.75,0.625]],"461":[[0.6875,0.4375,0.375,0.9375,0.75,0.625]],"462":[[0.3125,0.3125,0.0625,0.6875,0.75,0.4375]],"463":[[0.3125,0.3125,0.5625,0.6875,0.75,0.9375]],"464":[[0.0625,0.3125,0.3125,0.4375,0.75,0.6875]],"465":[[0.5625,0.3125,0.3125,0.9375,0.75,0.6875]],"466":[[0.25,0.1875,0.0625,0.75,0.75,0.5625]],"467":[[0.25,0.1875,0.4375,0.75,0.75,0.9375]],"468":[[0.0625,0.1875,0.25,0.5625,0.75,0.75]],"469":[[0.4375,0.1875,0.25,0.9375,0.75,0.75]],"470":[[0.0625,0.0,0.0625,0.9375,0.875,0.9375]],"471":[[0.25,0.0,0.25,0.75,1.5,0.75]],"472":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"473":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"474":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"475":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"476":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"477":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"478":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"479":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"480":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"481":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"482":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"483":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"484":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"485":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"486":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"487":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"488":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"489":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"490":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"491":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"492":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"493":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"494":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"495":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"496":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"497":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"498":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"499":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"500":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"501":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"502":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"503":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"504":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"505":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"506":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"507":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"508":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"509":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"510":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"511":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"512":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"513":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"514":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"515":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"516":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"517":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"518":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"519":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"520":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"521":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"522":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"523":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"524":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"525":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"526":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"527":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"528":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"529":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"530":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"531":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"532":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"533":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"534":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"535":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"536":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"537":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"538":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"539":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"540":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"541":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"542":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"543":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"544":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"545":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"546":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"547":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"548":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"549":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"550":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"551":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"552":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"553":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"554":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"555":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"556":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"557":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"558":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"559":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"560":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"561":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"562":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"563":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"564":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"565":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"566":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"567":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"568":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"569":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"570":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"571":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"572":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"573":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"574":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"575":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"576":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"577":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"578":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"579":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"580":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"581":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"582":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"583":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"584":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"585":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"586":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"587":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"588":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"589":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"590":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"591":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"592":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"593":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"594":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"595":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"596":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"597":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"598":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"599":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"600":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"601":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"602":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"603":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"604":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"605":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"606":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"607":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"608":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"609":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"610":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"611":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"612":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"613":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"614":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"615":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"616":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"617":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"618":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"619":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"620":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"621":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"622":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"623":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"624":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"625":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"626":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"627":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"628":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"629":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"630":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"631":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"632":[[0.25,0.0,0.25,0.75,1.5,0.75]],"633":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"634":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"635":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"636":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"637":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"638":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"639":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"640":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"641":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"642":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"643":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"644":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"645":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"646":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"647":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"648":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"649":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"650":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"651":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"652":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"653":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"654":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"655":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"656":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"657":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"658":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"659":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"660":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"661":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"662":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"663":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"664":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"665":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"666":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"667":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"668":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"669":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"670":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"671":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"672":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"673":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"674":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"675":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"676":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"677":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"678":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"679":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"680":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"681":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"682":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"683":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"684":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"685":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"686":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"687":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"688":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"689":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"690":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"691":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"692":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"693":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"694":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"695":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"696":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"697":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"698":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"699":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"700":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"701":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"702":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"703":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"704":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"705":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"706":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"707":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"708":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"709":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"710":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"711":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"712":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"713":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"714":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"715":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"716":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"717":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"718":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"719":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"720":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"721":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"722":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"723":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"724":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"725":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"726":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"727":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"728":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"729":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"730":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"731":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"732":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"733":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"734":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"735":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"736":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"737":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"738":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"739":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"740":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"741":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"742":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"743":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"744":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"745":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"746":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"747":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"748":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"749":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"750":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"751":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"752":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"753":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"754":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"755":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"756":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"757":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"758":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"759":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"760":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"761":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"762":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"763":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"764":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"765":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"766":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"767":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"768":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"769":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"770":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"771":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"772":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"773":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"774":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"775":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"776":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"777":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"778":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"779":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"780":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"781":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"782":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"783":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"784":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"785":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"786":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"787":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"788":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"789":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"790":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"791":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"792":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"793":[[0.3125,0.0,0.3125,0.6875,0.375,0.6875]],"794":[[0.25,0.0,0.25,0.75,0.5,0.75]],"795":[[0.25,0.25,0.5,0.75,0.75,1.0]],"796":[[0.25,0.25,0.0,0.75,0.75,0.5]],"797":[[0.5,0.25,0.25,1.0,0.75,0.75]],"798":[[0.0,0.25,0.25,0.5,0.75,0.75]],"799":[[0.1875,0.0,0.1875,0.8125,0.5,0.8125]],"800":[[0.1875,0.25,0.5,0.8125,0.75,1.0]],"801":[[0.1875,0.25,0.0,0.8125,0.75,0.5]],"802":[[0.5,0.25,0.1875,1.0,0.75,0.8125]],"803":[[0.0,0.25,0.1875,0.5,0.75,0.8125]],"804":[[0.125,0.0,0.125,0.875,0.25,0.875],[0.25,0.25,0.1875,0.75,0.3125,0.8125],[0.375,0.3125,0.25,0.625,1.0,0.75],[0.1875,0.625,0.0,0.375,1.0,1.0],[0.375,0.625,0.0,0.8125,1.0,0.25],[0.375,0.625,0.75,0.8125,1.0,1.0],[0.625,0.625,0.25,0.8125,1.0,0.75]],"805":[[0.125,0.0,0.125,0.875,0.25,0.875],[0.1875,0.25,0.25,0.8125,0.3125,0.75],[0.25,0.3125,0.375,0.75,1.0,0.625],[0.0,0.625,0.1875,0.25,1.0,0.8125],[0.25,0.625,0.1875,1.0,1.0,0.375],[0.25,0.625,0.625,1.0,1.0,0.8125],[0.75,0.625,0.375,1.0,1.0,0.625]],"806":[[0.0,0.0,0.0,1.0,0.375,1.0]],"807":[[0.375,0.0,0.375,0.625,0.6875,0.625],[0.25,0.25,0.25,0.375,0.6875,0.75],[0.375,0.25,0.25,0.75,0.6875,0.375],[0.375,0.25,0.625,0.75,0.6875,0.75],[0.625,0.25,0.375,0.75,0.6875,0.625],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"808":[[0.25,0.25,0.25,0.75,0.6875,0.75],[0.375,0.25,0.0,0.625,0.5,0.25],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"809":[[0.25,0.25,0.25,0.75,0.6875,0.75],[0.375,0.25,0.75,0.625,0.5,1.0],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"810":[[0.0,0.25,0.375,0.75,0.5,0.625],[0.25,0.25,0.25,0.75,0.6875,0.375],[0.25,0.25,0.625,0.75,0.6875,0.75],[0.25,0.5,0.375,0.75,0.6875,0.625],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"811":[[0.25,0.25,0.25,0.75,0.6875,0.75],[0.75,0.25,0.375,1.0,0.5,0.625],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"812":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"813":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"814":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"815":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"816":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"817":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"818":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"819":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"820":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"821":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"822":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"823":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"824":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"825":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"826":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"827":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"828":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"829":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"830":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"831":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"832":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"833":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"834":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"835":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"836":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"837":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"838":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"839":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"840":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"841":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"842":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"843":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"844":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"845":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"846":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"847":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"848":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"849":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"850":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"851":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"852":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"853":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"854":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"855":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"856":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"857":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"858":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"859":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"860":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"861":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"862":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"863":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"864":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"865":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"866":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"867":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"868":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"869":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"870":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"871":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"872":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"873":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"874":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"875":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"876":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"877":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"878":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"879":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"880":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"881":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"882":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"883":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"884":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"885":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"886":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"887":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"888":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"889":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"890":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"891":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"892":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"893":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"894":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"895":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"896":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"897":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"898":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"899":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"900":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"901":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"902":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"903":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"904":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"905":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"906":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"907":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"908":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"909":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"910":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"911":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"912":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"913":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"914":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"915":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"916":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"917":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"918":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"919":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"920":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"921":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"922":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"923":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"924":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"925":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"926":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"927":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"928":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"929":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"930":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"931":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"932":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"933":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"934":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"935":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"936":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"937":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"938":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"939":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"940":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"941":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"942":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"943":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"944":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"945":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"946":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"947":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"948":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"949":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"950":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"951":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"952":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"953":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"954":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"955":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"956":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"957":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"958":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"959":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"960":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"961":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"962":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"963":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"964":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"965":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"966":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"967":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"968":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"969":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"970":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"971":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"972":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"973":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"974":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"975":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"976":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"977":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"978":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"979":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"980":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"981":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"982":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"983":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"984":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"985":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"986":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"987":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"988":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"989":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"990":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"991":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"992":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"993":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"994":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"995":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"996":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"997":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"998":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"999":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1000":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1001":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1002":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1003":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1004":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1005":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1006":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1007":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1008":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1009":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1010":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"1011":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"1012":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1013":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"1014":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1015":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1016":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1017":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1018":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1019":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1020":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1021":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1022":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1023":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1024":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1025":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1026":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"1027":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"1028":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1029":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"1030":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1031":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1032":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1033":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1034":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1035":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1036":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1037":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1038":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1039":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1040":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1041":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1042":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"1043":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"1044":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1045":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"1046":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1047":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1048":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1049":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1050":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1051":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1052":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1053":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1054":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1055":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1056":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1057":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1058":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"1059":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"1060":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1061":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"1062":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1063":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1064":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1065":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1066":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1067":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1068":[[0.0,0.0,0.0,1.0,0.0625,1.0]],"1069":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1070":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1071":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1072":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1073":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1074":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1075":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1076":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1077":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1078":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1079":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1080":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1081":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1082":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1083":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1084":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1085":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1086":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1087":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1088":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1089":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1090":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1091":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1092":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1093":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1094":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1095":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1096":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1097":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1098":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1099":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1100":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1101":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1102":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1103":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1104":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1105":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1106":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1107":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1108":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1109":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1110":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1111":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1112":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1113":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1114":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1115":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1116":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1117":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1118":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1119":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1120":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1121":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1122":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1123":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1124":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1125":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1126":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1127":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1128":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1129":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1130":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1131":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1132":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1133":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1134":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1135":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1136":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1137":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1138":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1139":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1140":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1141":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1142":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1143":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1144":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1145":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1146":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1147":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1148":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1149":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1150":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1151":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1152":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1153":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1154":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1155":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1156":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1157":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1158":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1159":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1160":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1161":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1162":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1163":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1164":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1165":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1166":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1167":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1168":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1169":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1170":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1171":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1172":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1173":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1174":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1175":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1176":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1177":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1178":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1179":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1180":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1181":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1182":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1183":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1184":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1185":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1186":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1187":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1188":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1189":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1190":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1191":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1192":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1193":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1194":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1195":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1196":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1197":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1198":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1199":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1200":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1201":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1202":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1203":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1204":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1205":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1206":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1207":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1208":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1209":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1210":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1211":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1212":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1213":[[0.375,0.375,0.0,0.625,0.625,1.0]],"1214":[[0.0,0.375,0.375,1.0,0.625,0.625]],"1215":[[0.375,0.0,0.375,0.625,1.0,0.625]],"1216":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1217":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1218":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1219":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1220":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1221":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1222":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1223":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1224":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1225":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1226":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1227":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1228":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1229":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1230":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1231":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1232":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1233":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1234":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1235":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1236":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1237":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1238":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1239":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1240":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1241":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1242":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1243":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1244":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125]],"1245":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125]],"1246":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125]],"1247":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125]],"1248":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1249":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1250":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1251":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1252":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1253":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1254":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1255":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1256":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1257":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1258":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1259":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1260":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1261":[[0.1875,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1262":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125]],"1263":[[0.1875,0.1875,0.1875,1.0,0.8125,0.8125]],"1264":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1265":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1266":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1267":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0]],"1268":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1269":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1270":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1271":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125]],"1272":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1273":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1274":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1275":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0]],"1276":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1277":[[0.1875,0.1875,0.1875,0.8125,1.0,0.8125]],"1278":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125]],"1279":[[0.1875,0.1875,0.1875,0.8125,0.8125,0.8125]],"1280":[[0.3125,-0.0625,0.3125,0.6875,0.1875,0.6875]],"1281":[[0.1875,-0.0625,0.1875,0.8125,0.3125,0.8125]],"1282":[[0.0,0.0,0.0,1.0,0.9375,1.0]],"1283":[[0.1875,0.0,0.1875,0.75,0.4375,0.75]],"1284":[[0.0625,0.0,0.0625,0.9375,0.4375,0.9375]],"1285":[[0.0625,0.0,0.125,0.9375,1.0,0.875]],"1286":[[0.1875,0.0,0.1875,0.8125,0.625,0.8125]],"1287":[[0.375,0.0,0.375,0.625,0.375,0.625]],"1288":[[0.1875,0.0,0.1875,0.8125,0.375,0.8125]],"1289":[[0.125,0.0,0.125,0.875,0.375,0.875]],"1290":[[0.125,0.0,0.125,0.875,0.4375,0.875]],"1291":[[0.3125,0.3125,0.3125,0.6875,0.6875,0.6875]],"1292":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1293":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1294":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1295":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1296":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1297":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1298":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1299":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1300":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1301":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1302":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1303":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1304":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1305":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1306":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1307":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1308":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1309":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1310":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1311":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1312":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1313":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1314":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1315":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1316":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1317":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1318":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1319":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1320":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1321":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1322":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1323":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1324":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1325":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1326":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1327":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1328":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1329":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1330":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1331":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1332":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1333":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1334":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1335":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1336":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1337":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1338":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1339":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1340":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1341":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1342":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1343":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1344":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1345":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1346":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1347":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1348":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1349":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1350":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1351":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1352":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1353":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1354":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1355":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1356":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1357":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1358":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1359":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1360":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1361":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1362":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1363":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1364":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1365":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1366":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1367":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1368":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1369":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1370":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1371":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1372":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1373":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1374":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1375":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1376":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1377":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1378":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1379":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1380":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1381":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1382":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1383":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1384":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1385":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1386":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1387":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1388":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1389":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1390":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1391":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1392":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1393":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1394":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1395":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1396":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1397":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1398":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1399":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1400":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1401":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1402":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1403":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1404":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1405":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1406":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1407":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1408":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1409":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1410":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1411":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1412":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1413":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1414":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1415":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1416":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1417":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1418":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1419":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1420":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1421":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1422":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1423":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1424":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1425":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1426":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1427":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1428":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1429":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1430":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1431":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1432":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1433":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1434":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1435":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1436":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1437":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1438":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1439":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1440":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1441":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1442":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1443":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1444":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1445":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1446":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1447":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1448":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1449":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1450":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1451":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1452":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1453":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1454":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1455":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1456":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1457":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1458":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1459":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1460":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1461":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1462":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1463":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1464":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1465":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1466":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1467":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1468":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1469":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1470":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1471":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1472":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1473":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1474":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1475":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1476":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1477":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1478":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1479":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1480":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1481":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1482":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1483":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1484":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1485":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1486":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1487":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1488":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1489":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1490":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1491":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1492":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1493":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1494":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1495":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1496":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1497":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1498":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1499":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1500":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1501":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1502":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1503":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1504":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1505":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1506":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1507":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1508":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1509":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1510":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1511":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1512":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1513":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1514":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1515":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1516":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1517":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1518":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1519":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1520":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1521":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1522":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1523":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1524":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1525":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1526":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1527":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1528":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1529":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1530":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1531":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1532":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1533":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1534":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1535":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1536":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1537":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1538":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1539":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1540":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1541":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1542":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1543":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1544":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1545":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1546":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1547":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1548":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1549":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1550":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1551":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1552":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1553":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1554":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1555":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1556":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1557":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1558":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1559":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1560":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1561":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1562":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1563":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1564":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1565":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1566":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1567":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1568":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1569":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1570":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1571":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1572":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1573":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1574":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1575":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1576":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1577":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1578":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1579":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1580":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1581":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1582":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1583":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1584":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1585":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1586":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1587":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1588":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1589":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1590":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1591":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1592":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1593":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1594":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1595":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1596":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1597":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1598":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1599":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1600":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1601":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1602":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1603":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1604":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1605":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1606":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1607":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1608":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1609":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1610":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1611":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1612":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1613":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1614":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1615":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1616":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1617":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1618":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1619":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1620":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1621":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1622":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1623":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1624":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1625":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1626":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1627":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1628":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1629":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1630":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1631":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1632":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1633":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1634":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1635":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1636":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1637":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1638":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1639":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1640":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1641":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1642":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1643":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1644":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1645":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1646":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1647":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1648":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1649":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1650":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1651":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1652":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1653":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1654":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1655":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1656":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1657":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1658":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1659":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1660":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1661":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1662":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1663":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1664":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1665":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1666":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1667":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1668":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1669":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1670":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1671":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1672":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1673":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1674":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1675":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1676":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1677":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1678":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1679":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1680":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1681":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1682":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1683":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1684":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1685":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1686":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1687":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1688":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1689":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1690":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1691":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1692":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1693":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1694":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1695":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1696":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1697":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1698":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1699":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1700":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1701":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1702":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1703":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1704":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1705":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1706":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1707":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1708":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1709":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1710":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1711":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1712":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1713":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1714":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1715":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1716":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1717":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1718":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1719":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1720":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1721":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1722":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1723":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1724":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1725":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1726":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1727":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1728":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1729":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1730":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1731":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1732":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1733":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1734":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1735":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1736":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1737":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1738":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1739":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1740":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1741":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1742":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1743":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1744":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1745":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1746":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1747":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1748":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1749":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1750":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1751":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1752":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1753":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1754":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1755":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1756":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1757":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1758":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1759":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1760":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1761":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1762":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1763":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1764":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1765":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1766":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1767":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1768":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1769":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1770":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1771":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1772":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1773":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1774":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1775":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1776":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1777":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1778":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1779":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1780":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1781":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1782":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1783":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1784":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1785":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1786":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1787":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1788":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1789":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1790":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1791":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1792":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1793":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1794":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1795":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1796":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1797":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1798":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1799":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1800":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1801":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1802":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1803":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1804":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1805":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1806":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1807":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1808":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1809":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1810":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1811":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1812":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1813":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1814":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1815":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1816":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1817":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1818":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1819":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1820":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1821":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1822":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1823":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1824":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1825":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1826":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1827":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1828":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1829":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1830":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1831":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1832":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1833":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1834":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1835":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1836":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1837":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1838":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1839":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1840":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1841":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1842":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1843":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1844":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1845":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1846":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1847":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1848":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1849":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1850":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1851":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1852":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1853":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1854":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1855":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1856":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1857":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1858":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1859":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1860":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1861":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1862":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1863":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1864":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1865":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1866":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1867":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1868":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1869":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1870":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1871":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1872":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1873":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1874":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1875":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1876":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1877":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1878":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1879":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1880":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1881":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1882":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1883":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1884":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1885":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1886":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1887":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1888":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1889":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1890":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1891":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1892":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1893":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1894":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1895":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1896":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1897":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1898":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1899":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1900":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1901":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1902":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1903":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1904":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1905":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1906":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1907":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1908":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1909":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1910":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1911":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1912":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1913":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1914":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1915":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1916":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1917":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1918":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1919":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1920":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1921":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1922":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1923":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1924":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1925":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1926":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1927":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1928":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1929":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1930":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1931":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1932":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1933":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1934":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1935":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1936":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1937":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1938":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1939":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1940":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1941":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1942":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1943":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1944":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1945":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1946":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1947":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1948":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1949":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1950":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1951":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1952":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1953":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1954":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1955":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1956":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1957":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1958":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1959":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1960":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1961":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1962":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1963":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1964":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1965":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1966":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1967":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1968":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1969":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1970":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1971":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1972":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1973":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1974":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1975":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1976":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1977":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1978":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1979":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1980":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1981":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1982":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1983":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1984":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1985":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1986":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1987":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1988":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1989":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1990":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1991":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1992":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1993":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1994":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1995":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1996":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1997":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1998":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1999":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2000":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2001":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2002":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2003":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2004":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2005":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2006":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2007":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2008":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2009":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2010":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2011":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2012":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2013":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2014":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2015":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2016":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2017":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2018":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2019":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2020":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2021":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2022":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2023":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2024":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2025":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2026":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2027":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2028":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2029":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2030":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2031":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2032":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2033":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2034":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2035":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2036":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2037":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2038":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2039":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2040":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2041":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2042":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2043":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2044":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2045":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2046":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2047":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2048":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2049":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2050":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2051":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2052":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2053":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2054":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2055":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2056":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2057":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2058":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2059":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2060":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2061":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2062":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2063":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2064":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2065":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2066":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2067":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2068":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2069":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2070":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2071":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2072":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2073":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2074":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2075":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2076":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2077":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2078":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2079":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2080":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2081":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2082":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2083":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2084":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2085":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2086":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2087":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2088":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2089":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2090":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2091":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2092":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2093":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2094":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2095":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2096":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2097":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2098":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2099":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2100":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2101":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2102":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2103":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2104":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2105":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2106":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2107":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2108":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2109":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2110":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2111":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2112":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2113":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2114":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2115":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2116":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2117":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2118":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2119":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2120":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2121":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2122":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2123":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2124":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2125":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2126":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2127":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2128":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2129":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2130":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2131":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2132":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2133":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2134":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2135":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2136":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2137":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2138":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2139":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2140":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2141":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2142":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2143":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2144":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2145":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2146":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2147":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2148":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2149":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2150":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2151":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2152":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2153":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2154":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2155":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2156":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2157":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2158":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2159":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2160":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2161":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2162":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2163":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2164":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2165":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2166":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2167":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2168":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2169":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2170":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2171":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2172":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2173":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2174":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2175":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2176":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2177":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2178":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2179":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2180":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2181":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2182":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2183":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2184":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2185":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2186":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2187":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2188":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2189":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2190":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2191":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2192":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2193":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2194":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2195":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2196":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2197":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2198":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2199":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2200":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2201":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2202":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2203":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2204":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2205":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2206":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2207":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2208":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2209":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2210":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2211":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2212":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2213":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2214":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2215":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2216":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2217":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2218":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2219":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2220":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2221":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2222":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2223":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2224":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2225":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2226":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2227":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2228":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2229":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2230":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2231":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2232":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2233":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2234":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2235":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2236":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2237":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2238":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2239":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2240":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2241":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2242":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2243":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2244":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2245":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2246":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2247":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2248":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2249":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2250":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2251":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2252":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2253":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2254":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2255":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2256":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2257":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2258":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2259":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2260":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2261":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2262":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2263":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2264":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2265":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2266":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2267":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2268":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2269":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2270":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2271":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2272":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2273":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2274":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2275":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2276":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2277":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2278":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2279":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2280":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2281":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2282":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2283":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2284":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2285":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2286":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2287":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2288":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2289":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2290":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2291":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2292":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2293":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2294":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2295":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2296":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2297":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2298":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2299":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2300":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2301":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2302":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2303":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2304":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2305":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2306":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2307":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2308":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2309":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2310":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2311":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2312":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2313":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2314":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2315":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2316":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2317":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2318":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2319":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2320":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2321":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2322":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2323":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2324":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2325":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2326":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2327":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2328":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2329":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2330":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2331":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2332":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2333":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2334":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2335":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2336":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2337":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2338":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2339":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2340":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2341":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2342":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2343":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2344":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2345":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2346":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2347":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2348":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2349":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2350":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2351":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2352":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2353":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2354":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2355":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2356":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2357":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2358":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2359":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2360":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2361":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2362":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2363":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2364":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2365":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2366":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2367":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2368":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2369":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2370":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2371":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2372":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2373":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2374":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2375":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2376":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2377":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2378":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2379":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2380":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2381":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2382":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2383":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2384":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2385":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2386":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2387":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2388":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2389":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2390":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2391":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2392":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2393":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2394":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2395":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2396":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2397":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2398":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2399":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2400":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2401":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2402":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2403":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2404":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2405":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2406":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2407":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2408":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2409":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2410":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2411":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2412":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2413":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2414":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2415":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2416":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2417":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2418":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2419":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2420":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2421":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2422":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2423":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2424":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2425":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2426":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2427":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2428":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2429":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2430":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2431":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2432":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2433":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2434":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2435":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2436":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2437":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2438":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2439":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2440":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2441":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2442":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2443":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2444":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2445":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2446":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2447":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2448":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2449":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2450":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2451":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2452":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2453":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2454":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2455":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2456":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2457":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2458":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2459":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2460":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2461":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2462":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2463":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2464":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2465":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2466":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2467":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2468":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2469":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2470":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2471":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2472":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2473":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2474":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2475":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2476":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2477":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2478":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2479":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2480":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2481":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2482":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2483":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2484":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2485":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2486":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2487":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2488":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2489":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2490":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2491":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2492":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2493":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2494":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2495":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2496":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2497":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2498":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2499":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2500":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2501":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2502":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2503":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2504":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2505":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2506":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2507":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2508":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2509":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2510":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2511":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2512":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2513":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2514":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2515":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2516":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2517":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2518":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2519":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2520":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2521":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2522":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2523":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2524":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2525":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2526":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2527":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2528":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2529":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2530":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2531":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2532":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2533":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2534":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2535":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2536":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2537":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2538":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2539":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2540":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2541":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2542":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2543":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2544":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2545":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2546":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2547":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2548":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2549":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2550":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2551":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2552":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2553":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2554":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2555":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2556":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2557":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2558":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2559":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2560":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2561":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2562":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2563":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2564":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2565":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2566":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2567":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2568":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2569":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2570":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2571":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2572":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2573":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2574":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2575":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2576":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2577":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2578":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2579":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2580":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2581":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2582":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2583":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2584":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2585":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2586":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2587":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2588":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2589":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2590":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2591":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2592":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2593":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2594":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2595":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2596":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2597":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2598":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2599":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2600":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2601":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2602":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2603":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2604":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2605":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2606":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2607":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2608":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2609":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2610":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2611":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2612":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2613":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2614":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2615":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2616":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2617":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2618":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2619":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2620":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2621":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2622":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2623":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2624":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2625":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2626":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2627":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2628":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2629":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2630":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2631":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2632":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2633":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2634":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2635":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2636":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2637":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2638":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2639":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2640":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2641":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2642":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2643":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2644":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2645":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2646":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2647":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2648":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2649":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2650":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2651":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2652":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2653":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2654":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2655":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2656":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2657":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2658":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2659":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2660":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2661":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2662":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2663":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2664":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2665":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2666":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2667":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2668":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2669":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2670":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2671":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2672":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2673":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2674":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2675":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2676":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2677":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2678":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2679":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2680":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2681":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2682":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2683":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2684":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2685":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2686":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2687":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2688":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2689":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2690":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2691":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2692":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2693":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2694":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2695":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2696":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2697":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2698":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2699":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2700":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2701":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2702":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2703":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2704":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2705":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2706":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2707":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2708":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2709":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2710":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2711":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2712":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2713":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2714":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2715":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2716":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2717":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2718":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2719":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2720":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2721":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2722":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2723":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2724":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2725":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2726":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2727":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2728":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2729":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2730":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2731":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2732":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2733":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2734":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2735":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2736":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2737":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2738":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2739":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2740":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2741":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2742":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2743":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2744":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2745":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2746":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2747":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2748":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2749":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2750":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2751":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2752":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2753":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2754":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2755":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2756":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2757":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2758":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2759":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2760":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2761":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2762":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2763":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2764":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2765":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2766":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2767":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2768":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2769":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2770":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2771":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2772":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2773":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2774":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2775":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2776":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2777":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2778":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2779":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2780":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2781":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2782":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2783":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2784":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2785":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2786":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2787":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2788":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2789":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2790":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2791":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2792":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2793":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2794":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2795":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2796":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2797":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2798":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2799":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2800":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2801":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2802":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2803":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2804":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2805":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2806":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2807":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2808":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2809":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2810":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2811":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2812":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2813":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2814":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2815":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2816":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2817":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2818":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2819":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2820":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2821":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2822":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2823":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2824":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2825":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2826":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2827":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2828":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2829":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2830":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2831":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2832":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2833":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2834":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2835":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2836":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2837":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2838":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2839":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2840":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2841":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2842":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2843":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2844":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2845":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2846":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2847":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2848":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2849":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2850":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2851":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2852":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2853":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2854":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2855":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2856":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2857":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2858":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2859":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2860":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2861":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2862":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2863":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2864":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2865":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2866":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2867":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2868":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2869":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2870":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2871":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2872":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2873":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2874":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2875":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2876":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2877":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2878":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2879":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2880":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2881":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2882":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2883":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2884":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2885":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2886":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2887":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2888":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2889":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2890":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2891":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2892":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2893":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2894":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2895":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2896":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2897":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2898":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2899":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2900":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2901":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2902":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2903":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2904":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2905":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2906":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2907":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2908":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2909":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2910":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2911":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2912":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2913":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2914":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2915":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2916":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2917":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2918":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2919":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2920":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2921":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2922":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2923":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2924":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2925":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2926":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2927":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2928":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2929":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2930":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2931":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2932":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2933":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2934":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2935":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2936":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2937":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2938":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2939":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2940":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2941":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2942":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2943":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2944":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2945":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2946":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2947":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2948":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2949":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2950":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2951":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2952":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2953":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2954":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2955":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2956":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2957":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2958":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2959":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2960":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2961":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2962":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2963":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2964":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2965":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2966":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2967":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2968":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2969":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2970":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2971":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2972":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2973":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2974":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2975":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2976":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2977":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2978":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2979":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2980":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2981":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2982":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2983":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2984":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2985":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2986":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2987":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2988":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2989":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2990":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2991":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2992":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2993":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2994":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2995":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2996":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2997":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2998":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2999":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3000":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3001":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3002":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3003":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3004":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3005":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3006":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3007":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3008":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3009":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3010":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3011":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3012":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3013":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3014":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3015":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3016":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3017":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3018":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3019":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3020":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3021":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3022":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3023":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3024":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3025":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3026":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3027":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3028":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3029":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3030":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3031":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3032":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3033":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3034":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3035":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3036":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3037":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3038":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3039":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3040":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3041":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3042":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3043":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3044":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3045":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3046":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3047":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3048":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3049":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3050":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3051":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3052":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3053":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3054":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3055":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3056":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3057":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3058":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3059":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3060":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3061":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3062":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3063":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3064":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3065":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3066":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3067":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3068":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3069":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3070":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3071":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3072":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3073":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3074":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3075":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3076":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3077":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3078":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3079":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3080":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3081":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3082":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3083":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3084":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3085":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3086":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3087":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3088":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3089":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3090":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3091":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3092":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3093":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3094":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3095":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3096":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3097":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3098":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3099":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3100":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3101":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3102":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3103":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3104":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3105":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3106":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3107":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3108":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3109":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3110":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3111":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3112":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3113":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3114":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3115":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3116":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3117":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3118":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3119":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3120":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3121":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3122":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3123":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3124":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3125":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3126":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3127":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3128":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3129":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3130":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3131":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3132":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3133":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3134":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3135":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3136":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3137":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3138":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3139":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3140":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3141":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3142":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3143":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3144":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3145":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3146":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3147":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3148":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3149":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3150":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3151":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3152":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3153":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3154":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3155":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3156":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3157":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3158":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3159":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3160":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3161":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3162":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3163":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3164":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3165":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3166":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3167":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3168":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3169":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3170":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3171":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3172":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3173":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3174":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3175":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3176":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3177":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3178":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3179":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3180":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3181":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3182":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3183":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3184":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3185":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3186":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3187":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3188":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3189":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3190":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3191":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3192":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3193":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3194":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3195":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3196":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3197":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3198":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3199":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3200":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3201":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3202":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3203":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3204":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3205":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3206":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3207":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3208":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3209":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3210":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3211":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3212":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3213":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3214":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3215":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3216":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3217":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3218":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3219":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3220":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3221":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3222":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3223":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3224":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3225":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3226":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3227":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3228":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3229":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3230":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3231":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3232":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3233":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3234":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3235":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3236":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3237":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3238":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3239":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3240":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3241":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3242":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3243":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3244":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3245":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3246":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3247":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3248":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3249":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3250":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3251":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3252":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3253":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3254":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3255":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3256":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3257":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3258":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3259":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3260":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3261":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3262":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3263":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3264":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3265":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3266":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3267":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3268":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3269":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3270":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3271":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3272":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3273":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3274":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3275":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3276":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3277":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3278":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3279":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3280":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3281":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3282":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3283":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3284":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3285":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3286":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3287":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3288":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3289":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3290":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3291":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3292":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3293":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3294":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3295":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3296":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3297":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3298":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3299":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3300":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3301":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3302":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3303":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3304":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3305":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3306":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3307":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3308":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3309":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3310":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3311":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3312":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3313":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3314":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3315":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3316":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3317":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3318":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3319":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3320":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3321":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3322":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3323":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3324":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3325":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3326":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3327":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3328":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3329":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3330":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3331":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3332":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3333":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3334":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3335":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3336":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3337":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3338":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3339":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3340":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3341":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3342":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3343":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3344":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3345":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3346":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3347":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3348":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3349":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3350":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3351":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3352":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3353":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3354":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3355":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3356":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3357":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3358":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3359":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3360":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3361":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3362":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3363":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3364":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3365":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3366":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3367":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3368":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3369":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3370":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3371":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3372":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3373":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3374":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3375":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3376":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3377":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3378":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3379":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3380":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3381":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3382":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3383":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3384":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3385":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3386":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3387":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3388":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3389":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3390":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3391":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3392":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3393":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3394":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3395":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3396":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3397":[[0.0,0.0,0.0,0.125,1.0,0.125],[0.0,0.0,0.875,0.125,1.0,1.0],[0.875,0.0,0.0,1.0,1.0,0.125],[0.875,0.0,0.875,1.0,1.0,1.0],[0.0,0.875,0.125,1.0,1.0,0.875],[0.125,0.875,0.0,0.875,1.0,0.125],[0.125,0.875,0.875,0.875,1.0,1.0]],"3398":[[0.125,0.0,0.375,0.25,0.8125,0.625],[0.75,0.0,0.375,0.875,0.8125,0.625],[0.25,0.25,0.125,0.75,1.0,0.875],[0.125,0.4375,0.3125,0.25,0.8125,0.375],[0.125,0.4375,0.625,0.25,0.8125,0.6875],[0.75,0.4375,0.3125,0.875,0.8125,0.375],[0.75,0.4375,0.625,0.875,0.8125,0.6875]],"3399":[[0.125,0.0,0.375,0.25,0.8125,0.625],[0.75,0.0,0.375,0.875,0.8125,0.625],[0.25,0.25,0.125,0.75,1.0,0.875],[0.125,0.4375,0.3125,0.25,0.8125,0.375],[0.125,0.4375,0.625,0.25,0.8125,0.6875],[0.75,0.4375,0.3125,0.875,0.8125,0.375],[0.75,0.4375,0.625,0.875,0.8125,0.6875]],"3400":[[0.375,0.0,0.125,0.625,0.8125,0.25],[0.375,0.0,0.75,0.625,0.8125,0.875],[0.125,0.25,0.25,0.875,1.0,0.75],[0.3125,0.4375,0.125,0.375,0.8125,0.25],[0.3125,0.4375,0.75,0.375,0.8125,0.875],[0.625,0.4375,0.125,0.6875,0.8125,0.25],[0.625,0.4375,0.75,0.6875,0.8125,0.875]],"3401":[[0.375,0.0,0.125,0.625,0.8125,0.25],[0.375,0.0,0.75,0.625,0.8125,0.875],[0.125,0.25,0.25,0.875,1.0,0.75],[0.3125,0.4375,0.125,0.375,0.8125,0.25],[0.3125,0.4375,0.75,0.375,0.8125,0.875],[0.625,0.4375,0.125,0.6875,0.8125,0.25],[0.625,0.4375,0.75,0.6875,0.8125,0.875]],"3402":[[0.25,0.125,0.0,0.75,0.875,0.75],[0.125,0.3125,0.1875,0.25,0.6875,0.5625],[0.75,0.3125,0.1875,0.875,0.6875,0.5625],[0.125,0.375,0.5625,0.25,0.625,1.0],[0.75,0.375,0.5625,0.875,0.625,1.0]],"3403":[[0.25,0.125,0.25,0.75,0.875,1.0],[0.125,0.3125,0.4375,0.25,0.6875,0.8125],[0.75,0.3125,0.4375,0.875,0.6875,0.8125],[0.125,0.375,0.0,0.25,0.625,0.4375],[0.75,0.375,0.0,0.875,0.625,0.4375]],"3404":[[0.0,0.125,0.25,0.75,0.875,0.75],[0.1875,0.3125,0.125,0.5625,0.6875,0.25],[0.1875,0.3125,0.75,0.5625,0.6875,0.875],[0.5625,0.375,0.125,1.0,0.625,0.25],[0.5625,0.375,0.75,1.0,0.625,0.875]],"3405":[[0.25,0.125,0.25,1.0,0.875,0.75],[0.4375,0.3125,0.125,0.8125,0.6875,0.25],[0.4375,0.3125,0.75,0.8125,0.6875,0.875],[0.0,0.375,0.125,0.4375,0.625,0.25],[0.0,0.375,0.75,0.4375,0.625,0.875]],"3406":[[0.25,0.0,0.125,0.75,0.75,0.875],[0.125,0.1875,0.3125,0.25,0.5625,0.6875],[0.75,0.1875,0.3125,0.875,0.5625,0.6875],[0.125,0.5625,0.375,0.25,1.0,0.625],[0.75,0.5625,0.375,0.875,1.0,0.625]],"3407":[[0.25,0.0,0.125,0.75,0.75,0.875],[0.125,0.1875,0.3125,0.25,0.5625,0.6875],[0.75,0.1875,0.3125,0.875,0.5625,0.6875],[0.125,0.5625,0.375,0.25,1.0,0.625],[0.75,0.5625,0.375,0.875,1.0,0.625]],"3408":[[0.125,0.0,0.25,0.875,0.75,0.75],[0.3125,0.1875,0.125,0.6875,0.5625,0.25],[0.3125,0.1875,0.75,0.6875,0.5625,0.875],[0.375,0.5625,0.125,0.625,1.0,0.25],[0.375,0.5625,0.75,0.625,1.0,0.875]],"3409":[[0.125,0.0,0.25,0.875,0.75,0.75],[0.3125,0.1875,0.125,0.6875,0.5625,0.25],[0.3125,0.1875,0.75,0.6875,0.5625,0.875],[0.375,0.5625,0.125,0.625,1.0,0.25],[0.375,0.5625,0.75,0.625,1.0,0.875]],"3410":[[0.0,0.0,0.0,1.0,0.125,1.0],[0.25,0.125,0.25,0.75,0.875,0.75]],"3411":[[0.0,0.0,0.0,1.0,0.5625,1.0]],"3412":[[0.0,0.0,0.25,1.0,1.0,0.75]],"3413":[[0.25,0.0,0.0,0.75,1.0,1.0]],"3414":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.4375,0.5625,1.0,0.5625]],"3415":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.0,0.5625,0.9375,0.8125]],"3416":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.1875,0.5625,0.9375,1.0]],"3417":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.0,0.8125,0.4375,0.8125,0.9375,0.5625]],"3418":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.1875,0.8125,0.4375,1.0,0.9375,0.5625]],"3419":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.0,0.5625,0.9375,1.0]],"3420":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.0,0.8125,0.4375,1.0,0.9375,0.5625]],"3421":[[0.3125,0.0625,0.3125,0.6875,0.5,0.6875],[0.375,0.5,0.375,0.625,0.625,0.625]],"3422":[[0.3125,0.0,0.3125,0.6875,0.4375,0.6875],[0.375,0.4375,0.375,0.625,0.5625,0.625]],"3423":[[0.0,0.0,0.0,1.0,0.4375,1.0]],"3424":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"3425":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"3426":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"3427":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"3428":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"3429":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"3430":[[0.0,0.0,0.375,1.0,1.5,0.625]],"3431":[[0.375,0.0,0.375,1.0,1.5,0.625]],"3432":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"3433":[[0.375,0.0,0.0,0.625,1.5,1.0]],"3434":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"3435":[[0.375,0.0,0.0,0.625,1.5,0.625]],"3436":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"3437":[[0.375,0.0,0.375,0.625,1.5,1.0]],"3438":[[0.0,0.0,0.375,0.625,1.5,0.625]],"3439":[[0.375,0.0,0.375,0.625,1.5,0.625]],"3440":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"3441":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"3442":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"3443":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"3444":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"3445":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"3446":[[0.0,0.0,0.375,1.0,1.5,0.625]],"3447":[[0.375,0.0,0.375,1.0,1.5,0.625]],"3448":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"3449":[[0.375,0.0,0.0,0.625,1.5,1.0]],"3450":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"3451":[[0.375,0.0,0.0,0.625,1.5,0.625]],"3452":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"3453":[[0.375,0.0,0.375,0.625,1.5,1.0]],"3454":[[0.0,0.0,0.375,0.625,1.5,0.625]],"3455":[[0.375,0.0,0.375,0.625,1.5,0.625]],"3456":[[0.0,0.0,0.0,1.0,0.125,1.0],[0.0,0.125,0.0,0.125,1.0,1.0],[0.125,0.125,0.0,1.0,1.0,0.125],[0.125,0.125,0.875,1.0,1.0,1.0],[0.875,0.125,0.125,1.0,1.0,0.875]],"3457":[[0.0625,0.0,0.0625,0.9375,0.9375,0.9375]],"3458":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3459":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3460":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3461":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3462":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3463":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3464":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3465":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3466":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3467":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3468":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3469":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3470":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3471":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3472":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3473":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3474":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3475":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3476":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3477":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3478":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3479":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3480":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3481":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3482":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3483":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3484":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3485":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3486":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3487":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3488":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3489":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3490":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3491":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3492":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3493":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3494":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3495":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3496":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3497":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3498":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3499":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3500":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3501":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3502":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3503":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3504":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3505":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3506":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3507":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3508":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3509":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3510":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3511":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3512":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3513":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3514":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3515":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3516":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3517":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3518":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3519":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3520":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3521":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3522":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3523":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3524":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3525":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3526":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3527":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3528":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3529":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3530":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3531":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3532":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3533":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3534":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3535":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3536":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3537":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3538":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3539":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3540":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3541":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3542":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3543":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3544":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3545":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3546":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3547":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3548":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3549":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3550":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3551":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3552":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3553":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3554":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3555":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3556":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3557":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3558":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3559":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3560":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3561":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3562":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3563":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3564":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3565":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3566":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3567":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3568":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3569":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3570":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3571":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3572":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3573":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3574":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3575":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3576":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3577":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3578":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3579":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3580":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3581":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3582":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3583":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3584":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3585":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3586":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3587":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3588":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3589":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3590":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3591":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3592":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3593":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3594":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3595":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3596":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3597":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3598":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3599":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3600":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3601":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3602":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3603":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3604":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3605":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3606":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3607":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3608":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3609":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3610":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3611":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3612":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3613":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3614":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3615":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3616":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3617":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3618":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3619":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3620":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3621":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3622":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3623":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3624":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3625":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3626":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3627":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3628":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3629":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3630":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3631":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3632":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3633":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3634":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3635":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3636":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3637":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3638":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3639":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3640":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3641":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3642":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3643":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3644":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3645":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3646":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3647":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3648":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3649":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3650":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3651":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3652":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3653":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3654":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3655":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3656":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3657":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3658":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3659":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3660":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3661":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3662":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3663":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3664":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3665":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3666":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3667":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3668":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3669":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3670":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3671":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3672":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3673":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3674":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3675":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3676":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3677":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3678":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3679":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3680":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3681":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3682":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3683":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3684":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3685":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3686":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3687":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3688":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3689":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3690":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3691":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3692":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3693":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3694":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3695":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3696":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3697":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3698":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3699":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3700":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3701":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3702":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3703":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3704":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3705":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3706":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3707":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3708":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3709":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3710":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3711":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3712":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3713":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3714":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3715":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3716":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3717":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3718":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3719":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3720":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3721":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3722":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3723":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3724":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3725":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3726":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3727":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3728":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3729":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3730":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3731":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3732":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3733":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3734":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3735":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3736":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3737":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3738":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3739":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3740":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3741":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3742":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3743":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3744":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3745":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3746":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3747":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3748":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3749":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3750":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3751":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3752":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3753":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3754":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3755":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3756":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3757":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3758":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3759":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3760":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3761":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3762":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3763":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3764":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3765":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3766":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3767":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3768":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3769":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3770":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3771":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3772":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3773":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3774":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3775":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3776":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3777":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3778":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3779":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3780":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3781":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3782":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3783":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3784":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3785":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3786":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3787":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3788":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3789":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3790":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3791":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3792":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3793":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3794":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3795":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3796":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3797":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3798":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3799":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3800":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3801":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3802":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3803":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3804":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3805":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3806":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3807":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3808":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3809":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3810":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3811":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3812":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3813":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3814":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3815":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3816":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3817":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3818":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3819":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3820":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3821":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3822":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3823":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3824":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3825":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3826":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3827":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3828":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3829":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3830":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3831":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3832":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3833":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3834":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3835":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3836":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3837":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3838":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3839":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3840":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3841":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3842":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3843":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3844":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3845":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3846":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3847":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3848":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3849":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3850":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3851":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3852":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3853":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3854":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3855":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3856":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3857":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3858":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3859":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3860":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3861":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3862":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3863":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3864":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3865":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3866":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3867":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3868":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3869":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3870":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3871":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3872":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3873":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3874":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3875":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3876":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3877":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3878":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3879":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3880":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3881":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3882":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3883":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3884":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3885":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3886":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3887":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3888":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3889":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3890":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3891":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3892":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3893":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3894":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3895":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3896":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3897":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3898":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3899":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3900":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3901":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3902":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3903":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3904":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3905":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3906":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3907":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3908":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3909":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3910":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3911":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3912":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3913":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3914":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3915":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3916":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3917":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3918":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3919":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3920":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3921":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3922":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3923":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3924":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3925":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3926":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3927":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3928":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3929":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3930":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3931":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3932":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3933":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3934":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3935":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3936":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3937":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3938":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3939":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3940":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3941":[[0.4375,0.0,0.4375,0.5625,0.375,0.5625]],"3942":[[0.3125,0.0,0.375,0.6875,0.375,0.5625]],"3943":[[0.3125,0.0,0.375,0.625,0.375,0.6875]],"3944":[[0.3125,0.0,0.3125,0.6875,0.375,0.625]],"3945":[[0.0625,0.0,0.0625,0.9375,0.5,0.9375],[0.4375,0.5,0.4375,0.5625,0.875,0.5625]],"3946":[[0.1875,0.1875,0.5625,0.8125,0.8125,1.0]],"3947":[[0.0,0.1875,0.1875,0.4375,0.8125,0.8125]],"3948":[[0.1875,0.1875,0.0,0.8125,0.8125,0.4375]],"3949":[[0.5625,0.1875,0.1875,1.0,0.8125,0.8125]],"3950":[[0.1875,0.0,0.1875,0.8125,0.4375,0.8125]],"3951":[[0.1875,0.5625,0.1875,0.8125,1.0,0.8125]],"3952":[[0.1875,0.1875,0.6875,0.8125,0.8125,1.0]],"3953":[[0.0,0.1875,0.1875,0.3125,0.8125,0.8125]],"3954":[[0.1875,0.1875,0.0,0.8125,0.8125,0.3125]],"3955":[[0.6875,0.1875,0.1875,1.0,0.8125,0.8125]],"3956":[[0.1875,0.0,0.1875,0.8125,0.3125,0.8125]],"3957":[[0.1875,0.6875,0.1875,0.8125,1.0,0.8125]],"3958":[[0.1875,0.1875,0.75,0.8125,0.8125,1.0]],"3959":[[0.0,0.1875,0.1875,0.25,0.8125,0.8125]],"3960":[[0.1875,0.1875,0.0,0.8125,0.8125,0.25]],"3961":[[0.75,0.1875,0.1875,1.0,0.8125,0.8125]],"3962":[[0.1875,0.0,0.1875,0.8125,0.25,0.8125]],"3963":[[0.1875,0.75,0.1875,0.8125,1.0,0.8125]],"3964":[[0.25,0.25,0.8125,0.75,0.75,1.0]],"3965":[[0.0,0.25,0.25,0.1875,0.75,0.75]],"3966":[[0.25,0.25,0.0,0.75,0.75,0.1875]],"3967":[[0.8125,0.25,0.25,1.0,0.75,0.75]],"3968":[[0.25,0.0,0.25,0.75,0.1875,0.75]],"3969":[[0.25,0.8125,0.25,0.75,1.0,0.75]],"3970":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3971":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3972":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3973":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3974":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3975":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3976":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3977":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3978":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3979":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3980":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3981":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3982":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3983":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3984":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3985":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3986":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3987":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3988":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3989":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3990":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3991":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3992":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3993":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3994":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3995":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3996":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3997":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3998":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3999":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4000":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4001":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4002":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4003":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4004":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4005":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4006":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4007":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4008":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4009":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4010":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4011":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4012":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4013":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4014":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4015":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4016":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4017":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4018":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4019":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4020":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4021":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4022":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4023":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4024":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4025":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4026":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4027":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4028":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4029":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4030":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4031":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4032":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4033":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4034":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4035":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4036":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4037":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4038":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4039":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4040":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4041":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4042":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4043":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4044":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4045":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4046":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4047":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4048":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4049":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4050":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4051":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4052":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4053":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4054":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4055":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4056":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4057":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4058":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4059":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4060":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4061":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4062":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4063":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4064":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4065":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4066":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4067":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4068":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4069":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4070":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4071":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4072":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4073":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4074":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4075":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4076":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4077":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4078":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4079":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4080":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4081":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4082":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4083":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4084":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4085":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4086":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4087":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4088":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4089":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4090":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4091":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4092":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4093":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4094":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4095":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4096":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4097":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4098":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4099":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4100":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4101":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4102":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4103":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4104":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4105":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4106":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4107":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4108":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4109":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4110":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4111":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4112":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4113":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4114":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4115":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4116":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4117":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4118":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4119":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4120":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4121":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4122":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4123":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4124":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4125":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4126":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4127":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4128":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4129":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4130":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4131":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4132":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4133":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4134":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4135":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4136":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4137":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4138":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4139":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4140":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4141":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4142":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4143":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4144":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4145":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4146":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4147":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4148":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4149":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4150":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4151":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4152":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4153":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4154":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4155":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4156":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4157":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4158":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4159":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4160":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4161":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4162":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4163":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4164":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4165":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4166":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4167":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4168":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4169":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4170":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4171":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4172":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4173":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4174":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4175":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4176":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4177":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4178":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4179":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4180":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4181":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4182":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4183":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4184":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4185":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4186":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4187":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4188":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4189":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4190":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4191":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4192":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4193":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4194":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4195":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4196":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4197":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4198":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4199":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4200":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4201":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4202":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4203":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4204":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4205":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4206":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4207":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4208":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4209":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4210":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4211":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4212":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4213":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4214":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4215":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4216":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4217":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4218":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4219":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4220":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4221":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4222":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4223":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4224":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4225":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4226":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4227":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4228":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4229":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4230":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4231":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4232":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4233":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4234":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4235":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4236":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4237":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4238":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4239":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4240":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4241":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4242":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4243":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4244":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4245":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4246":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4247":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4248":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4249":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4250":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4251":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4252":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4253":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4254":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4255":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4256":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4257":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4258":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4259":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4260":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4261":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4262":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4263":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4264":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4265":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4266":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4267":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4268":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4269":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4270":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4271":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4272":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4273":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4274":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4275":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4276":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4277":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4278":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4279":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4280":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4281":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4282":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4283":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4284":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4285":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4286":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4287":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4288":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4289":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4290":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4291":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4292":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4293":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4294":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4295":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4296":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4297":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4298":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4299":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4300":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4301":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4302":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4303":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4304":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4305":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4306":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4307":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4308":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4309":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4310":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4311":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4312":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4313":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4314":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4315":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4316":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4317":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4318":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4319":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4320":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4321":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4322":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4323":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4324":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4325":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4326":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4327":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4328":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4329":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4330":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4331":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4332":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4333":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4334":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4335":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4336":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4337":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4338":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4339":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4340":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4341":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4342":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4343":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4344":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4345":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4346":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4347":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4348":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4349":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4350":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4351":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4352":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4353":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4354":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4355":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4356":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4357":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4358":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4359":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4360":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4361":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4362":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4363":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4364":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4365":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4366":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4367":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4368":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4369":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4370":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4371":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4372":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4373":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4374":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4375":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4376":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4377":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4378":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4379":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4380":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4381":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4382":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4383":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4384":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4385":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4386":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4387":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4388":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4389":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4390":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4391":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4392":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4393":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4394":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4395":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4396":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4397":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4398":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4399":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4400":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4401":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4402":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4403":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4404":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4405":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4406":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4407":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4408":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4409":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4410":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4411":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4412":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4413":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4414":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4415":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4416":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4417":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4418":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4419":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4420":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4421":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4422":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4423":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4424":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4425":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4426":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4427":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4428":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4429":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4430":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4431":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4432":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4433":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4434":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4435":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4436":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4437":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4438":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4439":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4440":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4441":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4442":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4443":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4444":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4445":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4446":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4447":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4448":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4449":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4450":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4451":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4452":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4453":[[0.0,0.0,0.0,1.0,0.5,1.0]],"4454":[[0.0,0.0,0.0,1.0,0.5,1.0]],"4455":[[0.1875,0.0,0.1875,0.8125,0.875,0.8125]],"4456":[[0.1875,0.0,0.1875,0.5625,1.0,0.5625]],"4457":[[0.1875,0.0,0.1875,0.5625,1.0,0.5625]],"4458":[[0.1875,0.0,0.1875,0.5625,1.0,0.5625]],"4459":[[0.1875,0.0,0.1875,0.5625,1.0,0.5625]],"4460":[[0.1875,0.0,0.1875,0.5625,0.6875,0.5625]],"4461":[[0.1875,0.0,0.1875,0.5625,0.6875,0.5625]],"4462":[[0.1875,0.3125,0.1875,0.5625,1.0,0.5625]],"4463":[[0.1875,0.3125,0.1875,0.5625,1.0,0.5625]],"4464":[[0.125,0.0,0.125,0.625,1.0,0.625]],"4465":[[0.125,0.0,0.125,0.625,1.0,0.625]],"4466":[[0.125,0.0,0.125,0.625,1.0,0.625]],"4467":[[0.125,0.0,0.125,0.625,1.0,0.625]],"4468":[[0.0625,0.0,0.0625,0.6875,1.0,0.6875]],"4469":[[0.0625,0.0,0.0625,0.6875,1.0,0.6875]],"4470":[[0.0625,0.0,0.0625,0.6875,1.0,0.6875]],"4471":[[0.0625,0.0,0.0625,0.6875,1.0,0.6875]],"4472":[[0.0,0.0,0.0,0.75,1.0,0.75]],"4473":[[0.0,0.0,0.0,0.75,1.0,0.75]],"4474":[[0.0,0.0,0.0,0.75,1.0,0.75]],"4475":[[0.0,0.0,0.0,0.75,1.0,0.75]],"4476":[[0.375,0.0,0.375,0.625,1.0,0.625],[0.0,0.5,0.0,0.375,1.0,1.0],[0.375,0.5,0.0,1.0,1.0,0.375],[0.375,0.5,0.625,1.0,1.0,1.0],[0.625,0.5,0.375,1.0,1.0,0.625]],"4477":[[0.0,0.6875,0.0,1.0,0.9375,1.0]],"4478":[[0.0,0.6875,0.0,1.0,0.9375,1.0]],"4479":[[0.0,0.6875,0.0,1.0,0.8125,1.0]],"4480":[[0.0,0.0,0.0,1.0,0.875,1.0]],"4481":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4482":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4483":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4484":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4485":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4486":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4487":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4488":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4489":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4490":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4491":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4492":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4493":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4494":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4495":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4496":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4497":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4498":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4499":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4500":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4501":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4502":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4503":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4504":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4505":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4506":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4507":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4508":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4509":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4510":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4511":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4512":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4513":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4514":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4515":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4516":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4517":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4518":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4519":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4520":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4521":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4522":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4523":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4524":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4525":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4526":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4527":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4528":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4529":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4530":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4531":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4532":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4533":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4534":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4535":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4536":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4537":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4538":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4539":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4540":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4541":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4542":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4543":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4544":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4545":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4546":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4547":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4548":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4549":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4550":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4551":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4552":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4553":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4554":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4555":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4556":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4557":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4558":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4559":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4560":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4561":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4562":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4563":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4564":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4565":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4566":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4567":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4568":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4569":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4570":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4571":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4572":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4573":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4574":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4575":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4576":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4577":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4578":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4579":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4580":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4581":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4582":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4583":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4584":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4585":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4586":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4587":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4588":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4589":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4590":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4591":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4592":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4593":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4594":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4595":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4596":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4597":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4598":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4599":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4600":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4601":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4602":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4603":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4604":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4605":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4606":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4607":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4608":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4609":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4610":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4611":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4612":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4613":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4614":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4615":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4616":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4617":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4618":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4619":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4620":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4621":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4622":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4623":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4624":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4625":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4626":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4627":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4628":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4629":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4630":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4631":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4632":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4633":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4634":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4635":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4636":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4637":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4638":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4639":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4640":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4641":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4642":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4643":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4644":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4645":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4646":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4647":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4648":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4649":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4650":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4651":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4652":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4653":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4654":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4655":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4656":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4657":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4658":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4659":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4660":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4661":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4662":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4663":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4664":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4665":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4666":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4667":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4668":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4669":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4670":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4671":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4672":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4673":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4674":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4675":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4676":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4677":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4678":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4679":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4680":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4681":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4682":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4683":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4684":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4685":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4686":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4687":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4688":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4689":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4690":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4691":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4692":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4693":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4694":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4695":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4696":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4697":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4698":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4699":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4700":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4701":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4702":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4703":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4704":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4705":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4706":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4707":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4708":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4709":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4710":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4711":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4712":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4713":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4714":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4715":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4716":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4717":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4718":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4719":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4720":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4721":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4722":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4723":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4724":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4725":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4726":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4727":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4728":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4729":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4730":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4731":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4732":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4733":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4734":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4735":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4736":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4737":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4738":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4739":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4740":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4741":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4742":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4743":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4744":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4745":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4746":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4747":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4748":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4749":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4750":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4751":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4752":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4753":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4754":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4755":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4756":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4757":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4758":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4759":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4760":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4761":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4762":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4763":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4764":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4765":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4766":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4767":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4768":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4769":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4770":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4771":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4772":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4773":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4774":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4775":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4776":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4777":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4778":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4779":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4780":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4781":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4782":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4783":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4784":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4785":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4786":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4787":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4788":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4789":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4790":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4791":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4792":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4793":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4794":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4795":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4796":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4797":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4798":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4799":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4800":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4801":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4802":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4803":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4804":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4805":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4806":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4807":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4808":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4809":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4810":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4811":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4812":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4813":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4814":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4815":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4816":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4817":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4818":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4819":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4820":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4821":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4822":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4823":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4824":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4825":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4826":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4827":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4828":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4829":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4830":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4831":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4832":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4833":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4834":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4835":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4836":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4837":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4838":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4839":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4840":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4841":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4842":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4843":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4844":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4845":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4846":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4847":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4848":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4849":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4850":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4851":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4852":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4853":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4854":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4855":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4856":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4857":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4858":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4859":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4860":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4861":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4862":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4863":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4864":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4865":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4866":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4867":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4868":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4869":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4870":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4871":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4872":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4873":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4874":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4875":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4876":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4877":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4878":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4879":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4880":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4881":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4882":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4883":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4884":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4885":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4886":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4887":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4888":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4889":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4890":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4891":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4892":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4893":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4894":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4895":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4896":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4897":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4898":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4899":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4900":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4901":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4902":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4903":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4904":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4905":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4906":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4907":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4908":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4909":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4910":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4911":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4912":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4913":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4914":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4915":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4916":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4917":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4918":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4919":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4920":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4921":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4922":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4923":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4924":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4925":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4926":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4927":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4928":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4929":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4930":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4931":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4932":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4933":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4934":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4935":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4936":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4937":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4938":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4939":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4940":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4941":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4942":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4943":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4944":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4945":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4946":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4947":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4948":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4949":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4950":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4951":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4952":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4953":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4954":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4955":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4956":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4957":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4958":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4959":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4960":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4961":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4962":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4963":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4964":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4965":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4966":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4967":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4968":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4969":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4970":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4971":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4972":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4973":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4974":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4975":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4976":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4977":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4978":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4979":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4980":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4981":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4982":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4983":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4984":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4985":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4986":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4987":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4988":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4989":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4990":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4991":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4992":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4993":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4994":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4995":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4996":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4997":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4998":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4999":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5000":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5001":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5002":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"5003":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5004":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5005":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5006":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5007":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5008":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"5009":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5010":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5011":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5012":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5013":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5014":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"5015":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5016":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5017":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5018":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"5019":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"5020":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"5021":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"5022":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"5023":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5024":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5025":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5026":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5027":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5028":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5029":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5030":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5031":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5032":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5033":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5034":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5035":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5036":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5037":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5038":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5039":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5040":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5041":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5042":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5043":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5044":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5045":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5046":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5047":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5048":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5049":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5050":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5051":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5052":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5053":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5054":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5055":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5056":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5057":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5058":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5059":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5060":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5061":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5062":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5063":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5064":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5065":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5066":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5067":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5068":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5069":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5070":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5071":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5072":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"5073":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"5074":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"5075":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"5076":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"5077":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5078":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5079":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5080":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5081":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5082":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5083":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5084":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5085":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5086":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5087":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5088":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5089":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5090":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5091":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5092":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5093":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5094":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5095":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5096":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5097":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5098":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5099":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5100":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5101":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5102":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5103":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5104":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5105":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5106":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5107":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5108":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5109":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5110":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5111":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5112":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5113":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5114":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5115":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5116":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5117":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5118":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5119":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5120":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5121":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5122":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5123":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5124":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5125":[[0.0625,0.0,0.0625,0.9375,1.0,0.9375]],"5126":[[0.25,0.0,0.25,0.75,0.5,0.75]],"5127":[[0.0,0.0,0.0,1.0,0.0625,1.0]]},"blocks":{"air":0,"stone":1,"granite":1,"polished_granite":1,"diorite":1,"polished_diorite":1,"andesite":1,"polished_andesite":1,"grass_block":1,"dirt":1,"coarse_dirt":1,"podzol":1,"cobblestone":1,"oak_planks":1,"spruce_planks":1,"birch_planks":1,"jungle_planks":1,"acacia_planks":1,"cherry_planks":1,"dark_oak_planks":1,"pale_oak_wood":1,"pale_oak_planks":1,"mangrove_planks":1,"bamboo_planks":1,"bamboo_mosaic":1,"oak_sapling":0,"spruce_sapling":0,"birch_sapling":0,"jungle_sapling":0,"acacia_sapling":0,"cherry_sapling":0,"dark_oak_sapling":0,"pale_oak_sapling":0,"mangrove_propagule":0,"bedrock":1,"water":0,"lava":0,"sand":1,"suspicious_sand":1,"red_sand":1,"gravel":1,"suspicious_gravel":1,"gold_ore":1,"deepslate_gold_ore":1,"iron_ore":1,"deepslate_iron_ore":1,"coal_ore":1,"deepslate_coal_ore":1,"nether_gold_ore":1,"oak_log":1,"spruce_log":1,"birch_log":1,"jungle_log":1,"acacia_log":1,"cherry_log":1,"dark_oak_log":1,"pale_oak_log":1,"mangrove_log":1,"mangrove_roots":1,"muddy_mangrove_roots":1,"bamboo_block":1,"stripped_spruce_log":1,"stripped_birch_log":1,"stripped_jungle_log":1,"stripped_acacia_log":1,"stripped_cherry_log":1,"stripped_dark_oak_log":1,"stripped_pale_oak_log":1,"stripped_oak_log":1,"stripped_mangrove_log":1,"stripped_bamboo_block":1,"oak_wood":1,"spruce_wood":1,"birch_wood":1,"jungle_wood":1,"acacia_wood":1,"cherry_wood":1,"dark_oak_wood":1,"mangrove_wood":1,"stripped_oak_wood":1,"stripped_spruce_wood":1,"stripped_birch_wood":1,"stripped_jungle_wood":1,"stripped_acacia_wood":1,"stripped_cherry_wood":1,"stripped_dark_oak_wood":1,"stripped_pale_oak_wood":1,"stripped_mangrove_wood":1,"oak_leaves":1,"spruce_leaves":1,"birch_leaves":1,"jungle_leaves":1,"acacia_leaves":1,"cherry_leaves":1,"dark_oak_leaves":1,"pale_oak_leaves":1,"mangrove_leaves":1,"azalea_leaves":1,"flowering_azalea_leaves":1,"sponge":1,"wet_sponge":1,"glass":1,"lapis_ore":1,"deepslate_lapis_ore":1,"lapis_block":1,"dispenser":1,"sandstone":1,"chiseled_sandstone":1,"cut_sandstone":1,"note_block":1,"white_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"orange_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"magenta_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"light_blue_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"yellow_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"lime_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"pink_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"gray_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"light_gray_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"cyan_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"purple_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"blue_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"brown_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"green_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"red_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"black_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"powered_rail":0,"detector_rail":0,"sticky_piston":[6,7,8,9,10,11,1,1,1,1,1,1],"cobweb":0,"short_grass":0,"fern":0,"dead_bush":0,"bush":0,"short_dry_grass":0,"tall_dry_grass":0,"seagrass":0,"tall_seagrass":0,"piston":[6,7,8,9,10,11,1,1,1,1,1,1],"piston_head":[12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23],"white_wool":1,"orange_wool":1,"magenta_wool":1,"light_blue_wool":1,"yellow_wool":1,"lime_wool":1,"pink_wool":1,"gray_wool":1,"light_gray_wool":1,"cyan_wool":1,"purple_wool":1,"blue_wool":1,"brown_wool":1,"green_wool":1,"red_wool":1,"black_wool":1,"moving_piston":0,"dandelion":0,"torchflower":0,"poppy":0,"blue_orchid":0,"allium":0,"azure_bluet":0,"red_tulip":0,"orange_tulip":0,"white_tulip":0,"pink_tulip":0,"oxeye_daisy":0,"cornflower":0,"wither_rose":0,"lily_of_the_valley":0,"brown_mushroom":0,"red_mushroom":0,"gold_block":1,"iron_block":1,"bricks":1,"tnt":1,"bookshelf":1,"chiseled_bookshelf":1,"acacia_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"bamboo_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"birch_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"cherry_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"crimson_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"dark_oak_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"jungle_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"mangrove_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"oak_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"pale_oak_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"spruce_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"warped_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"mossy_cobblestone":1,"obsidian":1,"torch":0,"wall_torch":0,"fire":0,"soul_fire":0,"spawner":1,"creaking_heart":1,"oak_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"redstone_wire":0,"diamond_ore":1,"deepslate_diamond_ore":1,"diamond_block":1,"crafting_table":1,"wheat":0,"farmland":57,"furnace":1,"oak_sign":0,"spruce_sign":0,"birch_sign":0,"acacia_sign":0,"cherry_sign":0,"jungle_sign":0,"dark_oak_sign":0,"pale_oak_sign":0,"mangrove_sign":0,"bamboo_sign":0,"oak_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"ladder":[62,62,63,63,64,64,65,65],"rail":0,"cobblestone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"oak_wall_sign":0,"spruce_wall_sign":0,"birch_wall_sign":0,"acacia_wall_sign":0,"cherry_wall_sign":0,"jungle_wall_sign":0,"dark_oak_wall_sign":0,"pale_oak_wall_sign":0,"mangrove_wall_sign":0,"bamboo_wall_sign":0,"oak_hanging_sign":0,"spruce_hanging_sign":0,"birch_hanging_sign":0,"acacia_hanging_sign":0,"cherry_hanging_sign":0,"jungle_hanging_sign":0,"dark_oak_hanging_sign":0,"pale_oak_hanging_sign":0,"crimson_hanging_sign":0,"warped_hanging_sign":0,"mangrove_hanging_sign":0,"bamboo_hanging_sign":0,"oak_wall_hanging_sign":[66,66,66,66,67,67,67,67],"spruce_wall_hanging_sign":[66,66,66,66,67,67,67,67],"birch_wall_hanging_sign":[66,66,66,66,67,67,67,67],"acacia_wall_hanging_sign":[66,66,66,66,67,67,67,67],"cherry_wall_hanging_sign":[66,66,66,66,67,67,67,67],"jungle_wall_hanging_sign":[66,66,66,66,67,67,67,67],"dark_oak_wall_hanging_sign":[66,66,66,66,67,67,67,67],"pale_oak_wall_hanging_sign":[66,66,66,66,67,67,67,67],"mangrove_wall_hanging_sign":[66,66,66,66,67,67,67,67],"crimson_wall_hanging_sign":[66,66,66,66,67,67,67,67],"warped_wall_hanging_sign":[66,66,66,66,67,67,67,67],"bamboo_wall_hanging_sign":[66,66,66,66,67,67,67,67],"lever":0,"stone_pressure_plate":0,"iron_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"oak_pressure_plate":0,"spruce_pressure_plate":0,"birch_pressure_plate":0,"jungle_pressure_plate":0,"acacia_pressure_plate":0,"cherry_pressure_plate":0,"dark_oak_pressure_plate":0,"pale_oak_pressure_plate":0,"mangrove_pressure_plate":0,"bamboo_pressure_plate":0,"redstone_ore":1,"deepslate_redstone_ore":1,"redstone_torch":0,"redstone_wall_torch":0,"stone_button":0,"snow":[0,68,69,70,71,72,73,74],"ice":1,"snow_block":1,"cactus":75,"cactus_flower":0,"clay":1,"sugar_cane":0,"jukebox":1,"oak_fence":[76,77,76,77,78,79,78,79,80,81,80,81,82,83,82,83,84,85,84,85,86,87,86,87,88,89,88,89,90,91,90,91],"netherrack":1,"soul_sand":92,"soul_soil":1,"basalt":1,"polished_basalt":1,"soul_torch":0,"soul_wall_torch":0,"copper_torch":0,"copper_wall_torch":0,"glowstone":1,"nether_portal":0,"carved_pumpkin":1,"jack_o_lantern":1,"cake":[93,94,95,96,97,98,99],"repeater":100,"white_stained_glass":1,"orange_stained_glass":1,"magenta_stained_glass":1,"light_blue_stained_glass":1,"yellow_stained_glass":1,"lime_stained_glass":1,"pink_stained_glass":1,"gray_stained_glass":1,"light_gray_stained_glass":1,"cyan_stained_glass":1,"purple_stained_glass":1,"blue_stained_glass":1,"brown_stained_glass":1,"green_stained_glass":1,"red_stained_glass":1,"black_stained_glass":1,"oak_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"spruce_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"birch_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"jungle_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"acacia_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"cherry_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"dark_oak_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"pale_oak_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"mangrove_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"bamboo_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"stone_bricks":1,"mossy_stone_bricks":1,"cracked_stone_bricks":1,"chiseled_stone_bricks":1,"packed_mud":1,"mud_bricks":1,"infested_stone":1,"infested_cobblestone":1,"infested_stone_bricks":1,"infested_mossy_stone_bricks":1,"infested_cracked_stone_bricks":1,"infested_chiseled_stone_bricks":1,"brown_mushroom_block":1,"red_mushroom_block":1,"mushroom_stem":1,"iron_bars":[107,108,107,108,109,110,109,110,111,112,111,112,113,114,113,114,115,116,115,116,117,118,117,118,119,120,119,120,121,122,121,122],"copper_bars":[123,124,123,124,125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138],"exposed_copper_bars":[139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,154,153,154],"weathered_copper_bars":[155,156,155,156,157,158,157,158,159,160,159,160,161,162,161,162,163,164,163,164,165,166,165,166,167,168,167,168,169,170,169,170],"oxidized_copper_bars":[171,172,171,172,173,174,173,174,175,176,175,176,177,178,177,178,179,180,179,180,181,182,181,182,183,184,183,184,185,186,185,186],"waxed_copper_bars":[187,188,187,188,189,190,189,190,191,192,191,192,193,194,193,194,195,196,195,196,197,198,197,198,199,200,199,200,201,202,201,202],"waxed_exposed_copper_bars":[203,204,203,204,205,206,205,206,207,208,207,208,209,210,209,210,211,212,211,212,213,214,213,214,215,216,215,216,217,218,217,218],"waxed_weathered_copper_bars":[219,220,219,220,221,222,221,222,223,224,223,224,225,226,225,226,227,228,227,228,229,230,229,230,231,232,231,232,233,234,233,234],"waxed_oxidized_copper_bars":[235,236,235,236,237,238,237,238,239,240,239,240,241,242,241,242,243,244,243,244,245,246,245,246,247,248,247,248,249,250,249,250],"iron_chain":[251,251,252,252,253,253],"copper_chain":[251,251,252,252,253,253],"exposed_copper_chain":[251,251,252,252,253,253],"weathered_copper_chain":[251,251,252,252,253,253],"oxidized_copper_chain":[251,251,252,252,253,253],"waxed_copper_chain":[251,251,252,252,253,253],"waxed_exposed_copper_chain":[251,251,252,252,253,253],"waxed_weathered_copper_chain":[251,251,252,252,253,253],"waxed_oxidized_copper_chain":[251,251,252,252,253,253],"glass_pane":[254,255,254,255,256,257,256,257,258,259,258,259,260,261,260,261,262,263,262,263,264,265,264,265,266,267,266,267,268,269,268,269],"pumpkin":1,"melon":1,"attached_pumpkin_stem":0,"attached_melon_stem":0,"pumpkin_stem":0,"melon_stem":0,"vine":0,"glow_lichen":0,"resin_clump":0,"oak_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"stone_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mud_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mycelium":1,"lily_pad":272,"resin_block":1,"resin_bricks":1,"resin_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"resin_brick_slab":[273,273,274,274,1,1],"resin_brick_wall":[275,276,277,275,276,277,0,278,279,0,278,279,280,281,282,280,281,282,283,284,285,283,284,285,286,287,288,286,287,288,289,290,291,289,290,291,292,293,294,292,293,294,295,296,297,295,296,297,298,299,300,298,299,300,301,302,303,301,302,303,304,305,306,304,305,306,307,308,309,307,308,309,310,311,312,310,311,312,313,314,315,313,314,315,316,317,318,316,317,318,319,320,321,319,320,321,322,323,324,322,323,324,325,326,327,325,326,327,328,329,330,328,329,330,331,332,333,331,332,333,334,335,336,334,335,336,337,338,339,337,338,339,340,341,342,340,341,342,343,344,345,343,344,345,346,347,348,346,347,348,349,350,351,349,350,351,352,353,354,352,353,354,355,356,357,355,356,357,358,359,360,358,359,360,361,362,363,361,362,363,364,365,366,364,365,366,367,368,369,367,368,369,370,371,372,370,371,372,373,374,375,373,374,375,376,377,378,376,377,378,379,380,381,379,380,381,382,383,384,382,383,384,385,386,387,385,386,387,388,389,390,388,389,390,391,392,393,391,392,393,394,395,396,394,395,396,397,398,399,397,398,399,400,401,402,400,401,402,403,404,405,403,404,405,406,407,408,406,407,408,409,410,411,409,410,411,412,413,414,412,413,414,415,416,417,415,416,417,418,419,420,418,419,420,421,422,423,421,422,423,424,425,426,424,425,426,427,428,429,427,428,429,430,431,432,430,431,432,433,434,435,433,434,435],"chiseled_resin_bricks":1,"nether_bricks":1,"nether_brick_fence":[436,437,436,437,438,439,438,439,440,441,440,441,442,443,442,443,444,445,444,445,446,447,446,447,448,449,448,449,450,451,450,451],"nether_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"nether_wart":0,"enchanting_table":452,"brewing_stand":453,"cauldron":454,"water_cauldron":454,"lava_cauldron":454,"powder_snow_cauldron":454,"end_portal":0,"end_portal_frame":[455,455,455,455,456,456,456,456],"end_stone":1,"dragon_egg":457,"redstone_lamp":1,"cocoa":[458,459,460,461,462,463,464,465,466,467,468,469],"sandstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"emerald_ore":1,"deepslate_emerald_ore":1,"ender_chest":470,"tripwire_hook":0,"tripwire":0,"emerald_block":1,"spruce_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"birch_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"jungle_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"command_block":1,"beacon":1,"cobblestone_wall":[471,472,473,471,472,473,0,474,475,0,474,475,476,477,478,476,477,478,479,480,481,479,480,481,482,483,484,482,483,484,485,486,487,485,486,487,488,489,490,488,489,490,491,492,493,491,492,493,494,495,496,494,495,496,497,498,499,497,498,499,500,501,502,500,501,502,503,504,505,503,504,505,506,507,508,506,507,508,509,510,511,509,510,511,512,513,514,512,513,514,515,516,517,515,516,517,518,519,520,518,519,520,521,522,523,521,522,523,524,525,526,524,525,526,527,528,529,527,528,529,530,531,532,530,531,532,533,534,535,533,534,535,536,537,538,536,537,538,539,540,541,539,540,541,542,543,544,542,543,544,545,546,547,545,546,547,548,549,550,548,549,550,551,552,553,551,552,553,554,555,556,554,555,556,557,558,559,557,558,559,560,561,562,560,561,562,563,564,565,563,564,565,566,567,568,566,567,568,569,570,571,569,570,571,572,573,574,572,573,574,575,576,577,575,576,577,578,579,580,578,579,580,581,582,583,581,582,583,584,585,586,584,585,586,587,588,589,587,588,589,590,591,592,590,591,592,593,594,595,593,594,595,596,597,598,596,597,598,599,600,601,599,600,601,602,603,604,602,603,604,605,606,607,605,606,607,608,609,610,608,609,610,611,612,613,611,612,613,614,615,616,614,615,616,617,618,619,617,618,619,620,621,622,620,621,622,623,624,625,623,624,625,626,627,628,626,627,628,629,630,631,629,630,631],"mossy_cobblestone_wall":[632,633,634,632,633,634,0,635,636,0,635,636,637,638,639,637,638,639,640,641,642,640,641,642,643,644,645,643,644,645,646,647,648,646,647,648,649,650,651,649,650,651,652,653,654,652,653,654,655,656,657,655,656,657,658,659,660,658,659,660,661,662,663,661,662,663,664,665,666,664,665,666,667,668,669,667,668,669,670,671,672,670,671,672,673,674,675,673,674,675,676,677,678,676,677,678,679,680,681,679,680,681,682,683,684,682,683,684,685,686,687,685,686,687,688,689,690,688,689,690,691,692,693,691,692,693,694,695,696,694,695,696,697,698,699,697,698,699,700,701,702,700,701,702,703,704,705,703,704,705,706,707,708,706,707,708,709,710,711,709,710,711,712,713,714,712,713,714,715,716,717,715,716,717,718,719,720,718,719,720,721,722,723,721,722,723,724,725,726,724,725,726,727,728,729,727,728,729,730,731,732,730,731,732,733,734,735,733,734,735,736,737,738,736,737,738,739,740,741,739,740,741,742,743,744,742,743,744,745,746,747,745,746,747,748,749,750,748,749,750,751,752,753,751,752,753,754,755,756,754,755,756,757,758,759,757,758,759,760,761,762,760,761,762,763,764,765,763,764,765,766,767,768,766,767,768,769,770,771,769,770,771,772,773,774,772,773,774,775,776,777,775,776,777,778,779,780,778,779,780,781,782,783,781,782,783,784,785,786,784,785,786,787,788,789,787,788,789,790,791,792,790,791,792],"flower_pot":793,"potted_torchflower":793,"potted_oak_sapling":793,"potted_spruce_sapling":793,"potted_birch_sapling":793,"potted_jungle_sapling":793,"potted_acacia_sapling":793,"potted_cherry_sapling":793,"potted_dark_oak_sapling":793,"potted_pale_oak_sapling":793,"potted_mangrove_propagule":793,"potted_fern":793,"potted_dandelion":793,"potted_poppy":793,"potted_blue_orchid":793,"potted_allium":793,"potted_azure_bluet":793,"potted_red_tulip":793,"potted_orange_tulip":793,"potted_white_tulip":793,"potted_pink_tulip":793,"potted_oxeye_daisy":793,"potted_cornflower":793,"potted_lily_of_the_valley":793,"potted_wither_rose":793,"potted_red_mushroom":793,"potted_brown_mushroom":793,"potted_dead_bush":793,"potted_cactus":793,"carrots":0,"potatoes":0,"oak_button":0,"spruce_button":0,"birch_button":0,"jungle_button":0,"acacia_button":0,"cherry_button":0,"dark_oak_button":0,"pale_oak_button":0,"mangrove_button":0,"bamboo_button":0,"skeleton_skull":794,"skeleton_wall_skull":[795,795,796,796,797,797,798,798],"wither_skeleton_skull":794,"wither_skeleton_wall_skull":[795,795,796,796,797,797,798,798],"zombie_head":794,"zombie_wall_head":[795,795,796,796,797,797,798,798],"player_head":794,"player_wall_head":[795,795,796,796,797,797,798,798],"creeper_head":794,"creeper_wall_head":[795,795,796,796,797,797,798,798],"dragon_head":794,"dragon_wall_head":[795,795,796,796,797,797,798,798],"piglin_head":799,"piglin_wall_head":[800,800,801,801,802,802,803,803],"anvil":[804,804,805,805],"chipped_anvil":[804,804,805,805],"damaged_anvil":[804,804,805,805],"trapped_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"light_weighted_pressure_plate":0,"heavy_weighted_pressure_plate":0,"comparator":100,"daylight_detector":806,"redstone_block":1,"nether_quartz_ore":1,"hopper":[807,808,809,810,811,807,808,809,810,811],"quartz_block":1,"chiseled_quartz_block":1,"quartz_pillar":1,"quartz_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"activator_rail":0,"dropper":1,"white_terracotta":1,"orange_terracotta":1,"magenta_terracotta":1,"light_blue_terracotta":1,"yellow_terracotta":1,"lime_terracotta":1,"pink_terracotta":1,"gray_terracotta":1,"light_gray_terracotta":1,"cyan_terracotta":1,"purple_terracotta":1,"blue_terracotta":1,"brown_terracotta":1,"green_terracotta":1,"red_terracotta":1,"black_terracotta":1,"white_stained_glass_pane":[812,813,812,813,814,815,814,815,816,817,816,817,818,819,818,819,820,821,820,821,822,823,822,823,824,825,824,825,826,827,826,827],"orange_stained_glass_pane":[828,829,828,829,830,831,830,831,832,833,832,833,834,835,834,835,836,837,836,837,838,839,838,839,840,841,840,841,842,843,842,843],"magenta_stained_glass_pane":[844,845,844,845,846,847,846,847,848,849,848,849,850,851,850,851,852,853,852,853,854,855,854,855,856,857,856,857,858,859,858,859],"light_blue_stained_glass_pane":[860,861,860,861,862,863,862,863,864,865,864,865,866,867,866,867,868,869,868,869,870,871,870,871,872,873,872,873,874,875,874,875],"yellow_stained_glass_pane":[876,877,876,877,878,879,878,879,880,881,880,881,882,883,882,883,884,885,884,885,886,887,886,887,888,889,888,889,890,891,890,891],"lime_stained_glass_pane":[892,893,892,893,894,895,894,895,896,897,896,897,898,899,898,899,900,901,900,901,902,903,902,903,904,905,904,905,906,907,906,907],"pink_stained_glass_pane":[908,909,908,909,910,911,910,911,912,913,912,913,914,915,914,915,916,917,916,917,918,919,918,919,920,921,920,921,922,923,922,923],"gray_stained_glass_pane":[924,925,924,925,926,927,926,927,928,929,928,929,930,931,930,931,932,933,932,933,934,935,934,935,936,937,936,937,938,939,938,939],"light_gray_stained_glass_pane":[940,941,940,941,942,943,942,943,944,945,944,945,946,947,946,947,948,949,948,949,950,951,950,951,952,953,952,953,954,955,954,955],"cyan_stained_glass_pane":[956,957,956,957,958,959,958,959,960,961,960,961,962,963,962,963,964,965,964,965,966,967,966,967,968,969,968,969,970,971,970,971],"purple_stained_glass_pane":[972,973,972,973,974,975,974,975,976,977,976,977,978,979,978,979,980,981,980,981,982,983,982,983,984,985,984,985,986,987,986,987],"blue_stained_glass_pane":[988,989,988,989,990,991,990,991,992,993,992,993,994,995,994,995,996,997,996,997,998,999,998,999,1000,1001,1000,1001,1002,1003,1002,1003],"brown_stained_glass_pane":[1004,1005,1004,1005,1006,1007,1006,1007,1008,1009,1008,1009,1010,1011,1010,1011,1012,1013,1012,1013,1014,1015,1014,1015,1016,1017,1016,1017,1018,1019,1018,1019],"green_stained_glass_pane":[1020,1021,1020,1021,1022,1023,1022,1023,1024,1025,1024,1025,1026,1027,1026,1027,1028,1029,1028,1029,1030,1031,1030,1031,1032,1033,1032,1033,1034,1035,1034,1035],"red_stained_glass_pane":[1036,1037,1036,1037,1038,1039,1038,1039,1040,1041,1040,1041,1042,1043,1042,1043,1044,1045,1044,1045,1046,1047,1046,1047,1048,1049,1048,1049,1050,1051,1050,1051],"black_stained_glass_pane":[1052,1053,1052,1053,1054,1055,1054,1055,1056,1057,1056,1057,1058,1059,1058,1059,1060,1061,1060,1061,1062,1063,1062,1063,1064,1065,1064,1065,1066,1067,1066,1067],"acacia_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"cherry_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"dark_oak_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"pale_oak_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mangrove_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"bamboo_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"bamboo_mosaic_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"slime_block":1,"barrier":1,"light":0,"iron_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"prismarine":1,"prismarine_bricks":1,"dark_prismarine":1,"prismarine_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"prismarine_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"dark_prismarine_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"prismarine_slab":[273,273,274,274,1,1],"prismarine_brick_slab":[273,273,274,274,1,1],"dark_prismarine_slab":[273,273,274,274,1,1],"sea_lantern":1,"hay_block":1,"white_carpet":1068,"orange_carpet":1068,"magenta_carpet":1068,"light_blue_carpet":1068,"yellow_carpet":1068,"lime_carpet":1068,"pink_carpet":1068,"gray_carpet":1068,"light_gray_carpet":1068,"cyan_carpet":1068,"purple_carpet":1068,"blue_carpet":1068,"brown_carpet":1068,"green_carpet":1068,"red_carpet":1068,"black_carpet":1068,"terracotta":1,"coal_block":1,"packed_ice":1,"sunflower":0,"lilac":0,"rose_bush":0,"peony":0,"tall_grass":0,"large_fern":0,"white_banner":0,"orange_banner":0,"magenta_banner":0,"light_blue_banner":0,"yellow_banner":0,"lime_banner":0,"pink_banner":0,"gray_banner":0,"light_gray_banner":0,"cyan_banner":0,"purple_banner":0,"blue_banner":0,"brown_banner":0,"green_banner":0,"red_banner":0,"black_banner":0,"white_wall_banner":0,"orange_wall_banner":0,"magenta_wall_banner":0,"light_blue_wall_banner":0,"yellow_wall_banner":0,"lime_wall_banner":0,"pink_wall_banner":0,"gray_wall_banner":0,"light_gray_wall_banner":0,"cyan_wall_banner":0,"purple_wall_banner":0,"blue_wall_banner":0,"brown_wall_banner":0,"green_wall_banner":0,"red_wall_banner":0,"black_wall_banner":0,"red_sandstone":1,"chiseled_red_sandstone":1,"cut_red_sandstone":1,"red_sandstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"oak_slab":[273,273,274,274,1,1],"spruce_slab":[273,273,274,274,1,1],"birch_slab":[273,273,274,274,1,1],"jungle_slab":[273,273,274,274,1,1],"acacia_slab":[273,273,274,274,1,1],"cherry_slab":[273,273,274,274,1,1],"dark_oak_slab":[273,273,274,274,1,1],"pale_oak_slab":[273,273,274,274,1,1],"mangrove_slab":[273,273,274,274,1,1],"bamboo_slab":[273,273,274,274,1,1],"bamboo_mosaic_slab":[273,273,274,274,1,1],"stone_slab":[273,273,274,274,1,1],"smooth_stone_slab":[273,273,274,274,1,1],"sandstone_slab":[273,273,274,274,1,1],"cut_sandstone_slab":[273,273,274,274,1,1],"petrified_oak_slab":[273,273,274,274,1,1],"cobblestone_slab":[273,273,274,274,1,1],"brick_slab":[273,273,274,274,1,1],"stone_brick_slab":[273,273,274,274,1,1],"mud_brick_slab":[273,273,274,274,1,1],"nether_brick_slab":[273,273,274,274,1,1],"quartz_slab":[273,273,274,274,1,1],"red_sandstone_slab":[273,273,274,274,1,1],"cut_red_sandstone_slab":[273,273,274,274,1,1],"purpur_slab":[273,273,274,274,1,1],"smooth_stone":1,"smooth_sandstone":1,"smooth_quartz":1,"smooth_red_sandstone":1,"spruce_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"birch_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"jungle_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"acacia_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"cherry_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"dark_oak_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"pale_oak_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"mangrove_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"bamboo_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"spruce_fence":[1069,1070,1069,1070,1071,1072,1071,1072,1073,1074,1073,1074,1075,1076,1075,1076,1077,1078,1077,1078,1079,1080,1079,1080,1081,1082,1081,1082,1083,1084,1083,1084],"birch_fence":[1085,1086,1085,1086,1087,1088,1087,1088,1089,1090,1089,1090,1091,1092,1091,1092,1093,1094,1093,1094,1095,1096,1095,1096,1097,1098,1097,1098,1099,1100,1099,1100],"jungle_fence":[1101,1102,1101,1102,1103,1104,1103,1104,1105,1106,1105,1106,1107,1108,1107,1108,1109,1110,1109,1110,1111,1112,1111,1112,1113,1114,1113,1114,1115,1116,1115,1116],"acacia_fence":[1117,1118,1117,1118,1119,1120,1119,1120,1121,1122,1121,1122,1123,1124,1123,1124,1125,1126,1125,1126,1127,1128,1127,1128,1129,1130,1129,1130,1131,1132,1131,1132],"cherry_fence":[1133,1134,1133,1134,1135,1136,1135,1136,1137,1138,1137,1138,1139,1140,1139,1140,1141,1142,1141,1142,1143,1144,1143,1144,1145,1146,1145,1146,1147,1148,1147,1148],"dark_oak_fence":[1149,1150,1149,1150,1151,1152,1151,1152,1153,1154,1153,1154,1155,1156,1155,1156,1157,1158,1157,1158,1159,1160,1159,1160,1161,1162,1161,1162,1163,1164,1163,1164],"pale_oak_fence":[1165,1166,1165,1166,1167,1168,1167,1168,1169,1170,1169,1170,1171,1172,1171,1172,1173,1174,1173,1174,1175,1176,1175,1176,1177,1178,1177,1178,1179,1180,1179,1180],"mangrove_fence":[1181,1182,1181,1182,1183,1184,1183,1184,1185,1186,1185,1186,1187,1188,1187,1188,1189,1190,1189,1190,1191,1192,1191,1192,1193,1194,1193,1194,1195,1196,1195,1196],"bamboo_fence":[1197,1198,1197,1198,1199,1200,1199,1200,1201,1202,1201,1202,1203,1204,1203,1204,1205,1206,1205,1206,1207,1208,1207,1208,1209,1210,1209,1210,1211,1212,1211,1212],"spruce_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"birch_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"jungle_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"acacia_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"cherry_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"dark_oak_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"pale_oak_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"mangrove_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"bamboo_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"end_rod":[1213,1214,1213,1214,1215,1215],"chorus_plant":[1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279],"chorus_flower":1,"purpur_block":1,"purpur_pillar":1,"purpur_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"end_stone_bricks":1,"torchflower_crop":0,"pitcher_crop":[0,1280,0,1281,0,1281,0,1281,0,1281],"pitcher_plant":0,"beetroots":0,"dirt_path":1282,"end_gateway":0,"repeating_command_block":1,"chain_command_block":1,"frosted_ice":1,"magma_block":1,"nether_wart_block":1,"red_nether_bricks":1,"bone_block":1,"structure_void":0,"observer":1,"shulker_box":1,"white_shulker_box":1,"orange_shulker_box":1,"magenta_shulker_box":1,"light_blue_shulker_box":1,"yellow_shulker_box":1,"lime_shulker_box":1,"pink_shulker_box":1,"gray_shulker_box":1,"light_gray_shulker_box":1,"cyan_shulker_box":1,"purple_shulker_box":1,"blue_shulker_box":1,"brown_shulker_box":1,"green_shulker_box":1,"red_shulker_box":1,"black_shulker_box":1,"white_glazed_terracotta":1,"orange_glazed_terracotta":1,"magenta_glazed_terracotta":1,"light_blue_glazed_terracotta":1,"yellow_glazed_terracotta":1,"lime_glazed_terracotta":1,"pink_glazed_terracotta":1,"gray_glazed_terracotta":1,"light_gray_glazed_terracotta":1,"cyan_glazed_terracotta":1,"purple_glazed_terracotta":1,"blue_glazed_terracotta":1,"brown_glazed_terracotta":1,"green_glazed_terracotta":1,"red_glazed_terracotta":1,"black_glazed_terracotta":1,"white_concrete":1,"orange_concrete":1,"magenta_concrete":1,"light_blue_concrete":1,"yellow_concrete":1,"lime_concrete":1,"pink_concrete":1,"gray_concrete":1,"light_gray_concrete":1,"cyan_concrete":1,"purple_concrete":1,"blue_concrete":1,"brown_concrete":1,"green_concrete":1,"red_concrete":1,"black_concrete":1,"white_concrete_powder":1,"orange_concrete_powder":1,"magenta_concrete_powder":1,"light_blue_concrete_powder":1,"yellow_concrete_powder":1,"lime_concrete_powder":1,"pink_concrete_powder":1,"gray_concrete_powder":1,"light_gray_concrete_powder":1,"cyan_concrete_powder":1,"purple_concrete_powder":1,"blue_concrete_powder":1,"brown_concrete_powder":1,"green_concrete_powder":1,"red_concrete_powder":1,"black_concrete_powder":1,"kelp":0,"kelp_plant":0,"dried_kelp_block":1,"turtle_egg":[1283,1283,1283,1284,1284,1284,1284,1284,1284,1284,1284,1284],"sniffer_egg":1285,"dried_ghast":1286,"dead_tube_coral_block":1,"dead_brain_coral_block":1,"dead_bubble_coral_block":1,"dead_fire_coral_block":1,"dead_horn_coral_block":1,"tube_coral_block":1,"brain_coral_block":1,"bubble_coral_block":1,"fire_coral_block":1,"horn_coral_block":1,"dead_tube_coral":0,"dead_brain_coral":0,"dead_bubble_coral":0,"dead_fire_coral":0,"dead_horn_coral":0,"tube_coral":0,"brain_coral":0,"bubble_coral":0,"fire_coral":0,"horn_coral":0,"dead_tube_coral_fan":0,"dead_brain_coral_fan":0,"dead_bubble_coral_fan":0,"dead_fire_coral_fan":0,"dead_horn_coral_fan":0,"tube_coral_fan":0,"brain_coral_fan":0,"bubble_coral_fan":0,"fire_coral_fan":0,"horn_coral_fan":0,"dead_tube_coral_wall_fan":0,"dead_brain_coral_wall_fan":0,"dead_bubble_coral_wall_fan":0,"dead_fire_coral_wall_fan":0,"dead_horn_coral_wall_fan":0,"tube_coral_wall_fan":0,"brain_coral_wall_fan":0,"bubble_coral_wall_fan":0,"fire_coral_wall_fan":0,"horn_coral_wall_fan":0,"sea_pickle":[1287,1287,1288,1288,1289,1289,1290,1290],"blue_ice":1,"conduit":1291,"bamboo_sapling":0,"bamboo":[1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303],"potted_bamboo":793,"void_air":0,"cave_air":0,"bubble_column":0,"polished_granite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"smooth_red_sandstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mossy_stone_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_diorite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mossy_cobblestone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"end_stone_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"stone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"smooth_sandstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"smooth_quartz_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"granite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"andesite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"red_nether_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_andesite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"diorite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_granite_slab":[273,273,274,274,1,1],"smooth_red_sandstone_slab":[273,273,274,274,1,1],"mossy_stone_brick_slab":[273,273,274,274,1,1],"polished_diorite_slab":[273,273,274,274,1,1],"mossy_cobblestone_slab":[273,273,274,274,1,1],"end_stone_brick_slab":[273,273,274,274,1,1],"smooth_sandstone_slab":[273,273,274,274,1,1],"smooth_quartz_slab":[273,273,274,274,1,1],"granite_slab":[273,273,274,274,1,1],"andesite_slab":[273,273,274,274,1,1],"red_nether_brick_slab":[273,273,274,274,1,1],"polished_andesite_slab":[273,273,274,274,1,1],"diorite_slab":[273,273,274,274,1,1],"brick_wall":[1304,1305,1306,1304,1305,1306,0,1307,1308,0,1307,1308,1309,1310,1311,1309,1310,1311,1312,1313,1314,1312,1313,1314,1315,1316,1317,1315,1316,1317,1318,1319,1320,1318,1319,1320,1321,1322,1323,1321,1322,1323,1324,1325,1326,1324,1325,1326,1327,1328,1329,1327,1328,1329,1330,1331,1332,1330,1331,1332,1333,1334,1335,1333,1334,1335,1336,1337,1338,1336,1337,1338,1339,1340,1341,1339,1340,1341,1342,1343,1344,1342,1343,1344,1345,1346,1347,1345,1346,1347,1348,1349,1350,1348,1349,1350,1351,1352,1353,1351,1352,1353,1354,1355,1356,1354,1355,1356,1357,1358,1359,1357,1358,1359,1360,1361,1362,1360,1361,1362,1363,1364,1365,1363,1364,1365,1366,1367,1368,1366,1367,1368,1369,1370,1371,1369,1370,1371,1372,1373,1374,1372,1373,1374,1375,1376,1377,1375,1376,1377,1378,1379,1380,1378,1379,1380,1381,1382,1383,1381,1382,1383,1384,1385,1386,1384,1385,1386,1387,1388,1389,1387,1388,1389,1390,1391,1392,1390,1391,1392,1393,1394,1395,1393,1394,1395,1396,1397,1398,1396,1397,1398,1399,1400,1401,1399,1400,1401,1402,1403,1404,1402,1403,1404,1405,1406,1407,1405,1406,1407,1408,1409,1410,1408,1409,1410,1411,1412,1413,1411,1412,1413,1414,1415,1416,1414,1415,1416,1417,1418,1419,1417,1418,1419,1420,1421,1422,1420,1421,1422,1423,1424,1425,1423,1424,1425,1426,1427,1428,1426,1427,1428,1429,1430,1431,1429,1430,1431,1432,1433,1434,1432,1433,1434,1435,1436,1437,1435,1436,1437,1438,1439,1440,1438,1439,1440,1441,1442,1443,1441,1442,1443,1444,1445,1446,1444,1445,1446,1447,1448,1449,1447,1448,1449,1450,1451,1452,1450,1451,1452,1453,1454,1455,1453,1454,1455,1456,1457,1458,1456,1457,1458,1459,1460,1461,1459,1460,1461,1462,1463,1464,1462,1463,1464],"prismarine_wall":[1465,1466,1467,1465,1466,1467,0,1468,1469,0,1468,1469,1470,1471,1472,1470,1471,1472,1473,1474,1475,1473,1474,1475,1476,1477,1478,1476,1477,1478,1479,1480,1481,1479,1480,1481,1482,1483,1484,1482,1483,1484,1485,1486,1487,1485,1486,1487,1488,1489,1490,1488,1489,1490,1491,1492,1493,1491,1492,1493,1494,1495,1496,1494,1495,1496,1497,1498,1499,1497,1498,1499,1500,1501,1502,1500,1501,1502,1503,1504,1505,1503,1504,1505,1506,1507,1508,1506,1507,1508,1509,1510,1511,1509,1510,1511,1512,1513,1514,1512,1513,1514,1515,1516,1517,1515,1516,1517,1518,1519,1520,1518,1519,1520,1521,1522,1523,1521,1522,1523,1524,1525,1526,1524,1525,1526,1527,1528,1529,1527,1528,1529,1530,1531,1532,1530,1531,1532,1533,1534,1535,1533,1534,1535,1536,1537,1538,1536,1537,1538,1539,1540,1541,1539,1540,1541,1542,1543,1544,1542,1543,1544,1545,1546,1547,1545,1546,1547,1548,1549,1550,1548,1549,1550,1551,1552,1553,1551,1552,1553,1554,1555,1556,1554,1555,1556,1557,1558,1559,1557,1558,1559,1560,1561,1562,1560,1561,1562,1563,1564,1565,1563,1564,1565,1566,1567,1568,1566,1567,1568,1569,1570,1571,1569,1570,1571,1572,1573,1574,1572,1573,1574,1575,1576,1577,1575,1576,1577,1578,1579,1580,1578,1579,1580,1581,1582,1583,1581,1582,1583,1584,1585,1586,1584,1585,1586,1587,1588,1589,1587,1588,1589,1590,1591,1592,1590,1591,1592,1593,1594,1595,1593,1594,1595,1596,1597,1598,1596,1597,1598,1599,1600,1601,1599,1600,1601,1602,1603,1604,1602,1603,1604,1605,1606,1607,1605,1606,1607,1608,1609,1610,1608,1609,1610,1611,1612,1613,1611,1612,1613,1614,1615,1616,1614,1615,1616,1617,1618,1619,1617,1618,1619,1620,1621,1622,1620,1621,1622,1623,1624,1625,1623,1624,1625],"red_sandstone_wall":[1626,1627,1628,1626,1627,1628,0,1629,1630,0,1629,1630,1631,1632,1633,1631,1632,1633,1634,1635,1636,1634,1635,1636,1637,1638,1639,1637,1638,1639,1640,1641,1642,1640,1641,1642,1643,1644,1645,1643,1644,1645,1646,1647,1648,1646,1647,1648,1649,1650,1651,1649,1650,1651,1652,1653,1654,1652,1653,1654,1655,1656,1657,1655,1656,1657,1658,1659,1660,1658,1659,1660,1661,1662,1663,1661,1662,1663,1664,1665,1666,1664,1665,1666,1667,1668,1669,1667,1668,1669,1670,1671,1672,1670,1671,1672,1673,1674,1675,1673,1674,1675,1676,1677,1678,1676,1677,1678,1679,1680,1681,1679,1680,1681,1682,1683,1684,1682,1683,1684,1685,1686,1687,1685,1686,1687,1688,1689,1690,1688,1689,1690,1691,1692,1693,1691,1692,1693,1694,1695,1696,1694,1695,1696,1697,1698,1699,1697,1698,1699,1700,1701,1702,1700,1701,1702,1703,1704,1705,1703,1704,1705,1706,1707,1708,1706,1707,1708,1709,1710,1711,1709,1710,1711,1712,1713,1714,1712,1713,1714,1715,1716,1717,1715,1716,1717,1718,1719,1720,1718,1719,1720,1721,1722,1723,1721,1722,1723,1724,1725,1726,1724,1725,1726,1727,1728,1729,1727,1728,1729,1730,1731,1732,1730,1731,1732,1733,1734,1735,1733,1734,1735,1736,1737,1738,1736,1737,1738,1739,1740,1741,1739,1740,1741,1742,1743,1744,1742,1743,1744,1745,1746,1747,1745,1746,1747,1748,1749,1750,1748,1749,1750,1751,1752,1753,1751,1752,1753,1754,1755,1756,1754,1755,1756,1757,1758,1759,1757,1758,1759,1760,1761,1762,1760,1761,1762,1763,1764,1765,1763,1764,1765,1766,1767,1768,1766,1767,1768,1769,1770,1771,1769,1770,1771,1772,1773,1774,1772,1773,1774,1775,1776,1777,1775,1776,1777,1778,1779,1780,1778,1779,1780,1781,1782,1783,1781,1782,1783,1784,1785,1786,1784,1785,1786],"mossy_stone_brick_wall":[1787,1788,1789,1787,1788,1789,0,1790,1791,0,1790,1791,1792,1793,1794,1792,1793,1794,1795,1796,1797,1795,1796,1797,1798,1799,1800,1798,1799,1800,1801,1802,1803,1801,1802,1803,1804,1805,1806,1804,1805,1806,1807,1808,1809,1807,1808,1809,1810,1811,1812,1810,1811,1812,1813,1814,1815,1813,1814,1815,1816,1817,1818,1816,1817,1818,1819,1820,1821,1819,1820,1821,1822,1823,1824,1822,1823,1824,1825,1826,1827,1825,1826,1827,1828,1829,1830,1828,1829,1830,1831,1832,1833,1831,1832,1833,1834,1835,1836,1834,1835,1836,1837,1838,1839,1837,1838,1839,1840,1841,1842,1840,1841,1842,1843,1844,1845,1843,1844,1845,1846,1847,1848,1846,1847,1848,1849,1850,1851,1849,1850,1851,1852,1853,1854,1852,1853,1854,1855,1856,1857,1855,1856,1857,1858,1859,1860,1858,1859,1860,1861,1862,1863,1861,1862,1863,1864,1865,1866,1864,1865,1866,1867,1868,1869,1867,1868,1869,1870,1871,1872,1870,1871,1872,1873,1874,1875,1873,1874,1875,1876,1877,1878,1876,1877,1878,1879,1880,1881,1879,1880,1881,1882,1883,1884,1882,1883,1884,1885,1886,1887,1885,1886,1887,1888,1889,1890,1888,1889,1890,1891,1892,1893,1891,1892,1893,1894,1895,1896,1894,1895,1896,1897,1898,1899,1897,1898,1899,1900,1901,1902,1900,1901,1902,1903,1904,1905,1903,1904,1905,1906,1907,1908,1906,1907,1908,1909,1910,1911,1909,1910,1911,1912,1913,1914,1912,1913,1914,1915,1916,1917,1915,1916,1917,1918,1919,1920,1918,1919,1920,1921,1922,1923,1921,1922,1923,1924,1925,1926,1924,1925,1926,1927,1928,1929,1927,1928,1929,1930,1931,1932,1930,1931,1932,1933,1934,1935,1933,1934,1935,1936,1937,1938,1936,1937,1938,1939,1940,1941,1939,1940,1941,1942,1943,1944,1942,1943,1944,1945,1946,1947,1945,1946,1947],"granite_wall":[1948,1949,1950,1948,1949,1950,0,1951,1952,0,1951,1952,1953,1954,1955,1953,1954,1955,1956,1957,1958,1956,1957,1958,1959,1960,1961,1959,1960,1961,1962,1963,1964,1962,1963,1964,1965,1966,1967,1965,1966,1967,1968,1969,1970,1968,1969,1970,1971,1972,1973,1971,1972,1973,1974,1975,1976,1974,1975,1976,1977,1978,1979,1977,1978,1979,1980,1981,1982,1980,1981,1982,1983,1984,1985,1983,1984,1985,1986,1987,1988,1986,1987,1988,1989,1990,1991,1989,1990,1991,1992,1993,1994,1992,1993,1994,1995,1996,1997,1995,1996,1997,1998,1999,2000,1998,1999,2000,2001,2002,2003,2001,2002,2003,2004,2005,2006,2004,2005,2006,2007,2008,2009,2007,2008,2009,2010,2011,2012,2010,2011,2012,2013,2014,2015,2013,2014,2015,2016,2017,2018,2016,2017,2018,2019,2020,2021,2019,2020,2021,2022,2023,2024,2022,2023,2024,2025,2026,2027,2025,2026,2027,2028,2029,2030,2028,2029,2030,2031,2032,2033,2031,2032,2033,2034,2035,2036,2034,2035,2036,2037,2038,2039,2037,2038,2039,2040,2041,2042,2040,2041,2042,2043,2044,2045,2043,2044,2045,2046,2047,2048,2046,2047,2048,2049,2050,2051,2049,2050,2051,2052,2053,2054,2052,2053,2054,2055,2056,2057,2055,2056,2057,2058,2059,2060,2058,2059,2060,2061,2062,2063,2061,2062,2063,2064,2065,2066,2064,2065,2066,2067,2068,2069,2067,2068,2069,2070,2071,2072,2070,2071,2072,2073,2074,2075,2073,2074,2075,2076,2077,2078,2076,2077,2078,2079,2080,2081,2079,2080,2081,2082,2083,2084,2082,2083,2084,2085,2086,2087,2085,2086,2087,2088,2089,2090,2088,2089,2090,2091,2092,2093,2091,2092,2093,2094,2095,2096,2094,2095,2096,2097,2098,2099,2097,2098,2099,2100,2101,2102,2100,2101,2102,2103,2104,2105,2103,2104,2105,2106,2107,2108,2106,2107,2108],"stone_brick_wall":[2109,2110,2111,2109,2110,2111,0,2112,2113,0,2112,2113,2114,2115,2116,2114,2115,2116,2117,2118,2119,2117,2118,2119,2120,2121,2122,2120,2121,2122,2123,2124,2125,2123,2124,2125,2126,2127,2128,2126,2127,2128,2129,2130,2131,2129,2130,2131,2132,2133,2134,2132,2133,2134,2135,2136,2137,2135,2136,2137,2138,2139,2140,2138,2139,2140,2141,2142,2143,2141,2142,2143,2144,2145,2146,2144,2145,2146,2147,2148,2149,2147,2148,2149,2150,2151,2152,2150,2151,2152,2153,2154,2155,2153,2154,2155,2156,2157,2158,2156,2157,2158,2159,2160,2161,2159,2160,2161,2162,2163,2164,2162,2163,2164,2165,2166,2167,2165,2166,2167,2168,2169,2170,2168,2169,2170,2171,2172,2173,2171,2172,2173,2174,2175,2176,2174,2175,2176,2177,2178,2179,2177,2178,2179,2180,2181,2182,2180,2181,2182,2183,2184,2185,2183,2184,2185,2186,2187,2188,2186,2187,2188,2189,2190,2191,2189,2190,2191,2192,2193,2194,2192,2193,2194,2195,2196,2197,2195,2196,2197,2198,2199,2200,2198,2199,2200,2201,2202,2203,2201,2202,2203,2204,2205,2206,2204,2205,2206,2207,2208,2209,2207,2208,2209,2210,2211,2212,2210,2211,2212,2213,2214,2215,2213,2214,2215,2216,2217,2218,2216,2217,2218,2219,2220,2221,2219,2220,2221,2222,2223,2224,2222,2223,2224,2225,2226,2227,2225,2226,2227,2228,2229,2230,2228,2229,2230,2231,2232,2233,2231,2232,2233,2234,2235,2236,2234,2235,2236,2237,2238,2239,2237,2238,2239,2240,2241,2242,2240,2241,2242,2243,2244,2245,2243,2244,2245,2246,2247,2248,2246,2247,2248,2249,2250,2251,2249,2250,2251,2252,2253,2254,2252,2253,2254,2255,2256,2257,2255,2256,2257,2258,2259,2260,2258,2259,2260,2261,2262,2263,2261,2262,2263,2264,2265,2266,2264,2265,2266,2267,2268,2269,2267,2268,2269],"mud_brick_wall":[2270,2271,2272,2270,2271,2272,0,2273,2274,0,2273,2274,2275,2276,2277,2275,2276,2277,2278,2279,2280,2278,2279,2280,2281,2282,2283,2281,2282,2283,2284,2285,2286,2284,2285,2286,2287,2288,2289,2287,2288,2289,2290,2291,2292,2290,2291,2292,2293,2294,2295,2293,2294,2295,2296,2297,2298,2296,2297,2298,2299,2300,2301,2299,2300,2301,2302,2303,2304,2302,2303,2304,2305,2306,2307,2305,2306,2307,2308,2309,2310,2308,2309,2310,2311,2312,2313,2311,2312,2313,2314,2315,2316,2314,2315,2316,2317,2318,2319,2317,2318,2319,2320,2321,2322,2320,2321,2322,2323,2324,2325,2323,2324,2325,2326,2327,2328,2326,2327,2328,2329,2330,2331,2329,2330,2331,2332,2333,2334,2332,2333,2334,2335,2336,2337,2335,2336,2337,2338,2339,2340,2338,2339,2340,2341,2342,2343,2341,2342,2343,2344,2345,2346,2344,2345,2346,2347,2348,2349,2347,2348,2349,2350,2351,2352,2350,2351,2352,2353,2354,2355,2353,2354,2355,2356,2357,2358,2356,2357,2358,2359,2360,2361,2359,2360,2361,2362,2363,2364,2362,2363,2364,2365,2366,2367,2365,2366,2367,2368,2369,2370,2368,2369,2370,2371,2372,2373,2371,2372,2373,2374,2375,2376,2374,2375,2376,2377,2378,2379,2377,2378,2379,2380,2381,2382,2380,2381,2382,2383,2384,2385,2383,2384,2385,2386,2387,2388,2386,2387,2388,2389,2390,2391,2389,2390,2391,2392,2393,2394,2392,2393,2394,2395,2396,2397,2395,2396,2397,2398,2399,2400,2398,2399,2400,2401,2402,2403,2401,2402,2403,2404,2405,2406,2404,2405,2406,2407,2408,2409,2407,2408,2409,2410,2411,2412,2410,2411,2412,2413,2414,2415,2413,2414,2415,2416,2417,2418,2416,2417,2418,2419,2420,2421,2419,2420,2421,2422,2423,2424,2422,2423,2424,2425,2426,2427,2425,2426,2427,2428,2429,2430,2428,2429,2430],"nether_brick_wall":[2431,2432,2433,2431,2432,2433,0,2434,2435,0,2434,2435,2436,2437,2438,2436,2437,2438,2439,2440,2441,2439,2440,2441,2442,2443,2444,2442,2443,2444,2445,2446,2447,2445,2446,2447,2448,2449,2450,2448,2449,2450,2451,2452,2453,2451,2452,2453,2454,2455,2456,2454,2455,2456,2457,2458,2459,2457,2458,2459,2460,2461,2462,2460,2461,2462,2463,2464,2465,2463,2464,2465,2466,2467,2468,2466,2467,2468,2469,2470,2471,2469,2470,2471,2472,2473,2474,2472,2473,2474,2475,2476,2477,2475,2476,2477,2478,2479,2480,2478,2479,2480,2481,2482,2483,2481,2482,2483,2484,2485,2486,2484,2485,2486,2487,2488,2489,2487,2488,2489,2490,2491,2492,2490,2491,2492,2493,2494,2495,2493,2494,2495,2496,2497,2498,2496,2497,2498,2499,2500,2501,2499,2500,2501,2502,2503,2504,2502,2503,2504,2505,2506,2507,2505,2506,2507,2508,2509,2510,2508,2509,2510,2511,2512,2513,2511,2512,2513,2514,2515,2516,2514,2515,2516,2517,2518,2519,2517,2518,2519,2520,2521,2522,2520,2521,2522,2523,2524,2525,2523,2524,2525,2526,2527,2528,2526,2527,2528,2529,2530,2531,2529,2530,2531,2532,2533,2534,2532,2533,2534,2535,2536,2537,2535,2536,2537,2538,2539,2540,2538,2539,2540,2541,2542,2543,2541,2542,2543,2544,2545,2546,2544,2545,2546,2547,2548,2549,2547,2548,2549,2550,2551,2552,2550,2551,2552,2553,2554,2555,2553,2554,2555,2556,2557,2558,2556,2557,2558,2559,2560,2561,2559,2560,2561,2562,2563,2564,2562,2563,2564,2565,2566,2567,2565,2566,2567,2568,2569,2570,2568,2569,2570,2571,2572,2573,2571,2572,2573,2574,2575,2576,2574,2575,2576,2577,2578,2579,2577,2578,2579,2580,2581,2582,2580,2581,2582,2583,2584,2585,2583,2584,2585,2586,2587,2588,2586,2587,2588,2589,2590,2591,2589,2590,2591],"andesite_wall":[2592,2593,2594,2592,2593,2594,0,2595,2596,0,2595,2596,2597,2598,2599,2597,2598,2599,2600,2601,2602,2600,2601,2602,2603,2604,2605,2603,2604,2605,2606,2607,2608,2606,2607,2608,2609,2610,2611,2609,2610,2611,2612,2613,2614,2612,2613,2614,2615,2616,2617,2615,2616,2617,2618,2619,2620,2618,2619,2620,2621,2622,2623,2621,2622,2623,2624,2625,2626,2624,2625,2626,2627,2628,2629,2627,2628,2629,2630,2631,2632,2630,2631,2632,2633,2634,2635,2633,2634,2635,2636,2637,2638,2636,2637,2638,2639,2640,2641,2639,2640,2641,2642,2643,2644,2642,2643,2644,2645,2646,2647,2645,2646,2647,2648,2649,2650,2648,2649,2650,2651,2652,2653,2651,2652,2653,2654,2655,2656,2654,2655,2656,2657,2658,2659,2657,2658,2659,2660,2661,2662,2660,2661,2662,2663,2664,2665,2663,2664,2665,2666,2667,2668,2666,2667,2668,2669,2670,2671,2669,2670,2671,2672,2673,2674,2672,2673,2674,2675,2676,2677,2675,2676,2677,2678,2679,2680,2678,2679,2680,2681,2682,2683,2681,2682,2683,2684,2685,2686,2684,2685,2686,2687,2688,2689,2687,2688,2689,2690,2691,2692,2690,2691,2692,2693,2694,2695,2693,2694,2695,2696,2697,2698,2696,2697,2698,2699,2700,2701,2699,2700,2701,2702,2703,2704,2702,2703,2704,2705,2706,2707,2705,2706,2707,2708,2709,2710,2708,2709,2710,2711,2712,2713,2711,2712,2713,2714,2715,2716,2714,2715,2716,2717,2718,2719,2717,2718,2719,2720,2721,2722,2720,2721,2722,2723,2724,2725,2723,2724,2725,2726,2727,2728,2726,2727,2728,2729,2730,2731,2729,2730,2731,2732,2733,2734,2732,2733,2734,2735,2736,2737,2735,2736,2737,2738,2739,2740,2738,2739,2740,2741,2742,2743,2741,2742,2743,2744,2745,2746,2744,2745,2746,2747,2748,2749,2747,2748,2749,2750,2751,2752,2750,2751,2752],"red_nether_brick_wall":[2753,2754,2755,2753,2754,2755,0,2756,2757,0,2756,2757,2758,2759,2760,2758,2759,2760,2761,2762,2763,2761,2762,2763,2764,2765,2766,2764,2765,2766,2767,2768,2769,2767,2768,2769,2770,2771,2772,2770,2771,2772,2773,2774,2775,2773,2774,2775,2776,2777,2778,2776,2777,2778,2779,2780,2781,2779,2780,2781,2782,2783,2784,2782,2783,2784,2785,2786,2787,2785,2786,2787,2788,2789,2790,2788,2789,2790,2791,2792,2793,2791,2792,2793,2794,2795,2796,2794,2795,2796,2797,2798,2799,2797,2798,2799,2800,2801,2802,2800,2801,2802,2803,2804,2805,2803,2804,2805,2806,2807,2808,2806,2807,2808,2809,2810,2811,2809,2810,2811,2812,2813,2814,2812,2813,2814,2815,2816,2817,2815,2816,2817,2818,2819,2820,2818,2819,2820,2821,2822,2823,2821,2822,2823,2824,2825,2826,2824,2825,2826,2827,2828,2829,2827,2828,2829,2830,2831,2832,2830,2831,2832,2833,2834,2835,2833,2834,2835,2836,2837,2838,2836,2837,2838,2839,2840,2841,2839,2840,2841,2842,2843,2844,2842,2843,2844,2845,2846,2847,2845,2846,2847,2848,2849,2850,2848,2849,2850,2851,2852,2853,2851,2852,2853,2854,2855,2856,2854,2855,2856,2857,2858,2859,2857,2858,2859,2860,2861,2862,2860,2861,2862,2863,2864,2865,2863,2864,2865,2866,2867,2868,2866,2867,2868,2869,2870,2871,2869,2870,2871,2872,2873,2874,2872,2873,2874,2875,2876,2877,2875,2876,2877,2878,2879,2880,2878,2879,2880,2881,2882,2883,2881,2882,2883,2884,2885,2886,2884,2885,2886,2887,2888,2889,2887,2888,2889,2890,2891,2892,2890,2891,2892,2893,2894,2895,2893,2894,2895,2896,2897,2898,2896,2897,2898,2899,2900,2901,2899,2900,2901,2902,2903,2904,2902,2903,2904,2905,2906,2907,2905,2906,2907,2908,2909,2910,2908,2909,2910,2911,2912,2913,2911,2912,2913],"sandstone_wall":[2914,2915,2916,2914,2915,2916,0,2917,2918,0,2917,2918,2919,2920,2921,2919,2920,2921,2922,2923,2924,2922,2923,2924,2925,2926,2927,2925,2926,2927,2928,2929,2930,2928,2929,2930,2931,2932,2933,2931,2932,2933,2934,2935,2936,2934,2935,2936,2937,2938,2939,2937,2938,2939,2940,2941,2942,2940,2941,2942,2943,2944,2945,2943,2944,2945,2946,2947,2948,2946,2947,2948,2949,2950,2951,2949,2950,2951,2952,2953,2954,2952,2953,2954,2955,2956,2957,2955,2956,2957,2958,2959,2960,2958,2959,2960,2961,2962,2963,2961,2962,2963,2964,2965,2966,2964,2965,2966,2967,2968,2969,2967,2968,2969,2970,2971,2972,2970,2971,2972,2973,2974,2975,2973,2974,2975,2976,2977,2978,2976,2977,2978,2979,2980,2981,2979,2980,2981,2982,2983,2984,2982,2983,2984,2985,2986,2987,2985,2986,2987,2988,2989,2990,2988,2989,2990,2991,2992,2993,2991,2992,2993,2994,2995,2996,2994,2995,2996,2997,2998,2999,2997,2998,2999,3000,3001,3002,3000,3001,3002,3003,3004,3005,3003,3004,3005,3006,3007,3008,3006,3007,3008,3009,3010,3011,3009,3010,3011,3012,3013,3014,3012,3013,3014,3015,3016,3017,3015,3016,3017,3018,3019,3020,3018,3019,3020,3021,3022,3023,3021,3022,3023,3024,3025,3026,3024,3025,3026,3027,3028,3029,3027,3028,3029,3030,3031,3032,3030,3031,3032,3033,3034,3035,3033,3034,3035,3036,3037,3038,3036,3037,3038,3039,3040,3041,3039,3040,3041,3042,3043,3044,3042,3043,3044,3045,3046,3047,3045,3046,3047,3048,3049,3050,3048,3049,3050,3051,3052,3053,3051,3052,3053,3054,3055,3056,3054,3055,3056,3057,3058,3059,3057,3058,3059,3060,3061,3062,3060,3061,3062,3063,3064,3065,3063,3064,3065,3066,3067,3068,3066,3067,3068,3069,3070,3071,3069,3070,3071,3072,3073,3074,3072,3073,3074],"end_stone_brick_wall":[3075,3076,3077,3075,3076,3077,0,3078,3079,0,3078,3079,3080,3081,3082,3080,3081,3082,3083,3084,3085,3083,3084,3085,3086,3087,3088,3086,3087,3088,3089,3090,3091,3089,3090,3091,3092,3093,3094,3092,3093,3094,3095,3096,3097,3095,3096,3097,3098,3099,3100,3098,3099,3100,3101,3102,3103,3101,3102,3103,3104,3105,3106,3104,3105,3106,3107,3108,3109,3107,3108,3109,3110,3111,3112,3110,3111,3112,3113,3114,3115,3113,3114,3115,3116,3117,3118,3116,3117,3118,3119,3120,3121,3119,3120,3121,3122,3123,3124,3122,3123,3124,3125,3126,3127,3125,3126,3127,3128,3129,3130,3128,3129,3130,3131,3132,3133,3131,3132,3133,3134,3135,3136,3134,3135,3136,3137,3138,3139,3137,3138,3139,3140,3141,3142,3140,3141,3142,3143,3144,3145,3143,3144,3145,3146,3147,3148,3146,3147,3148,3149,3150,3151,3149,3150,3151,3152,3153,3154,3152,3153,3154,3155,3156,3157,3155,3156,3157,3158,3159,3160,3158,3159,3160,3161,3162,3163,3161,3162,3163,3164,3165,3166,3164,3165,3166,3167,3168,3169,3167,3168,3169,3170,3171,3172,3170,3171,3172,3173,3174,3175,3173,3174,3175,3176,3177,3178,3176,3177,3178,3179,3180,3181,3179,3180,3181,3182,3183,3184,3182,3183,3184,3185,3186,3187,3185,3186,3187,3188,3189,3190,3188,3189,3190,3191,3192,3193,3191,3192,3193,3194,3195,3196,3194,3195,3196,3197,3198,3199,3197,3198,3199,3200,3201,3202,3200,3201,3202,3203,3204,3205,3203,3204,3205,3206,3207,3208,3206,3207,3208,3209,3210,3211,3209,3210,3211,3212,3213,3214,3212,3213,3214,3215,3216,3217,3215,3216,3217,3218,3219,3220,3218,3219,3220,3221,3222,3223,3221,3222,3223,3224,3225,3226,3224,3225,3226,3227,3228,3229,3227,3228,3229,3230,3231,3232,3230,3231,3232,3233,3234,3235,3233,3234,3235],"diorite_wall":[3236,3237,3238,3236,3237,3238,0,3239,3240,0,3239,3240,3241,3242,3243,3241,3242,3243,3244,3245,3246,3244,3245,3246,3247,3248,3249,3247,3248,3249,3250,3251,3252,3250,3251,3252,3253,3254,3255,3253,3254,3255,3256,3257,3258,3256,3257,3258,3259,3260,3261,3259,3260,3261,3262,3263,3264,3262,3263,3264,3265,3266,3267,3265,3266,3267,3268,3269,3270,3268,3269,3270,3271,3272,3273,3271,3272,3273,3274,3275,3276,3274,3275,3276,3277,3278,3279,3277,3278,3279,3280,3281,3282,3280,3281,3282,3283,3284,3285,3283,3284,3285,3286,3287,3288,3286,3287,3288,3289,3290,3291,3289,3290,3291,3292,3293,3294,3292,3293,3294,3295,3296,3297,3295,3296,3297,3298,3299,3300,3298,3299,3300,3301,3302,3303,3301,3302,3303,3304,3305,3306,3304,3305,3306,3307,3308,3309,3307,3308,3309,3310,3311,3312,3310,3311,3312,3313,3314,3315,3313,3314,3315,3316,3317,3318,3316,3317,3318,3319,3320,3321,3319,3320,3321,3322,3323,3324,3322,3323,3324,3325,3326,3327,3325,3326,3327,3328,3329,3330,3328,3329,3330,3331,3332,3333,3331,3332,3333,3334,3335,3336,3334,3335,3336,3337,3338,3339,3337,3338,3339,3340,3341,3342,3340,3341,3342,3343,3344,3345,3343,3344,3345,3346,3347,3348,3346,3347,3348,3349,3350,3351,3349,3350,3351,3352,3353,3354,3352,3353,3354,3355,3356,3357,3355,3356,3357,3358,3359,3360,3358,3359,3360,3361,3362,3363,3361,3362,3363,3364,3365,3366,3364,3365,3366,3367,3368,3369,3367,3368,3369,3370,3371,3372,3370,3371,3372,3373,3374,3375,3373,3374,3375,3376,3377,3378,3376,3377,3378,3379,3380,3381,3379,3380,3381,3382,3383,3384,3382,3383,3384,3385,3386,3387,3385,3386,3387,3388,3389,3390,3388,3389,3390,3391,3392,3393,3391,3392,3393,3394,3395,3396,3394,3395,3396],"scaffolding":3397,"loom":1,"barrel":1,"smoker":1,"blast_furnace":1,"cartography_table":1,"fletching_table":1,"grindstone":[3398,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409],"lectern":3410,"smithing_table":1,"stonecutter":3411,"bell":[3412,3412,3412,3412,3413,3413,3413,3413,3414,3414,3414,3414,3414,3414,3414,3414,3415,3415,3416,3416,3417,3417,3418,3418,3419,3419,3419,3419,3420,3420,3420,3420],"lantern":[3421,3421,3422,3422],"soul_lantern":[3421,3421,3422,3422],"copper_lantern":[3421,3421,3422,3422],"exposed_copper_lantern":[3421,3421,3422,3422],"weathered_copper_lantern":[3421,3421,3422,3422],"oxidized_copper_lantern":[3421,3421,3422,3422],"waxed_copper_lantern":[3421,3421,3422,3422],"waxed_exposed_copper_lantern":[3421,3421,3422,3422],"waxed_weathered_copper_lantern":[3421,3421,3422,3422],"waxed_oxidized_copper_lantern":[3421,3421,3422,3422],"campfire":3423,"soul_campfire":3423,"sweet_berry_bush":0,"warped_stem":1,"stripped_warped_stem":1,"warped_hyphae":1,"stripped_warped_hyphae":1,"warped_nylium":1,"warped_fungus":0,"warped_wart_block":1,"warped_roots":0,"nether_sprouts":0,"crimson_stem":1,"stripped_crimson_stem":1,"crimson_hyphae":1,"stripped_crimson_hyphae":1,"crimson_nylium":1,"crimson_fungus":0,"shroomlight":1,"weeping_vines":0,"weeping_vines_plant":0,"twisting_vines":0,"twisting_vines_plant":0,"crimson_roots":0,"crimson_planks":1,"warped_planks":1,"crimson_slab":[273,273,274,274,1,1],"warped_slab":[273,273,274,274,1,1],"crimson_pressure_plate":0,"warped_pressure_plate":0,"crimson_fence":[3424,3425,3424,3425,3426,3427,3426,3427,3428,3429,3428,3429,3430,3431,3430,3431,3432,3433,3432,3433,3434,3435,3434,3435,3436,3437,3436,3437,3438,3439,3438,3439],"warped_fence":[3440,3441,3440,3441,3442,3443,3442,3443,3444,3445,3444,3445,3446,3447,3446,3447,3448,3449,3448,3449,3450,3451,3450,3451,3452,3453,3452,3453,3454,3455,3454,3455],"crimson_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"warped_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"crimson_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"warped_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"crimson_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"warped_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"crimson_button":0,"warped_button":0,"crimson_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"warped_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"crimson_sign":0,"warped_sign":0,"crimson_wall_sign":0,"warped_wall_sign":0,"structure_block":1,"jigsaw":1,"test_block":1,"test_instance_block":1,"composter":3456,"target":1,"bee_nest":1,"beehive":1,"honey_block":3457,"honeycomb_block":1,"netherite_block":1,"ancient_debris":1,"crying_obsidian":1,"respawn_anchor":1,"potted_crimson_fungus":793,"potted_warped_fungus":793,"potted_crimson_roots":793,"potted_warped_roots":793,"lodestone":1,"blackstone":1,"blackstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"blackstone_wall":[3458,3459,3460,3458,3459,3460,0,3461,3462,0,3461,3462,3463,3464,3465,3463,3464,3465,3466,3467,3468,3466,3467,3468,3469,3470,3471,3469,3470,3471,3472,3473,3474,3472,3473,3474,3475,3476,3477,3475,3476,3477,3478,3479,3480,3478,3479,3480,3481,3482,3483,3481,3482,3483,3484,3485,3486,3484,3485,3486,3487,3488,3489,3487,3488,3489,3490,3491,3492,3490,3491,3492,3493,3494,3495,3493,3494,3495,3496,3497,3498,3496,3497,3498,3499,3500,3501,3499,3500,3501,3502,3503,3504,3502,3503,3504,3505,3506,3507,3505,3506,3507,3508,3509,3510,3508,3509,3510,3511,3512,3513,3511,3512,3513,3514,3515,3516,3514,3515,3516,3517,3518,3519,3517,3518,3519,3520,3521,3522,3520,3521,3522,3523,3524,3525,3523,3524,3525,3526,3527,3528,3526,3527,3528,3529,3530,3531,3529,3530,3531,3532,3533,3534,3532,3533,3534,3535,3536,3537,3535,3536,3537,3538,3539,3540,3538,3539,3540,3541,3542,3543,3541,3542,3543,3544,3545,3546,3544,3545,3546,3547,3548,3549,3547,3548,3549,3550,3551,3552,3550,3551,3552,3553,3554,3555,3553,3554,3555,3556,3557,3558,3556,3557,3558,3559,3560,3561,3559,3560,3561,3562,3563,3564,3562,3563,3564,3565,3566,3567,3565,3566,3567,3568,3569,3570,3568,3569,3570,3571,3572,3573,3571,3572,3573,3574,3575,3576,3574,3575,3576,3577,3578,3579,3577,3578,3579,3580,3581,3582,3580,3581,3582,3583,3584,3585,3583,3584,3585,3586,3587,3588,3586,3587,3588,3589,3590,3591,3589,3590,3591,3592,3593,3594,3592,3593,3594,3595,3596,3597,3595,3596,3597,3598,3599,3600,3598,3599,3600,3601,3602,3603,3601,3602,3603,3604,3605,3606,3604,3605,3606,3607,3608,3609,3607,3608,3609,3610,3611,3612,3610,3611,3612,3613,3614,3615,3613,3614,3615,3616,3617,3618,3616,3617,3618],"blackstone_slab":[273,273,274,274,1,1],"polished_blackstone":1,"polished_blackstone_bricks":1,"cracked_polished_blackstone_bricks":1,"chiseled_polished_blackstone":1,"polished_blackstone_brick_slab":[273,273,274,274,1,1],"polished_blackstone_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_blackstone_brick_wall":[3619,3620,3621,3619,3620,3621,0,3622,3623,0,3622,3623,3624,3625,3626,3624,3625,3626,3627,3628,3629,3627,3628,3629,3630,3631,3632,3630,3631,3632,3633,3634,3635,3633,3634,3635,3636,3637,3638,3636,3637,3638,3639,3640,3641,3639,3640,3641,3642,3643,3644,3642,3643,3644,3645,3646,3647,3645,3646,3647,3648,3649,3650,3648,3649,3650,3651,3652,3653,3651,3652,3653,3654,3655,3656,3654,3655,3656,3657,3658,3659,3657,3658,3659,3660,3661,3662,3660,3661,3662,3663,3664,3665,3663,3664,3665,3666,3667,3668,3666,3667,3668,3669,3670,3671,3669,3670,3671,3672,3673,3674,3672,3673,3674,3675,3676,3677,3675,3676,3677,3678,3679,3680,3678,3679,3680,3681,3682,3683,3681,3682,3683,3684,3685,3686,3684,3685,3686,3687,3688,3689,3687,3688,3689,3690,3691,3692,3690,3691,3692,3693,3694,3695,3693,3694,3695,3696,3697,3698,3696,3697,3698,3699,3700,3701,3699,3700,3701,3702,3703,3704,3702,3703,3704,3705,3706,3707,3705,3706,3707,3708,3709,3710,3708,3709,3710,3711,3712,3713,3711,3712,3713,3714,3715,3716,3714,3715,3716,3717,3718,3719,3717,3718,3719,3720,3721,3722,3720,3721,3722,3723,3724,3725,3723,3724,3725,3726,3727,3728,3726,3727,3728,3729,3730,3731,3729,3730,3731,3732,3733,3734,3732,3733,3734,3735,3736,3737,3735,3736,3737,3738,3739,3740,3738,3739,3740,3741,3742,3743,3741,3742,3743,3744,3745,3746,3744,3745,3746,3747,3748,3749,3747,3748,3749,3750,3751,3752,3750,3751,3752,3753,3754,3755,3753,3754,3755,3756,3757,3758,3756,3757,3758,3759,3760,3761,3759,3760,3761,3762,3763,3764,3762,3763,3764,3765,3766,3767,3765,3766,3767,3768,3769,3770,3768,3769,3770,3771,3772,3773,3771,3772,3773,3774,3775,3776,3774,3775,3776,3777,3778,3779,3777,3778,3779],"gilded_blackstone":1,"polished_blackstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_blackstone_slab":[273,273,274,274,1,1],"polished_blackstone_pressure_plate":0,"polished_blackstone_button":0,"polished_blackstone_wall":[3780,3781,3782,3780,3781,3782,0,3783,3784,0,3783,3784,3785,3786,3787,3785,3786,3787,3788,3789,3790,3788,3789,3790,3791,3792,3793,3791,3792,3793,3794,3795,3796,3794,3795,3796,3797,3798,3799,3797,3798,3799,3800,3801,3802,3800,3801,3802,3803,3804,3805,3803,3804,3805,3806,3807,3808,3806,3807,3808,3809,3810,3811,3809,3810,3811,3812,3813,3814,3812,3813,3814,3815,3816,3817,3815,3816,3817,3818,3819,3820,3818,3819,3820,3821,3822,3823,3821,3822,3823,3824,3825,3826,3824,3825,3826,3827,3828,3829,3827,3828,3829,3830,3831,3832,3830,3831,3832,3833,3834,3835,3833,3834,3835,3836,3837,3838,3836,3837,3838,3839,3840,3841,3839,3840,3841,3842,3843,3844,3842,3843,3844,3845,3846,3847,3845,3846,3847,3848,3849,3850,3848,3849,3850,3851,3852,3853,3851,3852,3853,3854,3855,3856,3854,3855,3856,3857,3858,3859,3857,3858,3859,3860,3861,3862,3860,3861,3862,3863,3864,3865,3863,3864,3865,3866,3867,3868,3866,3867,3868,3869,3870,3871,3869,3870,3871,3872,3873,3874,3872,3873,3874,3875,3876,3877,3875,3876,3877,3878,3879,3880,3878,3879,3880,3881,3882,3883,3881,3882,3883,3884,3885,3886,3884,3885,3886,3887,3888,3889,3887,3888,3889,3890,3891,3892,3890,3891,3892,3893,3894,3895,3893,3894,3895,3896,3897,3898,3896,3897,3898,3899,3900,3901,3899,3900,3901,3902,3903,3904,3902,3903,3904,3905,3906,3907,3905,3906,3907,3908,3909,3910,3908,3909,3910,3911,3912,3913,3911,3912,3913,3914,3915,3916,3914,3915,3916,3917,3918,3919,3917,3918,3919,3920,3921,3922,3920,3921,3922,3923,3924,3925,3923,3924,3925,3926,3927,3928,3926,3927,3928,3929,3930,3931,3929,3930,3931,3932,3933,3934,3932,3933,3934,3935,3936,3937,3935,3936,3937,3938,3939,3940,3938,3939,3940],"chiseled_nether_bricks":1,"cracked_nether_bricks":1,"quartz_bricks":1,"candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"white_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"orange_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"magenta_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"light_blue_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"yellow_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"lime_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"pink_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"gray_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"light_gray_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"cyan_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"purple_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"blue_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"brown_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"green_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"red_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"black_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"candle_cake":3945,"white_candle_cake":3945,"orange_candle_cake":3945,"magenta_candle_cake":3945,"light_blue_candle_cake":3945,"yellow_candle_cake":3945,"lime_candle_cake":3945,"pink_candle_cake":3945,"gray_candle_cake":3945,"light_gray_candle_cake":3945,"cyan_candle_cake":3945,"purple_candle_cake":3945,"blue_candle_cake":3945,"brown_candle_cake":3945,"green_candle_cake":3945,"red_candle_cake":3945,"black_candle_cake":3945,"amethyst_block":1,"budding_amethyst":1,"amethyst_cluster":[3946,3946,3947,3947,3948,3948,3949,3949,3950,3950,3951,3951],"large_amethyst_bud":[3952,3952,3953,3953,3954,3954,3955,3955,3956,3956,3957,3957],"medium_amethyst_bud":[3958,3958,3959,3959,3960,3960,3961,3961,3962,3962,3963,3963],"small_amethyst_bud":[3964,3964,3965,3965,3966,3966,3967,3967,3968,3968,3969,3969],"tuff":1,"tuff_slab":[273,273,274,274,1,1],"tuff_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"tuff_wall":[3970,3971,3972,3970,3971,3972,0,3973,3974,0,3973,3974,3975,3976,3977,3975,3976,3977,3978,3979,3980,3978,3979,3980,3981,3982,3983,3981,3982,3983,3984,3985,3986,3984,3985,3986,3987,3988,3989,3987,3988,3989,3990,3991,3992,3990,3991,3992,3993,3994,3995,3993,3994,3995,3996,3997,3998,3996,3997,3998,3999,4000,4001,3999,4000,4001,4002,4003,4004,4002,4003,4004,4005,4006,4007,4005,4006,4007,4008,4009,4010,4008,4009,4010,4011,4012,4013,4011,4012,4013,4014,4015,4016,4014,4015,4016,4017,4018,4019,4017,4018,4019,4020,4021,4022,4020,4021,4022,4023,4024,4025,4023,4024,4025,4026,4027,4028,4026,4027,4028,4029,4030,4031,4029,4030,4031,4032,4033,4034,4032,4033,4034,4035,4036,4037,4035,4036,4037,4038,4039,4040,4038,4039,4040,4041,4042,4043,4041,4042,4043,4044,4045,4046,4044,4045,4046,4047,4048,4049,4047,4048,4049,4050,4051,4052,4050,4051,4052,4053,4054,4055,4053,4054,4055,4056,4057,4058,4056,4057,4058,4059,4060,4061,4059,4060,4061,4062,4063,4064,4062,4063,4064,4065,4066,4067,4065,4066,4067,4068,4069,4070,4068,4069,4070,4071,4072,4073,4071,4072,4073,4074,4075,4076,4074,4075,4076,4077,4078,4079,4077,4078,4079,4080,4081,4082,4080,4081,4082,4083,4084,4085,4083,4084,4085,4086,4087,4088,4086,4087,4088,4089,4090,4091,4089,4090,4091,4092,4093,4094,4092,4093,4094,4095,4096,4097,4095,4096,4097,4098,4099,4100,4098,4099,4100,4101,4102,4103,4101,4102,4103,4104,4105,4106,4104,4105,4106,4107,4108,4109,4107,4108,4109,4110,4111,4112,4110,4111,4112,4113,4114,4115,4113,4114,4115,4116,4117,4118,4116,4117,4118,4119,4120,4121,4119,4120,4121,4122,4123,4124,4122,4123,4124,4125,4126,4127,4125,4126,4127,4128,4129,4130,4128,4129,4130],"polished_tuff":1,"polished_tuff_slab":[273,273,274,274,1,1],"polished_tuff_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_tuff_wall":[4131,4132,4133,4131,4132,4133,0,4134,4135,0,4134,4135,4136,4137,4138,4136,4137,4138,4139,4140,4141,4139,4140,4141,4142,4143,4144,4142,4143,4144,4145,4146,4147,4145,4146,4147,4148,4149,4150,4148,4149,4150,4151,4152,4153,4151,4152,4153,4154,4155,4156,4154,4155,4156,4157,4158,4159,4157,4158,4159,4160,4161,4162,4160,4161,4162,4163,4164,4165,4163,4164,4165,4166,4167,4168,4166,4167,4168,4169,4170,4171,4169,4170,4171,4172,4173,4174,4172,4173,4174,4175,4176,4177,4175,4176,4177,4178,4179,4180,4178,4179,4180,4181,4182,4183,4181,4182,4183,4184,4185,4186,4184,4185,4186,4187,4188,4189,4187,4188,4189,4190,4191,4192,4190,4191,4192,4193,4194,4195,4193,4194,4195,4196,4197,4198,4196,4197,4198,4199,4200,4201,4199,4200,4201,4202,4203,4204,4202,4203,4204,4205,4206,4207,4205,4206,4207,4208,4209,4210,4208,4209,4210,4211,4212,4213,4211,4212,4213,4214,4215,4216,4214,4215,4216,4217,4218,4219,4217,4218,4219,4220,4221,4222,4220,4221,4222,4223,4224,4225,4223,4224,4225,4226,4227,4228,4226,4227,4228,4229,4230,4231,4229,4230,4231,4232,4233,4234,4232,4233,4234,4235,4236,4237,4235,4236,4237,4238,4239,4240,4238,4239,4240,4241,4242,4243,4241,4242,4243,4244,4245,4246,4244,4245,4246,4247,4248,4249,4247,4248,4249,4250,4251,4252,4250,4251,4252,4253,4254,4255,4253,4254,4255,4256,4257,4258,4256,4257,4258,4259,4260,4261,4259,4260,4261,4262,4263,4264,4262,4263,4264,4265,4266,4267,4265,4266,4267,4268,4269,4270,4268,4269,4270,4271,4272,4273,4271,4272,4273,4274,4275,4276,4274,4275,4276,4277,4278,4279,4277,4278,4279,4280,4281,4282,4280,4281,4282,4283,4284,4285,4283,4284,4285,4286,4287,4288,4286,4287,4288,4289,4290,4291,4289,4290,4291],"chiseled_tuff":1,"tuff_bricks":1,"tuff_brick_slab":[273,273,274,274,1,1],"tuff_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"tuff_brick_wall":[4292,4293,4294,4292,4293,4294,0,4295,4296,0,4295,4296,4297,4298,4299,4297,4298,4299,4300,4301,4302,4300,4301,4302,4303,4304,4305,4303,4304,4305,4306,4307,4308,4306,4307,4308,4309,4310,4311,4309,4310,4311,4312,4313,4314,4312,4313,4314,4315,4316,4317,4315,4316,4317,4318,4319,4320,4318,4319,4320,4321,4322,4323,4321,4322,4323,4324,4325,4326,4324,4325,4326,4327,4328,4329,4327,4328,4329,4330,4331,4332,4330,4331,4332,4333,4334,4335,4333,4334,4335,4336,4337,4338,4336,4337,4338,4339,4340,4341,4339,4340,4341,4342,4343,4344,4342,4343,4344,4345,4346,4347,4345,4346,4347,4348,4349,4350,4348,4349,4350,4351,4352,4353,4351,4352,4353,4354,4355,4356,4354,4355,4356,4357,4358,4359,4357,4358,4359,4360,4361,4362,4360,4361,4362,4363,4364,4365,4363,4364,4365,4366,4367,4368,4366,4367,4368,4369,4370,4371,4369,4370,4371,4372,4373,4374,4372,4373,4374,4375,4376,4377,4375,4376,4377,4378,4379,4380,4378,4379,4380,4381,4382,4383,4381,4382,4383,4384,4385,4386,4384,4385,4386,4387,4388,4389,4387,4388,4389,4390,4391,4392,4390,4391,4392,4393,4394,4395,4393,4394,4395,4396,4397,4398,4396,4397,4398,4399,4400,4401,4399,4400,4401,4402,4403,4404,4402,4403,4404,4405,4406,4407,4405,4406,4407,4408,4409,4410,4408,4409,4410,4411,4412,4413,4411,4412,4413,4414,4415,4416,4414,4415,4416,4417,4418,4419,4417,4418,4419,4420,4421,4422,4420,4421,4422,4423,4424,4425,4423,4424,4425,4426,4427,4428,4426,4427,4428,4429,4430,4431,4429,4430,4431,4432,4433,4434,4432,4433,4434,4435,4436,4437,4435,4436,4437,4438,4439,4440,4438,4439,4440,4441,4442,4443,4441,4442,4443,4444,4445,4446,4444,4445,4446,4447,4448,4449,4447,4448,4449,4450,4451,4452,4450,4451,4452],"chiseled_tuff_bricks":1,"calcite":1,"tinted_glass":1,"powder_snow":0,"sculk_sensor":4453,"calibrated_sculk_sensor":4453,"sculk":1,"sculk_vein":0,"sculk_catalyst":1,"sculk_shrieker":4454,"copper_block":1,"exposed_copper":1,"weathered_copper":1,"oxidized_copper":1,"copper_ore":1,"deepslate_copper_ore":1,"oxidized_cut_copper":1,"weathered_cut_copper":1,"exposed_cut_copper":1,"cut_copper":1,"oxidized_chiseled_copper":1,"weathered_chiseled_copper":1,"exposed_chiseled_copper":1,"chiseled_copper":1,"waxed_oxidized_chiseled_copper":1,"waxed_weathered_chiseled_copper":1,"waxed_exposed_chiseled_copper":1,"waxed_chiseled_copper":1,"oxidized_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"weathered_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"exposed_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"oxidized_cut_copper_slab":[273,273,274,274,1,1],"weathered_cut_copper_slab":[273,273,274,274,1,1],"exposed_cut_copper_slab":[273,273,274,274,1,1],"cut_copper_slab":[273,273,274,274,1,1],"waxed_copper_block":1,"waxed_weathered_copper":1,"waxed_exposed_copper":1,"waxed_oxidized_copper":1,"waxed_oxidized_cut_copper":1,"waxed_weathered_cut_copper":1,"waxed_exposed_cut_copper":1,"waxed_cut_copper":1,"waxed_oxidized_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"waxed_weathered_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"waxed_exposed_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"waxed_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"waxed_oxidized_cut_copper_slab":[273,273,274,274,1,1],"waxed_weathered_cut_copper_slab":[273,273,274,274,1,1],"waxed_exposed_cut_copper_slab":[273,273,274,274,1,1],"waxed_cut_copper_slab":[273,273,274,274,1,1],"copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"exposed_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"oxidized_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"weathered_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"waxed_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"waxed_exposed_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"waxed_oxidized_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"waxed_weathered_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"exposed_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"oxidized_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"weathered_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"waxed_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"waxed_exposed_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"waxed_oxidized_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"waxed_weathered_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"copper_grate":1,"exposed_copper_grate":1,"weathered_copper_grate":1,"oxidized_copper_grate":1,"waxed_copper_grate":1,"waxed_exposed_copper_grate":1,"waxed_weathered_copper_grate":1,"waxed_oxidized_copper_grate":1,"copper_bulb":1,"exposed_copper_bulb":1,"weathered_copper_bulb":1,"oxidized_copper_bulb":1,"waxed_copper_bulb":1,"waxed_exposed_copper_bulb":1,"waxed_weathered_copper_bulb":1,"waxed_oxidized_copper_bulb":1,"copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"exposed_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"weathered_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"oxidized_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"waxed_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"waxed_exposed_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"waxed_weathered_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"waxed_oxidized_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"copper_golem_statue":4455,"exposed_copper_golem_statue":4455,"weathered_copper_golem_statue":4455,"oxidized_copper_golem_statue":4455,"waxed_copper_golem_statue":4455,"waxed_exposed_copper_golem_statue":4455,"waxed_weathered_copper_golem_statue":4455,"waxed_oxidized_copper_golem_statue":4455,"lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"exposed_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"weathered_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"oxidized_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"waxed_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"waxed_exposed_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"waxed_weathered_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"waxed_oxidized_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"pointed_dripstone":[4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475],"dripstone_block":1,"cave_vines":0,"cave_vines_plant":0,"spore_blossom":0,"azalea":4476,"flowering_azalea":4476,"moss_carpet":1068,"pink_petals":0,"wildflowers":0,"leaf_litter":0,"moss_block":1,"big_dripleaf":[4477,4477,4478,4478,4479,4479,0,0,4477,4477,4478,4478,4479,4479,0,0,4477,4477,4478,4478,4479,4479,0,0,4477,4477,4478,4478,4479,4479,0,0],"big_dripleaf_stem":0,"small_dripleaf":0,"hanging_roots":0,"rooted_dirt":1,"mud":4480,"deepslate":1,"cobbled_deepslate":1,"cobbled_deepslate_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"cobbled_deepslate_slab":[273,273,274,274,1,1],"cobbled_deepslate_wall":[4481,4482,4483,4481,4482,4483,0,4484,4485,0,4484,4485,4486,4487,4488,4486,4487,4488,4489,4490,4491,4489,4490,4491,4492,4493,4494,4492,4493,4494,4495,4496,4497,4495,4496,4497,4498,4499,4500,4498,4499,4500,4501,4502,4503,4501,4502,4503,4504,4505,4506,4504,4505,4506,4507,4508,4509,4507,4508,4509,4510,4511,4512,4510,4511,4512,4513,4514,4515,4513,4514,4515,4516,4517,4518,4516,4517,4518,4519,4520,4521,4519,4520,4521,4522,4523,4524,4522,4523,4524,4525,4526,4527,4525,4526,4527,4528,4529,4530,4528,4529,4530,4531,4532,4533,4531,4532,4533,4534,4535,4536,4534,4535,4536,4537,4538,4539,4537,4538,4539,4540,4541,4542,4540,4541,4542,4543,4544,4545,4543,4544,4545,4546,4547,4548,4546,4547,4548,4549,4550,4551,4549,4550,4551,4552,4553,4554,4552,4553,4554,4555,4556,4557,4555,4556,4557,4558,4559,4560,4558,4559,4560,4561,4562,4563,4561,4562,4563,4564,4565,4566,4564,4565,4566,4567,4568,4569,4567,4568,4569,4570,4571,4572,4570,4571,4572,4573,4574,4575,4573,4574,4575,4576,4577,4578,4576,4577,4578,4579,4580,4581,4579,4580,4581,4582,4583,4584,4582,4583,4584,4585,4586,4587,4585,4586,4587,4588,4589,4590,4588,4589,4590,4591,4592,4593,4591,4592,4593,4594,4595,4596,4594,4595,4596,4597,4598,4599,4597,4598,4599,4600,4601,4602,4600,4601,4602,4603,4604,4605,4603,4604,4605,4606,4607,4608,4606,4607,4608,4609,4610,4611,4609,4610,4611,4612,4613,4614,4612,4613,4614,4615,4616,4617,4615,4616,4617,4618,4619,4620,4618,4619,4620,4621,4622,4623,4621,4622,4623,4624,4625,4626,4624,4625,4626,4627,4628,4629,4627,4628,4629,4630,4631,4632,4630,4631,4632,4633,4634,4635,4633,4634,4635,4636,4637,4638,4636,4637,4638,4639,4640,4641,4639,4640,4641],"polished_deepslate":1,"polished_deepslate_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_deepslate_slab":[273,273,274,274,1,1],"polished_deepslate_wall":[4642,4643,4644,4642,4643,4644,0,4645,4646,0,4645,4646,4647,4648,4649,4647,4648,4649,4650,4651,4652,4650,4651,4652,4653,4654,4655,4653,4654,4655,4656,4657,4658,4656,4657,4658,4659,4660,4661,4659,4660,4661,4662,4663,4664,4662,4663,4664,4665,4666,4667,4665,4666,4667,4668,4669,4670,4668,4669,4670,4671,4672,4673,4671,4672,4673,4674,4675,4676,4674,4675,4676,4677,4678,4679,4677,4678,4679,4680,4681,4682,4680,4681,4682,4683,4684,4685,4683,4684,4685,4686,4687,4688,4686,4687,4688,4689,4690,4691,4689,4690,4691,4692,4693,4694,4692,4693,4694,4695,4696,4697,4695,4696,4697,4698,4699,4700,4698,4699,4700,4701,4702,4703,4701,4702,4703,4704,4705,4706,4704,4705,4706,4707,4708,4709,4707,4708,4709,4710,4711,4712,4710,4711,4712,4713,4714,4715,4713,4714,4715,4716,4717,4718,4716,4717,4718,4719,4720,4721,4719,4720,4721,4722,4723,4724,4722,4723,4724,4725,4726,4727,4725,4726,4727,4728,4729,4730,4728,4729,4730,4731,4732,4733,4731,4732,4733,4734,4735,4736,4734,4735,4736,4737,4738,4739,4737,4738,4739,4740,4741,4742,4740,4741,4742,4743,4744,4745,4743,4744,4745,4746,4747,4748,4746,4747,4748,4749,4750,4751,4749,4750,4751,4752,4753,4754,4752,4753,4754,4755,4756,4757,4755,4756,4757,4758,4759,4760,4758,4759,4760,4761,4762,4763,4761,4762,4763,4764,4765,4766,4764,4765,4766,4767,4768,4769,4767,4768,4769,4770,4771,4772,4770,4771,4772,4773,4774,4775,4773,4774,4775,4776,4777,4778,4776,4777,4778,4779,4780,4781,4779,4780,4781,4782,4783,4784,4782,4783,4784,4785,4786,4787,4785,4786,4787,4788,4789,4790,4788,4789,4790,4791,4792,4793,4791,4792,4793,4794,4795,4796,4794,4795,4796,4797,4798,4799,4797,4798,4799,4800,4801,4802,4800,4801,4802],"deepslate_tiles":1,"deepslate_tile_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"deepslate_tile_slab":[273,273,274,274,1,1],"deepslate_tile_wall":[4803,4804,4805,4803,4804,4805,0,4806,4807,0,4806,4807,4808,4809,4810,4808,4809,4810,4811,4812,4813,4811,4812,4813,4814,4815,4816,4814,4815,4816,4817,4818,4819,4817,4818,4819,4820,4821,4822,4820,4821,4822,4823,4824,4825,4823,4824,4825,4826,4827,4828,4826,4827,4828,4829,4830,4831,4829,4830,4831,4832,4833,4834,4832,4833,4834,4835,4836,4837,4835,4836,4837,4838,4839,4840,4838,4839,4840,4841,4842,4843,4841,4842,4843,4844,4845,4846,4844,4845,4846,4847,4848,4849,4847,4848,4849,4850,4851,4852,4850,4851,4852,4853,4854,4855,4853,4854,4855,4856,4857,4858,4856,4857,4858,4859,4860,4861,4859,4860,4861,4862,4863,4864,4862,4863,4864,4865,4866,4867,4865,4866,4867,4868,4869,4870,4868,4869,4870,4871,4872,4873,4871,4872,4873,4874,4875,4876,4874,4875,4876,4877,4878,4879,4877,4878,4879,4880,4881,4882,4880,4881,4882,4883,4884,4885,4883,4884,4885,4886,4887,4888,4886,4887,4888,4889,4890,4891,4889,4890,4891,4892,4893,4894,4892,4893,4894,4895,4896,4897,4895,4896,4897,4898,4899,4900,4898,4899,4900,4901,4902,4903,4901,4902,4903,4904,4905,4906,4904,4905,4906,4907,4908,4909,4907,4908,4909,4910,4911,4912,4910,4911,4912,4913,4914,4915,4913,4914,4915,4916,4917,4918,4916,4917,4918,4919,4920,4921,4919,4920,4921,4922,4923,4924,4922,4923,4924,4925,4926,4927,4925,4926,4927,4928,4929,4930,4928,4929,4930,4931,4932,4933,4931,4932,4933,4934,4935,4936,4934,4935,4936,4937,4938,4939,4937,4938,4939,4940,4941,4942,4940,4941,4942,4943,4944,4945,4943,4944,4945,4946,4947,4948,4946,4947,4948,4949,4950,4951,4949,4950,4951,4952,4953,4954,4952,4953,4954,4955,4956,4957,4955,4956,4957,4958,4959,4960,4958,4959,4960,4961,4962,4963,4961,4962,4963],"deepslate_bricks":1,"deepslate_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"deepslate_brick_slab":[273,273,274,274,1,1],"deepslate_brick_wall":[4964,4965,4966,4964,4965,4966,0,4967,4968,0,4967,4968,4969,4970,4971,4969,4970,4971,4972,4973,4974,4972,4973,4974,4975,4976,4977,4975,4976,4977,4978,4979,4980,4978,4979,4980,4981,4982,4983,4981,4982,4983,4984,4985,4986,4984,4985,4986,4987,4988,4989,4987,4988,4989,4990,4991,4992,4990,4991,4992,4993,4994,4995,4993,4994,4995,4996,4997,4998,4996,4997,4998,4999,5000,5001,4999,5000,5001,5002,5003,5004,5002,5003,5004,5005,5006,5007,5005,5006,5007,5008,5009,5010,5008,5009,5010,5011,5012,5013,5011,5012,5013,5014,5015,5016,5014,5015,5016,5017,5018,5019,5017,5018,5019,5020,5021,5022,5020,5021,5022,5023,5024,5025,5023,5024,5025,5026,5027,5028,5026,5027,5028,5029,5030,5031,5029,5030,5031,5032,5033,5034,5032,5033,5034,5035,5036,5037,5035,5036,5037,5038,5039,5040,5038,5039,5040,5041,5042,5043,5041,5042,5043,5044,5045,5046,5044,5045,5046,5047,5048,5049,5047,5048,5049,5050,5051,5052,5050,5051,5052,5053,5054,5055,5053,5054,5055,5056,5057,5058,5056,5057,5058,5059,5060,5061,5059,5060,5061,5062,5063,5064,5062,5063,5064,5065,5066,5067,5065,5066,5067,5068,5069,5070,5068,5069,5070,5071,5072,5073,5071,5072,5073,5074,5075,5076,5074,5075,5076,5077,5078,5079,5077,5078,5079,5080,5081,5082,5080,5081,5082,5083,5084,5085,5083,5084,5085,5086,5087,5088,5086,5087,5088,5089,5090,5091,5089,5090,5091,5092,5093,5094,5092,5093,5094,5095,5096,5097,5095,5096,5097,5098,5099,5100,5098,5099,5100,5101,5102,5103,5101,5102,5103,5104,5105,5106,5104,5105,5106,5107,5108,5109,5107,5108,5109,5110,5111,5112,5110,5111,5112,5113,5114,5115,5113,5114,5115,5116,5117,5118,5116,5117,5118,5119,5120,5121,5119,5120,5121,5122,5123,5124,5122,5123,5124],"chiseled_deepslate":1,"cracked_deepslate_bricks":1,"cracked_deepslate_tiles":1,"infested_deepslate":1,"smooth_basalt":1,"raw_iron_block":1,"raw_copper_block":1,"raw_gold_block":1,"potted_azalea_bush":793,"potted_flowering_azalea_bush":793,"ochre_froglight":1,"verdant_froglight":1,"pearlescent_froglight":1,"frogspawn":0,"reinforced_deepslate":1,"decorated_pot":5125,"crafter":1,"trial_spawner":1,"vault":1,"heavy_core":5126,"pale_moss_block":1,"pale_moss_carpet":[5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"pale_hanging_moss":0,"open_eyeblossom":0,"closed_eyeblossom":0,"potted_open_eyeblossom":793,"potted_closed_eyeblossom":793,"firefly_bush":0}} \ No newline at end of file +{"shapes":{"0":[],"1":[[0.0,0.0,0.0,1.0,1.0,1.0]],"2":[[0.0,0.0,0.0,0.1875,0.5625,0.1875],[0.8125,0.0,0.0,1.0,0.5625,0.1875],[0.0,0.1875,0.1875,1.0,0.5625,1.0],[0.1875,0.1875,0.0,0.8125,0.5625,0.1875]],"3":[[0.0,0.0,0.8125,0.1875,0.5625,1.0],[0.8125,0.0,0.8125,1.0,0.5625,1.0],[0.0,0.1875,0.0,1.0,0.5625,0.8125],[0.1875,0.1875,0.8125,0.8125,0.5625,1.0]],"4":[[0.0,0.0,0.0,0.1875,0.5625,0.1875],[0.0,0.0,0.8125,0.1875,0.5625,1.0],[0.0,0.1875,0.1875,1.0,0.5625,0.8125],[0.1875,0.1875,0.0,1.0,0.5625,0.1875],[0.1875,0.1875,0.8125,1.0,0.5625,1.0]],"5":[[0.8125,0.0,0.0,1.0,0.5625,0.1875],[0.8125,0.0,0.8125,1.0,0.5625,1.0],[0.0,0.1875,0.0,0.8125,0.5625,1.0],[0.8125,0.1875,0.1875,1.0,0.5625,0.8125]],"6":[[0.0,0.0,0.25,1.0,1.0,1.0]],"7":[[0.0,0.0,0.0,0.75,1.0,1.0]],"8":[[0.0,0.0,0.0,1.0,1.0,0.75]],"9":[[0.25,0.0,0.0,1.0,1.0,1.0]],"10":[[0.0,0.0,0.0,1.0,0.75,1.0]],"11":[[0.0,0.25,0.0,1.0,1.0,1.0]],"12":[[0.0,0.0,0.0,1.0,1.0,0.25],[0.375,0.375,0.25,0.625,0.625,1.0]],"13":[[0.0,0.0,0.0,1.0,1.0,0.25],[0.375,0.375,0.25,0.625,0.625,1.25]],"14":[[0.75,0.0,0.0,1.0,1.0,1.0],[0.0,0.375,0.375,0.75,0.625,0.625]],"15":[[0.75,0.0,0.0,1.0,1.0,1.0],[-0.25,0.375,0.375,0.75,0.625,0.625]],"16":[[0.0,0.0,0.75,1.0,1.0,1.0],[0.375,0.375,0.0,0.625,0.625,0.75]],"17":[[0.0,0.0,0.75,1.0,1.0,1.0],[0.375,0.375,-0.25,0.625,0.625,0.75]],"18":[[0.0,0.0,0.0,0.25,1.0,1.0],[0.25,0.375,0.375,1.0,0.625,0.625]],"19":[[0.0,0.0,0.0,0.25,1.0,1.0],[0.25,0.375,0.375,1.25,0.625,0.625]],"20":[[0.375,0.0,0.375,0.625,1.0,0.625],[0.0,0.75,0.0,0.375,1.0,1.0],[0.375,0.75,0.0,1.0,1.0,0.375],[0.375,0.75,0.625,1.0,1.0,1.0],[0.625,0.75,0.375,1.0,1.0,0.625]],"21":[[0.375,-0.25,0.375,0.625,1.0,0.625],[0.0,0.75,0.0,0.375,1.0,1.0],[0.375,0.75,0.0,1.0,1.0,0.375],[0.375,0.75,0.625,1.0,1.0,1.0],[0.625,0.75,0.375,1.0,1.0,0.625]],"22":[[0.0,0.0,0.0,1.0,0.25,1.0],[0.375,0.25,0.375,0.625,1.0,0.625]],"23":[[0.0,0.0,0.0,1.0,0.25,1.0],[0.375,0.25,0.375,0.625,1.25,0.625]],"24":[[0.0,0.0,0.6875,1.0,0.25,1.0],[0.0,0.25,0.8125,1.0,1.0,1.0],[0.0,0.75,0.6875,1.0,1.0,0.8125]],"25":[[0.0,0.0,0.0,1.0,0.25,0.3125],[0.0,0.25,0.0,1.0,1.0,0.1875],[0.0,0.75,0.1875,1.0,1.0,0.3125]],"26":[[0.6875,0.0,0.0,1.0,0.25,1.0],[0.8125,0.25,0.0,1.0,1.0,1.0],[0.6875,0.75,0.0,0.8125,1.0,1.0]],"27":[[0.0,0.0,0.0,0.3125,0.25,1.0],[0.0,0.25,0.0,0.1875,1.0,1.0],[0.1875,0.75,0.0,0.3125,1.0,1.0]],"28":[[0.0,0.0,0.0,1.0,1.0,0.5],[0.0,0.5,0.5,1.0,1.0,1.0]],"29":[[0.0,0.0,0.0,0.5,1.0,1.0],[0.5,0.0,0.0,1.0,1.0,0.5],[0.5,0.5,0.5,1.0,1.0,1.0]],"30":[[0.0,0.0,0.0,1.0,1.0,0.5],[0.5,0.0,0.5,1.0,1.0,1.0],[0.0,0.5,0.5,0.5,1.0,1.0]],"31":[[0.0,0.0,0.0,0.5,1.0,0.5],[0.0,0.5,0.5,1.0,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"32":[[0.5,0.0,0.0,1.0,1.0,0.5],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.5,1.0,1.0,1.0]],"33":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,1.0,1.0,0.5]],"34":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"35":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,1.0,1.0,0.5],[0.5,0.5,0.5,1.0,1.0,1.0]],"36":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,0.5]],"37":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"38":[[0.0,0.0,0.5,1.0,1.0,1.0],[0.0,0.5,0.0,1.0,1.0,0.5]],"39":[[0.0,0.0,0.5,1.0,1.0,1.0],[0.5,0.0,0.0,1.0,1.0,0.5],[0.0,0.5,0.0,0.5,1.0,0.5]],"40":[[0.0,0.0,0.0,0.5,1.0,1.0],[0.5,0.0,0.5,1.0,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"41":[[0.5,0.0,0.5,1.0,1.0,1.0],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"42":[[0.0,0.0,0.5,0.5,1.0,1.0],[0.0,0.5,0.0,1.0,1.0,0.5],[0.5,0.5,0.5,1.0,1.0,1.0]],"43":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,1.0,1.0,1.0]],"44":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,1.0,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],"45":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.5,1.0,1.0,1.0]],"46":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.5,1.0,1.0,1.0]],"47":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,0.5,1.0,1.0]],"48":[[0.0,0.0,0.0,0.5,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,1.0]],"49":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0]],"50":[[0.5,0.0,0.0,1.0,1.0,1.0],[0.0,0.5,0.0,0.5,1.0,1.0]],"51":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.0,1.0,1.0,1.0]],"52":[[0.0625,0.0,0.0625,0.9375,0.875,0.9375]],"53":[[0.0625,0.0,0.0625,1.0,0.875,0.9375]],"54":[[0.0,0.0,0.0625,0.9375,0.875,0.9375]],"55":[[0.0625,0.0,0.0,0.9375,0.875,0.9375]],"56":[[0.0625,0.0,0.0625,0.9375,0.875,1.0]],"57":[[0.0,0.0,0.0,1.0,0.9375,1.0]],"58":[[0.0,0.0,0.0,0.1875,1.0,1.0]],"59":[[0.0,0.0,0.8125,1.0,1.0,1.0]],"60":[[0.8125,0.0,0.0,1.0,1.0,1.0]],"61":[[0.0,0.0,0.0,1.0,1.0,0.1875]],"62":[[0.0,0.0,0.8125,1.0,1.0,1.0]],"63":[[0.0,0.0,0.0,1.0,1.0,0.1875]],"64":[[0.8125,0.0,0.0,1.0,1.0,1.0]],"65":[[0.0,0.0,0.0,0.1875,1.0,1.0]],"66":[[0.0,0.875,0.375,1.0,1.0,0.625]],"67":[[0.375,0.875,0.0,0.625,1.0,1.0]],"68":[[0.0,0.0,0.0,1.0,0.125,1.0]],"69":[[0.0,0.0,0.0,1.0,0.25,1.0]],"70":[[0.0,0.0,0.0,1.0,0.375,1.0]],"71":[[0.0,0.0,0.0,1.0,0.5,1.0]],"72":[[0.0,0.0,0.0,1.0,0.625,1.0]],"73":[[0.0,0.0,0.0,1.0,0.75,1.0]],"74":[[0.0,0.0,0.0,1.0,0.875,1.0]],"75":[[0.0625,0.0,0.0625,0.9375,0.9375,0.9375]],"76":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"77":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"78":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"79":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"80":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"81":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"82":[[0.0,0.0,0.375,1.0,1.5,0.625]],"83":[[0.375,0.0,0.375,1.0,1.5,0.625]],"84":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"85":[[0.375,0.0,0.0,0.625,1.5,1.0]],"86":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"87":[[0.375,0.0,0.0,0.625,1.5,0.625]],"88":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"89":[[0.375,0.0,0.375,0.625,1.5,1.0]],"90":[[0.0,0.0,0.375,0.625,1.5,0.625]],"91":[[0.375,0.0,0.375,0.625,1.5,0.625]],"92":[[0.0,0.0,0.0,1.0,0.875,1.0]],"93":[[0.0625,0.0,0.0625,0.9375,0.5,0.9375]],"94":[[0.1875,0.0,0.0625,0.9375,0.5,0.9375]],"95":[[0.3125,0.0,0.0625,0.9375,0.5,0.9375]],"96":[[0.4375,0.0,0.0625,0.9375,0.5,0.9375]],"97":[[0.5625,0.0,0.0625,0.9375,0.5,0.9375]],"98":[[0.6875,0.0,0.0625,0.9375,0.5,0.9375]],"99":[[0.8125,0.0,0.0625,0.9375,0.5,0.9375]],"100":[[0.0,0.0,0.0,1.0,0.125,1.0]],"101":[[0.0,0.0,0.8125,1.0,1.0,1.0]],"102":[[0.0,0.8125,0.0,1.0,1.0,1.0]],"103":[[0.0,0.0,0.0,1.0,0.1875,1.0]],"104":[[0.0,0.0,0.0,1.0,1.0,0.1875]],"105":[[0.8125,0.0,0.0,1.0,1.0,1.0]],"106":[[0.0,0.0,0.0,0.1875,1.0,1.0]],"107":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"108":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"109":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"110":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"111":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"112":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"113":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"114":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"115":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"116":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"117":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"118":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"119":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"120":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"121":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"122":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"123":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"124":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"125":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"126":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"127":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"128":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"129":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"130":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"131":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"132":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"133":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"134":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"135":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"136":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"137":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"138":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"139":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"140":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"141":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"142":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"143":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"144":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"145":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"146":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"147":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"148":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"149":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"150":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"151":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"152":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"153":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"154":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"155":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"156":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"157":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"158":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"159":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"160":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"161":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"162":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"163":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"164":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"165":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"166":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"167":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"168":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"169":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"170":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"171":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"172":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"173":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"174":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"175":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"176":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"177":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"178":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"179":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"180":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"181":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"182":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"183":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"184":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"185":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"186":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"187":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"188":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"189":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"190":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"191":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"192":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"193":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"194":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"195":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"196":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"197":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"198":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"199":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"200":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"201":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"202":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"203":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"204":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"205":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"206":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"207":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"208":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"209":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"210":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"211":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"212":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"213":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"214":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"215":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"216":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"217":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"218":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"219":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"220":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"221":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"222":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"223":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"224":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"225":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"226":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"227":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"228":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"229":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"230":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"231":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"232":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"233":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"234":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"235":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"236":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"237":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"238":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"239":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"240":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"241":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"242":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"243":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"244":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"245":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"246":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"247":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"248":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"249":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"250":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"251":[[0.0,0.40625,0.40625,1.0,0.59375,0.59375]],"252":[[0.40625,0.0,0.40625,0.59375,1.0,0.59375]],"253":[[0.40625,0.40625,0.0,0.59375,0.59375,1.0]],"254":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"255":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"256":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"257":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"258":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"259":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"260":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"261":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"262":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"263":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"264":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"265":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"266":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"267":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"268":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"269":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"270":[[0.0,0.0,0.375,1.0,1.5,0.625]],"271":[[0.375,0.0,0.0,0.625,1.5,1.0]],"272":[[0.0625,0.0,0.0625,0.9375,0.09375,0.9375]],"273":[[0.0,0.5,0.0,1.0,1.0,1.0]],"274":[[0.0,0.0,0.0,1.0,0.5,1.0]],"275":[[0.25,0.0,0.25,0.75,1.5,0.75]],"276":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"277":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"278":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"279":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"280":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"281":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"282":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"283":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"284":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"285":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"286":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"287":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"288":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"289":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"290":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"291":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"292":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"293":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"294":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"295":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"296":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"297":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"298":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"299":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"300":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"301":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"302":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"303":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"304":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"305":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"306":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"307":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"308":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"309":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"310":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"311":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"312":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"313":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"314":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"315":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"316":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"317":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"318":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"319":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"320":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"321":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"322":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"323":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"324":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"325":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"326":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"327":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"328":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"329":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"330":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"331":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"332":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"333":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"334":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"335":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"336":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"337":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"338":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"339":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"340":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"341":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"342":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"343":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"344":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"345":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"346":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"347":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"348":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"349":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"350":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"351":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"352":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"353":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"354":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"355":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"356":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"357":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"358":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"359":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"360":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"361":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"362":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"363":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"364":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"365":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"366":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"367":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"368":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"369":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"370":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"371":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"372":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"373":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"374":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"375":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"376":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"377":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"378":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"379":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"380":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"381":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"382":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"383":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"384":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"385":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"386":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"387":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"388":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"389":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"390":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"391":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"392":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"393":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"394":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"395":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"396":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"397":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"398":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"399":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"400":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"401":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"402":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"403":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"404":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"405":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"406":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"407":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"408":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"409":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"410":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"411":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"412":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"413":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"414":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"415":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"416":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"417":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"418":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"419":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"420":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"421":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"422":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"423":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"424":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"425":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"426":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"427":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"428":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"429":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"430":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"431":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"432":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"433":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"434":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"435":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"436":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"437":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"438":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"439":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"440":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"441":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"442":[[0.0,0.0,0.375,1.0,1.5,0.625]],"443":[[0.375,0.0,0.375,1.0,1.5,0.625]],"444":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"445":[[0.375,0.0,0.0,0.625,1.5,1.0]],"446":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"447":[[0.375,0.0,0.0,0.625,1.5,0.625]],"448":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"449":[[0.375,0.0,0.375,0.625,1.5,1.0]],"450":[[0.0,0.0,0.375,0.625,1.5,0.625]],"451":[[0.375,0.0,0.375,0.625,1.5,0.625]],"452":[[0.0,0.0,0.0,1.0,0.75,1.0]],"453":[[0.0625,0.0,0.0625,0.9375,0.125,0.9375],[0.4375,0.125,0.4375,0.5625,0.875,0.5625]],"454":[[0.0,0.0,0.0,0.125,1.0,0.25],[0.0,0.0,0.75,0.125,1.0,1.0],[0.125,0.0,0.0,0.25,1.0,0.125],[0.125,0.0,0.875,0.25,1.0,1.0],[0.75,0.0,0.0,1.0,1.0,0.125],[0.75,0.0,0.875,1.0,1.0,1.0],[0.875,0.0,0.125,1.0,1.0,0.25],[0.875,0.0,0.75,1.0,1.0,0.875],[0.0,0.1875,0.25,1.0,0.25,0.75],[0.125,0.1875,0.125,0.875,0.25,0.25],[0.125,0.1875,0.75,0.875,0.25,0.875],[0.25,0.1875,0.0,0.75,1.0,0.125],[0.25,0.1875,0.875,0.75,1.0,1.0],[0.0,0.25,0.25,0.125,1.0,0.75],[0.875,0.25,0.25,1.0,1.0,0.75]],"455":[[0.0,0.0,0.0,1.0,0.8125,1.0],[0.25,0.8125,0.25,0.75,1.0,0.75]],"456":[[0.0,0.0,0.0,1.0,0.8125,1.0]],"457":[[0.0625,0.0,0.0625,0.9375,1.0,0.9375]],"458":[[0.375,0.4375,0.0625,0.625,0.75,0.3125]],"459":[[0.375,0.4375,0.6875,0.625,0.75,0.9375]],"460":[[0.0625,0.4375,0.375,0.3125,0.75,0.625]],"461":[[0.6875,0.4375,0.375,0.9375,0.75,0.625]],"462":[[0.3125,0.3125,0.0625,0.6875,0.75,0.4375]],"463":[[0.3125,0.3125,0.5625,0.6875,0.75,0.9375]],"464":[[0.0625,0.3125,0.3125,0.4375,0.75,0.6875]],"465":[[0.5625,0.3125,0.3125,0.9375,0.75,0.6875]],"466":[[0.25,0.1875,0.0625,0.75,0.75,0.5625]],"467":[[0.25,0.1875,0.4375,0.75,0.75,0.9375]],"468":[[0.0625,0.1875,0.25,0.5625,0.75,0.75]],"469":[[0.4375,0.1875,0.25,0.9375,0.75,0.75]],"470":[[0.0625,0.0,0.0625,0.9375,0.875,0.9375]],"471":[[0.25,0.0,0.25,0.75,1.5,0.75]],"472":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"473":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"474":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"475":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"476":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"477":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"478":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"479":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"480":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"481":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"482":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"483":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"484":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"485":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"486":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"487":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"488":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"489":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"490":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"491":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"492":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"493":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"494":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"495":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"496":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"497":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"498":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"499":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"500":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"501":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"502":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"503":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"504":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"505":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"506":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"507":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"508":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"509":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"510":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"511":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"512":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"513":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"514":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"515":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"516":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"517":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"518":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"519":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"520":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"521":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"522":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"523":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"524":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"525":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"526":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"527":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"528":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"529":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"530":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"531":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"532":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"533":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"534":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"535":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"536":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"537":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"538":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"539":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"540":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"541":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"542":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"543":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"544":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"545":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"546":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"547":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"548":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"549":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"550":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"551":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"552":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"553":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"554":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"555":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"556":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"557":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"558":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"559":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"560":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"561":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"562":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"563":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"564":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"565":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"566":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"567":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"568":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"569":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"570":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"571":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"572":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"573":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"574":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"575":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"576":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"577":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"578":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"579":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"580":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"581":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"582":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"583":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"584":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"585":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"586":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"587":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"588":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"589":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"590":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"591":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"592":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"593":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"594":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"595":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"596":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"597":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"598":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"599":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"600":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"601":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"602":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"603":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"604":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"605":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"606":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"607":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"608":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"609":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"610":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"611":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"612":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"613":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"614":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"615":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"616":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"617":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"618":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"619":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"620":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"621":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"622":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"623":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"624":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"625":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"626":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"627":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"628":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"629":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"630":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"631":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"632":[[0.25,0.0,0.25,0.75,1.5,0.75]],"633":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"634":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"635":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"636":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"637":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"638":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"639":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"640":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"641":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"642":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"643":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"644":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"645":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"646":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"647":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"648":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"649":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"650":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"651":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"652":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"653":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"654":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"655":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"656":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"657":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"658":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"659":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"660":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"661":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"662":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"663":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"664":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"665":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"666":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"667":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"668":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"669":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"670":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"671":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"672":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"673":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"674":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"675":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"676":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"677":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"678":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"679":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"680":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"681":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"682":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"683":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"684":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"685":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"686":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"687":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"688":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"689":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"690":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"691":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"692":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"693":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"694":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"695":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"696":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"697":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"698":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"699":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"700":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"701":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"702":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"703":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"704":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"705":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"706":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"707":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"708":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"709":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"710":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"711":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"712":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"713":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"714":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"715":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"716":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"717":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"718":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"719":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"720":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"721":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"722":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"723":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"724":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"725":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"726":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"727":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"728":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"729":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"730":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"731":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"732":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"733":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"734":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"735":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"736":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"737":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"738":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"739":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"740":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"741":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"742":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"743":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"744":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"745":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"746":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"747":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"748":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"749":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"750":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"751":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"752":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"753":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"754":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"755":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"756":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"757":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"758":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"759":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"760":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"761":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"762":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"763":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"764":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"765":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"766":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"767":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"768":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"769":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"770":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"771":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"772":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"773":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"774":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"775":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"776":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"777":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"778":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"779":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"780":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"781":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"782":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"783":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"784":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"785":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"786":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"787":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"788":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"789":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"790":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"791":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"792":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"793":[[0.3125,0.0,0.3125,0.6875,0.375,0.6875]],"794":[[0.25,0.0,0.25,0.75,0.5,0.75]],"795":[[0.25,0.25,0.5,0.75,0.75,1.0]],"796":[[0.25,0.25,0.0,0.75,0.75,0.5]],"797":[[0.5,0.25,0.25,1.0,0.75,0.75]],"798":[[0.0,0.25,0.25,0.5,0.75,0.75]],"799":[[0.1875,0.0,0.1875,0.8125,0.5,0.8125]],"800":[[0.1875,0.25,0.5,0.8125,0.75,1.0]],"801":[[0.1875,0.25,0.0,0.8125,0.75,0.5]],"802":[[0.5,0.25,0.1875,1.0,0.75,0.8125]],"803":[[0.0,0.25,0.1875,0.5,0.75,0.8125]],"804":[[0.125,0.0,0.125,0.875,0.25,0.875],[0.25,0.25,0.1875,0.75,0.3125,0.8125],[0.375,0.3125,0.25,0.625,1.0,0.75],[0.1875,0.625,0.0,0.375,1.0,1.0],[0.375,0.625,0.0,0.8125,1.0,0.25],[0.375,0.625,0.75,0.8125,1.0,1.0],[0.625,0.625,0.25,0.8125,1.0,0.75]],"805":[[0.125,0.0,0.125,0.875,0.25,0.875],[0.1875,0.25,0.25,0.8125,0.3125,0.75],[0.25,0.3125,0.375,0.75,1.0,0.625],[0.0,0.625,0.1875,0.25,1.0,0.8125],[0.25,0.625,0.1875,1.0,1.0,0.375],[0.25,0.625,0.625,1.0,1.0,0.8125],[0.75,0.625,0.375,1.0,1.0,0.625]],"806":[[0.0,0.0,0.0,1.0,0.375,1.0]],"807":[[0.375,0.0,0.375,0.625,0.6875,0.625],[0.25,0.25,0.25,0.375,0.6875,0.75],[0.375,0.25,0.25,0.75,0.6875,0.375],[0.375,0.25,0.625,0.75,0.6875,0.75],[0.625,0.25,0.375,0.75,0.6875,0.625],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"808":[[0.25,0.25,0.25,0.75,0.6875,0.75],[0.375,0.25,0.0,0.625,0.5,0.25],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"809":[[0.25,0.25,0.25,0.75,0.6875,0.75],[0.375,0.25,0.75,0.625,0.5,1.0],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"810":[[0.0,0.25,0.375,0.75,0.5,0.625],[0.25,0.25,0.25,0.75,0.6875,0.375],[0.25,0.25,0.625,0.75,0.6875,0.75],[0.25,0.5,0.375,0.75,0.6875,0.625],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"811":[[0.25,0.25,0.25,0.75,0.6875,0.75],[0.75,0.25,0.375,1.0,0.5,0.625],[0.0,0.625,0.0,0.25,0.6875,1.0],[0.25,0.625,0.0,1.0,0.6875,0.25],[0.25,0.625,0.75,1.0,0.6875,1.0],[0.75,0.625,0.25,1.0,0.6875,0.75],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],"812":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"813":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"814":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"815":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"816":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"817":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"818":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"819":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"820":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"821":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"822":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"823":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"824":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"825":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"826":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"827":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"828":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"829":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"830":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"831":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"832":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"833":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"834":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"835":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"836":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"837":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"838":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"839":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"840":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"841":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"842":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"843":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"844":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"845":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"846":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"847":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"848":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"849":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"850":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"851":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"852":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"853":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"854":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"855":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"856":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"857":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"858":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"859":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"860":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"861":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"862":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"863":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"864":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"865":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"866":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"867":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"868":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"869":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"870":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"871":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"872":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"873":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"874":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"875":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"876":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"877":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"878":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"879":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"880":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"881":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"882":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"883":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"884":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"885":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"886":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"887":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"888":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"889":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"890":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"891":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"892":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"893":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"894":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"895":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"896":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"897":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"898":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"899":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"900":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"901":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"902":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"903":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"904":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"905":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"906":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"907":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"908":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"909":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"910":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"911":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"912":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"913":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"914":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"915":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"916":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"917":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"918":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"919":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"920":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"921":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"922":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"923":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"924":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"925":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"926":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"927":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"928":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"929":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"930":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"931":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"932":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"933":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"934":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"935":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"936":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"937":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"938":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"939":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"940":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"941":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"942":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"943":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"944":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"945":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"946":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"947":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"948":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"949":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"950":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"951":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"952":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"953":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"954":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"955":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"956":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"957":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"958":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"959":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"960":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"961":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"962":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"963":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"964":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"965":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"966":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"967":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"968":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"969":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"970":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"971":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"972":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"973":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"974":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"975":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"976":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"977":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"978":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"979":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"980":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"981":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"982":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"983":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"984":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"985":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"986":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"987":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"988":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"989":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"990":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"991":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"992":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"993":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"994":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"995":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"996":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"997":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"998":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"999":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1000":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1001":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1002":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1003":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1004":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1005":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1006":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1007":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1008":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1009":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1010":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"1011":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"1012":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1013":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"1014":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1015":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1016":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1017":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1018":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1019":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1020":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1021":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1022":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1023":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1024":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1025":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1026":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"1027":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"1028":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1029":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"1030":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1031":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1032":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1033":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1034":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1035":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1036":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1037":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1038":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1039":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1040":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1041":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1042":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"1043":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"1044":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1045":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"1046":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1047":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1048":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1049":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1050":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1051":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1052":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1053":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1054":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1055":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1056":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1057":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],"1058":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],"1059":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],"1060":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1061":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],"1062":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],"1063":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],"1064":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],"1065":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],"1066":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],"1067":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],"1068":[[0.0,0.0,0.0,1.0,0.0625,1.0]],"1069":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1070":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1071":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1072":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1073":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1074":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1075":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1076":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1077":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1078":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1079":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1080":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1081":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1082":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1083":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1084":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1085":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1086":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1087":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1088":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1089":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1090":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1091":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1092":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1093":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1094":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1095":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1096":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1097":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1098":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1099":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1100":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1101":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1102":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1103":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1104":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1105":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1106":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1107":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1108":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1109":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1110":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1111":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1112":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1113":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1114":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1115":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1116":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1117":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1118":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1119":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1120":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1121":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1122":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1123":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1124":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1125":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1126":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1127":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1128":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1129":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1130":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1131":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1132":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1133":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1134":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1135":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1136":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1137":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1138":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1139":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1140":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1141":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1142":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1143":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1144":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1145":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1146":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1147":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1148":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1149":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1150":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1151":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1152":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1153":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1154":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1155":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1156":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1157":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1158":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1159":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1160":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1161":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1162":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1163":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1164":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1165":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1166":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1167":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1168":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1169":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1170":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1171":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1172":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1173":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1174":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1175":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1176":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1177":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1178":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1179":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1180":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1181":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1182":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1183":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1184":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1185":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1186":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1187":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1188":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1189":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1190":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1191":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1192":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1193":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1194":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1195":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1196":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1197":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1198":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1199":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1200":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"1201":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1202":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"1203":[[0.0,0.0,0.375,1.0,1.5,0.625]],"1204":[[0.375,0.0,0.375,1.0,1.5,0.625]],"1205":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"1206":[[0.375,0.0,0.0,0.625,1.5,1.0]],"1207":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"1208":[[0.375,0.0,0.0,0.625,1.5,0.625]],"1209":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"1210":[[0.375,0.0,0.375,0.625,1.5,1.0]],"1211":[[0.0,0.0,0.375,0.625,1.5,0.625]],"1212":[[0.375,0.0,0.375,0.625,1.5,0.625]],"1213":[[0.375,0.375,0.0,0.625,0.625,1.0]],"1214":[[0.0,0.375,0.375,1.0,0.625,0.625]],"1215":[[0.375,0.0,0.375,0.625,1.0,0.625]],"1216":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1217":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1218":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1219":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1220":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1221":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1222":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1223":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1224":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1225":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1226":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1227":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1228":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1229":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1230":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1231":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1232":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1233":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1234":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1235":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1236":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1237":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1238":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1239":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1240":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1241":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1242":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1243":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1244":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125]],"1245":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125]],"1246":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.0,0.1875,0.1875,0.1875,0.8125,0.8125]],"1247":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125]],"1248":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1249":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1250":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1251":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1252":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1253":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1254":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1255":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1256":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1257":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1258":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1259":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],"1260":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1261":[[0.1875,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1262":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125]],"1263":[[0.1875,0.1875,0.1875,1.0,0.8125,0.8125]],"1264":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1265":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1266":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1267":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0]],"1268":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1269":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1270":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],"1271":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125]],"1272":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1273":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1274":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],"1275":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0]],"1276":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],"1277":[[0.1875,0.1875,0.1875,0.8125,1.0,0.8125]],"1278":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125]],"1279":[[0.1875,0.1875,0.1875,0.8125,0.8125,0.8125]],"1280":[[0.3125,-0.0625,0.3125,0.6875,0.1875,0.6875]],"1281":[[0.1875,-0.0625,0.1875,0.8125,0.3125,0.8125]],"1282":[[0.0,0.0,0.0,1.0,0.9375,1.0]],"1283":[[0.1875,0.0,0.1875,0.75,0.4375,0.75]],"1284":[[0.0625,0.0,0.0625,0.9375,0.4375,0.9375]],"1285":[[0.0625,0.0,0.125,0.9375,1.0,0.875]],"1286":[[0.1875,0.0,0.1875,0.8125,0.625,0.8125]],"1287":[[0.375,0.0,0.375,0.625,0.375,0.625]],"1288":[[0.1875,0.0,0.1875,0.8125,0.375,0.8125]],"1289":[[0.125,0.0,0.125,0.875,0.375,0.875]],"1290":[[0.125,0.0,0.125,0.875,0.4375,0.875]],"1291":[[0.3125,0.3125,0.3125,0.6875,0.6875,0.6875]],"1292":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1293":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1294":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1295":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1296":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1297":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1298":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1299":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1300":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1301":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1302":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1303":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],"1304":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1305":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1306":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1307":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1308":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1309":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1310":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1311":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1312":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1313":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1314":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1315":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1316":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1317":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1318":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1319":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1320":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1321":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1322":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1323":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1324":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1325":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1326":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1327":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1328":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1329":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1330":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1331":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1332":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1333":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1334":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1335":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1336":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1337":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1338":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1339":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1340":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1341":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1342":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1343":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1344":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1345":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1346":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1347":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1348":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1349":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1350":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1351":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1352":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1353":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1354":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1355":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1356":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1357":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1358":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1359":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1360":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1361":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1362":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1363":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1364":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1365":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1366":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1367":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1368":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1369":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1370":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1371":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1372":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1373":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1374":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1375":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1376":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1377":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1378":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1379":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1380":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1381":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1382":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1383":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1384":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1385":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1386":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1387":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1388":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1389":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1390":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1391":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1392":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1393":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1394":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1395":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1396":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1397":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1398":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1399":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1400":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1401":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1402":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1403":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1404":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1405":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1406":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1407":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1408":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1409":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1410":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1411":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1412":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1413":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1414":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1415":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1416":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1417":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1418":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1419":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1420":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1421":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1422":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1423":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1424":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1425":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1426":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1427":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1428":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1429":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1430":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1431":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1432":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1433":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1434":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1435":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1436":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1437":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1438":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1439":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1440":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1441":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1442":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1443":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1444":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1445":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1446":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1447":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1448":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1449":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1450":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1451":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1452":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1453":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1454":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1455":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1456":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1457":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1458":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1459":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1460":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1461":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1462":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1463":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1464":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1465":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1466":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1467":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1468":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1469":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1470":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1471":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1472":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1473":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1474":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1475":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1476":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1477":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1478":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1479":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1480":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1481":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1482":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1483":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1484":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1485":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1486":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1487":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1488":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1489":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1490":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1491":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1492":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1493":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1494":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1495":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1496":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1497":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1498":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1499":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1500":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1501":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1502":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1503":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1504":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1505":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1506":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1507":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1508":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1509":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1510":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1511":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1512":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1513":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1514":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1515":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1516":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1517":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1518":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1519":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1520":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1521":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1522":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1523":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1524":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1525":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1526":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1527":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1528":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1529":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1530":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1531":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1532":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1533":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1534":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1535":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1536":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1537":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1538":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1539":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1540":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1541":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1542":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1543":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1544":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1545":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1546":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1547":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1548":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1549":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1550":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1551":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1552":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1553":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1554":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1555":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1556":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1557":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1558":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1559":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1560":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1561":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1562":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1563":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1564":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1565":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1566":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1567":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1568":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1569":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1570":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1571":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1572":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1573":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1574":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1575":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1576":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1577":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1578":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1579":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1580":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1581":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1582":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1583":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1584":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1585":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1586":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1587":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1588":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1589":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1590":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1591":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1592":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1593":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1594":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1595":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1596":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1597":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1598":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1599":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1600":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1601":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1602":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1603":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1604":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1605":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1606":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1607":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1608":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1609":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1610":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1611":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1612":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1613":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1614":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1615":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1616":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1617":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1618":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1619":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1620":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1621":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1622":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1623":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1624":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1625":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1626":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1627":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1628":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1629":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1630":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1631":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1632":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1633":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1634":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1635":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1636":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1637":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1638":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1639":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1640":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1641":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1642":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1643":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1644":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1645":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1646":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1647":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1648":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1649":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1650":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1651":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1652":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1653":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1654":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1655":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1656":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1657":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1658":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1659":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1660":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1661":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1662":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1663":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1664":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1665":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1666":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1667":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1668":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1669":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1670":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1671":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1672":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1673":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1674":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1675":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1676":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1677":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1678":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1679":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1680":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1681":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1682":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1683":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1684":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1685":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1686":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1687":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1688":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1689":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1690":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1691":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1692":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1693":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1694":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1695":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1696":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1697":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1698":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1699":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1700":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1701":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1702":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1703":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1704":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1705":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1706":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1707":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1708":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1709":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1710":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1711":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1712":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1713":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1714":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1715":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1716":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1717":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1718":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1719":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1720":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1721":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1722":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1723":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1724":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1725":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1726":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1727":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1728":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1729":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1730":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1731":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1732":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1733":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1734":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1735":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1736":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1737":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1738":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1739":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1740":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1741":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1742":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1743":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1744":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1745":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1746":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1747":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1748":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1749":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1750":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1751":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1752":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1753":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1754":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1755":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1756":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1757":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1758":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1759":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1760":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1761":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1762":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1763":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1764":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1765":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1766":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1767":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1768":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1769":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1770":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1771":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1772":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1773":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1774":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1775":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1776":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1777":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1778":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1779":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1780":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1781":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1782":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1783":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1784":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1785":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1786":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1787":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1788":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1789":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1790":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1791":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1792":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1793":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1794":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1795":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1796":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1797":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1798":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1799":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1800":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1801":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1802":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1803":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1804":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1805":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1806":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1807":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1808":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1809":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1810":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1811":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1812":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1813":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1814":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1815":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1816":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1817":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1818":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1819":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1820":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1821":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1822":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1823":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1824":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1825":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1826":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1827":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1828":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1829":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1830":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1831":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1832":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1833":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1834":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1835":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1836":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1837":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1838":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1839":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1840":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1841":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1842":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1843":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1844":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1845":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1846":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1847":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1848":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1849":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1850":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1851":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1852":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1853":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1854":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1855":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1856":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1857":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1858":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1859":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1860":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1861":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1862":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1863":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1864":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1865":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1866":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1867":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1868":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1869":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1870":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1871":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1872":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1873":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1874":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1875":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1876":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1877":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1878":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1879":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1880":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1881":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1882":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1883":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1884":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1885":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1886":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1887":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1888":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1889":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1890":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1891":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1892":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1893":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1894":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1895":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1896":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1897":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"1898":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1899":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"1900":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1901":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1902":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1903":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1904":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1905":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1906":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1907":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1908":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1909":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1910":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1911":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1912":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1913":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1914":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1915":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1916":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1917":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1918":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1919":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1920":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1921":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1922":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1923":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1924":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1925":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1926":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1927":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1928":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1929":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1930":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1931":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1932":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1933":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1934":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1935":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1936":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1937":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1938":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1939":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1940":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1941":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1942":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"1943":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1944":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1945":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"1946":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1947":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1948":[[0.25,0.0,0.25,0.75,1.5,0.75]],"1949":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1950":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"1951":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1952":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"1953":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1954":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1955":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1956":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1957":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1958":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1959":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1960":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1961":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1962":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"1963":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1964":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1965":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1966":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1967":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1968":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1969":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1970":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1971":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1972":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1973":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1974":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1975":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1976":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1977":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1978":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1979":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1980":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1981":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1982":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1983":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1984":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1985":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"1986":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"1987":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1988":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"1989":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1990":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1991":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1992":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1993":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1994":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"1995":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1996":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1997":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"1998":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"1999":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2000":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2001":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2002":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2003":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2004":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2005":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2006":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2007":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2008":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2009":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2010":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2011":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2012":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2013":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2014":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2015":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2016":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2017":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2018":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2019":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2020":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2021":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2022":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2023":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2024":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2025":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2026":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2027":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2028":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2029":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2030":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2031":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2032":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2033":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2034":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2035":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2036":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2037":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2038":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2039":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2040":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2041":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2042":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2043":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2044":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2045":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2046":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2047":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2048":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2049":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2050":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2051":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2052":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2053":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2054":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2055":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2056":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2057":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2058":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2059":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2060":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2061":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2062":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2063":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2064":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2065":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2066":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2067":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2068":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2069":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2070":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2071":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2072":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2073":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2074":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2075":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2076":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2077":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2078":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2079":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2080":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2081":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2082":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2083":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2084":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2085":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2086":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2087":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2088":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2089":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2090":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2091":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2092":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2093":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2094":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2095":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2096":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2097":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2098":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2099":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2100":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2101":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2102":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2103":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2104":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2105":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2106":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2107":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2108":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2109":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2110":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2111":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2112":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2113":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2114":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2115":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2116":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2117":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2118":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2119":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2120":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2121":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2122":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2123":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2124":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2125":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2126":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2127":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2128":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2129":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2130":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2131":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2132":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2133":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2134":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2135":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2136":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2137":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2138":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2139":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2140":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2141":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2142":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2143":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2144":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2145":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2146":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2147":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2148":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2149":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2150":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2151":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2152":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2153":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2154":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2155":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2156":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2157":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2158":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2159":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2160":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2161":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2162":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2163":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2164":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2165":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2166":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2167":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2168":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2169":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2170":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2171":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2172":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2173":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2174":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2175":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2176":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2177":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2178":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2179":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2180":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2181":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2182":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2183":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2184":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2185":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2186":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2187":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2188":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2189":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2190":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2191":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2192":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2193":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2194":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2195":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2196":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2197":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2198":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2199":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2200":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2201":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2202":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2203":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2204":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2205":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2206":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2207":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2208":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2209":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2210":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2211":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2212":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2213":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2214":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2215":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2216":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2217":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2218":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2219":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2220":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2221":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2222":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2223":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2224":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2225":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2226":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2227":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2228":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2229":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2230":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2231":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2232":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2233":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2234":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2235":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2236":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2237":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2238":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2239":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2240":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2241":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2242":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2243":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2244":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2245":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2246":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2247":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2248":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2249":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2250":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2251":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2252":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2253":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2254":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2255":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2256":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2257":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2258":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2259":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2260":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2261":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2262":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2263":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2264":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2265":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2266":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2267":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2268":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2269":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2270":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2271":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2272":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2273":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2274":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2275":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2276":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2277":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2278":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2279":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2280":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2281":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2282":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2283":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2284":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2285":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2286":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2287":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2288":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2289":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2290":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2291":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2292":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2293":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2294":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2295":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2296":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2297":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2298":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2299":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2300":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2301":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2302":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2303":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2304":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2305":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2306":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2307":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2308":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2309":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2310":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2311":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2312":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2313":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2314":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2315":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2316":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2317":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2318":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2319":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2320":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2321":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2322":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2323":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2324":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2325":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2326":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2327":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2328":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2329":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2330":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2331":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2332":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2333":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2334":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2335":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2336":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2337":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2338":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2339":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2340":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2341":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2342":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2343":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2344":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2345":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2346":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2347":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2348":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2349":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2350":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2351":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2352":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2353":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2354":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2355":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2356":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2357":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2358":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2359":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2360":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2361":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2362":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2363":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2364":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2365":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2366":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2367":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2368":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2369":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2370":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2371":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2372":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2373":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2374":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2375":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2376":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2377":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2378":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2379":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2380":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2381":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2382":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2383":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2384":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2385":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2386":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2387":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2388":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2389":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2390":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2391":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2392":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2393":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2394":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2395":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2396":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2397":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2398":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2399":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2400":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2401":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2402":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2403":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2404":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2405":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2406":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2407":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2408":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2409":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2410":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2411":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2412":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2413":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2414":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2415":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2416":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2417":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2418":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2419":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2420":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2421":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2422":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2423":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2424":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2425":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2426":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2427":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2428":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2429":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2430":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2431":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2432":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2433":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2434":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2435":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2436":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2437":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2438":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2439":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2440":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2441":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2442":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2443":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2444":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2445":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2446":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2447":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2448":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2449":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2450":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2451":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2452":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2453":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2454":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2455":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2456":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2457":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2458":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2459":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2460":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2461":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2462":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2463":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2464":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2465":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2466":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2467":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2468":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2469":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2470":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2471":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2472":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2473":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2474":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2475":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2476":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2477":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2478":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2479":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2480":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2481":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2482":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2483":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2484":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2485":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2486":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2487":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2488":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2489":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2490":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2491":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2492":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2493":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2494":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2495":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2496":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2497":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2498":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2499":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2500":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2501":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2502":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2503":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2504":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2505":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2506":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2507":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2508":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2509":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2510":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2511":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2512":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2513":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2514":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2515":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2516":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2517":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2518":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2519":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2520":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2521":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2522":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2523":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2524":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2525":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2526":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2527":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2528":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2529":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2530":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2531":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2532":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2533":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2534":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2535":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2536":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2537":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2538":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2539":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2540":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2541":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2542":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2543":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2544":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2545":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2546":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2547":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2548":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2549":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2550":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2551":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2552":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2553":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2554":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2555":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2556":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2557":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2558":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2559":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2560":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2561":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2562":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2563":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2564":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2565":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2566":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2567":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2568":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2569":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2570":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2571":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2572":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2573":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2574":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2575":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2576":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2577":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2578":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2579":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2580":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2581":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2582":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2583":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2584":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2585":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2586":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2587":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2588":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2589":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2590":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2591":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2592":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2593":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2594":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2595":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2596":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2597":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2598":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2599":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2600":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2601":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2602":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2603":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2604":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2605":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2606":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2607":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2608":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2609":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2610":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2611":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2612":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2613":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2614":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2615":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2616":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2617":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2618":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2619":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2620":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2621":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2622":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2623":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2624":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2625":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2626":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2627":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2628":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2629":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2630":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2631":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2632":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2633":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2634":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2635":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2636":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2637":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2638":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2639":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2640":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2641":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2642":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2643":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2644":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2645":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2646":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2647":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2648":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2649":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2650":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2651":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2652":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2653":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2654":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2655":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2656":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2657":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2658":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2659":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2660":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2661":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2662":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2663":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2664":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2665":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2666":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2667":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2668":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2669":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2670":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2671":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2672":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2673":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2674":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2675":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2676":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2677":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2678":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2679":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2680":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2681":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2682":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2683":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2684":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2685":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2686":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2687":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2688":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2689":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2690":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2691":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2692":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2693":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2694":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2695":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2696":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2697":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2698":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2699":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2700":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2701":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2702":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2703":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2704":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2705":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2706":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2707":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2708":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2709":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2710":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2711":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2712":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2713":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2714":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2715":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2716":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2717":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2718":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2719":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2720":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2721":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2722":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2723":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2724":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2725":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2726":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2727":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2728":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2729":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2730":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2731":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2732":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2733":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2734":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2735":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2736":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2737":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2738":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2739":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2740":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2741":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2742":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2743":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2744":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2745":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2746":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2747":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2748":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2749":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2750":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2751":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2752":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2753":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2754":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2755":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2756":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2757":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2758":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2759":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2760":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2761":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2762":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2763":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2764":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2765":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2766":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2767":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2768":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2769":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2770":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2771":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2772":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2773":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2774":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2775":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2776":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2777":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2778":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2779":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2780":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2781":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2782":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2783":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2784":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2785":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2786":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2787":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2788":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2789":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2790":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2791":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2792":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2793":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2794":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2795":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2796":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2797":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2798":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2799":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2800":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2801":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2802":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2803":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2804":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2805":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2806":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2807":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2808":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2809":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2810":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2811":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2812":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2813":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2814":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2815":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2816":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2817":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2818":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2819":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2820":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2821":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2822":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2823":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2824":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2825":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2826":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2827":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2828":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2829":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2830":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2831":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2832":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2833":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2834":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2835":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2836":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2837":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2838":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2839":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2840":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2841":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2842":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2843":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2844":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2845":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2846":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2847":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2848":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2849":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2850":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2851":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2852":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2853":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2854":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2855":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2856":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2857":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2858":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2859":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2860":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2861":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2862":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2863":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2864":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2865":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2866":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2867":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2868":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2869":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2870":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2871":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2872":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2873":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2874":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2875":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2876":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2877":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2878":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2879":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2880":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2881":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2882":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2883":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2884":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2885":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2886":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2887":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2888":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2889":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2890":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2891":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2892":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2893":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2894":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2895":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2896":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2897":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2898":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2899":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2900":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2901":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2902":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2903":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2904":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2905":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2906":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2907":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2908":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2909":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2910":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2911":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2912":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2913":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2914":[[0.25,0.0,0.25,0.75,1.5,0.75]],"2915":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2916":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2917":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2918":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"2919":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2920":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2921":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2922":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2923":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2924":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2925":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2926":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2927":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2928":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"2929":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2930":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2931":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2932":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2933":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2934":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2935":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2936":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2937":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2938":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2939":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2940":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2941":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2942":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2943":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2944":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2945":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2946":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2947":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2948":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2949":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2950":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2951":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2952":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"2953":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2954":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2955":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2956":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2957":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2958":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2959":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2960":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2961":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2962":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2963":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2964":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"2965":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2966":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2967":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2968":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2969":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"2970":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"2971":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2972":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"2973":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2974":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2975":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2976":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2977":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2978":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2979":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2980":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2981":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2982":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2983":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2984":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2985":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2986":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2987":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"2988":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2989":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2990":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"2991":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2992":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2993":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2994":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"2995":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2996":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"2997":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"2998":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"2999":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3000":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3001":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3002":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3003":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3004":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3005":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3006":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3007":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3008":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3009":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3010":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3011":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3012":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3013":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3014":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3015":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3016":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3017":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3018":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3019":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3020":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3021":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3022":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3023":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3024":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3025":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3026":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3027":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3028":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3029":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3030":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3031":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3032":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3033":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3034":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3035":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3036":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3037":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3038":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3039":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3040":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3041":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3042":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3043":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3044":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3045":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3046":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3047":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3048":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3049":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3050":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3051":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3052":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3053":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3054":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3055":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3056":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3057":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3058":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3059":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3060":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3061":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3062":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3063":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3064":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3065":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3066":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3067":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3068":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3069":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3070":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3071":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3072":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3073":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3074":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3075":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3076":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3077":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3078":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3079":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3080":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3081":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3082":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3083":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3084":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3085":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3086":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3087":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3088":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3089":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3090":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3091":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3092":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3093":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3094":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3095":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3096":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3097":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3098":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3099":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3100":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3101":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3102":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3103":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3104":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3105":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3106":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3107":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3108":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3109":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3110":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3111":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3112":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3113":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3114":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3115":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3116":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3117":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3118":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3119":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3120":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3121":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3122":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3123":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3124":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3125":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3126":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3127":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3128":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3129":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3130":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3131":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3132":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3133":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3134":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3135":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3136":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3137":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3138":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3139":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3140":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3141":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3142":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3143":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3144":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3145":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3146":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3147":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3148":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3149":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3150":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3151":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3152":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3153":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3154":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3155":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3156":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3157":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3158":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3159":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3160":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3161":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3162":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3163":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3164":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3165":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3166":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3167":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3168":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3169":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3170":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3171":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3172":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3173":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3174":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3175":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3176":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3177":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3178":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3179":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3180":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3181":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3182":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3183":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3184":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3185":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3186":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3187":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3188":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3189":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3190":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3191":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3192":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3193":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3194":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3195":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3196":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3197":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3198":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3199":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3200":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3201":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3202":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3203":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3204":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3205":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3206":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3207":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3208":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3209":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3210":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3211":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3212":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3213":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3214":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3215":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3216":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3217":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3218":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3219":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3220":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3221":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3222":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3223":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3224":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3225":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3226":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3227":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3228":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3229":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3230":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3231":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3232":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3233":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3234":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3235":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3236":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3237":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3238":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3239":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3240":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3241":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3242":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3243":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3244":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3245":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3246":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3247":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3248":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3249":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3250":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3251":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3252":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3253":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3254":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3255":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3256":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3257":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3258":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3259":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3260":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3261":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3262":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3263":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3264":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3265":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3266":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3267":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3268":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3269":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3270":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3271":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3272":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3273":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3274":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3275":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3276":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3277":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3278":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3279":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3280":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3281":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3282":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3283":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3284":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3285":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3286":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3287":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3288":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3289":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3290":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3291":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3292":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3293":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3294":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3295":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3296":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3297":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3298":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3299":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3300":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3301":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3302":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3303":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3304":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3305":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3306":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3307":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3308":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3309":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3310":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3311":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3312":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3313":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3314":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3315":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3316":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3317":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3318":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3319":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3320":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3321":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3322":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3323":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3324":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3325":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3326":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3327":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3328":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3329":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3330":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3331":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3332":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3333":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3334":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3335":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3336":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3337":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3338":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3339":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3340":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3341":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3342":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3343":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3344":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3345":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3346":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3347":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3348":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3349":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3350":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3351":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3352":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3353":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3354":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3355":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3356":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3357":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3358":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3359":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3360":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3361":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3362":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3363":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3364":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3365":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3366":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3367":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3368":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3369":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3370":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3371":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3372":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3373":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3374":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3375":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3376":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3377":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3378":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3379":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3380":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3381":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3382":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3383":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3384":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3385":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3386":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3387":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3388":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3389":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3390":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3391":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3392":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3393":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3394":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3395":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3396":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3397":[[0.0,0.0,0.0,0.125,1.0,0.125],[0.0,0.0,0.875,0.125,1.0,1.0],[0.875,0.0,0.0,1.0,1.0,0.125],[0.875,0.0,0.875,1.0,1.0,1.0],[0.0,0.875,0.125,1.0,1.0,0.875],[0.125,0.875,0.0,0.875,1.0,0.125],[0.125,0.875,0.875,0.875,1.0,1.0]],"3398":[[0.125,0.0,0.375,0.25,0.8125,0.625],[0.75,0.0,0.375,0.875,0.8125,0.625],[0.25,0.25,0.125,0.75,1.0,0.875],[0.125,0.4375,0.3125,0.25,0.8125,0.375],[0.125,0.4375,0.625,0.25,0.8125,0.6875],[0.75,0.4375,0.3125,0.875,0.8125,0.375],[0.75,0.4375,0.625,0.875,0.8125,0.6875]],"3399":[[0.125,0.0,0.375,0.25,0.8125,0.625],[0.75,0.0,0.375,0.875,0.8125,0.625],[0.25,0.25,0.125,0.75,1.0,0.875],[0.125,0.4375,0.3125,0.25,0.8125,0.375],[0.125,0.4375,0.625,0.25,0.8125,0.6875],[0.75,0.4375,0.3125,0.875,0.8125,0.375],[0.75,0.4375,0.625,0.875,0.8125,0.6875]],"3400":[[0.375,0.0,0.125,0.625,0.8125,0.25],[0.375,0.0,0.75,0.625,0.8125,0.875],[0.125,0.25,0.25,0.875,1.0,0.75],[0.3125,0.4375,0.125,0.375,0.8125,0.25],[0.3125,0.4375,0.75,0.375,0.8125,0.875],[0.625,0.4375,0.125,0.6875,0.8125,0.25],[0.625,0.4375,0.75,0.6875,0.8125,0.875]],"3401":[[0.375,0.0,0.125,0.625,0.8125,0.25],[0.375,0.0,0.75,0.625,0.8125,0.875],[0.125,0.25,0.25,0.875,1.0,0.75],[0.3125,0.4375,0.125,0.375,0.8125,0.25],[0.3125,0.4375,0.75,0.375,0.8125,0.875],[0.625,0.4375,0.125,0.6875,0.8125,0.25],[0.625,0.4375,0.75,0.6875,0.8125,0.875]],"3402":[[0.25,0.125,0.0,0.75,0.875,0.75],[0.125,0.3125,0.1875,0.25,0.6875,0.5625],[0.75,0.3125,0.1875,0.875,0.6875,0.5625],[0.125,0.375,0.5625,0.25,0.625,1.0],[0.75,0.375,0.5625,0.875,0.625,1.0]],"3403":[[0.25,0.125,0.25,0.75,0.875,1.0],[0.125,0.3125,0.4375,0.25,0.6875,0.8125],[0.75,0.3125,0.4375,0.875,0.6875,0.8125],[0.125,0.375,0.0,0.25,0.625,0.4375],[0.75,0.375,0.0,0.875,0.625,0.4375]],"3404":[[0.0,0.125,0.25,0.75,0.875,0.75],[0.1875,0.3125,0.125,0.5625,0.6875,0.25],[0.1875,0.3125,0.75,0.5625,0.6875,0.875],[0.5625,0.375,0.125,1.0,0.625,0.25],[0.5625,0.375,0.75,1.0,0.625,0.875]],"3405":[[0.25,0.125,0.25,1.0,0.875,0.75],[0.4375,0.3125,0.125,0.8125,0.6875,0.25],[0.4375,0.3125,0.75,0.8125,0.6875,0.875],[0.0,0.375,0.125,0.4375,0.625,0.25],[0.0,0.375,0.75,0.4375,0.625,0.875]],"3406":[[0.25,0.0,0.125,0.75,0.75,0.875],[0.125,0.1875,0.3125,0.25,0.5625,0.6875],[0.75,0.1875,0.3125,0.875,0.5625,0.6875],[0.125,0.5625,0.375,0.25,1.0,0.625],[0.75,0.5625,0.375,0.875,1.0,0.625]],"3407":[[0.25,0.0,0.125,0.75,0.75,0.875],[0.125,0.1875,0.3125,0.25,0.5625,0.6875],[0.75,0.1875,0.3125,0.875,0.5625,0.6875],[0.125,0.5625,0.375,0.25,1.0,0.625],[0.75,0.5625,0.375,0.875,1.0,0.625]],"3408":[[0.125,0.0,0.25,0.875,0.75,0.75],[0.3125,0.1875,0.125,0.6875,0.5625,0.25],[0.3125,0.1875,0.75,0.6875,0.5625,0.875],[0.375,0.5625,0.125,0.625,1.0,0.25],[0.375,0.5625,0.75,0.625,1.0,0.875]],"3409":[[0.125,0.0,0.25,0.875,0.75,0.75],[0.3125,0.1875,0.125,0.6875,0.5625,0.25],[0.3125,0.1875,0.75,0.6875,0.5625,0.875],[0.375,0.5625,0.125,0.625,1.0,0.25],[0.375,0.5625,0.75,0.625,1.0,0.875]],"3410":[[0.0,0.0,0.0,1.0,0.125,1.0],[0.25,0.125,0.25,0.75,0.875,0.75]],"3411":[[0.0,0.0,0.0,1.0,0.5625,1.0]],"3412":[[0.0,0.0,0.25,1.0,1.0,0.75]],"3413":[[0.25,0.0,0.0,0.75,1.0,1.0]],"3414":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.4375,0.5625,1.0,0.5625]],"3415":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.0,0.5625,0.9375,0.8125]],"3416":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.1875,0.5625,0.9375,1.0]],"3417":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.0,0.8125,0.4375,0.8125,0.9375,0.5625]],"3418":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.1875,0.8125,0.4375,1.0,0.9375,0.5625]],"3419":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.0,0.5625,0.9375,1.0]],"3420":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.0,0.8125,0.4375,1.0,0.9375,0.5625]],"3421":[[0.3125,0.0625,0.3125,0.6875,0.5,0.6875],[0.375,0.5,0.375,0.625,0.625,0.625]],"3422":[[0.3125,0.0,0.3125,0.6875,0.4375,0.6875],[0.375,0.4375,0.375,0.625,0.5625,0.625]],"3423":[[0.0,0.0,0.0,1.0,0.4375,1.0]],"3424":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"3425":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"3426":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"3427":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"3428":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"3429":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"3430":[[0.0,0.0,0.375,1.0,1.5,0.625]],"3431":[[0.375,0.0,0.375,1.0,1.5,0.625]],"3432":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"3433":[[0.375,0.0,0.0,0.625,1.5,1.0]],"3434":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"3435":[[0.375,0.0,0.0,0.625,1.5,0.625]],"3436":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"3437":[[0.375,0.0,0.375,0.625,1.5,1.0]],"3438":[[0.0,0.0,0.375,0.625,1.5,0.625]],"3439":[[0.375,0.0,0.375,0.625,1.5,0.625]],"3440":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"3441":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"3442":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"3443":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],"3444":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"3445":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],"3446":[[0.0,0.0,0.375,1.0,1.5,0.625]],"3447":[[0.375,0.0,0.375,1.0,1.5,0.625]],"3448":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],"3449":[[0.375,0.0,0.0,0.625,1.5,1.0]],"3450":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],"3451":[[0.375,0.0,0.0,0.625,1.5,0.625]],"3452":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],"3453":[[0.375,0.0,0.375,0.625,1.5,1.0]],"3454":[[0.0,0.0,0.375,0.625,1.5,0.625]],"3455":[[0.375,0.0,0.375,0.625,1.5,0.625]],"3456":[[0.0,0.0,0.0,1.0,0.125,1.0],[0.0,0.125,0.0,0.125,1.0,1.0],[0.125,0.125,0.0,1.0,1.0,0.125],[0.125,0.125,0.875,1.0,1.0,1.0],[0.875,0.125,0.125,1.0,1.0,0.875]],"3457":[[0.0625,0.0,0.0625,0.9375,0.9375,0.9375]],"3458":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3459":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3460":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3461":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3462":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3463":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3464":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3465":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3466":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3467":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3468":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3469":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3470":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3471":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3472":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3473":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3474":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3475":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3476":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3477":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3478":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3479":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3480":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3481":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3482":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3483":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3484":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3485":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3486":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3487":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3488":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3489":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3490":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3491":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3492":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3493":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3494":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3495":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3496":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3497":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3498":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3499":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3500":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3501":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3502":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3503":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3504":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3505":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3506":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3507":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3508":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3509":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3510":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3511":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3512":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3513":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3514":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3515":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3516":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3517":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3518":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3519":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3520":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3521":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3522":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3523":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3524":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3525":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3526":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3527":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3528":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3529":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3530":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3531":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3532":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3533":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3534":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3535":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3536":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3537":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3538":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3539":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3540":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3541":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3542":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3543":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3544":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3545":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3546":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3547":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3548":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3549":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3550":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3551":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3552":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3553":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3554":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3555":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3556":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3557":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3558":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3559":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3560":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3561":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3562":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3563":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3564":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3565":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3566":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3567":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3568":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3569":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3570":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3571":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3572":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3573":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3574":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3575":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3576":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3577":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3578":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3579":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3580":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3581":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3582":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3583":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3584":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3585":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3586":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3587":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3588":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3589":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3590":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3591":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3592":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3593":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3594":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3595":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3596":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3597":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3598":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3599":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3600":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3601":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3602":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3603":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3604":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3605":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3606":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3607":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3608":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3609":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3610":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3611":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3612":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3613":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3614":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3615":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3616":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3617":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3618":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3619":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3620":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3621":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3622":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3623":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3624":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3625":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3626":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3627":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3628":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3629":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3630":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3631":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3632":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3633":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3634":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3635":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3636":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3637":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3638":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3639":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3640":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3641":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3642":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3643":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3644":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3645":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3646":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3647":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3648":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3649":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3650":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3651":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3652":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3653":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3654":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3655":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3656":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3657":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3658":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3659":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3660":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3661":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3662":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3663":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3664":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3665":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3666":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3667":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3668":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3669":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3670":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3671":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3672":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3673":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3674":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3675":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3676":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3677":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3678":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3679":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3680":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3681":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3682":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3683":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3684":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3685":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3686":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3687":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3688":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3689":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3690":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3691":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3692":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3693":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3694":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3695":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3696":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3697":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3698":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3699":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3700":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3701":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3702":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3703":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3704":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3705":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3706":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3707":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3708":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3709":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3710":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3711":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3712":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3713":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3714":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3715":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3716":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3717":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3718":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3719":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3720":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3721":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3722":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3723":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3724":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3725":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3726":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3727":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3728":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3729":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3730":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3731":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3732":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3733":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3734":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3735":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3736":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3737":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3738":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3739":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3740":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3741":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3742":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3743":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3744":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3745":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3746":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3747":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3748":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3749":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3750":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3751":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3752":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3753":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3754":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3755":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3756":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3757":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3758":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3759":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3760":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3761":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3762":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3763":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3764":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3765":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3766":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3767":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3768":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3769":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3770":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3771":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3772":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3773":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3774":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3775":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3776":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3777":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3778":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3779":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3780":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3781":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3782":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3783":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3784":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3785":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3786":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3787":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3788":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3789":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3790":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3791":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3792":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3793":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3794":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3795":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3796":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3797":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3798":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3799":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3800":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3801":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3802":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3803":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3804":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3805":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3806":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3807":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3808":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3809":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3810":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3811":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3812":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3813":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3814":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3815":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3816":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3817":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3818":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3819":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3820":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3821":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3822":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3823":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3824":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3825":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3826":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3827":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3828":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3829":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3830":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3831":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3832":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3833":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3834":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3835":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3836":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3837":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3838":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3839":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3840":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3841":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3842":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3843":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3844":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3845":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3846":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3847":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3848":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3849":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3850":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3851":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3852":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3853":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3854":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3855":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3856":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3857":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3858":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3859":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3860":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3861":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3862":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3863":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3864":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3865":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3866":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3867":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3868":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3869":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3870":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3871":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3872":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3873":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3874":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3875":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3876":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3877":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3878":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3879":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3880":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3881":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3882":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3883":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3884":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3885":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3886":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3887":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3888":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3889":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3890":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"3891":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3892":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"3893":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3894":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3895":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3896":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3897":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3898":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3899":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3900":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3901":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3902":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3903":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3904":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3905":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3906":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3907":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3908":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3909":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3910":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3911":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3912":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3913":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3914":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3915":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3916":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3917":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3918":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3919":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3920":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3921":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3922":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3923":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3924":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3925":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3926":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3927":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3928":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3929":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3930":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3931":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3932":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3933":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3934":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3935":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"3936":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3937":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3938":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"3939":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3940":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3941":[[0.4375,0.0,0.4375,0.5625,0.375,0.5625]],"3942":[[0.3125,0.0,0.375,0.6875,0.375,0.5625]],"3943":[[0.3125,0.0,0.375,0.625,0.375,0.6875]],"3944":[[0.3125,0.0,0.3125,0.6875,0.375,0.625]],"3945":[[0.0625,0.0,0.0625,0.9375,0.5,0.9375],[0.4375,0.5,0.4375,0.5625,0.875,0.5625]],"3946":[[0.1875,0.1875,0.5625,0.8125,0.8125,1.0]],"3947":[[0.0,0.1875,0.1875,0.4375,0.8125,0.8125]],"3948":[[0.1875,0.1875,0.0,0.8125,0.8125,0.4375]],"3949":[[0.5625,0.1875,0.1875,1.0,0.8125,0.8125]],"3950":[[0.1875,0.0,0.1875,0.8125,0.4375,0.8125]],"3951":[[0.1875,0.5625,0.1875,0.8125,1.0,0.8125]],"3952":[[0.1875,0.1875,0.6875,0.8125,0.8125,1.0]],"3953":[[0.0,0.1875,0.1875,0.3125,0.8125,0.8125]],"3954":[[0.1875,0.1875,0.0,0.8125,0.8125,0.3125]],"3955":[[0.6875,0.1875,0.1875,1.0,0.8125,0.8125]],"3956":[[0.1875,0.0,0.1875,0.8125,0.3125,0.8125]],"3957":[[0.1875,0.6875,0.1875,0.8125,1.0,0.8125]],"3958":[[0.1875,0.1875,0.75,0.8125,0.8125,1.0]],"3959":[[0.0,0.1875,0.1875,0.25,0.8125,0.8125]],"3960":[[0.1875,0.1875,0.0,0.8125,0.8125,0.25]],"3961":[[0.75,0.1875,0.1875,1.0,0.8125,0.8125]],"3962":[[0.1875,0.0,0.1875,0.8125,0.25,0.8125]],"3963":[[0.1875,0.75,0.1875,0.8125,1.0,0.8125]],"3964":[[0.25,0.25,0.8125,0.75,0.75,1.0]],"3965":[[0.0,0.25,0.25,0.1875,0.75,0.75]],"3966":[[0.25,0.25,0.0,0.75,0.75,0.1875]],"3967":[[0.8125,0.25,0.25,1.0,0.75,0.75]],"3968":[[0.25,0.0,0.25,0.75,0.1875,0.75]],"3969":[[0.25,0.8125,0.25,0.75,1.0,0.75]],"3970":[[0.25,0.0,0.25,0.75,1.5,0.75]],"3971":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3972":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"3973":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3974":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"3975":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3976":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3977":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3978":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3979":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3980":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3981":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3982":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3983":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3984":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"3985":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3986":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3987":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3988":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3989":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"3990":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"3991":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3992":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"3993":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3994":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3995":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"3996":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"3997":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3998":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"3999":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4000":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4001":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4002":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4003":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4004":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4005":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4006":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4007":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4008":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4009":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4010":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4011":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4012":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4013":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4014":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4015":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4016":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4017":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4018":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4019":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4020":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4021":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4022":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4023":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4024":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4025":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4026":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4027":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4028":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4029":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4030":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4031":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4032":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4033":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4034":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4035":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4036":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4037":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4038":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4039":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4040":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4041":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4042":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4043":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4044":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4045":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4046":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4047":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4048":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4049":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4050":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4051":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4052":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4053":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4054":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4055":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4056":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4057":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4058":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4059":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4060":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4061":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4062":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4063":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4064":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4065":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4066":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4067":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4068":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4069":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4070":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4071":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4072":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4073":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4074":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4075":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4076":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4077":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4078":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4079":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4080":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4081":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4082":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4083":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4084":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4085":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4086":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4087":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4088":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4089":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4090":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4091":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4092":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4093":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4094":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4095":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4096":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4097":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4098":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4099":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4100":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4101":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4102":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4103":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4104":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4105":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4106":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4107":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4108":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4109":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4110":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4111":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4112":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4113":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4114":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4115":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4116":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4117":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4118":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4119":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4120":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4121":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4122":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4123":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4124":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4125":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4126":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4127":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4128":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4129":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4130":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4131":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4132":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4133":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4134":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4135":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4136":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4137":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4138":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4139":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4140":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4141":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4142":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4143":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4144":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4145":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4146":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4147":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4148":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4149":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4150":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4151":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4152":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4153":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4154":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4155":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4156":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4157":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4158":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4159":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4160":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4161":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4162":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4163":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4164":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4165":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4166":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4167":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4168":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4169":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4170":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4171":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4172":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4173":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4174":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4175":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4176":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4177":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4178":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4179":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4180":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4181":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4182":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4183":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4184":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4185":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4186":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4187":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4188":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4189":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4190":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4191":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4192":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4193":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4194":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4195":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4196":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4197":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4198":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4199":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4200":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4201":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4202":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4203":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4204":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4205":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4206":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4207":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4208":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4209":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4210":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4211":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4212":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4213":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4214":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4215":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4216":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4217":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4218":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4219":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4220":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4221":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4222":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4223":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4224":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4225":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4226":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4227":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4228":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4229":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4230":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4231":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4232":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4233":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4234":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4235":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4236":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4237":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4238":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4239":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4240":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4241":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4242":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4243":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4244":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4245":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4246":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4247":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4248":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4249":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4250":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4251":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4252":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4253":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4254":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4255":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4256":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4257":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4258":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4259":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4260":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4261":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4262":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4263":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4264":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4265":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4266":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4267":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4268":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4269":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4270":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4271":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4272":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4273":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4274":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4275":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4276":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4277":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4278":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4279":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4280":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4281":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4282":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4283":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4284":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4285":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4286":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4287":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4288":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4289":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4290":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4291":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4292":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4293":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4294":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4295":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4296":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4297":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4298":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4299":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4300":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4301":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4302":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4303":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4304":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4305":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4306":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4307":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4308":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4309":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4310":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4311":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4312":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4313":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4314":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4315":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4316":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4317":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4318":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4319":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4320":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4321":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4322":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4323":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4324":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4325":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4326":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4327":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4328":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4329":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4330":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4331":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4332":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4333":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4334":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4335":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4336":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4337":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4338":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4339":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4340":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4341":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4342":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4343":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4344":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4345":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4346":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4347":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4348":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4349":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4350":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4351":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4352":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4353":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4354":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4355":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4356":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4357":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4358":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4359":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4360":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4361":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4362":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4363":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4364":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4365":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4366":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4367":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4368":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4369":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4370":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4371":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4372":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4373":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4374":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4375":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4376":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4377":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4378":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4379":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4380":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4381":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4382":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4383":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4384":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4385":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4386":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4387":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4388":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4389":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4390":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4391":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4392":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4393":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4394":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4395":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4396":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4397":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4398":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4399":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4400":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4401":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4402":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4403":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4404":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4405":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4406":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4407":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4408":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4409":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4410":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4411":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4412":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4413":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4414":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4415":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4416":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4417":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4418":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4419":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4420":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4421":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4422":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4423":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4424":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4425":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4426":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4427":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4428":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4429":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4430":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4431":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4432":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4433":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4434":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4435":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4436":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4437":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4438":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4439":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4440":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4441":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4442":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4443":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4444":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4445":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4446":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4447":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4448":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4449":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4450":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4451":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4452":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4453":[[0.0,0.0,0.0,1.0,0.5,1.0]],"4454":[[0.0,0.0,0.0,1.0,0.5,1.0]],"4455":[[0.1875,0.0,0.1875,0.8125,0.875,0.8125]],"4456":[[0.1875,0.0,0.1875,0.5625,1.0,0.5625]],"4457":[[0.1875,0.0,0.1875,0.5625,1.0,0.5625]],"4458":[[0.1875,0.0,0.1875,0.5625,1.0,0.5625]],"4459":[[0.1875,0.0,0.1875,0.5625,1.0,0.5625]],"4460":[[0.1875,0.0,0.1875,0.5625,0.6875,0.5625]],"4461":[[0.1875,0.0,0.1875,0.5625,0.6875,0.5625]],"4462":[[0.1875,0.3125,0.1875,0.5625,1.0,0.5625]],"4463":[[0.1875,0.3125,0.1875,0.5625,1.0,0.5625]],"4464":[[0.125,0.0,0.125,0.625,1.0,0.625]],"4465":[[0.125,0.0,0.125,0.625,1.0,0.625]],"4466":[[0.125,0.0,0.125,0.625,1.0,0.625]],"4467":[[0.125,0.0,0.125,0.625,1.0,0.625]],"4468":[[0.0625,0.0,0.0625,0.6875,1.0,0.6875]],"4469":[[0.0625,0.0,0.0625,0.6875,1.0,0.6875]],"4470":[[0.0625,0.0,0.0625,0.6875,1.0,0.6875]],"4471":[[0.0625,0.0,0.0625,0.6875,1.0,0.6875]],"4472":[[0.0,0.0,0.0,0.75,1.0,0.75]],"4473":[[0.0,0.0,0.0,0.75,1.0,0.75]],"4474":[[0.0,0.0,0.0,0.75,1.0,0.75]],"4475":[[0.0,0.0,0.0,0.75,1.0,0.75]],"4476":[[0.375,0.0,0.375,0.625,1.0,0.625],[0.0,0.5,0.0,0.375,1.0,1.0],[0.375,0.5,0.0,1.0,1.0,0.375],[0.375,0.5,0.625,1.0,1.0,1.0],[0.625,0.5,0.375,1.0,1.0,0.625]],"4477":[[0.0,0.6875,0.0,1.0,0.9375,1.0]],"4478":[[0.0,0.6875,0.0,1.0,0.9375,1.0]],"4479":[[0.0,0.6875,0.0,1.0,0.8125,1.0]],"4480":[[0.0,0.0,0.0,1.0,0.875,1.0]],"4481":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4482":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4483":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4484":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4485":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4486":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4487":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4488":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4489":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4490":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4491":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4492":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4493":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4494":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4495":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4496":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4497":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4498":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4499":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4500":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4501":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4502":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4503":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4504":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4505":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4506":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4507":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4508":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4509":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4510":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4511":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4512":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4513":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4514":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4515":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4516":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4517":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4518":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4519":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4520":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4521":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4522":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4523":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4524":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4525":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4526":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4527":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4528":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4529":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4530":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4531":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4532":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4533":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4534":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4535":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4536":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4537":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4538":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4539":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4540":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4541":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4542":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4543":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4544":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4545":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4546":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4547":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4548":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4549":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4550":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4551":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4552":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4553":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4554":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4555":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4556":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4557":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4558":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4559":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4560":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4561":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4562":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4563":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4564":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4565":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4566":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4567":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4568":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4569":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4570":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4571":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4572":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4573":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4574":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4575":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4576":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4577":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4578":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4579":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4580":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4581":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4582":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4583":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4584":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4585":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4586":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4587":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4588":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4589":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4590":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4591":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4592":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4593":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4594":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4595":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4596":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4597":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4598":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4599":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4600":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4601":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4602":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4603":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4604":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4605":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4606":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4607":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4608":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4609":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4610":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4611":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4612":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4613":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4614":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4615":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4616":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4617":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4618":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4619":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4620":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4621":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4622":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4623":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4624":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4625":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4626":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4627":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4628":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4629":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4630":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4631":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4632":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4633":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4634":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4635":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4636":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4637":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4638":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4639":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4640":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4641":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4642":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4643":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4644":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4645":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4646":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4647":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4648":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4649":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4650":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4651":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4652":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4653":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4654":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4655":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4656":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4657":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4658":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4659":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4660":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4661":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4662":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4663":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4664":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4665":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4666":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4667":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4668":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4669":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4670":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4671":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4672":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4673":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4674":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4675":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4676":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4677":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4678":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4679":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4680":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4681":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4682":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4683":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4684":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4685":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4686":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4687":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4688":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4689":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4690":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4691":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4692":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4693":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4694":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4695":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4696":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4697":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4698":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4699":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4700":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4701":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4702":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4703":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4704":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4705":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4706":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4707":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4708":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4709":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4710":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4711":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4712":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4713":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4714":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4715":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4716":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4717":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4718":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4719":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4720":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4721":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4722":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4723":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4724":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4725":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4726":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4727":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4728":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4729":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4730":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4731":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4732":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4733":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4734":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4735":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4736":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4737":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4738":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4739":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4740":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4741":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4742":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4743":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4744":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4745":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4746":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4747":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4748":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4749":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4750":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4751":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4752":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4753":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4754":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4755":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4756":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4757":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4758":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4759":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4760":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4761":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4762":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4763":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4764":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4765":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4766":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4767":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4768":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4769":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4770":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4771":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4772":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4773":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4774":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4775":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4776":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4777":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4778":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4779":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4780":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4781":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4782":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4783":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4784":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4785":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4786":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4787":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4788":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4789":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4790":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4791":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4792":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4793":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4794":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4795":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4796":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4797":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4798":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4799":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4800":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4801":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4802":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4803":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4804":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4805":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4806":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4807":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4808":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4809":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4810":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4811":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4812":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4813":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4814":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4815":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4816":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4817":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4818":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4819":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4820":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4821":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4822":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4823":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4824":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4825":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4826":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4827":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4828":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4829":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4830":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4831":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4832":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4833":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4834":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4835":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4836":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4837":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4838":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4839":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4840":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4841":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4842":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4843":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4844":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4845":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4846":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4847":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4848":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4849":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4850":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4851":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4852":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4853":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4854":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4855":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4856":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4857":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4858":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4859":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4860":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4861":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4862":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4863":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4864":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4865":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4866":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4867":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4868":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4869":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4870":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4871":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4872":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4873":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4874":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4875":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4876":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4877":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4878":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4879":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4880":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4881":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4882":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4883":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4884":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4885":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4886":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4887":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4888":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4889":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4890":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4891":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4892":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4893":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4894":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4895":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4896":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4897":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4898":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4899":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4900":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4901":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4902":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4903":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4904":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4905":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4906":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4907":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4908":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4909":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4910":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4911":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4912":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4913":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"4914":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4915":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"4916":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4917":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4918":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4919":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4920":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4921":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4922":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4923":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4924":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4925":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4926":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4927":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4928":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4929":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4930":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4931":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4932":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4933":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4934":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4935":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4936":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4937":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4938":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4939":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4940":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4941":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4942":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4943":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4944":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4945":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4946":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4947":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4948":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4949":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4950":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4951":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4952":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4953":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4954":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4955":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4956":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4957":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4958":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"4959":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4960":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4961":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"4962":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4963":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4964":[[0.25,0.0,0.25,0.75,1.5,0.75]],"4965":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4966":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"4967":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4968":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],"4969":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4970":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4971":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4972":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4973":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4974":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4975":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4976":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4977":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4978":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],"4979":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4980":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4981":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4982":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4983":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"4984":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"4985":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4986":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"4987":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4988":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4989":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4990":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4991":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4992":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4993":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4994":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4995":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"4996":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"4997":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4998":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"4999":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5000":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5001":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5002":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],"5003":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5004":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5005":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5006":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5007":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5008":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"5009":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5010":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5011":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5012":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5013":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5014":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],"5015":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5016":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5017":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5018":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"5019":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"5020":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"5021":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"5022":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"5023":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5024":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5025":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5026":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5027":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5028":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5029":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5030":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5031":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5032":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5033":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5034":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5035":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5036":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5037":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5038":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5039":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5040":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5041":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5042":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5043":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5044":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5045":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5046":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5047":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5048":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5049":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5050":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5051":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5052":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5053":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5054":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5055":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5056":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5057":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5058":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5059":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5060":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5061":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5062":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5063":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5064":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5065":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5066":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5067":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5068":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5069":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5070":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5071":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5072":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"5073":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],"5074":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],"5075":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"5076":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],"5077":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5078":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5079":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5080":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5081":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5082":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5083":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5084":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5085":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5086":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5087":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5088":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5089":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5090":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5091":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5092":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5093":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5094":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5095":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5096":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5097":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5098":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5099":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5100":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5101":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5102":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5103":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5104":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5105":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5106":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5107":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5108":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5109":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],"5110":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5111":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5112":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],"5113":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5114":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5115":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5116":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5117":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5118":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5119":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],"5120":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5121":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],"5122":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],"5123":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5124":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],"5125":[[0.0625,0.0,0.0625,0.9375,1.0,0.9375]],"5126":[[0.25,0.0,0.25,0.75,0.5,0.75]],"5127":[[0.0,0.0,0.0,1.0,0.0625,1.0]]},"blocks":{"air":0,"stone":1,"granite":1,"polished_granite":1,"diorite":1,"polished_diorite":1,"andesite":1,"polished_andesite":1,"grass_block":1,"dirt":1,"coarse_dirt":1,"podzol":1,"cobblestone":1,"oak_planks":1,"spruce_planks":1,"birch_planks":1,"jungle_planks":1,"acacia_planks":1,"cherry_planks":1,"dark_oak_planks":1,"pale_oak_wood":1,"pale_oak_planks":1,"mangrove_planks":1,"bamboo_planks":1,"bamboo_mosaic":1,"oak_sapling":0,"spruce_sapling":0,"birch_sapling":0,"jungle_sapling":0,"acacia_sapling":0,"cherry_sapling":0,"dark_oak_sapling":0,"pale_oak_sapling":0,"mangrove_propagule":0,"bedrock":1,"water":0,"lava":0,"sand":1,"suspicious_sand":1,"red_sand":1,"gravel":1,"suspicious_gravel":1,"gold_ore":1,"deepslate_gold_ore":1,"iron_ore":1,"deepslate_iron_ore":1,"coal_ore":1,"deepslate_coal_ore":1,"nether_gold_ore":1,"oak_log":1,"spruce_log":1,"birch_log":1,"jungle_log":1,"acacia_log":1,"cherry_log":1,"dark_oak_log":1,"pale_oak_log":1,"mangrove_log":1,"mangrove_roots":1,"muddy_mangrove_roots":1,"bamboo_block":1,"stripped_spruce_log":1,"stripped_birch_log":1,"stripped_jungle_log":1,"stripped_acacia_log":1,"stripped_cherry_log":1,"stripped_dark_oak_log":1,"stripped_pale_oak_log":1,"stripped_oak_log":1,"stripped_mangrove_log":1,"stripped_bamboo_block":1,"oak_wood":1,"spruce_wood":1,"birch_wood":1,"jungle_wood":1,"acacia_wood":1,"cherry_wood":1,"dark_oak_wood":1,"mangrove_wood":1,"stripped_oak_wood":1,"stripped_spruce_wood":1,"stripped_birch_wood":1,"stripped_jungle_wood":1,"stripped_acacia_wood":1,"stripped_cherry_wood":1,"stripped_dark_oak_wood":1,"stripped_pale_oak_wood":1,"stripped_mangrove_wood":1,"oak_leaves":1,"spruce_leaves":1,"birch_leaves":1,"jungle_leaves":1,"acacia_leaves":1,"cherry_leaves":1,"dark_oak_leaves":1,"pale_oak_leaves":1,"mangrove_leaves":1,"azalea_leaves":1,"flowering_azalea_leaves":1,"sponge":1,"wet_sponge":1,"glass":1,"lapis_ore":1,"deepslate_lapis_ore":1,"lapis_block":1,"dispenser":1,"sandstone":1,"chiseled_sandstone":1,"cut_sandstone":1,"note_block":1,"white_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"orange_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"magenta_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"light_blue_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"yellow_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"lime_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"pink_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"gray_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"light_gray_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"cyan_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"purple_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"blue_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"brown_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"green_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"red_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"black_bed":[2,3,2,3,3,2,3,2,4,5,4,5,5,4,5,4],"powered_rail":0,"detector_rail":0,"sticky_piston":[6,7,8,9,10,11,1,1,1,1,1,1],"cobweb":0,"short_grass":0,"fern":0,"dead_bush":0,"bush":0,"short_dry_grass":0,"tall_dry_grass":0,"seagrass":0,"tall_seagrass":0,"piston":[6,7,8,9,10,11,1,1,1,1,1,1],"piston_head":[12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23],"white_wool":1,"orange_wool":1,"magenta_wool":1,"light_blue_wool":1,"yellow_wool":1,"lime_wool":1,"pink_wool":1,"gray_wool":1,"light_gray_wool":1,"cyan_wool":1,"purple_wool":1,"blue_wool":1,"brown_wool":1,"green_wool":1,"red_wool":1,"black_wool":1,"moving_piston":0,"dandelion":0,"torchflower":0,"poppy":0,"blue_orchid":0,"allium":0,"azure_bluet":0,"red_tulip":0,"orange_tulip":0,"white_tulip":0,"pink_tulip":0,"oxeye_daisy":0,"cornflower":0,"wither_rose":0,"lily_of_the_valley":0,"brown_mushroom":0,"red_mushroom":0,"gold_block":1,"iron_block":1,"bricks":1,"tnt":1,"bookshelf":1,"chiseled_bookshelf":1,"acacia_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"bamboo_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"birch_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"cherry_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"crimson_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"dark_oak_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"jungle_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"mangrove_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"oak_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"pale_oak_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"spruce_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"warped_shelf":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27],"mossy_cobblestone":1,"obsidian":1,"torch":0,"wall_torch":0,"fire":0,"soul_fire":0,"spawner":1,"creaking_heart":1,"oak_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"redstone_wire":0,"diamond_ore":1,"deepslate_diamond_ore":1,"diamond_block":1,"crafting_table":1,"wheat":0,"farmland":57,"furnace":1,"oak_sign":0,"spruce_sign":0,"birch_sign":0,"acacia_sign":0,"cherry_sign":0,"jungle_sign":0,"dark_oak_sign":0,"pale_oak_sign":0,"mangrove_sign":0,"bamboo_sign":0,"oak_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"ladder":[62,62,63,63,64,64,65,65],"rail":0,"cobblestone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"oak_wall_sign":0,"spruce_wall_sign":0,"birch_wall_sign":0,"acacia_wall_sign":0,"cherry_wall_sign":0,"jungle_wall_sign":0,"dark_oak_wall_sign":0,"pale_oak_wall_sign":0,"mangrove_wall_sign":0,"bamboo_wall_sign":0,"oak_hanging_sign":0,"spruce_hanging_sign":0,"birch_hanging_sign":0,"acacia_hanging_sign":0,"cherry_hanging_sign":0,"jungle_hanging_sign":0,"dark_oak_hanging_sign":0,"pale_oak_hanging_sign":0,"crimson_hanging_sign":0,"warped_hanging_sign":0,"mangrove_hanging_sign":0,"bamboo_hanging_sign":0,"oak_wall_hanging_sign":[66,66,66,66,67,67,67,67],"spruce_wall_hanging_sign":[66,66,66,66,67,67,67,67],"birch_wall_hanging_sign":[66,66,66,66,67,67,67,67],"acacia_wall_hanging_sign":[66,66,66,66,67,67,67,67],"cherry_wall_hanging_sign":[66,66,66,66,67,67,67,67],"jungle_wall_hanging_sign":[66,66,66,66,67,67,67,67],"dark_oak_wall_hanging_sign":[66,66,66,66,67,67,67,67],"pale_oak_wall_hanging_sign":[66,66,66,66,67,67,67,67],"mangrove_wall_hanging_sign":[66,66,66,66,67,67,67,67],"crimson_wall_hanging_sign":[66,66,66,66,67,67,67,67],"warped_wall_hanging_sign":[66,66,66,66,67,67,67,67],"bamboo_wall_hanging_sign":[66,66,66,66,67,67,67,67],"lever":0,"stone_pressure_plate":0,"iron_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"oak_pressure_plate":0,"spruce_pressure_plate":0,"birch_pressure_plate":0,"jungle_pressure_plate":0,"acacia_pressure_plate":0,"cherry_pressure_plate":0,"dark_oak_pressure_plate":0,"pale_oak_pressure_plate":0,"mangrove_pressure_plate":0,"bamboo_pressure_plate":0,"redstone_ore":1,"deepslate_redstone_ore":1,"redstone_torch":0,"redstone_wall_torch":0,"stone_button":0,"snow":[0,68,69,70,71,72,73,74],"ice":1,"snow_block":1,"cactus":75,"cactus_flower":0,"clay":1,"sugar_cane":0,"jukebox":1,"oak_fence":[76,77,76,77,78,79,78,79,80,81,80,81,82,83,82,83,84,85,84,85,86,87,86,87,88,89,88,89,90,91,90,91],"netherrack":1,"soul_sand":92,"soul_soil":1,"basalt":1,"polished_basalt":1,"soul_torch":0,"soul_wall_torch":0,"copper_torch":0,"copper_wall_torch":0,"glowstone":1,"nether_portal":0,"carved_pumpkin":1,"jack_o_lantern":1,"cake":[93,94,95,96,97,98,99],"repeater":100,"white_stained_glass":1,"orange_stained_glass":1,"magenta_stained_glass":1,"light_blue_stained_glass":1,"yellow_stained_glass":1,"lime_stained_glass":1,"pink_stained_glass":1,"gray_stained_glass":1,"light_gray_stained_glass":1,"cyan_stained_glass":1,"purple_stained_glass":1,"blue_stained_glass":1,"brown_stained_glass":1,"green_stained_glass":1,"red_stained_glass":1,"black_stained_glass":1,"oak_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"spruce_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"birch_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"jungle_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"acacia_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"cherry_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"dark_oak_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"pale_oak_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"mangrove_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"bamboo_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"stone_bricks":1,"mossy_stone_bricks":1,"cracked_stone_bricks":1,"chiseled_stone_bricks":1,"packed_mud":1,"mud_bricks":1,"infested_stone":1,"infested_cobblestone":1,"infested_stone_bricks":1,"infested_mossy_stone_bricks":1,"infested_cracked_stone_bricks":1,"infested_chiseled_stone_bricks":1,"brown_mushroom_block":1,"red_mushroom_block":1,"mushroom_stem":1,"iron_bars":[107,108,107,108,109,110,109,110,111,112,111,112,113,114,113,114,115,116,115,116,117,118,117,118,119,120,119,120,121,122,121,122],"copper_bars":[123,124,123,124,125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138],"exposed_copper_bars":[139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,154,153,154],"weathered_copper_bars":[155,156,155,156,157,158,157,158,159,160,159,160,161,162,161,162,163,164,163,164,165,166,165,166,167,168,167,168,169,170,169,170],"oxidized_copper_bars":[171,172,171,172,173,174,173,174,175,176,175,176,177,178,177,178,179,180,179,180,181,182,181,182,183,184,183,184,185,186,185,186],"waxed_copper_bars":[187,188,187,188,189,190,189,190,191,192,191,192,193,194,193,194,195,196,195,196,197,198,197,198,199,200,199,200,201,202,201,202],"waxed_exposed_copper_bars":[203,204,203,204,205,206,205,206,207,208,207,208,209,210,209,210,211,212,211,212,213,214,213,214,215,216,215,216,217,218,217,218],"waxed_weathered_copper_bars":[219,220,219,220,221,222,221,222,223,224,223,224,225,226,225,226,227,228,227,228,229,230,229,230,231,232,231,232,233,234,233,234],"waxed_oxidized_copper_bars":[235,236,235,236,237,238,237,238,239,240,239,240,241,242,241,242,243,244,243,244,245,246,245,246,247,248,247,248,249,250,249,250],"iron_chain":[251,251,252,252,253,253],"copper_chain":[251,251,252,252,253,253],"exposed_copper_chain":[251,251,252,252,253,253],"weathered_copper_chain":[251,251,252,252,253,253],"oxidized_copper_chain":[251,251,252,252,253,253],"waxed_copper_chain":[251,251,252,252,253,253],"waxed_exposed_copper_chain":[251,251,252,252,253,253],"waxed_weathered_copper_chain":[251,251,252,252,253,253],"waxed_oxidized_copper_chain":[251,251,252,252,253,253],"glass_pane":[254,255,254,255,256,257,256,257,258,259,258,259,260,261,260,261,262,263,262,263,264,265,264,265,266,267,266,267,268,269,268,269],"pumpkin":1,"melon":1,"attached_pumpkin_stem":0,"attached_melon_stem":0,"pumpkin_stem":0,"melon_stem":0,"vine":0,"glow_lichen":0,"resin_clump":0,"oak_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"stone_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mud_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mycelium":1,"lily_pad":272,"resin_block":1,"resin_bricks":1,"resin_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"resin_brick_slab":[273,273,274,274,1,1],"resin_brick_wall":[275,276,277,275,276,277,0,278,279,0,278,279,280,281,282,280,281,282,283,284,285,283,284,285,286,287,288,286,287,288,289,290,291,289,290,291,292,293,294,292,293,294,295,296,297,295,296,297,298,299,300,298,299,300,301,302,303,301,302,303,304,305,306,304,305,306,307,308,309,307,308,309,310,311,312,310,311,312,313,314,315,313,314,315,316,317,318,316,317,318,319,320,321,319,320,321,322,323,324,322,323,324,325,326,327,325,326,327,328,329,330,328,329,330,331,332,333,331,332,333,334,335,336,334,335,336,337,338,339,337,338,339,340,341,342,340,341,342,343,344,345,343,344,345,346,347,348,346,347,348,349,350,351,349,350,351,352,353,354,352,353,354,355,356,357,355,356,357,358,359,360,358,359,360,361,362,363,361,362,363,364,365,366,364,365,366,367,368,369,367,368,369,370,371,372,370,371,372,373,374,375,373,374,375,376,377,378,376,377,378,379,380,381,379,380,381,382,383,384,382,383,384,385,386,387,385,386,387,388,389,390,388,389,390,391,392,393,391,392,393,394,395,396,394,395,396,397,398,399,397,398,399,400,401,402,400,401,402,403,404,405,403,404,405,406,407,408,406,407,408,409,410,411,409,410,411,412,413,414,412,413,414,415,416,417,415,416,417,418,419,420,418,419,420,421,422,423,421,422,423,424,425,426,424,425,426,427,428,429,427,428,429,430,431,432,430,431,432,433,434,435,433,434,435],"chiseled_resin_bricks":1,"nether_bricks":1,"nether_brick_fence":[436,437,436,437,438,439,438,439,440,441,440,441,442,443,442,443,444,445,444,445,446,447,446,447,448,449,448,449,450,451,450,451],"nether_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"nether_wart":0,"enchanting_table":452,"brewing_stand":453,"cauldron":454,"water_cauldron":454,"lava_cauldron":454,"powder_snow_cauldron":454,"end_portal":0,"end_portal_frame":[455,455,455,455,456,456,456,456],"end_stone":1,"dragon_egg":457,"redstone_lamp":1,"cocoa":[458,459,460,461,462,463,464,465,466,467,468,469],"sandstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"emerald_ore":1,"deepslate_emerald_ore":1,"ender_chest":470,"tripwire_hook":0,"tripwire":0,"emerald_block":1,"spruce_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"birch_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"jungle_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"command_block":1,"beacon":1,"cobblestone_wall":[471,472,473,471,472,473,0,474,475,0,474,475,476,477,478,476,477,478,479,480,481,479,480,481,482,483,484,482,483,484,485,486,487,485,486,487,488,489,490,488,489,490,491,492,493,491,492,493,494,495,496,494,495,496,497,498,499,497,498,499,500,501,502,500,501,502,503,504,505,503,504,505,506,507,508,506,507,508,509,510,511,509,510,511,512,513,514,512,513,514,515,516,517,515,516,517,518,519,520,518,519,520,521,522,523,521,522,523,524,525,526,524,525,526,527,528,529,527,528,529,530,531,532,530,531,532,533,534,535,533,534,535,536,537,538,536,537,538,539,540,541,539,540,541,542,543,544,542,543,544,545,546,547,545,546,547,548,549,550,548,549,550,551,552,553,551,552,553,554,555,556,554,555,556,557,558,559,557,558,559,560,561,562,560,561,562,563,564,565,563,564,565,566,567,568,566,567,568,569,570,571,569,570,571,572,573,574,572,573,574,575,576,577,575,576,577,578,579,580,578,579,580,581,582,583,581,582,583,584,585,586,584,585,586,587,588,589,587,588,589,590,591,592,590,591,592,593,594,595,593,594,595,596,597,598,596,597,598,599,600,601,599,600,601,602,603,604,602,603,604,605,606,607,605,606,607,608,609,610,608,609,610,611,612,613,611,612,613,614,615,616,614,615,616,617,618,619,617,618,619,620,621,622,620,621,622,623,624,625,623,624,625,626,627,628,626,627,628,629,630,631,629,630,631],"mossy_cobblestone_wall":[632,633,634,632,633,634,0,635,636,0,635,636,637,638,639,637,638,639,640,641,642,640,641,642,643,644,645,643,644,645,646,647,648,646,647,648,649,650,651,649,650,651,652,653,654,652,653,654,655,656,657,655,656,657,658,659,660,658,659,660,661,662,663,661,662,663,664,665,666,664,665,666,667,668,669,667,668,669,670,671,672,670,671,672,673,674,675,673,674,675,676,677,678,676,677,678,679,680,681,679,680,681,682,683,684,682,683,684,685,686,687,685,686,687,688,689,690,688,689,690,691,692,693,691,692,693,694,695,696,694,695,696,697,698,699,697,698,699,700,701,702,700,701,702,703,704,705,703,704,705,706,707,708,706,707,708,709,710,711,709,710,711,712,713,714,712,713,714,715,716,717,715,716,717,718,719,720,718,719,720,721,722,723,721,722,723,724,725,726,724,725,726,727,728,729,727,728,729,730,731,732,730,731,732,733,734,735,733,734,735,736,737,738,736,737,738,739,740,741,739,740,741,742,743,744,742,743,744,745,746,747,745,746,747,748,749,750,748,749,750,751,752,753,751,752,753,754,755,756,754,755,756,757,758,759,757,758,759,760,761,762,760,761,762,763,764,765,763,764,765,766,767,768,766,767,768,769,770,771,769,770,771,772,773,774,772,773,774,775,776,777,775,776,777,778,779,780,778,779,780,781,782,783,781,782,783,784,785,786,784,785,786,787,788,789,787,788,789,790,791,792,790,791,792],"flower_pot":793,"potted_torchflower":793,"potted_oak_sapling":793,"potted_spruce_sapling":793,"potted_birch_sapling":793,"potted_jungle_sapling":793,"potted_acacia_sapling":793,"potted_cherry_sapling":793,"potted_dark_oak_sapling":793,"potted_pale_oak_sapling":793,"potted_mangrove_propagule":793,"potted_fern":793,"potted_dandelion":793,"potted_poppy":793,"potted_blue_orchid":793,"potted_allium":793,"potted_azure_bluet":793,"potted_red_tulip":793,"potted_orange_tulip":793,"potted_white_tulip":793,"potted_pink_tulip":793,"potted_oxeye_daisy":793,"potted_cornflower":793,"potted_lily_of_the_valley":793,"potted_wither_rose":793,"potted_red_mushroom":793,"potted_brown_mushroom":793,"potted_dead_bush":793,"potted_cactus":793,"carrots":0,"potatoes":0,"oak_button":0,"spruce_button":0,"birch_button":0,"jungle_button":0,"acacia_button":0,"cherry_button":0,"dark_oak_button":0,"pale_oak_button":0,"mangrove_button":0,"bamboo_button":0,"skeleton_skull":794,"skeleton_wall_skull":[795,795,796,796,797,797,798,798],"wither_skeleton_skull":794,"wither_skeleton_wall_skull":[795,795,796,796,797,797,798,798],"zombie_head":794,"zombie_wall_head":[795,795,796,796,797,797,798,798],"player_head":794,"player_wall_head":[795,795,796,796,797,797,798,798],"creeper_head":794,"creeper_wall_head":[795,795,796,796,797,797,798,798],"dragon_head":794,"dragon_wall_head":[795,795,796,796,797,797,798,798],"piglin_head":799,"piglin_wall_head":[800,800,801,801,802,802,803,803],"anvil":[804,804,805,805],"chipped_anvil":[804,804,805,805],"damaged_anvil":[804,804,805,805],"trapped_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"light_weighted_pressure_plate":0,"heavy_weighted_pressure_plate":0,"comparator":100,"daylight_detector":806,"redstone_block":1,"nether_quartz_ore":1,"hopper":[807,808,809,810,811,807,808,809,810,811],"quartz_block":1,"chiseled_quartz_block":1,"quartz_pillar":1,"quartz_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"activator_rail":0,"dropper":1,"white_terracotta":1,"orange_terracotta":1,"magenta_terracotta":1,"light_blue_terracotta":1,"yellow_terracotta":1,"lime_terracotta":1,"pink_terracotta":1,"gray_terracotta":1,"light_gray_terracotta":1,"cyan_terracotta":1,"purple_terracotta":1,"blue_terracotta":1,"brown_terracotta":1,"green_terracotta":1,"red_terracotta":1,"black_terracotta":1,"white_stained_glass_pane":[812,813,812,813,814,815,814,815,816,817,816,817,818,819,818,819,820,821,820,821,822,823,822,823,824,825,824,825,826,827,826,827],"orange_stained_glass_pane":[828,829,828,829,830,831,830,831,832,833,832,833,834,835,834,835,836,837,836,837,838,839,838,839,840,841,840,841,842,843,842,843],"magenta_stained_glass_pane":[844,845,844,845,846,847,846,847,848,849,848,849,850,851,850,851,852,853,852,853,854,855,854,855,856,857,856,857,858,859,858,859],"light_blue_stained_glass_pane":[860,861,860,861,862,863,862,863,864,865,864,865,866,867,866,867,868,869,868,869,870,871,870,871,872,873,872,873,874,875,874,875],"yellow_stained_glass_pane":[876,877,876,877,878,879,878,879,880,881,880,881,882,883,882,883,884,885,884,885,886,887,886,887,888,889,888,889,890,891,890,891],"lime_stained_glass_pane":[892,893,892,893,894,895,894,895,896,897,896,897,898,899,898,899,900,901,900,901,902,903,902,903,904,905,904,905,906,907,906,907],"pink_stained_glass_pane":[908,909,908,909,910,911,910,911,912,913,912,913,914,915,914,915,916,917,916,917,918,919,918,919,920,921,920,921,922,923,922,923],"gray_stained_glass_pane":[924,925,924,925,926,927,926,927,928,929,928,929,930,931,930,931,932,933,932,933,934,935,934,935,936,937,936,937,938,939,938,939],"light_gray_stained_glass_pane":[940,941,940,941,942,943,942,943,944,945,944,945,946,947,946,947,948,949,948,949,950,951,950,951,952,953,952,953,954,955,954,955],"cyan_stained_glass_pane":[956,957,956,957,958,959,958,959,960,961,960,961,962,963,962,963,964,965,964,965,966,967,966,967,968,969,968,969,970,971,970,971],"purple_stained_glass_pane":[972,973,972,973,974,975,974,975,976,977,976,977,978,979,978,979,980,981,980,981,982,983,982,983,984,985,984,985,986,987,986,987],"blue_stained_glass_pane":[988,989,988,989,990,991,990,991,992,993,992,993,994,995,994,995,996,997,996,997,998,999,998,999,1000,1001,1000,1001,1002,1003,1002,1003],"brown_stained_glass_pane":[1004,1005,1004,1005,1006,1007,1006,1007,1008,1009,1008,1009,1010,1011,1010,1011,1012,1013,1012,1013,1014,1015,1014,1015,1016,1017,1016,1017,1018,1019,1018,1019],"green_stained_glass_pane":[1020,1021,1020,1021,1022,1023,1022,1023,1024,1025,1024,1025,1026,1027,1026,1027,1028,1029,1028,1029,1030,1031,1030,1031,1032,1033,1032,1033,1034,1035,1034,1035],"red_stained_glass_pane":[1036,1037,1036,1037,1038,1039,1038,1039,1040,1041,1040,1041,1042,1043,1042,1043,1044,1045,1044,1045,1046,1047,1046,1047,1048,1049,1048,1049,1050,1051,1050,1051],"black_stained_glass_pane":[1052,1053,1052,1053,1054,1055,1054,1055,1056,1057,1056,1057,1058,1059,1058,1059,1060,1061,1060,1061,1062,1063,1062,1063,1064,1065,1064,1065,1066,1067,1066,1067],"acacia_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"cherry_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"dark_oak_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"pale_oak_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mangrove_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"bamboo_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"bamboo_mosaic_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"slime_block":1,"barrier":1,"light":0,"iron_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"prismarine":1,"prismarine_bricks":1,"dark_prismarine":1,"prismarine_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"prismarine_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"dark_prismarine_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"prismarine_slab":[273,273,274,274,1,1],"prismarine_brick_slab":[273,273,274,274,1,1],"dark_prismarine_slab":[273,273,274,274,1,1],"sea_lantern":1,"hay_block":1,"white_carpet":1068,"orange_carpet":1068,"magenta_carpet":1068,"light_blue_carpet":1068,"yellow_carpet":1068,"lime_carpet":1068,"pink_carpet":1068,"gray_carpet":1068,"light_gray_carpet":1068,"cyan_carpet":1068,"purple_carpet":1068,"blue_carpet":1068,"brown_carpet":1068,"green_carpet":1068,"red_carpet":1068,"black_carpet":1068,"terracotta":1,"coal_block":1,"packed_ice":1,"sunflower":0,"lilac":0,"rose_bush":0,"peony":0,"tall_grass":0,"large_fern":0,"white_banner":0,"orange_banner":0,"magenta_banner":0,"light_blue_banner":0,"yellow_banner":0,"lime_banner":0,"pink_banner":0,"gray_banner":0,"light_gray_banner":0,"cyan_banner":0,"purple_banner":0,"blue_banner":0,"brown_banner":0,"green_banner":0,"red_banner":0,"black_banner":0,"white_wall_banner":0,"orange_wall_banner":0,"magenta_wall_banner":0,"light_blue_wall_banner":0,"yellow_wall_banner":0,"lime_wall_banner":0,"pink_wall_banner":0,"gray_wall_banner":0,"light_gray_wall_banner":0,"cyan_wall_banner":0,"purple_wall_banner":0,"blue_wall_banner":0,"brown_wall_banner":0,"green_wall_banner":0,"red_wall_banner":0,"black_wall_banner":0,"red_sandstone":1,"chiseled_red_sandstone":1,"cut_red_sandstone":1,"red_sandstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"oak_slab":[273,273,274,274,1,1],"spruce_slab":[273,273,274,274,1,1],"birch_slab":[273,273,274,274,1,1],"jungle_slab":[273,273,274,274,1,1],"acacia_slab":[273,273,274,274,1,1],"cherry_slab":[273,273,274,274,1,1],"dark_oak_slab":[273,273,274,274,1,1],"pale_oak_slab":[273,273,274,274,1,1],"mangrove_slab":[273,273,274,274,1,1],"bamboo_slab":[273,273,274,274,1,1],"bamboo_mosaic_slab":[273,273,274,274,1,1],"stone_slab":[273,273,274,274,1,1],"smooth_stone_slab":[273,273,274,274,1,1],"sandstone_slab":[273,273,274,274,1,1],"cut_sandstone_slab":[273,273,274,274,1,1],"petrified_oak_slab":[273,273,274,274,1,1],"cobblestone_slab":[273,273,274,274,1,1],"brick_slab":[273,273,274,274,1,1],"stone_brick_slab":[273,273,274,274,1,1],"mud_brick_slab":[273,273,274,274,1,1],"nether_brick_slab":[273,273,274,274,1,1],"quartz_slab":[273,273,274,274,1,1],"red_sandstone_slab":[273,273,274,274,1,1],"cut_red_sandstone_slab":[273,273,274,274,1,1],"purpur_slab":[273,273,274,274,1,1],"smooth_stone":1,"smooth_sandstone":1,"smooth_quartz":1,"smooth_red_sandstone":1,"spruce_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"birch_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"jungle_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"acacia_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"cherry_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"dark_oak_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"pale_oak_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"mangrove_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"bamboo_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"spruce_fence":[1069,1070,1069,1070,1071,1072,1071,1072,1073,1074,1073,1074,1075,1076,1075,1076,1077,1078,1077,1078,1079,1080,1079,1080,1081,1082,1081,1082,1083,1084,1083,1084],"birch_fence":[1085,1086,1085,1086,1087,1088,1087,1088,1089,1090,1089,1090,1091,1092,1091,1092,1093,1094,1093,1094,1095,1096,1095,1096,1097,1098,1097,1098,1099,1100,1099,1100],"jungle_fence":[1101,1102,1101,1102,1103,1104,1103,1104,1105,1106,1105,1106,1107,1108,1107,1108,1109,1110,1109,1110,1111,1112,1111,1112,1113,1114,1113,1114,1115,1116,1115,1116],"acacia_fence":[1117,1118,1117,1118,1119,1120,1119,1120,1121,1122,1121,1122,1123,1124,1123,1124,1125,1126,1125,1126,1127,1128,1127,1128,1129,1130,1129,1130,1131,1132,1131,1132],"cherry_fence":[1133,1134,1133,1134,1135,1136,1135,1136,1137,1138,1137,1138,1139,1140,1139,1140,1141,1142,1141,1142,1143,1144,1143,1144,1145,1146,1145,1146,1147,1148,1147,1148],"dark_oak_fence":[1149,1150,1149,1150,1151,1152,1151,1152,1153,1154,1153,1154,1155,1156,1155,1156,1157,1158,1157,1158,1159,1160,1159,1160,1161,1162,1161,1162,1163,1164,1163,1164],"pale_oak_fence":[1165,1166,1165,1166,1167,1168,1167,1168,1169,1170,1169,1170,1171,1172,1171,1172,1173,1174,1173,1174,1175,1176,1175,1176,1177,1178,1177,1178,1179,1180,1179,1180],"mangrove_fence":[1181,1182,1181,1182,1183,1184,1183,1184,1185,1186,1185,1186,1187,1188,1187,1188,1189,1190,1189,1190,1191,1192,1191,1192,1193,1194,1193,1194,1195,1196,1195,1196],"bamboo_fence":[1197,1198,1197,1198,1199,1200,1199,1200,1201,1202,1201,1202,1203,1204,1203,1204,1205,1206,1205,1206,1207,1208,1207,1208,1209,1210,1209,1210,1211,1212,1211,1212],"spruce_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"birch_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"jungle_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"acacia_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"cherry_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"dark_oak_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"pale_oak_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"mangrove_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"bamboo_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"end_rod":[1213,1214,1213,1214,1215,1215],"chorus_plant":[1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279],"chorus_flower":1,"purpur_block":1,"purpur_pillar":1,"purpur_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"end_stone_bricks":1,"torchflower_crop":0,"pitcher_crop":[0,1280,0,1281,0,1281,0,1281,0,1281],"pitcher_plant":0,"beetroots":0,"dirt_path":1282,"end_gateway":0,"repeating_command_block":1,"chain_command_block":1,"frosted_ice":1,"magma_block":1,"nether_wart_block":1,"red_nether_bricks":1,"bone_block":1,"structure_void":0,"observer":1,"shulker_box":1,"white_shulker_box":1,"orange_shulker_box":1,"magenta_shulker_box":1,"light_blue_shulker_box":1,"yellow_shulker_box":1,"lime_shulker_box":1,"pink_shulker_box":1,"gray_shulker_box":1,"light_gray_shulker_box":1,"cyan_shulker_box":1,"purple_shulker_box":1,"blue_shulker_box":1,"brown_shulker_box":1,"green_shulker_box":1,"red_shulker_box":1,"black_shulker_box":1,"white_glazed_terracotta":1,"orange_glazed_terracotta":1,"magenta_glazed_terracotta":1,"light_blue_glazed_terracotta":1,"yellow_glazed_terracotta":1,"lime_glazed_terracotta":1,"pink_glazed_terracotta":1,"gray_glazed_terracotta":1,"light_gray_glazed_terracotta":1,"cyan_glazed_terracotta":1,"purple_glazed_terracotta":1,"blue_glazed_terracotta":1,"brown_glazed_terracotta":1,"green_glazed_terracotta":1,"red_glazed_terracotta":1,"black_glazed_terracotta":1,"white_concrete":1,"orange_concrete":1,"magenta_concrete":1,"light_blue_concrete":1,"yellow_concrete":1,"lime_concrete":1,"pink_concrete":1,"gray_concrete":1,"light_gray_concrete":1,"cyan_concrete":1,"purple_concrete":1,"blue_concrete":1,"brown_concrete":1,"green_concrete":1,"red_concrete":1,"black_concrete":1,"white_concrete_powder":1,"orange_concrete_powder":1,"magenta_concrete_powder":1,"light_blue_concrete_powder":1,"yellow_concrete_powder":1,"lime_concrete_powder":1,"pink_concrete_powder":1,"gray_concrete_powder":1,"light_gray_concrete_powder":1,"cyan_concrete_powder":1,"purple_concrete_powder":1,"blue_concrete_powder":1,"brown_concrete_powder":1,"green_concrete_powder":1,"red_concrete_powder":1,"black_concrete_powder":1,"kelp":0,"kelp_plant":0,"dried_kelp_block":1,"turtle_egg":[1283,1283,1283,1284,1284,1284,1284,1284,1284,1284,1284,1284],"sniffer_egg":1285,"dried_ghast":1286,"dead_tube_coral_block":1,"dead_brain_coral_block":1,"dead_bubble_coral_block":1,"dead_fire_coral_block":1,"dead_horn_coral_block":1,"tube_coral_block":1,"brain_coral_block":1,"bubble_coral_block":1,"fire_coral_block":1,"horn_coral_block":1,"dead_tube_coral":0,"dead_brain_coral":0,"dead_bubble_coral":0,"dead_fire_coral":0,"dead_horn_coral":0,"tube_coral":0,"brain_coral":0,"bubble_coral":0,"fire_coral":0,"horn_coral":0,"dead_tube_coral_fan":0,"dead_brain_coral_fan":0,"dead_bubble_coral_fan":0,"dead_fire_coral_fan":0,"dead_horn_coral_fan":0,"tube_coral_fan":0,"brain_coral_fan":0,"bubble_coral_fan":0,"fire_coral_fan":0,"horn_coral_fan":0,"dead_tube_coral_wall_fan":0,"dead_brain_coral_wall_fan":0,"dead_bubble_coral_wall_fan":0,"dead_fire_coral_wall_fan":0,"dead_horn_coral_wall_fan":0,"tube_coral_wall_fan":0,"brain_coral_wall_fan":0,"bubble_coral_wall_fan":0,"fire_coral_wall_fan":0,"horn_coral_wall_fan":0,"sea_pickle":[1287,1287,1288,1288,1289,1289,1290,1290],"blue_ice":1,"conduit":1291,"bamboo_sapling":0,"bamboo":[1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303],"potted_bamboo":793,"void_air":0,"cave_air":0,"bubble_column":0,"polished_granite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"smooth_red_sandstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mossy_stone_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_diorite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"mossy_cobblestone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"end_stone_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"stone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"smooth_sandstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"smooth_quartz_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"granite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"andesite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"red_nether_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_andesite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"diorite_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_granite_slab":[273,273,274,274,1,1],"smooth_red_sandstone_slab":[273,273,274,274,1,1],"mossy_stone_brick_slab":[273,273,274,274,1,1],"polished_diorite_slab":[273,273,274,274,1,1],"mossy_cobblestone_slab":[273,273,274,274,1,1],"end_stone_brick_slab":[273,273,274,274,1,1],"smooth_sandstone_slab":[273,273,274,274,1,1],"smooth_quartz_slab":[273,273,274,274,1,1],"granite_slab":[273,273,274,274,1,1],"andesite_slab":[273,273,274,274,1,1],"red_nether_brick_slab":[273,273,274,274,1,1],"polished_andesite_slab":[273,273,274,274,1,1],"diorite_slab":[273,273,274,274,1,1],"brick_wall":[1304,1305,1306,1304,1305,1306,0,1307,1308,0,1307,1308,1309,1310,1311,1309,1310,1311,1312,1313,1314,1312,1313,1314,1315,1316,1317,1315,1316,1317,1318,1319,1320,1318,1319,1320,1321,1322,1323,1321,1322,1323,1324,1325,1326,1324,1325,1326,1327,1328,1329,1327,1328,1329,1330,1331,1332,1330,1331,1332,1333,1334,1335,1333,1334,1335,1336,1337,1338,1336,1337,1338,1339,1340,1341,1339,1340,1341,1342,1343,1344,1342,1343,1344,1345,1346,1347,1345,1346,1347,1348,1349,1350,1348,1349,1350,1351,1352,1353,1351,1352,1353,1354,1355,1356,1354,1355,1356,1357,1358,1359,1357,1358,1359,1360,1361,1362,1360,1361,1362,1363,1364,1365,1363,1364,1365,1366,1367,1368,1366,1367,1368,1369,1370,1371,1369,1370,1371,1372,1373,1374,1372,1373,1374,1375,1376,1377,1375,1376,1377,1378,1379,1380,1378,1379,1380,1381,1382,1383,1381,1382,1383,1384,1385,1386,1384,1385,1386,1387,1388,1389,1387,1388,1389,1390,1391,1392,1390,1391,1392,1393,1394,1395,1393,1394,1395,1396,1397,1398,1396,1397,1398,1399,1400,1401,1399,1400,1401,1402,1403,1404,1402,1403,1404,1405,1406,1407,1405,1406,1407,1408,1409,1410,1408,1409,1410,1411,1412,1413,1411,1412,1413,1414,1415,1416,1414,1415,1416,1417,1418,1419,1417,1418,1419,1420,1421,1422,1420,1421,1422,1423,1424,1425,1423,1424,1425,1426,1427,1428,1426,1427,1428,1429,1430,1431,1429,1430,1431,1432,1433,1434,1432,1433,1434,1435,1436,1437,1435,1436,1437,1438,1439,1440,1438,1439,1440,1441,1442,1443,1441,1442,1443,1444,1445,1446,1444,1445,1446,1447,1448,1449,1447,1448,1449,1450,1451,1452,1450,1451,1452,1453,1454,1455,1453,1454,1455,1456,1457,1458,1456,1457,1458,1459,1460,1461,1459,1460,1461,1462,1463,1464,1462,1463,1464],"prismarine_wall":[1465,1466,1467,1465,1466,1467,0,1468,1469,0,1468,1469,1470,1471,1472,1470,1471,1472,1473,1474,1475,1473,1474,1475,1476,1477,1478,1476,1477,1478,1479,1480,1481,1479,1480,1481,1482,1483,1484,1482,1483,1484,1485,1486,1487,1485,1486,1487,1488,1489,1490,1488,1489,1490,1491,1492,1493,1491,1492,1493,1494,1495,1496,1494,1495,1496,1497,1498,1499,1497,1498,1499,1500,1501,1502,1500,1501,1502,1503,1504,1505,1503,1504,1505,1506,1507,1508,1506,1507,1508,1509,1510,1511,1509,1510,1511,1512,1513,1514,1512,1513,1514,1515,1516,1517,1515,1516,1517,1518,1519,1520,1518,1519,1520,1521,1522,1523,1521,1522,1523,1524,1525,1526,1524,1525,1526,1527,1528,1529,1527,1528,1529,1530,1531,1532,1530,1531,1532,1533,1534,1535,1533,1534,1535,1536,1537,1538,1536,1537,1538,1539,1540,1541,1539,1540,1541,1542,1543,1544,1542,1543,1544,1545,1546,1547,1545,1546,1547,1548,1549,1550,1548,1549,1550,1551,1552,1553,1551,1552,1553,1554,1555,1556,1554,1555,1556,1557,1558,1559,1557,1558,1559,1560,1561,1562,1560,1561,1562,1563,1564,1565,1563,1564,1565,1566,1567,1568,1566,1567,1568,1569,1570,1571,1569,1570,1571,1572,1573,1574,1572,1573,1574,1575,1576,1577,1575,1576,1577,1578,1579,1580,1578,1579,1580,1581,1582,1583,1581,1582,1583,1584,1585,1586,1584,1585,1586,1587,1588,1589,1587,1588,1589,1590,1591,1592,1590,1591,1592,1593,1594,1595,1593,1594,1595,1596,1597,1598,1596,1597,1598,1599,1600,1601,1599,1600,1601,1602,1603,1604,1602,1603,1604,1605,1606,1607,1605,1606,1607,1608,1609,1610,1608,1609,1610,1611,1612,1613,1611,1612,1613,1614,1615,1616,1614,1615,1616,1617,1618,1619,1617,1618,1619,1620,1621,1622,1620,1621,1622,1623,1624,1625,1623,1624,1625],"red_sandstone_wall":[1626,1627,1628,1626,1627,1628,0,1629,1630,0,1629,1630,1631,1632,1633,1631,1632,1633,1634,1635,1636,1634,1635,1636,1637,1638,1639,1637,1638,1639,1640,1641,1642,1640,1641,1642,1643,1644,1645,1643,1644,1645,1646,1647,1648,1646,1647,1648,1649,1650,1651,1649,1650,1651,1652,1653,1654,1652,1653,1654,1655,1656,1657,1655,1656,1657,1658,1659,1660,1658,1659,1660,1661,1662,1663,1661,1662,1663,1664,1665,1666,1664,1665,1666,1667,1668,1669,1667,1668,1669,1670,1671,1672,1670,1671,1672,1673,1674,1675,1673,1674,1675,1676,1677,1678,1676,1677,1678,1679,1680,1681,1679,1680,1681,1682,1683,1684,1682,1683,1684,1685,1686,1687,1685,1686,1687,1688,1689,1690,1688,1689,1690,1691,1692,1693,1691,1692,1693,1694,1695,1696,1694,1695,1696,1697,1698,1699,1697,1698,1699,1700,1701,1702,1700,1701,1702,1703,1704,1705,1703,1704,1705,1706,1707,1708,1706,1707,1708,1709,1710,1711,1709,1710,1711,1712,1713,1714,1712,1713,1714,1715,1716,1717,1715,1716,1717,1718,1719,1720,1718,1719,1720,1721,1722,1723,1721,1722,1723,1724,1725,1726,1724,1725,1726,1727,1728,1729,1727,1728,1729,1730,1731,1732,1730,1731,1732,1733,1734,1735,1733,1734,1735,1736,1737,1738,1736,1737,1738,1739,1740,1741,1739,1740,1741,1742,1743,1744,1742,1743,1744,1745,1746,1747,1745,1746,1747,1748,1749,1750,1748,1749,1750,1751,1752,1753,1751,1752,1753,1754,1755,1756,1754,1755,1756,1757,1758,1759,1757,1758,1759,1760,1761,1762,1760,1761,1762,1763,1764,1765,1763,1764,1765,1766,1767,1768,1766,1767,1768,1769,1770,1771,1769,1770,1771,1772,1773,1774,1772,1773,1774,1775,1776,1777,1775,1776,1777,1778,1779,1780,1778,1779,1780,1781,1782,1783,1781,1782,1783,1784,1785,1786,1784,1785,1786],"mossy_stone_brick_wall":[1787,1788,1789,1787,1788,1789,0,1790,1791,0,1790,1791,1792,1793,1794,1792,1793,1794,1795,1796,1797,1795,1796,1797,1798,1799,1800,1798,1799,1800,1801,1802,1803,1801,1802,1803,1804,1805,1806,1804,1805,1806,1807,1808,1809,1807,1808,1809,1810,1811,1812,1810,1811,1812,1813,1814,1815,1813,1814,1815,1816,1817,1818,1816,1817,1818,1819,1820,1821,1819,1820,1821,1822,1823,1824,1822,1823,1824,1825,1826,1827,1825,1826,1827,1828,1829,1830,1828,1829,1830,1831,1832,1833,1831,1832,1833,1834,1835,1836,1834,1835,1836,1837,1838,1839,1837,1838,1839,1840,1841,1842,1840,1841,1842,1843,1844,1845,1843,1844,1845,1846,1847,1848,1846,1847,1848,1849,1850,1851,1849,1850,1851,1852,1853,1854,1852,1853,1854,1855,1856,1857,1855,1856,1857,1858,1859,1860,1858,1859,1860,1861,1862,1863,1861,1862,1863,1864,1865,1866,1864,1865,1866,1867,1868,1869,1867,1868,1869,1870,1871,1872,1870,1871,1872,1873,1874,1875,1873,1874,1875,1876,1877,1878,1876,1877,1878,1879,1880,1881,1879,1880,1881,1882,1883,1884,1882,1883,1884,1885,1886,1887,1885,1886,1887,1888,1889,1890,1888,1889,1890,1891,1892,1893,1891,1892,1893,1894,1895,1896,1894,1895,1896,1897,1898,1899,1897,1898,1899,1900,1901,1902,1900,1901,1902,1903,1904,1905,1903,1904,1905,1906,1907,1908,1906,1907,1908,1909,1910,1911,1909,1910,1911,1912,1913,1914,1912,1913,1914,1915,1916,1917,1915,1916,1917,1918,1919,1920,1918,1919,1920,1921,1922,1923,1921,1922,1923,1924,1925,1926,1924,1925,1926,1927,1928,1929,1927,1928,1929,1930,1931,1932,1930,1931,1932,1933,1934,1935,1933,1934,1935,1936,1937,1938,1936,1937,1938,1939,1940,1941,1939,1940,1941,1942,1943,1944,1942,1943,1944,1945,1946,1947,1945,1946,1947],"granite_wall":[1948,1949,1950,1948,1949,1950,0,1951,1952,0,1951,1952,1953,1954,1955,1953,1954,1955,1956,1957,1958,1956,1957,1958,1959,1960,1961,1959,1960,1961,1962,1963,1964,1962,1963,1964,1965,1966,1967,1965,1966,1967,1968,1969,1970,1968,1969,1970,1971,1972,1973,1971,1972,1973,1974,1975,1976,1974,1975,1976,1977,1978,1979,1977,1978,1979,1980,1981,1982,1980,1981,1982,1983,1984,1985,1983,1984,1985,1986,1987,1988,1986,1987,1988,1989,1990,1991,1989,1990,1991,1992,1993,1994,1992,1993,1994,1995,1996,1997,1995,1996,1997,1998,1999,2000,1998,1999,2000,2001,2002,2003,2001,2002,2003,2004,2005,2006,2004,2005,2006,2007,2008,2009,2007,2008,2009,2010,2011,2012,2010,2011,2012,2013,2014,2015,2013,2014,2015,2016,2017,2018,2016,2017,2018,2019,2020,2021,2019,2020,2021,2022,2023,2024,2022,2023,2024,2025,2026,2027,2025,2026,2027,2028,2029,2030,2028,2029,2030,2031,2032,2033,2031,2032,2033,2034,2035,2036,2034,2035,2036,2037,2038,2039,2037,2038,2039,2040,2041,2042,2040,2041,2042,2043,2044,2045,2043,2044,2045,2046,2047,2048,2046,2047,2048,2049,2050,2051,2049,2050,2051,2052,2053,2054,2052,2053,2054,2055,2056,2057,2055,2056,2057,2058,2059,2060,2058,2059,2060,2061,2062,2063,2061,2062,2063,2064,2065,2066,2064,2065,2066,2067,2068,2069,2067,2068,2069,2070,2071,2072,2070,2071,2072,2073,2074,2075,2073,2074,2075,2076,2077,2078,2076,2077,2078,2079,2080,2081,2079,2080,2081,2082,2083,2084,2082,2083,2084,2085,2086,2087,2085,2086,2087,2088,2089,2090,2088,2089,2090,2091,2092,2093,2091,2092,2093,2094,2095,2096,2094,2095,2096,2097,2098,2099,2097,2098,2099,2100,2101,2102,2100,2101,2102,2103,2104,2105,2103,2104,2105,2106,2107,2108,2106,2107,2108],"stone_brick_wall":[2109,2110,2111,2109,2110,2111,0,2112,2113,0,2112,2113,2114,2115,2116,2114,2115,2116,2117,2118,2119,2117,2118,2119,2120,2121,2122,2120,2121,2122,2123,2124,2125,2123,2124,2125,2126,2127,2128,2126,2127,2128,2129,2130,2131,2129,2130,2131,2132,2133,2134,2132,2133,2134,2135,2136,2137,2135,2136,2137,2138,2139,2140,2138,2139,2140,2141,2142,2143,2141,2142,2143,2144,2145,2146,2144,2145,2146,2147,2148,2149,2147,2148,2149,2150,2151,2152,2150,2151,2152,2153,2154,2155,2153,2154,2155,2156,2157,2158,2156,2157,2158,2159,2160,2161,2159,2160,2161,2162,2163,2164,2162,2163,2164,2165,2166,2167,2165,2166,2167,2168,2169,2170,2168,2169,2170,2171,2172,2173,2171,2172,2173,2174,2175,2176,2174,2175,2176,2177,2178,2179,2177,2178,2179,2180,2181,2182,2180,2181,2182,2183,2184,2185,2183,2184,2185,2186,2187,2188,2186,2187,2188,2189,2190,2191,2189,2190,2191,2192,2193,2194,2192,2193,2194,2195,2196,2197,2195,2196,2197,2198,2199,2200,2198,2199,2200,2201,2202,2203,2201,2202,2203,2204,2205,2206,2204,2205,2206,2207,2208,2209,2207,2208,2209,2210,2211,2212,2210,2211,2212,2213,2214,2215,2213,2214,2215,2216,2217,2218,2216,2217,2218,2219,2220,2221,2219,2220,2221,2222,2223,2224,2222,2223,2224,2225,2226,2227,2225,2226,2227,2228,2229,2230,2228,2229,2230,2231,2232,2233,2231,2232,2233,2234,2235,2236,2234,2235,2236,2237,2238,2239,2237,2238,2239,2240,2241,2242,2240,2241,2242,2243,2244,2245,2243,2244,2245,2246,2247,2248,2246,2247,2248,2249,2250,2251,2249,2250,2251,2252,2253,2254,2252,2253,2254,2255,2256,2257,2255,2256,2257,2258,2259,2260,2258,2259,2260,2261,2262,2263,2261,2262,2263,2264,2265,2266,2264,2265,2266,2267,2268,2269,2267,2268,2269],"mud_brick_wall":[2270,2271,2272,2270,2271,2272,0,2273,2274,0,2273,2274,2275,2276,2277,2275,2276,2277,2278,2279,2280,2278,2279,2280,2281,2282,2283,2281,2282,2283,2284,2285,2286,2284,2285,2286,2287,2288,2289,2287,2288,2289,2290,2291,2292,2290,2291,2292,2293,2294,2295,2293,2294,2295,2296,2297,2298,2296,2297,2298,2299,2300,2301,2299,2300,2301,2302,2303,2304,2302,2303,2304,2305,2306,2307,2305,2306,2307,2308,2309,2310,2308,2309,2310,2311,2312,2313,2311,2312,2313,2314,2315,2316,2314,2315,2316,2317,2318,2319,2317,2318,2319,2320,2321,2322,2320,2321,2322,2323,2324,2325,2323,2324,2325,2326,2327,2328,2326,2327,2328,2329,2330,2331,2329,2330,2331,2332,2333,2334,2332,2333,2334,2335,2336,2337,2335,2336,2337,2338,2339,2340,2338,2339,2340,2341,2342,2343,2341,2342,2343,2344,2345,2346,2344,2345,2346,2347,2348,2349,2347,2348,2349,2350,2351,2352,2350,2351,2352,2353,2354,2355,2353,2354,2355,2356,2357,2358,2356,2357,2358,2359,2360,2361,2359,2360,2361,2362,2363,2364,2362,2363,2364,2365,2366,2367,2365,2366,2367,2368,2369,2370,2368,2369,2370,2371,2372,2373,2371,2372,2373,2374,2375,2376,2374,2375,2376,2377,2378,2379,2377,2378,2379,2380,2381,2382,2380,2381,2382,2383,2384,2385,2383,2384,2385,2386,2387,2388,2386,2387,2388,2389,2390,2391,2389,2390,2391,2392,2393,2394,2392,2393,2394,2395,2396,2397,2395,2396,2397,2398,2399,2400,2398,2399,2400,2401,2402,2403,2401,2402,2403,2404,2405,2406,2404,2405,2406,2407,2408,2409,2407,2408,2409,2410,2411,2412,2410,2411,2412,2413,2414,2415,2413,2414,2415,2416,2417,2418,2416,2417,2418,2419,2420,2421,2419,2420,2421,2422,2423,2424,2422,2423,2424,2425,2426,2427,2425,2426,2427,2428,2429,2430,2428,2429,2430],"nether_brick_wall":[2431,2432,2433,2431,2432,2433,0,2434,2435,0,2434,2435,2436,2437,2438,2436,2437,2438,2439,2440,2441,2439,2440,2441,2442,2443,2444,2442,2443,2444,2445,2446,2447,2445,2446,2447,2448,2449,2450,2448,2449,2450,2451,2452,2453,2451,2452,2453,2454,2455,2456,2454,2455,2456,2457,2458,2459,2457,2458,2459,2460,2461,2462,2460,2461,2462,2463,2464,2465,2463,2464,2465,2466,2467,2468,2466,2467,2468,2469,2470,2471,2469,2470,2471,2472,2473,2474,2472,2473,2474,2475,2476,2477,2475,2476,2477,2478,2479,2480,2478,2479,2480,2481,2482,2483,2481,2482,2483,2484,2485,2486,2484,2485,2486,2487,2488,2489,2487,2488,2489,2490,2491,2492,2490,2491,2492,2493,2494,2495,2493,2494,2495,2496,2497,2498,2496,2497,2498,2499,2500,2501,2499,2500,2501,2502,2503,2504,2502,2503,2504,2505,2506,2507,2505,2506,2507,2508,2509,2510,2508,2509,2510,2511,2512,2513,2511,2512,2513,2514,2515,2516,2514,2515,2516,2517,2518,2519,2517,2518,2519,2520,2521,2522,2520,2521,2522,2523,2524,2525,2523,2524,2525,2526,2527,2528,2526,2527,2528,2529,2530,2531,2529,2530,2531,2532,2533,2534,2532,2533,2534,2535,2536,2537,2535,2536,2537,2538,2539,2540,2538,2539,2540,2541,2542,2543,2541,2542,2543,2544,2545,2546,2544,2545,2546,2547,2548,2549,2547,2548,2549,2550,2551,2552,2550,2551,2552,2553,2554,2555,2553,2554,2555,2556,2557,2558,2556,2557,2558,2559,2560,2561,2559,2560,2561,2562,2563,2564,2562,2563,2564,2565,2566,2567,2565,2566,2567,2568,2569,2570,2568,2569,2570,2571,2572,2573,2571,2572,2573,2574,2575,2576,2574,2575,2576,2577,2578,2579,2577,2578,2579,2580,2581,2582,2580,2581,2582,2583,2584,2585,2583,2584,2585,2586,2587,2588,2586,2587,2588,2589,2590,2591,2589,2590,2591],"andesite_wall":[2592,2593,2594,2592,2593,2594,0,2595,2596,0,2595,2596,2597,2598,2599,2597,2598,2599,2600,2601,2602,2600,2601,2602,2603,2604,2605,2603,2604,2605,2606,2607,2608,2606,2607,2608,2609,2610,2611,2609,2610,2611,2612,2613,2614,2612,2613,2614,2615,2616,2617,2615,2616,2617,2618,2619,2620,2618,2619,2620,2621,2622,2623,2621,2622,2623,2624,2625,2626,2624,2625,2626,2627,2628,2629,2627,2628,2629,2630,2631,2632,2630,2631,2632,2633,2634,2635,2633,2634,2635,2636,2637,2638,2636,2637,2638,2639,2640,2641,2639,2640,2641,2642,2643,2644,2642,2643,2644,2645,2646,2647,2645,2646,2647,2648,2649,2650,2648,2649,2650,2651,2652,2653,2651,2652,2653,2654,2655,2656,2654,2655,2656,2657,2658,2659,2657,2658,2659,2660,2661,2662,2660,2661,2662,2663,2664,2665,2663,2664,2665,2666,2667,2668,2666,2667,2668,2669,2670,2671,2669,2670,2671,2672,2673,2674,2672,2673,2674,2675,2676,2677,2675,2676,2677,2678,2679,2680,2678,2679,2680,2681,2682,2683,2681,2682,2683,2684,2685,2686,2684,2685,2686,2687,2688,2689,2687,2688,2689,2690,2691,2692,2690,2691,2692,2693,2694,2695,2693,2694,2695,2696,2697,2698,2696,2697,2698,2699,2700,2701,2699,2700,2701,2702,2703,2704,2702,2703,2704,2705,2706,2707,2705,2706,2707,2708,2709,2710,2708,2709,2710,2711,2712,2713,2711,2712,2713,2714,2715,2716,2714,2715,2716,2717,2718,2719,2717,2718,2719,2720,2721,2722,2720,2721,2722,2723,2724,2725,2723,2724,2725,2726,2727,2728,2726,2727,2728,2729,2730,2731,2729,2730,2731,2732,2733,2734,2732,2733,2734,2735,2736,2737,2735,2736,2737,2738,2739,2740,2738,2739,2740,2741,2742,2743,2741,2742,2743,2744,2745,2746,2744,2745,2746,2747,2748,2749,2747,2748,2749,2750,2751,2752,2750,2751,2752],"red_nether_brick_wall":[2753,2754,2755,2753,2754,2755,0,2756,2757,0,2756,2757,2758,2759,2760,2758,2759,2760,2761,2762,2763,2761,2762,2763,2764,2765,2766,2764,2765,2766,2767,2768,2769,2767,2768,2769,2770,2771,2772,2770,2771,2772,2773,2774,2775,2773,2774,2775,2776,2777,2778,2776,2777,2778,2779,2780,2781,2779,2780,2781,2782,2783,2784,2782,2783,2784,2785,2786,2787,2785,2786,2787,2788,2789,2790,2788,2789,2790,2791,2792,2793,2791,2792,2793,2794,2795,2796,2794,2795,2796,2797,2798,2799,2797,2798,2799,2800,2801,2802,2800,2801,2802,2803,2804,2805,2803,2804,2805,2806,2807,2808,2806,2807,2808,2809,2810,2811,2809,2810,2811,2812,2813,2814,2812,2813,2814,2815,2816,2817,2815,2816,2817,2818,2819,2820,2818,2819,2820,2821,2822,2823,2821,2822,2823,2824,2825,2826,2824,2825,2826,2827,2828,2829,2827,2828,2829,2830,2831,2832,2830,2831,2832,2833,2834,2835,2833,2834,2835,2836,2837,2838,2836,2837,2838,2839,2840,2841,2839,2840,2841,2842,2843,2844,2842,2843,2844,2845,2846,2847,2845,2846,2847,2848,2849,2850,2848,2849,2850,2851,2852,2853,2851,2852,2853,2854,2855,2856,2854,2855,2856,2857,2858,2859,2857,2858,2859,2860,2861,2862,2860,2861,2862,2863,2864,2865,2863,2864,2865,2866,2867,2868,2866,2867,2868,2869,2870,2871,2869,2870,2871,2872,2873,2874,2872,2873,2874,2875,2876,2877,2875,2876,2877,2878,2879,2880,2878,2879,2880,2881,2882,2883,2881,2882,2883,2884,2885,2886,2884,2885,2886,2887,2888,2889,2887,2888,2889,2890,2891,2892,2890,2891,2892,2893,2894,2895,2893,2894,2895,2896,2897,2898,2896,2897,2898,2899,2900,2901,2899,2900,2901,2902,2903,2904,2902,2903,2904,2905,2906,2907,2905,2906,2907,2908,2909,2910,2908,2909,2910,2911,2912,2913,2911,2912,2913],"sandstone_wall":[2914,2915,2916,2914,2915,2916,0,2917,2918,0,2917,2918,2919,2920,2921,2919,2920,2921,2922,2923,2924,2922,2923,2924,2925,2926,2927,2925,2926,2927,2928,2929,2930,2928,2929,2930,2931,2932,2933,2931,2932,2933,2934,2935,2936,2934,2935,2936,2937,2938,2939,2937,2938,2939,2940,2941,2942,2940,2941,2942,2943,2944,2945,2943,2944,2945,2946,2947,2948,2946,2947,2948,2949,2950,2951,2949,2950,2951,2952,2953,2954,2952,2953,2954,2955,2956,2957,2955,2956,2957,2958,2959,2960,2958,2959,2960,2961,2962,2963,2961,2962,2963,2964,2965,2966,2964,2965,2966,2967,2968,2969,2967,2968,2969,2970,2971,2972,2970,2971,2972,2973,2974,2975,2973,2974,2975,2976,2977,2978,2976,2977,2978,2979,2980,2981,2979,2980,2981,2982,2983,2984,2982,2983,2984,2985,2986,2987,2985,2986,2987,2988,2989,2990,2988,2989,2990,2991,2992,2993,2991,2992,2993,2994,2995,2996,2994,2995,2996,2997,2998,2999,2997,2998,2999,3000,3001,3002,3000,3001,3002,3003,3004,3005,3003,3004,3005,3006,3007,3008,3006,3007,3008,3009,3010,3011,3009,3010,3011,3012,3013,3014,3012,3013,3014,3015,3016,3017,3015,3016,3017,3018,3019,3020,3018,3019,3020,3021,3022,3023,3021,3022,3023,3024,3025,3026,3024,3025,3026,3027,3028,3029,3027,3028,3029,3030,3031,3032,3030,3031,3032,3033,3034,3035,3033,3034,3035,3036,3037,3038,3036,3037,3038,3039,3040,3041,3039,3040,3041,3042,3043,3044,3042,3043,3044,3045,3046,3047,3045,3046,3047,3048,3049,3050,3048,3049,3050,3051,3052,3053,3051,3052,3053,3054,3055,3056,3054,3055,3056,3057,3058,3059,3057,3058,3059,3060,3061,3062,3060,3061,3062,3063,3064,3065,3063,3064,3065,3066,3067,3068,3066,3067,3068,3069,3070,3071,3069,3070,3071,3072,3073,3074,3072,3073,3074],"end_stone_brick_wall":[3075,3076,3077,3075,3076,3077,0,3078,3079,0,3078,3079,3080,3081,3082,3080,3081,3082,3083,3084,3085,3083,3084,3085,3086,3087,3088,3086,3087,3088,3089,3090,3091,3089,3090,3091,3092,3093,3094,3092,3093,3094,3095,3096,3097,3095,3096,3097,3098,3099,3100,3098,3099,3100,3101,3102,3103,3101,3102,3103,3104,3105,3106,3104,3105,3106,3107,3108,3109,3107,3108,3109,3110,3111,3112,3110,3111,3112,3113,3114,3115,3113,3114,3115,3116,3117,3118,3116,3117,3118,3119,3120,3121,3119,3120,3121,3122,3123,3124,3122,3123,3124,3125,3126,3127,3125,3126,3127,3128,3129,3130,3128,3129,3130,3131,3132,3133,3131,3132,3133,3134,3135,3136,3134,3135,3136,3137,3138,3139,3137,3138,3139,3140,3141,3142,3140,3141,3142,3143,3144,3145,3143,3144,3145,3146,3147,3148,3146,3147,3148,3149,3150,3151,3149,3150,3151,3152,3153,3154,3152,3153,3154,3155,3156,3157,3155,3156,3157,3158,3159,3160,3158,3159,3160,3161,3162,3163,3161,3162,3163,3164,3165,3166,3164,3165,3166,3167,3168,3169,3167,3168,3169,3170,3171,3172,3170,3171,3172,3173,3174,3175,3173,3174,3175,3176,3177,3178,3176,3177,3178,3179,3180,3181,3179,3180,3181,3182,3183,3184,3182,3183,3184,3185,3186,3187,3185,3186,3187,3188,3189,3190,3188,3189,3190,3191,3192,3193,3191,3192,3193,3194,3195,3196,3194,3195,3196,3197,3198,3199,3197,3198,3199,3200,3201,3202,3200,3201,3202,3203,3204,3205,3203,3204,3205,3206,3207,3208,3206,3207,3208,3209,3210,3211,3209,3210,3211,3212,3213,3214,3212,3213,3214,3215,3216,3217,3215,3216,3217,3218,3219,3220,3218,3219,3220,3221,3222,3223,3221,3222,3223,3224,3225,3226,3224,3225,3226,3227,3228,3229,3227,3228,3229,3230,3231,3232,3230,3231,3232,3233,3234,3235,3233,3234,3235],"diorite_wall":[3236,3237,3238,3236,3237,3238,0,3239,3240,0,3239,3240,3241,3242,3243,3241,3242,3243,3244,3245,3246,3244,3245,3246,3247,3248,3249,3247,3248,3249,3250,3251,3252,3250,3251,3252,3253,3254,3255,3253,3254,3255,3256,3257,3258,3256,3257,3258,3259,3260,3261,3259,3260,3261,3262,3263,3264,3262,3263,3264,3265,3266,3267,3265,3266,3267,3268,3269,3270,3268,3269,3270,3271,3272,3273,3271,3272,3273,3274,3275,3276,3274,3275,3276,3277,3278,3279,3277,3278,3279,3280,3281,3282,3280,3281,3282,3283,3284,3285,3283,3284,3285,3286,3287,3288,3286,3287,3288,3289,3290,3291,3289,3290,3291,3292,3293,3294,3292,3293,3294,3295,3296,3297,3295,3296,3297,3298,3299,3300,3298,3299,3300,3301,3302,3303,3301,3302,3303,3304,3305,3306,3304,3305,3306,3307,3308,3309,3307,3308,3309,3310,3311,3312,3310,3311,3312,3313,3314,3315,3313,3314,3315,3316,3317,3318,3316,3317,3318,3319,3320,3321,3319,3320,3321,3322,3323,3324,3322,3323,3324,3325,3326,3327,3325,3326,3327,3328,3329,3330,3328,3329,3330,3331,3332,3333,3331,3332,3333,3334,3335,3336,3334,3335,3336,3337,3338,3339,3337,3338,3339,3340,3341,3342,3340,3341,3342,3343,3344,3345,3343,3344,3345,3346,3347,3348,3346,3347,3348,3349,3350,3351,3349,3350,3351,3352,3353,3354,3352,3353,3354,3355,3356,3357,3355,3356,3357,3358,3359,3360,3358,3359,3360,3361,3362,3363,3361,3362,3363,3364,3365,3366,3364,3365,3366,3367,3368,3369,3367,3368,3369,3370,3371,3372,3370,3371,3372,3373,3374,3375,3373,3374,3375,3376,3377,3378,3376,3377,3378,3379,3380,3381,3379,3380,3381,3382,3383,3384,3382,3383,3384,3385,3386,3387,3385,3386,3387,3388,3389,3390,3388,3389,3390,3391,3392,3393,3391,3392,3393,3394,3395,3396,3394,3395,3396],"scaffolding":3397,"loom":1,"barrel":1,"smoker":1,"blast_furnace":1,"cartography_table":1,"fletching_table":1,"grindstone":[3398,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409],"lectern":3410,"smithing_table":1,"stonecutter":3411,"bell":[3412,3412,3412,3412,3413,3413,3413,3413,3414,3414,3414,3414,3414,3414,3414,3414,3415,3415,3416,3416,3417,3417,3418,3418,3419,3419,3419,3419,3420,3420,3420,3420],"lantern":[3421,3421,3422,3422],"soul_lantern":[3421,3421,3422,3422],"copper_lantern":[3421,3421,3422,3422],"exposed_copper_lantern":[3421,3421,3422,3422],"weathered_copper_lantern":[3421,3421,3422,3422],"oxidized_copper_lantern":[3421,3421,3422,3422],"waxed_copper_lantern":[3421,3421,3422,3422],"waxed_exposed_copper_lantern":[3421,3421,3422,3422],"waxed_weathered_copper_lantern":[3421,3421,3422,3422],"waxed_oxidized_copper_lantern":[3421,3421,3422,3422],"campfire":3423,"soul_campfire":3423,"sweet_berry_bush":0,"warped_stem":1,"stripped_warped_stem":1,"warped_hyphae":1,"stripped_warped_hyphae":1,"warped_nylium":1,"warped_fungus":0,"warped_wart_block":1,"warped_roots":0,"nether_sprouts":0,"crimson_stem":1,"stripped_crimson_stem":1,"crimson_hyphae":1,"stripped_crimson_hyphae":1,"crimson_nylium":1,"crimson_fungus":0,"shroomlight":1,"weeping_vines":0,"weeping_vines_plant":0,"twisting_vines":0,"twisting_vines_plant":0,"crimson_roots":0,"crimson_planks":1,"warped_planks":1,"crimson_slab":[273,273,274,274,1,1],"warped_slab":[273,273,274,274,1,1],"crimson_pressure_plate":0,"warped_pressure_plate":0,"crimson_fence":[3424,3425,3424,3425,3426,3427,3426,3427,3428,3429,3428,3429,3430,3431,3430,3431,3432,3433,3432,3433,3434,3435,3434,3435,3436,3437,3436,3437,3438,3439,3438,3439],"warped_fence":[3440,3441,3440,3441,3442,3443,3442,3443,3444,3445,3444,3445,3446,3447,3446,3447,3448,3449,3448,3449,3450,3451,3450,3451,3452,3453,3452,3453,3454,3455,3454,3455],"crimson_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"warped_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"crimson_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"warped_fence_gate":[0,0,270,270,0,0,270,270,0,0,270,270,0,0,270,270,0,0,271,271,0,0,271,271,0,0,271,271,0,0,271,271],"crimson_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"warped_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"crimson_button":0,"warped_button":0,"crimson_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"warped_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"crimson_sign":0,"warped_sign":0,"crimson_wall_sign":0,"warped_wall_sign":0,"structure_block":1,"jigsaw":1,"test_block":1,"test_instance_block":1,"composter":3456,"target":1,"bee_nest":1,"beehive":1,"honey_block":3457,"honeycomb_block":1,"netherite_block":1,"ancient_debris":1,"crying_obsidian":1,"respawn_anchor":1,"potted_crimson_fungus":793,"potted_warped_fungus":793,"potted_crimson_roots":793,"potted_warped_roots":793,"lodestone":1,"blackstone":1,"blackstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"blackstone_wall":[3458,3459,3460,3458,3459,3460,0,3461,3462,0,3461,3462,3463,3464,3465,3463,3464,3465,3466,3467,3468,3466,3467,3468,3469,3470,3471,3469,3470,3471,3472,3473,3474,3472,3473,3474,3475,3476,3477,3475,3476,3477,3478,3479,3480,3478,3479,3480,3481,3482,3483,3481,3482,3483,3484,3485,3486,3484,3485,3486,3487,3488,3489,3487,3488,3489,3490,3491,3492,3490,3491,3492,3493,3494,3495,3493,3494,3495,3496,3497,3498,3496,3497,3498,3499,3500,3501,3499,3500,3501,3502,3503,3504,3502,3503,3504,3505,3506,3507,3505,3506,3507,3508,3509,3510,3508,3509,3510,3511,3512,3513,3511,3512,3513,3514,3515,3516,3514,3515,3516,3517,3518,3519,3517,3518,3519,3520,3521,3522,3520,3521,3522,3523,3524,3525,3523,3524,3525,3526,3527,3528,3526,3527,3528,3529,3530,3531,3529,3530,3531,3532,3533,3534,3532,3533,3534,3535,3536,3537,3535,3536,3537,3538,3539,3540,3538,3539,3540,3541,3542,3543,3541,3542,3543,3544,3545,3546,3544,3545,3546,3547,3548,3549,3547,3548,3549,3550,3551,3552,3550,3551,3552,3553,3554,3555,3553,3554,3555,3556,3557,3558,3556,3557,3558,3559,3560,3561,3559,3560,3561,3562,3563,3564,3562,3563,3564,3565,3566,3567,3565,3566,3567,3568,3569,3570,3568,3569,3570,3571,3572,3573,3571,3572,3573,3574,3575,3576,3574,3575,3576,3577,3578,3579,3577,3578,3579,3580,3581,3582,3580,3581,3582,3583,3584,3585,3583,3584,3585,3586,3587,3588,3586,3587,3588,3589,3590,3591,3589,3590,3591,3592,3593,3594,3592,3593,3594,3595,3596,3597,3595,3596,3597,3598,3599,3600,3598,3599,3600,3601,3602,3603,3601,3602,3603,3604,3605,3606,3604,3605,3606,3607,3608,3609,3607,3608,3609,3610,3611,3612,3610,3611,3612,3613,3614,3615,3613,3614,3615,3616,3617,3618,3616,3617,3618],"blackstone_slab":[273,273,274,274,1,1],"polished_blackstone":1,"polished_blackstone_bricks":1,"cracked_polished_blackstone_bricks":1,"chiseled_polished_blackstone":1,"polished_blackstone_brick_slab":[273,273,274,274,1,1],"polished_blackstone_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_blackstone_brick_wall":[3619,3620,3621,3619,3620,3621,0,3622,3623,0,3622,3623,3624,3625,3626,3624,3625,3626,3627,3628,3629,3627,3628,3629,3630,3631,3632,3630,3631,3632,3633,3634,3635,3633,3634,3635,3636,3637,3638,3636,3637,3638,3639,3640,3641,3639,3640,3641,3642,3643,3644,3642,3643,3644,3645,3646,3647,3645,3646,3647,3648,3649,3650,3648,3649,3650,3651,3652,3653,3651,3652,3653,3654,3655,3656,3654,3655,3656,3657,3658,3659,3657,3658,3659,3660,3661,3662,3660,3661,3662,3663,3664,3665,3663,3664,3665,3666,3667,3668,3666,3667,3668,3669,3670,3671,3669,3670,3671,3672,3673,3674,3672,3673,3674,3675,3676,3677,3675,3676,3677,3678,3679,3680,3678,3679,3680,3681,3682,3683,3681,3682,3683,3684,3685,3686,3684,3685,3686,3687,3688,3689,3687,3688,3689,3690,3691,3692,3690,3691,3692,3693,3694,3695,3693,3694,3695,3696,3697,3698,3696,3697,3698,3699,3700,3701,3699,3700,3701,3702,3703,3704,3702,3703,3704,3705,3706,3707,3705,3706,3707,3708,3709,3710,3708,3709,3710,3711,3712,3713,3711,3712,3713,3714,3715,3716,3714,3715,3716,3717,3718,3719,3717,3718,3719,3720,3721,3722,3720,3721,3722,3723,3724,3725,3723,3724,3725,3726,3727,3728,3726,3727,3728,3729,3730,3731,3729,3730,3731,3732,3733,3734,3732,3733,3734,3735,3736,3737,3735,3736,3737,3738,3739,3740,3738,3739,3740,3741,3742,3743,3741,3742,3743,3744,3745,3746,3744,3745,3746,3747,3748,3749,3747,3748,3749,3750,3751,3752,3750,3751,3752,3753,3754,3755,3753,3754,3755,3756,3757,3758,3756,3757,3758,3759,3760,3761,3759,3760,3761,3762,3763,3764,3762,3763,3764,3765,3766,3767,3765,3766,3767,3768,3769,3770,3768,3769,3770,3771,3772,3773,3771,3772,3773,3774,3775,3776,3774,3775,3776,3777,3778,3779,3777,3778,3779],"gilded_blackstone":1,"polished_blackstone_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_blackstone_slab":[273,273,274,274,1,1],"polished_blackstone_pressure_plate":0,"polished_blackstone_button":0,"polished_blackstone_wall":[3780,3781,3782,3780,3781,3782,0,3783,3784,0,3783,3784,3785,3786,3787,3785,3786,3787,3788,3789,3790,3788,3789,3790,3791,3792,3793,3791,3792,3793,3794,3795,3796,3794,3795,3796,3797,3798,3799,3797,3798,3799,3800,3801,3802,3800,3801,3802,3803,3804,3805,3803,3804,3805,3806,3807,3808,3806,3807,3808,3809,3810,3811,3809,3810,3811,3812,3813,3814,3812,3813,3814,3815,3816,3817,3815,3816,3817,3818,3819,3820,3818,3819,3820,3821,3822,3823,3821,3822,3823,3824,3825,3826,3824,3825,3826,3827,3828,3829,3827,3828,3829,3830,3831,3832,3830,3831,3832,3833,3834,3835,3833,3834,3835,3836,3837,3838,3836,3837,3838,3839,3840,3841,3839,3840,3841,3842,3843,3844,3842,3843,3844,3845,3846,3847,3845,3846,3847,3848,3849,3850,3848,3849,3850,3851,3852,3853,3851,3852,3853,3854,3855,3856,3854,3855,3856,3857,3858,3859,3857,3858,3859,3860,3861,3862,3860,3861,3862,3863,3864,3865,3863,3864,3865,3866,3867,3868,3866,3867,3868,3869,3870,3871,3869,3870,3871,3872,3873,3874,3872,3873,3874,3875,3876,3877,3875,3876,3877,3878,3879,3880,3878,3879,3880,3881,3882,3883,3881,3882,3883,3884,3885,3886,3884,3885,3886,3887,3888,3889,3887,3888,3889,3890,3891,3892,3890,3891,3892,3893,3894,3895,3893,3894,3895,3896,3897,3898,3896,3897,3898,3899,3900,3901,3899,3900,3901,3902,3903,3904,3902,3903,3904,3905,3906,3907,3905,3906,3907,3908,3909,3910,3908,3909,3910,3911,3912,3913,3911,3912,3913,3914,3915,3916,3914,3915,3916,3917,3918,3919,3917,3918,3919,3920,3921,3922,3920,3921,3922,3923,3924,3925,3923,3924,3925,3926,3927,3928,3926,3927,3928,3929,3930,3931,3929,3930,3931,3932,3933,3934,3932,3933,3934,3935,3936,3937,3935,3936,3937,3938,3939,3940,3938,3939,3940],"chiseled_nether_bricks":1,"cracked_nether_bricks":1,"quartz_bricks":1,"candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"white_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"orange_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"magenta_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"light_blue_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"yellow_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"lime_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"pink_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"gray_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"light_gray_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"cyan_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"purple_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"blue_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"brown_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"green_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"red_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"black_candle":[3941,3941,3941,3941,3942,3942,3942,3942,3943,3943,3943,3943,3944,3944,3944,3944],"candle_cake":3945,"white_candle_cake":3945,"orange_candle_cake":3945,"magenta_candle_cake":3945,"light_blue_candle_cake":3945,"yellow_candle_cake":3945,"lime_candle_cake":3945,"pink_candle_cake":3945,"gray_candle_cake":3945,"light_gray_candle_cake":3945,"cyan_candle_cake":3945,"purple_candle_cake":3945,"blue_candle_cake":3945,"brown_candle_cake":3945,"green_candle_cake":3945,"red_candle_cake":3945,"black_candle_cake":3945,"amethyst_block":1,"budding_amethyst":1,"amethyst_cluster":[3946,3946,3947,3947,3948,3948,3949,3949,3950,3950,3951,3951],"large_amethyst_bud":[3952,3952,3953,3953,3954,3954,3955,3955,3956,3956,3957,3957],"medium_amethyst_bud":[3958,3958,3959,3959,3960,3960,3961,3961,3962,3962,3963,3963],"small_amethyst_bud":[3964,3964,3965,3965,3966,3966,3967,3967,3968,3968,3969,3969],"tuff":1,"tuff_slab":[273,273,274,274,1,1],"tuff_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"tuff_wall":[3970,3971,3972,3970,3971,3972,0,3973,3974,0,3973,3974,3975,3976,3977,3975,3976,3977,3978,3979,3980,3978,3979,3980,3981,3982,3983,3981,3982,3983,3984,3985,3986,3984,3985,3986,3987,3988,3989,3987,3988,3989,3990,3991,3992,3990,3991,3992,3993,3994,3995,3993,3994,3995,3996,3997,3998,3996,3997,3998,3999,4000,4001,3999,4000,4001,4002,4003,4004,4002,4003,4004,4005,4006,4007,4005,4006,4007,4008,4009,4010,4008,4009,4010,4011,4012,4013,4011,4012,4013,4014,4015,4016,4014,4015,4016,4017,4018,4019,4017,4018,4019,4020,4021,4022,4020,4021,4022,4023,4024,4025,4023,4024,4025,4026,4027,4028,4026,4027,4028,4029,4030,4031,4029,4030,4031,4032,4033,4034,4032,4033,4034,4035,4036,4037,4035,4036,4037,4038,4039,4040,4038,4039,4040,4041,4042,4043,4041,4042,4043,4044,4045,4046,4044,4045,4046,4047,4048,4049,4047,4048,4049,4050,4051,4052,4050,4051,4052,4053,4054,4055,4053,4054,4055,4056,4057,4058,4056,4057,4058,4059,4060,4061,4059,4060,4061,4062,4063,4064,4062,4063,4064,4065,4066,4067,4065,4066,4067,4068,4069,4070,4068,4069,4070,4071,4072,4073,4071,4072,4073,4074,4075,4076,4074,4075,4076,4077,4078,4079,4077,4078,4079,4080,4081,4082,4080,4081,4082,4083,4084,4085,4083,4084,4085,4086,4087,4088,4086,4087,4088,4089,4090,4091,4089,4090,4091,4092,4093,4094,4092,4093,4094,4095,4096,4097,4095,4096,4097,4098,4099,4100,4098,4099,4100,4101,4102,4103,4101,4102,4103,4104,4105,4106,4104,4105,4106,4107,4108,4109,4107,4108,4109,4110,4111,4112,4110,4111,4112,4113,4114,4115,4113,4114,4115,4116,4117,4118,4116,4117,4118,4119,4120,4121,4119,4120,4121,4122,4123,4124,4122,4123,4124,4125,4126,4127,4125,4126,4127,4128,4129,4130,4128,4129,4130],"polished_tuff":1,"polished_tuff_slab":[273,273,274,274,1,1],"polished_tuff_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_tuff_wall":[4131,4132,4133,4131,4132,4133,0,4134,4135,0,4134,4135,4136,4137,4138,4136,4137,4138,4139,4140,4141,4139,4140,4141,4142,4143,4144,4142,4143,4144,4145,4146,4147,4145,4146,4147,4148,4149,4150,4148,4149,4150,4151,4152,4153,4151,4152,4153,4154,4155,4156,4154,4155,4156,4157,4158,4159,4157,4158,4159,4160,4161,4162,4160,4161,4162,4163,4164,4165,4163,4164,4165,4166,4167,4168,4166,4167,4168,4169,4170,4171,4169,4170,4171,4172,4173,4174,4172,4173,4174,4175,4176,4177,4175,4176,4177,4178,4179,4180,4178,4179,4180,4181,4182,4183,4181,4182,4183,4184,4185,4186,4184,4185,4186,4187,4188,4189,4187,4188,4189,4190,4191,4192,4190,4191,4192,4193,4194,4195,4193,4194,4195,4196,4197,4198,4196,4197,4198,4199,4200,4201,4199,4200,4201,4202,4203,4204,4202,4203,4204,4205,4206,4207,4205,4206,4207,4208,4209,4210,4208,4209,4210,4211,4212,4213,4211,4212,4213,4214,4215,4216,4214,4215,4216,4217,4218,4219,4217,4218,4219,4220,4221,4222,4220,4221,4222,4223,4224,4225,4223,4224,4225,4226,4227,4228,4226,4227,4228,4229,4230,4231,4229,4230,4231,4232,4233,4234,4232,4233,4234,4235,4236,4237,4235,4236,4237,4238,4239,4240,4238,4239,4240,4241,4242,4243,4241,4242,4243,4244,4245,4246,4244,4245,4246,4247,4248,4249,4247,4248,4249,4250,4251,4252,4250,4251,4252,4253,4254,4255,4253,4254,4255,4256,4257,4258,4256,4257,4258,4259,4260,4261,4259,4260,4261,4262,4263,4264,4262,4263,4264,4265,4266,4267,4265,4266,4267,4268,4269,4270,4268,4269,4270,4271,4272,4273,4271,4272,4273,4274,4275,4276,4274,4275,4276,4277,4278,4279,4277,4278,4279,4280,4281,4282,4280,4281,4282,4283,4284,4285,4283,4284,4285,4286,4287,4288,4286,4287,4288,4289,4290,4291,4289,4290,4291],"chiseled_tuff":1,"tuff_bricks":1,"tuff_brick_slab":[273,273,274,274,1,1],"tuff_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"tuff_brick_wall":[4292,4293,4294,4292,4293,4294,0,4295,4296,0,4295,4296,4297,4298,4299,4297,4298,4299,4300,4301,4302,4300,4301,4302,4303,4304,4305,4303,4304,4305,4306,4307,4308,4306,4307,4308,4309,4310,4311,4309,4310,4311,4312,4313,4314,4312,4313,4314,4315,4316,4317,4315,4316,4317,4318,4319,4320,4318,4319,4320,4321,4322,4323,4321,4322,4323,4324,4325,4326,4324,4325,4326,4327,4328,4329,4327,4328,4329,4330,4331,4332,4330,4331,4332,4333,4334,4335,4333,4334,4335,4336,4337,4338,4336,4337,4338,4339,4340,4341,4339,4340,4341,4342,4343,4344,4342,4343,4344,4345,4346,4347,4345,4346,4347,4348,4349,4350,4348,4349,4350,4351,4352,4353,4351,4352,4353,4354,4355,4356,4354,4355,4356,4357,4358,4359,4357,4358,4359,4360,4361,4362,4360,4361,4362,4363,4364,4365,4363,4364,4365,4366,4367,4368,4366,4367,4368,4369,4370,4371,4369,4370,4371,4372,4373,4374,4372,4373,4374,4375,4376,4377,4375,4376,4377,4378,4379,4380,4378,4379,4380,4381,4382,4383,4381,4382,4383,4384,4385,4386,4384,4385,4386,4387,4388,4389,4387,4388,4389,4390,4391,4392,4390,4391,4392,4393,4394,4395,4393,4394,4395,4396,4397,4398,4396,4397,4398,4399,4400,4401,4399,4400,4401,4402,4403,4404,4402,4403,4404,4405,4406,4407,4405,4406,4407,4408,4409,4410,4408,4409,4410,4411,4412,4413,4411,4412,4413,4414,4415,4416,4414,4415,4416,4417,4418,4419,4417,4418,4419,4420,4421,4422,4420,4421,4422,4423,4424,4425,4423,4424,4425,4426,4427,4428,4426,4427,4428,4429,4430,4431,4429,4430,4431,4432,4433,4434,4432,4433,4434,4435,4436,4437,4435,4436,4437,4438,4439,4440,4438,4439,4440,4441,4442,4443,4441,4442,4443,4444,4445,4446,4444,4445,4446,4447,4448,4449,4447,4448,4449,4450,4451,4452,4450,4451,4452],"chiseled_tuff_bricks":1,"calcite":1,"tinted_glass":1,"powder_snow":0,"sculk_sensor":4453,"calibrated_sculk_sensor":4453,"sculk":1,"sculk_vein":0,"sculk_catalyst":1,"sculk_shrieker":4454,"copper_block":1,"exposed_copper":1,"weathered_copper":1,"oxidized_copper":1,"copper_ore":1,"deepslate_copper_ore":1,"oxidized_cut_copper":1,"weathered_cut_copper":1,"exposed_cut_copper":1,"cut_copper":1,"oxidized_chiseled_copper":1,"weathered_chiseled_copper":1,"exposed_chiseled_copper":1,"chiseled_copper":1,"waxed_oxidized_chiseled_copper":1,"waxed_weathered_chiseled_copper":1,"waxed_exposed_chiseled_copper":1,"waxed_chiseled_copper":1,"oxidized_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"weathered_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"exposed_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"oxidized_cut_copper_slab":[273,273,274,274,1,1],"weathered_cut_copper_slab":[273,273,274,274,1,1],"exposed_cut_copper_slab":[273,273,274,274,1,1],"cut_copper_slab":[273,273,274,274,1,1],"waxed_copper_block":1,"waxed_weathered_copper":1,"waxed_exposed_copper":1,"waxed_oxidized_copper":1,"waxed_oxidized_cut_copper":1,"waxed_weathered_cut_copper":1,"waxed_exposed_cut_copper":1,"waxed_cut_copper":1,"waxed_oxidized_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"waxed_weathered_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"waxed_exposed_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"waxed_cut_copper_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"waxed_oxidized_cut_copper_slab":[273,273,274,274,1,1],"waxed_weathered_cut_copper_slab":[273,273,274,274,1,1],"waxed_exposed_cut_copper_slab":[273,273,274,274,1,1],"waxed_cut_copper_slab":[273,273,274,274,1,1],"copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"exposed_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"oxidized_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"weathered_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"waxed_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"waxed_exposed_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"waxed_oxidized_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"waxed_weathered_copper_door":[58,58,59,59,60,60,59,59,58,58,59,59,60,60,59,59,60,60,61,61,58,58,61,61,60,60,61,61,58,58,61,61,59,59,60,60,61,61,60,60,59,59,60,60,61,61,60,60,61,61,58,58,59,59,58,58,61,61,58,58,59,59,58,58],"copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"exposed_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"oxidized_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"weathered_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"waxed_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"waxed_exposed_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"waxed_oxidized_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"waxed_weathered_copper_trapdoor":[101,101,101,101,102,102,102,102,101,101,101,101,103,103,103,103,104,104,104,104,102,102,102,102,104,104,104,104,103,103,103,103,105,105,105,105,102,102,102,102,105,105,105,105,103,103,103,103,106,106,106,106,102,102,102,102,106,106,106,106,103,103,103,103],"copper_grate":1,"exposed_copper_grate":1,"weathered_copper_grate":1,"oxidized_copper_grate":1,"waxed_copper_grate":1,"waxed_exposed_copper_grate":1,"waxed_weathered_copper_grate":1,"waxed_oxidized_copper_grate":1,"copper_bulb":1,"exposed_copper_bulb":1,"weathered_copper_bulb":1,"oxidized_copper_bulb":1,"waxed_copper_bulb":1,"waxed_exposed_copper_bulb":1,"waxed_weathered_copper_bulb":1,"waxed_oxidized_copper_bulb":1,"copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"exposed_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"weathered_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"oxidized_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"waxed_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"waxed_exposed_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"waxed_weathered_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"waxed_oxidized_copper_chest":[52,52,53,53,54,54,52,52,54,54,53,53,52,52,55,55,56,56,52,52,56,56,55,55],"copper_golem_statue":4455,"exposed_copper_golem_statue":4455,"weathered_copper_golem_statue":4455,"oxidized_copper_golem_statue":4455,"waxed_copper_golem_statue":4455,"waxed_exposed_copper_golem_statue":4455,"waxed_weathered_copper_golem_statue":4455,"waxed_oxidized_copper_golem_statue":4455,"lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"exposed_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"weathered_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"oxidized_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"waxed_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"waxed_exposed_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"waxed_weathered_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"waxed_oxidized_lightning_rod":[1213,1213,1213,1213,1214,1214,1214,1214,1213,1213,1213,1213,1214,1214,1214,1214,1215,1215,1215,1215,1215,1215,1215,1215],"pointed_dripstone":[4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475],"dripstone_block":1,"cave_vines":0,"cave_vines_plant":0,"spore_blossom":0,"azalea":4476,"flowering_azalea":4476,"moss_carpet":1068,"pink_petals":0,"wildflowers":0,"leaf_litter":0,"moss_block":1,"big_dripleaf":[4477,4477,4478,4478,4479,4479,0,0,4477,4477,4478,4478,4479,4479,0,0,4477,4477,4478,4478,4479,4479,0,0,4477,4477,4478,4478,4479,4479,0,0],"big_dripleaf_stem":0,"small_dripleaf":0,"hanging_roots":0,"rooted_dirt":1,"mud":4480,"deepslate":1,"cobbled_deepslate":1,"cobbled_deepslate_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"cobbled_deepslate_slab":[273,273,274,274,1,1],"cobbled_deepslate_wall":[4481,4482,4483,4481,4482,4483,0,4484,4485,0,4484,4485,4486,4487,4488,4486,4487,4488,4489,4490,4491,4489,4490,4491,4492,4493,4494,4492,4493,4494,4495,4496,4497,4495,4496,4497,4498,4499,4500,4498,4499,4500,4501,4502,4503,4501,4502,4503,4504,4505,4506,4504,4505,4506,4507,4508,4509,4507,4508,4509,4510,4511,4512,4510,4511,4512,4513,4514,4515,4513,4514,4515,4516,4517,4518,4516,4517,4518,4519,4520,4521,4519,4520,4521,4522,4523,4524,4522,4523,4524,4525,4526,4527,4525,4526,4527,4528,4529,4530,4528,4529,4530,4531,4532,4533,4531,4532,4533,4534,4535,4536,4534,4535,4536,4537,4538,4539,4537,4538,4539,4540,4541,4542,4540,4541,4542,4543,4544,4545,4543,4544,4545,4546,4547,4548,4546,4547,4548,4549,4550,4551,4549,4550,4551,4552,4553,4554,4552,4553,4554,4555,4556,4557,4555,4556,4557,4558,4559,4560,4558,4559,4560,4561,4562,4563,4561,4562,4563,4564,4565,4566,4564,4565,4566,4567,4568,4569,4567,4568,4569,4570,4571,4572,4570,4571,4572,4573,4574,4575,4573,4574,4575,4576,4577,4578,4576,4577,4578,4579,4580,4581,4579,4580,4581,4582,4583,4584,4582,4583,4584,4585,4586,4587,4585,4586,4587,4588,4589,4590,4588,4589,4590,4591,4592,4593,4591,4592,4593,4594,4595,4596,4594,4595,4596,4597,4598,4599,4597,4598,4599,4600,4601,4602,4600,4601,4602,4603,4604,4605,4603,4604,4605,4606,4607,4608,4606,4607,4608,4609,4610,4611,4609,4610,4611,4612,4613,4614,4612,4613,4614,4615,4616,4617,4615,4616,4617,4618,4619,4620,4618,4619,4620,4621,4622,4623,4621,4622,4623,4624,4625,4626,4624,4625,4626,4627,4628,4629,4627,4628,4629,4630,4631,4632,4630,4631,4632,4633,4634,4635,4633,4634,4635,4636,4637,4638,4636,4637,4638,4639,4640,4641,4639,4640,4641],"polished_deepslate":1,"polished_deepslate_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_deepslate_slab":[273,273,274,274,1,1],"polished_deepslate_wall":[4642,4643,4644,4642,4643,4644,0,4645,4646,0,4645,4646,4647,4648,4649,4647,4648,4649,4650,4651,4652,4650,4651,4652,4653,4654,4655,4653,4654,4655,4656,4657,4658,4656,4657,4658,4659,4660,4661,4659,4660,4661,4662,4663,4664,4662,4663,4664,4665,4666,4667,4665,4666,4667,4668,4669,4670,4668,4669,4670,4671,4672,4673,4671,4672,4673,4674,4675,4676,4674,4675,4676,4677,4678,4679,4677,4678,4679,4680,4681,4682,4680,4681,4682,4683,4684,4685,4683,4684,4685,4686,4687,4688,4686,4687,4688,4689,4690,4691,4689,4690,4691,4692,4693,4694,4692,4693,4694,4695,4696,4697,4695,4696,4697,4698,4699,4700,4698,4699,4700,4701,4702,4703,4701,4702,4703,4704,4705,4706,4704,4705,4706,4707,4708,4709,4707,4708,4709,4710,4711,4712,4710,4711,4712,4713,4714,4715,4713,4714,4715,4716,4717,4718,4716,4717,4718,4719,4720,4721,4719,4720,4721,4722,4723,4724,4722,4723,4724,4725,4726,4727,4725,4726,4727,4728,4729,4730,4728,4729,4730,4731,4732,4733,4731,4732,4733,4734,4735,4736,4734,4735,4736,4737,4738,4739,4737,4738,4739,4740,4741,4742,4740,4741,4742,4743,4744,4745,4743,4744,4745,4746,4747,4748,4746,4747,4748,4749,4750,4751,4749,4750,4751,4752,4753,4754,4752,4753,4754,4755,4756,4757,4755,4756,4757,4758,4759,4760,4758,4759,4760,4761,4762,4763,4761,4762,4763,4764,4765,4766,4764,4765,4766,4767,4768,4769,4767,4768,4769,4770,4771,4772,4770,4771,4772,4773,4774,4775,4773,4774,4775,4776,4777,4778,4776,4777,4778,4779,4780,4781,4779,4780,4781,4782,4783,4784,4782,4783,4784,4785,4786,4787,4785,4786,4787,4788,4789,4790,4788,4789,4790,4791,4792,4793,4791,4792,4793,4794,4795,4796,4794,4795,4796,4797,4798,4799,4797,4798,4799,4800,4801,4802,4800,4801,4802],"deepslate_tiles":1,"deepslate_tile_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"deepslate_tile_slab":[273,273,274,274,1,1],"deepslate_tile_wall":[4803,4804,4805,4803,4804,4805,0,4806,4807,0,4806,4807,4808,4809,4810,4808,4809,4810,4811,4812,4813,4811,4812,4813,4814,4815,4816,4814,4815,4816,4817,4818,4819,4817,4818,4819,4820,4821,4822,4820,4821,4822,4823,4824,4825,4823,4824,4825,4826,4827,4828,4826,4827,4828,4829,4830,4831,4829,4830,4831,4832,4833,4834,4832,4833,4834,4835,4836,4837,4835,4836,4837,4838,4839,4840,4838,4839,4840,4841,4842,4843,4841,4842,4843,4844,4845,4846,4844,4845,4846,4847,4848,4849,4847,4848,4849,4850,4851,4852,4850,4851,4852,4853,4854,4855,4853,4854,4855,4856,4857,4858,4856,4857,4858,4859,4860,4861,4859,4860,4861,4862,4863,4864,4862,4863,4864,4865,4866,4867,4865,4866,4867,4868,4869,4870,4868,4869,4870,4871,4872,4873,4871,4872,4873,4874,4875,4876,4874,4875,4876,4877,4878,4879,4877,4878,4879,4880,4881,4882,4880,4881,4882,4883,4884,4885,4883,4884,4885,4886,4887,4888,4886,4887,4888,4889,4890,4891,4889,4890,4891,4892,4893,4894,4892,4893,4894,4895,4896,4897,4895,4896,4897,4898,4899,4900,4898,4899,4900,4901,4902,4903,4901,4902,4903,4904,4905,4906,4904,4905,4906,4907,4908,4909,4907,4908,4909,4910,4911,4912,4910,4911,4912,4913,4914,4915,4913,4914,4915,4916,4917,4918,4916,4917,4918,4919,4920,4921,4919,4920,4921,4922,4923,4924,4922,4923,4924,4925,4926,4927,4925,4926,4927,4928,4929,4930,4928,4929,4930,4931,4932,4933,4931,4932,4933,4934,4935,4936,4934,4935,4936,4937,4938,4939,4937,4938,4939,4940,4941,4942,4940,4941,4942,4943,4944,4945,4943,4944,4945,4946,4947,4948,4946,4947,4948,4949,4950,4951,4949,4950,4951,4952,4953,4954,4952,4953,4954,4955,4956,4957,4955,4956,4957,4958,4959,4960,4958,4959,4960,4961,4962,4963,4961,4962,4963],"deepslate_bricks":1,"deepslate_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"deepslate_brick_slab":[273,273,274,274,1,1],"deepslate_brick_wall":[4964,4965,4966,4964,4965,4966,0,4967,4968,0,4967,4968,4969,4970,4971,4969,4970,4971,4972,4973,4974,4972,4973,4974,4975,4976,4977,4975,4976,4977,4978,4979,4980,4978,4979,4980,4981,4982,4983,4981,4982,4983,4984,4985,4986,4984,4985,4986,4987,4988,4989,4987,4988,4989,4990,4991,4992,4990,4991,4992,4993,4994,4995,4993,4994,4995,4996,4997,4998,4996,4997,4998,4999,5000,5001,4999,5000,5001,5002,5003,5004,5002,5003,5004,5005,5006,5007,5005,5006,5007,5008,5009,5010,5008,5009,5010,5011,5012,5013,5011,5012,5013,5014,5015,5016,5014,5015,5016,5017,5018,5019,5017,5018,5019,5020,5021,5022,5020,5021,5022,5023,5024,5025,5023,5024,5025,5026,5027,5028,5026,5027,5028,5029,5030,5031,5029,5030,5031,5032,5033,5034,5032,5033,5034,5035,5036,5037,5035,5036,5037,5038,5039,5040,5038,5039,5040,5041,5042,5043,5041,5042,5043,5044,5045,5046,5044,5045,5046,5047,5048,5049,5047,5048,5049,5050,5051,5052,5050,5051,5052,5053,5054,5055,5053,5054,5055,5056,5057,5058,5056,5057,5058,5059,5060,5061,5059,5060,5061,5062,5063,5064,5062,5063,5064,5065,5066,5067,5065,5066,5067,5068,5069,5070,5068,5069,5070,5071,5072,5073,5071,5072,5073,5074,5075,5076,5074,5075,5076,5077,5078,5079,5077,5078,5079,5080,5081,5082,5080,5081,5082,5083,5084,5085,5083,5084,5085,5086,5087,5088,5086,5087,5088,5089,5090,5091,5089,5090,5091,5092,5093,5094,5092,5093,5094,5095,5096,5097,5095,5096,5097,5098,5099,5100,5098,5099,5100,5101,5102,5103,5101,5102,5103,5104,5105,5106,5104,5105,5106,5107,5108,5109,5107,5108,5109,5110,5111,5112,5110,5111,5112,5113,5114,5115,5113,5114,5115,5116,5117,5118,5116,5117,5118,5119,5120,5121,5119,5120,5121,5122,5123,5124,5122,5123,5124],"chiseled_deepslate":1,"cracked_deepslate_bricks":1,"cracked_deepslate_tiles":1,"infested_deepslate":1,"smooth_basalt":1,"raw_iron_block":1,"raw_copper_block":1,"raw_gold_block":1,"potted_azalea_bush":793,"potted_flowering_azalea_bush":793,"ochre_froglight":1,"verdant_froglight":1,"pearlescent_froglight":1,"frogspawn":0,"reinforced_deepslate":1,"decorated_pot":5125,"crafter":1,"trial_spawner":1,"vault":1,"heavy_core":5126,"pale_moss_block":1,"pale_moss_carpet":[5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,5127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"pale_hanging_moss":0,"open_eyeblossom":0,"closed_eyeblossom":0,"potted_open_eyeblossom":793,"potted_closed_eyeblossom":793,"firefly_bush":0,"sulfur":1,"potent_sulfur":1,"polished_sulfur":1,"sulfur_bricks":1,"chiseled_sulfur":1,"cinnabar":1,"polished_cinnabar":1,"cinnabar_bricks":1,"chiseled_cinnabar":1,"sulfur_slab":[273,273,274,274,1,1],"polished_sulfur_slab":[273,273,274,274,1,1],"sulfur_brick_slab":[273,273,274,274,1,1],"cinnabar_slab":[273,273,274,274,1,1],"polished_cinnabar_slab":[273,273,274,274,1,1],"cinnabar_brick_slab":[273,273,274,274,1,1],"sulfur_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_sulfur_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"sulfur_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"cinnabar_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"polished_cinnabar_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"cinnabar_brick_stairs":[28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,40,40,29,29,42,42,31,31,49,49,45,45,34,34,47,47,36,36,50,50,30,30,39,39,32,32,41,41,51,51,35,35,44,44,37,37,46,46],"sulfur_wall":[2109,2110,2111,2109,2110,2111,0,2112,2113,0,2112,2113,2114,2115,2116,2114,2115,2116,2117,2118,2119,2117,2118,2119,2120,2121,2122,2120,2121,2122,2123,2124,2125,2123,2124,2125,2126,2127,2128,2126,2127,2128,2129,2130,2131,2129,2130,2131,2132,2133,2134,2132,2133,2134,2135,2136,2137,2135,2136,2137,2138,2139,2140,2138,2139,2140,2141,2142,2143,2141,2142,2143,2144,2145,2146,2144,2145,2146,2147,2148,2149,2147,2148,2149,2150,2151,2152,2150,2151,2152,2153,2154,2155,2153,2154,2155,2156,2157,2158,2156,2157,2158,2159,2160,2161,2159,2160,2161,2162,2163,2164,2162,2163,2164,2165,2166,2167,2165,2166,2167,2168,2169,2170,2168,2169,2170,2171,2172,2173,2171,2172,2173,2174,2175,2176,2174,2175,2176,2177,2178,2179,2177,2178,2179,2180,2181,2182,2180,2181,2182,2183,2184,2185,2183,2184,2185,2186,2187,2188,2186,2187,2188,2189,2190,2191,2189,2190,2191,2192,2193,2194,2192,2193,2194,2195,2196,2197,2195,2196,2197,2198,2199,2200,2198,2199,2200,2201,2202,2203,2201,2202,2203,2204,2205,2206,2204,2205,2206,2207,2208,2209,2207,2208,2209,2210,2211,2212,2210,2211,2212,2213,2214,2215,2213,2214,2215,2216,2217,2218,2216,2217,2218,2219,2220,2221,2219,2220,2221,2222,2223,2224,2222,2223,2224,2225,2226,2227,2225,2226,2227,2228,2229,2230,2228,2229,2230,2231,2232,2233,2231,2232,2233,2234,2235,2236,2234,2235,2236,2237,2238,2239,2237,2238,2239,2240,2241,2242,2240,2241,2242,2243,2244,2245,2243,2244,2245,2246,2247,2248,2246,2247,2248,2249,2250,2251,2249,2250,2251,2252,2253,2254,2252,2253,2254,2255,2256,2257,2255,2256,2257,2258,2259,2260,2258,2259,2260,2261,2262,2263,2261,2262,2263,2264,2265,2266,2264,2265,2266,2267,2268,2269,2267,2268,2269],"polished_sulfur_wall":[2109,2110,2111,2109,2110,2111,0,2112,2113,0,2112,2113,2114,2115,2116,2114,2115,2116,2117,2118,2119,2117,2118,2119,2120,2121,2122,2120,2121,2122,2123,2124,2125,2123,2124,2125,2126,2127,2128,2126,2127,2128,2129,2130,2131,2129,2130,2131,2132,2133,2134,2132,2133,2134,2135,2136,2137,2135,2136,2137,2138,2139,2140,2138,2139,2140,2141,2142,2143,2141,2142,2143,2144,2145,2146,2144,2145,2146,2147,2148,2149,2147,2148,2149,2150,2151,2152,2150,2151,2152,2153,2154,2155,2153,2154,2155,2156,2157,2158,2156,2157,2158,2159,2160,2161,2159,2160,2161,2162,2163,2164,2162,2163,2164,2165,2166,2167,2165,2166,2167,2168,2169,2170,2168,2169,2170,2171,2172,2173,2171,2172,2173,2174,2175,2176,2174,2175,2176,2177,2178,2179,2177,2178,2179,2180,2181,2182,2180,2181,2182,2183,2184,2185,2183,2184,2185,2186,2187,2188,2186,2187,2188,2189,2190,2191,2189,2190,2191,2192,2193,2194,2192,2193,2194,2195,2196,2197,2195,2196,2197,2198,2199,2200,2198,2199,2200,2201,2202,2203,2201,2202,2203,2204,2205,2206,2204,2205,2206,2207,2208,2209,2207,2208,2209,2210,2211,2212,2210,2211,2212,2213,2214,2215,2213,2214,2215,2216,2217,2218,2216,2217,2218,2219,2220,2221,2219,2220,2221,2222,2223,2224,2222,2223,2224,2225,2226,2227,2225,2226,2227,2228,2229,2230,2228,2229,2230,2231,2232,2233,2231,2232,2233,2234,2235,2236,2234,2235,2236,2237,2238,2239,2237,2238,2239,2240,2241,2242,2240,2241,2242,2243,2244,2245,2243,2244,2245,2246,2247,2248,2246,2247,2248,2249,2250,2251,2249,2250,2251,2252,2253,2254,2252,2253,2254,2255,2256,2257,2255,2256,2257,2258,2259,2260,2258,2259,2260,2261,2262,2263,2261,2262,2263,2264,2265,2266,2264,2265,2266,2267,2268,2269,2267,2268,2269],"sulfur_brick_wall":[2109,2110,2111,2109,2110,2111,0,2112,2113,0,2112,2113,2114,2115,2116,2114,2115,2116,2117,2118,2119,2117,2118,2119,2120,2121,2122,2120,2121,2122,2123,2124,2125,2123,2124,2125,2126,2127,2128,2126,2127,2128,2129,2130,2131,2129,2130,2131,2132,2133,2134,2132,2133,2134,2135,2136,2137,2135,2136,2137,2138,2139,2140,2138,2139,2140,2141,2142,2143,2141,2142,2143,2144,2145,2146,2144,2145,2146,2147,2148,2149,2147,2148,2149,2150,2151,2152,2150,2151,2152,2153,2154,2155,2153,2154,2155,2156,2157,2158,2156,2157,2158,2159,2160,2161,2159,2160,2161,2162,2163,2164,2162,2163,2164,2165,2166,2167,2165,2166,2167,2168,2169,2170,2168,2169,2170,2171,2172,2173,2171,2172,2173,2174,2175,2176,2174,2175,2176,2177,2178,2179,2177,2178,2179,2180,2181,2182,2180,2181,2182,2183,2184,2185,2183,2184,2185,2186,2187,2188,2186,2187,2188,2189,2190,2191,2189,2190,2191,2192,2193,2194,2192,2193,2194,2195,2196,2197,2195,2196,2197,2198,2199,2200,2198,2199,2200,2201,2202,2203,2201,2202,2203,2204,2205,2206,2204,2205,2206,2207,2208,2209,2207,2208,2209,2210,2211,2212,2210,2211,2212,2213,2214,2215,2213,2214,2215,2216,2217,2218,2216,2217,2218,2219,2220,2221,2219,2220,2221,2222,2223,2224,2222,2223,2224,2225,2226,2227,2225,2226,2227,2228,2229,2230,2228,2229,2230,2231,2232,2233,2231,2232,2233,2234,2235,2236,2234,2235,2236,2237,2238,2239,2237,2238,2239,2240,2241,2242,2240,2241,2242,2243,2244,2245,2243,2244,2245,2246,2247,2248,2246,2247,2248,2249,2250,2251,2249,2250,2251,2252,2253,2254,2252,2253,2254,2255,2256,2257,2255,2256,2257,2258,2259,2260,2258,2259,2260,2261,2262,2263,2261,2262,2263,2264,2265,2266,2264,2265,2266,2267,2268,2269,2267,2268,2269],"cinnabar_wall":[2109,2110,2111,2109,2110,2111,0,2112,2113,0,2112,2113,2114,2115,2116,2114,2115,2116,2117,2118,2119,2117,2118,2119,2120,2121,2122,2120,2121,2122,2123,2124,2125,2123,2124,2125,2126,2127,2128,2126,2127,2128,2129,2130,2131,2129,2130,2131,2132,2133,2134,2132,2133,2134,2135,2136,2137,2135,2136,2137,2138,2139,2140,2138,2139,2140,2141,2142,2143,2141,2142,2143,2144,2145,2146,2144,2145,2146,2147,2148,2149,2147,2148,2149,2150,2151,2152,2150,2151,2152,2153,2154,2155,2153,2154,2155,2156,2157,2158,2156,2157,2158,2159,2160,2161,2159,2160,2161,2162,2163,2164,2162,2163,2164,2165,2166,2167,2165,2166,2167,2168,2169,2170,2168,2169,2170,2171,2172,2173,2171,2172,2173,2174,2175,2176,2174,2175,2176,2177,2178,2179,2177,2178,2179,2180,2181,2182,2180,2181,2182,2183,2184,2185,2183,2184,2185,2186,2187,2188,2186,2187,2188,2189,2190,2191,2189,2190,2191,2192,2193,2194,2192,2193,2194,2195,2196,2197,2195,2196,2197,2198,2199,2200,2198,2199,2200,2201,2202,2203,2201,2202,2203,2204,2205,2206,2204,2205,2206,2207,2208,2209,2207,2208,2209,2210,2211,2212,2210,2211,2212,2213,2214,2215,2213,2214,2215,2216,2217,2218,2216,2217,2218,2219,2220,2221,2219,2220,2221,2222,2223,2224,2222,2223,2224,2225,2226,2227,2225,2226,2227,2228,2229,2230,2228,2229,2230,2231,2232,2233,2231,2232,2233,2234,2235,2236,2234,2235,2236,2237,2238,2239,2237,2238,2239,2240,2241,2242,2240,2241,2242,2243,2244,2245,2243,2244,2245,2246,2247,2248,2246,2247,2248,2249,2250,2251,2249,2250,2251,2252,2253,2254,2252,2253,2254,2255,2256,2257,2255,2256,2257,2258,2259,2260,2258,2259,2260,2261,2262,2263,2261,2262,2263,2264,2265,2266,2264,2265,2266,2267,2268,2269,2267,2268,2269],"polished_cinnabar_wall":[2109,2110,2111,2109,2110,2111,0,2112,2113,0,2112,2113,2114,2115,2116,2114,2115,2116,2117,2118,2119,2117,2118,2119,2120,2121,2122,2120,2121,2122,2123,2124,2125,2123,2124,2125,2126,2127,2128,2126,2127,2128,2129,2130,2131,2129,2130,2131,2132,2133,2134,2132,2133,2134,2135,2136,2137,2135,2136,2137,2138,2139,2140,2138,2139,2140,2141,2142,2143,2141,2142,2143,2144,2145,2146,2144,2145,2146,2147,2148,2149,2147,2148,2149,2150,2151,2152,2150,2151,2152,2153,2154,2155,2153,2154,2155,2156,2157,2158,2156,2157,2158,2159,2160,2161,2159,2160,2161,2162,2163,2164,2162,2163,2164,2165,2166,2167,2165,2166,2167,2168,2169,2170,2168,2169,2170,2171,2172,2173,2171,2172,2173,2174,2175,2176,2174,2175,2176,2177,2178,2179,2177,2178,2179,2180,2181,2182,2180,2181,2182,2183,2184,2185,2183,2184,2185,2186,2187,2188,2186,2187,2188,2189,2190,2191,2189,2190,2191,2192,2193,2194,2192,2193,2194,2195,2196,2197,2195,2196,2197,2198,2199,2200,2198,2199,2200,2201,2202,2203,2201,2202,2203,2204,2205,2206,2204,2205,2206,2207,2208,2209,2207,2208,2209,2210,2211,2212,2210,2211,2212,2213,2214,2215,2213,2214,2215,2216,2217,2218,2216,2217,2218,2219,2220,2221,2219,2220,2221,2222,2223,2224,2222,2223,2224,2225,2226,2227,2225,2226,2227,2228,2229,2230,2228,2229,2230,2231,2232,2233,2231,2232,2233,2234,2235,2236,2234,2235,2236,2237,2238,2239,2237,2238,2239,2240,2241,2242,2240,2241,2242,2243,2244,2245,2243,2244,2245,2246,2247,2248,2246,2247,2248,2249,2250,2251,2249,2250,2251,2252,2253,2254,2252,2253,2254,2255,2256,2257,2255,2256,2257,2258,2259,2260,2258,2259,2260,2261,2262,2263,2261,2262,2263,2264,2265,2266,2264,2265,2266,2267,2268,2269,2267,2268,2269],"cinnabar_brick_wall":[2109,2110,2111,2109,2110,2111,0,2112,2113,0,2112,2113,2114,2115,2116,2114,2115,2116,2117,2118,2119,2117,2118,2119,2120,2121,2122,2120,2121,2122,2123,2124,2125,2123,2124,2125,2126,2127,2128,2126,2127,2128,2129,2130,2131,2129,2130,2131,2132,2133,2134,2132,2133,2134,2135,2136,2137,2135,2136,2137,2138,2139,2140,2138,2139,2140,2141,2142,2143,2141,2142,2143,2144,2145,2146,2144,2145,2146,2147,2148,2149,2147,2148,2149,2150,2151,2152,2150,2151,2152,2153,2154,2155,2153,2154,2155,2156,2157,2158,2156,2157,2158,2159,2160,2161,2159,2160,2161,2162,2163,2164,2162,2163,2164,2165,2166,2167,2165,2166,2167,2168,2169,2170,2168,2169,2170,2171,2172,2173,2171,2172,2173,2174,2175,2176,2174,2175,2176,2177,2178,2179,2177,2178,2179,2180,2181,2182,2180,2181,2182,2183,2184,2185,2183,2184,2185,2186,2187,2188,2186,2187,2188,2189,2190,2191,2189,2190,2191,2192,2193,2194,2192,2193,2194,2195,2196,2197,2195,2196,2197,2198,2199,2200,2198,2199,2200,2201,2202,2203,2201,2202,2203,2204,2205,2206,2204,2205,2206,2207,2208,2209,2207,2208,2209,2210,2211,2212,2210,2211,2212,2213,2214,2215,2213,2214,2215,2216,2217,2218,2216,2217,2218,2219,2220,2221,2219,2220,2221,2222,2223,2224,2222,2223,2224,2225,2226,2227,2225,2226,2227,2228,2229,2230,2228,2229,2230,2231,2232,2233,2231,2232,2233,2234,2235,2236,2234,2235,2236,2237,2238,2239,2237,2238,2239,2240,2241,2242,2240,2241,2242,2243,2244,2245,2243,2244,2245,2246,2247,2248,2246,2247,2248,2249,2250,2251,2249,2250,2251,2252,2253,2254,2252,2253,2254,2255,2256,2257,2255,2256,2257,2258,2259,2260,2258,2259,2260,2261,2262,2263,2261,2262,2263,2264,2265,2266,2264,2265,2266,2267,2268,2269,2267,2268,2269],"sulfur_spike":[4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475]}} \ No newline at end of file diff --git a/MinecraftClient/Program.cs b/MinecraftClient/Program.cs index 58a42b9b..dcf5daaf 100644 --- a/MinecraftClient/Program.cs +++ b/MinecraftClient/Program.cs @@ -48,13 +48,17 @@ namespace MinecraftClient public const string Version = MCHighestVersion; public const string MCLowestVersion = "1.4.6"; - public const string MCHighestVersion = "26.1"; + public const string MCHighestVersion = "26.2"; public static readonly string? BuildInfo = null; - private static Tuple? offlinePrompt = null; private static IDisposable? _sentrySdk = null; private static bool useMcVersionOnce = false; + private static readonly RestartCoordinator restartCoordinator = new(ExecuteRestartAsync, ReportRestartFailure); + private static long connectionAttempt; + private static readonly AttemptOwnedRoute offlinePromptRoute = new(); + private static int exitOnFailurePending; private static string settingsIniPath = "MinecraftClient.ini"; + private static AuthenticationSelection? pendingAuthenticationSelection; // [SENTRY] // Setting this string to an empty string will disable Sentry @@ -200,6 +204,11 @@ namespace MinecraftClient { ConsoleIO.Backend = new ClassicConsoleBackend(); ConsoleIO.Backend.Init(); + + // Config deserialization triggers OnSettingUpdate before the backend + // exists, so console-specific settings (UseVT100ColorCode, colors, etc.) + // are never applied. Re-apply them now that the backend is ready. + Config.Console.OnSettingUpdate(); } if (!ProcessStartupState(startupState)) @@ -238,6 +247,7 @@ namespace MinecraftClient ConsoleIO.Backend = new ClassicConsoleBackend(); ConsoleIO.Backend.Init(); + Config.Console.OnSettingUpdate(); ConsoleIO.WriteLineFormatted("§c" + Translations.mcc_tui_startup_failed); ConsoleIO.WriteLine(exception.ToString()); @@ -556,15 +566,19 @@ namespace MinecraftClient // Setup exit cleaning code ExitCleanUp.Add(() => { DoExit(); }); + if (HasNoConfiguredLoginDetails()) + { + if (!PromptForAuthenticationSelection()) + return; + } + //Asking the user to type in missing data such as Username and Password bool useBrowser = Config.Main.General.AccountType == LoginType.microsoft && Config.Main.General.Method == LoginMethod.browser; bool useDeviceCode = Config.Main.General.AccountType == LoginType.microsoft && Config.Main.General.Method == LoginMethod.mcc; bool skipPassword = useBrowser || useDeviceCode; - if (string.IsNullOrWhiteSpace(InternalConfig.Account.Login) && !useBrowser) + if (string.IsNullOrWhiteSpace(InternalConfig.Account.Login) && !skipPassword) { - ConsoleIO.WriteLine(ConsoleIO.BasicIO ? Translations.mcc_login_basic_io : Translations.mcc_login); - InternalConfig.Account.Login = ConsoleIO.ReadLine().Trim(); - if (string.IsNullOrWhiteSpace(InternalConfig.Account.Login)) + if (!RequestLogin()) { HandleFailure(Translations.error_login_blocked, false, ChatBot.DisconnectReason.LoginRejected); return; @@ -594,11 +608,154 @@ namespace MinecraftClient InternalConfig.Account.Password = password; } + private static bool HasNoConfiguredLoginDetails() + => string.IsNullOrWhiteSpace(InternalConfig.Account.Login) + && string.IsNullOrWhiteSpace(InternalConfig.Account.Password); + + private static bool PromptForAuthenticationSelection() + { + while (true) + { + ConsoleIO.WriteLine(Translations.mcc_auth_method_prompt); + string selection = ConsoleIO.ReadLine().Trim(); + + switch (selection.ToLowerInvariant()) + { + case "1": + case "offline": + BeginAuthenticationSelection(LoginType.mojang, LoginMethod.mcc); + if (!RequestLogin()) + { + DiscardAuthenticationSelection(); + HandleFailure(Translations.error_login_blocked, false, ChatBot.DisconnectReason.LoginRejected); + return false; + } + + InternalConfig.Account.Password = "-"; + return true; + + case "2": + case "online": + case "microsoft": + BeginAuthenticationSelection(LoginType.microsoft, LoginMethod.mcc); + return true; + + case "3": + case "yggdrasil": + BeginAuthenticationSelection(LoginType.yggdrasil, LoginMethod.mcc); + if (!RequestLogin() || !RequestRequiredPassword()) + { + DiscardAuthenticationSelection(); + HandleFailure(Translations.error_login_blocked, false, ChatBot.DisconnectReason.LoginRejected); + return false; + } + + if (!RequestAuthlibServer()) + { + DiscardAuthenticationSelection(); + return false; + } + + return true; + + default: + ConsoleIO.WriteLine(Translations.mcc_auth_method_invalid); + break; + } + } + } + + private static void BeginAuthenticationSelection(LoginType accountType, LoginMethod method) + { + pendingAuthenticationSelection ??= new AuthenticationSelection( + Config.Main.General.AccountType, + Config.Main.General.Method, + Config.Main.General.AuthServerUrl); + + Config.Main.General.AccountType = accountType; + Config.Main.General.Method = method; + } + + private static bool RequestLogin() + { + ConsoleIO.WriteLine(ConsoleIO.BasicIO ? Translations.mcc_login_basic_io : Translations.mcc_login); + InternalConfig.Account.Login = ConsoleIO.ReadLine().Trim(); + return !string.IsNullOrWhiteSpace(InternalConfig.Account.Login); + } + + private static bool RequestRequiredPassword() + { + ConsoleIO.WriteLine(ConsoleIO.BasicIO ? string.Format(Translations.mcc_password_basic_io, InternalConfig.Account.Login) + "\n" : Translations.mcc_password_hidden); + string? password = ConsoleIO.BasicIO ? Console.ReadLine() : ConsoleIO.ReadPassword(); + if (string.IsNullOrWhiteSpace(password)) + return false; + + InternalConfig.Account.Password = password; + return true; + } + + private static bool RequestAuthlibServer() + { + while (true) + { + ConsoleIO.WriteLine(Translations.mcc_yggdrasil_url); + string authServerUrl = ConsoleIO.ReadLine().Trim(); + if (!Config.Main.General.TrySetAuthServerUrl(authServerUrl) + || !Config.Main.General.TryGetAuthServerUri(out Uri? authServerUri)) + { + ConsoleIO.WriteLine(Translations.mcc_yggdrasil_invalid_url); + continue; + } + + switch (ProtocolHandler.ValidateAuthlibServer(authServerUri)) + { + case ProtocolHandler.AuthlibServerValidationResult.Valid: + return true; + case ProtocolHandler.AuthlibServerValidationResult.Unreachable: + ConsoleIO.WriteLine(Translations.mcc_yggdrasil_server_unreachable); + break; + default: + ConsoleIO.WriteLine(Translations.mcc_yggdrasil_server_invalid); + break; + } + } + } + + private static void PersistAuthenticationSelection(SessionToken session) + { + if (pendingAuthenticationSelection is null) + return; + + if (string.IsNullOrWhiteSpace(InternalConfig.Account.Login)) + InternalConfig.Account.Login = session.PlayerName; + + Config.Main.General.Account = InternalConfig.Account; + WriteBackSettings(); + pendingAuthenticationSelection = null; + } + + private static void DiscardAuthenticationSelection() + { + if (pendingAuthenticationSelection is not AuthenticationSelection selection) + return; + + Config.Main.General.AccountType = selection.AccountType; + Config.Main.General.Method = selection.Method; + Config.Main.General.AuthServerUrl = selection.AuthServerUrl; + pendingAuthenticationSelection = null; + } + + private sealed record AuthenticationSelection(LoginType AccountType, LoginMethod Method, string AuthServerUrl); + + internal static long CurrentConnectionAttempt => Volatile.Read(ref connectionAttempt); + /// /// Start a new Client /// private static void InitializeClient() { + long attempt = Interlocked.Increment(ref connectionAttempt); + // Ensure that we use the provided Minecraft version if we can't connect automatically. // // useMcVersionOnce is set to true on HandleFailure() @@ -617,7 +774,7 @@ namespace MinecraftClient ConsoleIO.WriteLineFormatted("§8" + Translations.mcc_offline, acceptnewlines: true); result = ProtocolHandler.LoginResult.Success; session.PlayerID = "0"; - session.PlayerName = InternalConfig.Username; + session.PlayerName = InternalConfig.Account.Login; } else { @@ -653,17 +810,26 @@ namespace MinecraftClient if (result != ProtocolHandler.LoginResult.Success) { - ConsoleIO.WriteLine(string.Format(Translations.mcc_connecting, Config.Main.General.AccountType == LoginType.mojang ? "Minecraft.net" : (Config.Main.General.AccountType == LoginType.microsoft ? "Microsoft" : Config.Main.General.AuthServer.Host))); + ConsoleIO.WriteLine(string.Format(Translations.mcc_connecting, Config.Main.General.AccountType == LoginType.mojang ? "Minecraft.net" : (Config.Main.General.AccountType == LoginType.microsoft ? "Microsoft" : Config.Main.General.AuthServerUrl))); result = ProtocolHandler.GetLogin(InternalConfig.Account.Login, InternalConfig.Account.Password, Config.Main.General.AccountType, out session); } - if (result == ProtocolHandler.LoginResult.Success && Config.Main.Advanced.SessionCache != CacheType.none) - SessionCache.Store(loginLower, session); + if (result == ProtocolHandler.LoginResult.Success) + { + PersistAuthenticationSelection(session); + loginLower = ToLowerIfNeed(InternalConfig.Account.Login); + + if (Config.Main.Advanced.SessionCache != CacheType.none) + SessionCache.Store(loginLower, session); + } if (result == ProtocolHandler.LoginResult.Success) session.SessionPreCheckTask = Task.Factory.StartNew(() => session.SessionPreCheck(Config.Main.General.AccountType)); } + if (result == ProtocolHandler.LoginResult.Success) + PersistAuthenticationSelection(session); + if (result == ProtocolHandler.LoginResult.Success) { InternalConfig.Username = session.PlayerName; @@ -728,6 +894,8 @@ namespace MinecraftClient Config.Main.SetServerIP(new MainConfigHelper.MainConfig.ServerInfoConfig(addressInput), true); } + ConsoleInputRouter.EnsureStarted(); + //Get server version int protocolversion = 0; ForgeInfo? forgeInfo = null; @@ -818,7 +986,7 @@ namespace MinecraftClient try { //Start the main TCP client - client = new McClient(session, playerKeyPair, InternalConfig.ServerIP, InternalConfig.ServerPort, protocolversion, forgeInfo); + client = new McClient(session, playerKeyPair, InternalConfig.ServerIP, InternalConfig.ServerPort, protocolversion, forgeInfo, attempt); //Update console title if (OperatingSystem.IsWindows() && !string.IsNullOrWhiteSpace(Config.Main.Advanced.ConsoleTitle)) @@ -846,6 +1014,7 @@ namespace MinecraftClient } else { + DiscardAuthenticationSelection(); string failureMessage = Translations.error_login; string failureReason = result switch { @@ -892,25 +1061,128 @@ namespace MinecraftClient /// Optional, keep account and server settings public static void Restart(int delaySeconds = 0, bool keepAccountAndServerSettings = false) { - ConsoleIO.Backend?.StopReadThread(); - new Thread(new ThreadStart(delegate + TryRestart(TimeSpan.FromSeconds(Math.Max(0, delaySeconds)), keepAccountAndServerSettings); + } + + internal static bool HasRestartPending(long sourceConnectionAttempt) + { + return restartCoordinator.HasScheduledRestart(sourceConnectionAttempt); + } + + internal static RestartSettingsSnapshot CaptureRestartSettings() + { + return new RestartSettingsSnapshot(InternalConfig.Account, InternalConfig.ServerIP, InternalConfig.ServerPort); + } + + internal static void RestoreRestartSettings(RestartSettingsSnapshot settingsSnapshot) + { + InternalConfig.Account = settingsSnapshot.Account; + InternalConfig.ServerIP = settingsSnapshot.ServerIP; + InternalConfig.ServerPort = settingsSnapshot.ServerPort; + } + + internal static bool TryRestart(int delaySeconds = 0, bool keepAccountAndServerSettings = false) + { + return TryRestart(TimeSpan.FromSeconds(Math.Max(0, delaySeconds)), keepAccountAndServerSettings); + } + + internal static bool TryRestart(TimeSpan delay, bool keepAccountAndServerSettings = false) + { + return TryRestart(CurrentConnectionAttempt, delay, keepAccountAndServerSettings); + } + + internal static bool TryRestart( + long sourceConnectionAttempt, + TimeSpan delay, + bool keepAccountAndServerSettings = false, + bool replaceUntilCommit = false, + Task? sourceCleanupCompletion = null) + { + if (Volatile.Read(ref exitOnFailurePending) != 0) + return false; + + if (sourceConnectionAttempt != CurrentConnectionAttempt) + return false; + + if (delay < TimeSpan.Zero) + delay = TimeSpan.Zero; + + RestartSettingsSnapshot? settingsSnapshot = keepAccountAndServerSettings + ? CaptureRestartSettings() + : null; + + bool scheduled = restartCoordinator.TrySchedule( + new RestartRequest( + sourceConnectionAttempt, + delay, + keepAccountAndServerSettings, + settingsSnapshot, + replaceUntilCommit, + sourceCleanupCompletion), + () => BeginOfflinePrompt(sourceConnectionAttempt)); + return scheduled; + } + + private static async Task ExecuteRestartAsync(RestartRequest request, CancellationToken cancellationToken) + { + if (request.ConnectionAttempt != CurrentConnectionAttempt) + return; + + McClient? disconnectedClient = client; + if (disconnectedClient is not null) { - if (client is not null) { client.Disconnect(); ConsoleIO.Reset(); } - if (offlinePrompt is not null) - { - if (ConsoleIO.Backend is not null) - ConsoleIO.Backend.OnInputChange -= ConsoleIO.OfflineAutocompleteHandler; - offlinePrompt.Item2.Cancel(); offlinePrompt.Item1.Join(); offlinePrompt = null; ConsoleIO.Reset(); - } - if (delaySeconds > 0) - { - ConsoleIO.WriteLine(string.Format(Translations.mcc_restart_delay, delaySeconds)); - Thread.Sleep(delaySeconds * 1000); - } - ConsoleIO.WriteLine(Translations.mcc_restart); - ReloadSettings(keepAccountAndServerSettings); - InitializeClient(); - })).Start(); + disconnectedClient.Disconnect(); + if (ReferenceEquals(client, disconnectedClient)) + client = null; + } + + ConsoleIO.Reset(); + + if (request.Delay > TimeSpan.Zero) + { + ConsoleIO.WriteLine(string.Format(Translations.mcc_restart_delay, request.Delay.TotalSeconds)); + await Task.Delay(request.Delay, TimeProvider.System, cancellationToken).ConfigureAwait(false); + } + + cancellationToken.ThrowIfCancellationRequested(); + if (request.ConnectionAttempt != CurrentConnectionAttempt + || !restartCoordinator.TryBeginCommit(request, out RestartRequest latestRequest) + || latestRequest.ConnectionAttempt != CurrentConnectionAttempt) + { + return; + } + + ConsoleIO.WriteLine(Translations.mcc_restart); + ReloadSettings(latestRequest.KeepAccountAndServerSettings); + if (latestRequest.SettingsSnapshot is RestartSettingsSnapshot settingsSnapshot) + { + InternalConfig.Account = settingsSnapshot.Account; + InternalConfig.ServerIP = settingsSnapshot.ServerIP; + InternalConfig.ServerPort = settingsSnapshot.ServerPort; + } + TransferOfflinePrompt(latestRequest.ConnectionAttempt, latestRequest.ConnectionAttempt + 1); + InitializeClient(); + } + + private static void ReportRestartFailure(Exception exception) + { + SentrySdk.CaptureException(exception); + ConsoleIO.WriteLine(exception.ToString()); + HandleFailure(); + } + + /// + /// Marks the current failure as terminal when MCC is running under an external supervisor. + /// Further restart requests are rejected so disconnect cleanup cannot revive the process. + /// + internal static bool PrepareExitOnFailure() + { + if (InternalConfig.InteractiveMode) + return false; + + Interlocked.Exchange(ref exitOnFailurePending, 1); + restartCoordinator.Stop(); + return true; } public static void DoExit(int exitcode = 0) @@ -918,18 +1190,11 @@ namespace MinecraftClient WriteBackSettings(); ConsoleIO.WriteLineFormatted("§a" + string.Format(Translations.config_saving, settingsIniPath)); + restartCoordinator.Stop(); if (client is not null) { client.Disconnect(); ConsoleIO.Reset(); } - if (offlinePrompt is not null) - { - if (ConsoleIO.Backend is not null) - ConsoleIO.Backend.OnInputChange -= ConsoleIO.OfflineAutocompleteHandler; - offlinePrompt.Item2.Cancel(); - if (Thread.CurrentThread != offlinePrompt.Item1) - offlinePrompt.Item1.Join(1000); - offlinePrompt = null; - ConsoleIO.Reset(); - } - if (Config.Main.Advanced.PlayerHeadAsIcon) { ConsoleIcon.RevertToMCCIcon(); } + EndOfflinePrompt(); + ConsoleInputRouter.ShutdownRouter(); + if (Config.Main.Advanced.PlayerHeadAsIcon && OperatingSystem.IsWindows()) { ConsoleIcon.RevertToMCCIcon(); } ConsoleIO.Backend?.Shutdown(); Environment.Exit(exitcode); } @@ -951,10 +1216,12 @@ namespace MinecraftClient /// If set, the error message will be processed by the AutoRelog bot public static void HandleFailure(string? errorMessage = null, bool versionError = false, ChatBot.DisconnectReason? disconnectReason = null) { + bool autoRelogHandled = false; + if (!string.IsNullOrEmpty(errorMessage)) { ConsoleIO.Reset(); - if (ConsoleIO.Backend is not Tui.TuiConsoleBackend) + if (!ConsoleInputRouter.IsStarted && ConsoleIO.Backend is not Tui.TuiConsoleBackend) { try { @@ -964,12 +1231,19 @@ namespace MinecraftClient catch { } } ConsoleIO.WriteLine(errorMessage); + } - if (disconnectReason.HasValue) - { - if (ChatBots.AutoRelog.OnDisconnectStatic(disconnectReason.Value, errorMessage)) - return; //AutoRelog is triggering a restart of the client - } + if (PrepareExitOnFailure()) + { + Exit(GetFailureExitCode(disconnectReason)); + return; + } + + if (!string.IsNullOrEmpty(errorMessage) && disconnectReason.HasValue) + { + autoRelogHandled = true; + if (ChatBots.AutoRelog.OnDisconnectStatic(disconnectReason.Value, errorMessage, CurrentConnectionAttempt)) + return; } if (InternalConfig.InteractiveMode) @@ -986,105 +1260,123 @@ namespace MinecraftClient } } - if (disconnectReason.HasValue) + if (!autoRelogHandled && disconnectReason.HasValue) { - if (ChatBots.AutoRelog.OnDisconnectStatic(disconnectReason.Value, errorMessage!)) - return; //AutoRelog is triggering a restart of the client, don't turn on the offline prompt + if (ChatBots.AutoRelog.OnDisconnectStatic(disconnectReason.Value, errorMessage!, CurrentConnectionAttempt)) + return; } - if (offlinePrompt is null) - { - ConsoleIO.Backend?.StopReadThread(); - if (ConsoleIO.Backend is not null) - ConsoleIO.Backend.OnInputChange += ConsoleIO.OfflineAutocompleteHandler; + BeginOfflinePrompt(CurrentConnectionAttempt); + } + } - var cancellationTokenSource = new CancellationTokenSource(); - offlinePrompt = new(new Thread(new ThreadStart(delegate - { - bool exitThread = false; - string command = " "; - ConsoleIO.WriteLine(string.Empty); - ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_disconnected, Config.Main.Advanced.InternalCmdChar.ToLogString())); - if (ConsoleIO.Backend is Tui.TuiConsoleBackend) - ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_use_quit_to_exit, Config.Main.Advanced.InternalCmdChar.ToLogString())); - else - ConsoleIO.WriteLineFormatted(Translations.mcc_press_exit, acceptnewlines: true); + private static bool BeginOfflinePrompt(long connectionAttempt) + { + long currentConnectionAttempt = CurrentConnectionAttempt; + if (connectionAttempt != currentConnectionAttempt) + return false; - while (!cancellationTokenSource.IsCancellationRequested) - { - if (exitThread) - return; + if (offlinePromptRoute.TryActivate(connectionAttempt, currentConnectionAttempt, () => + { + ConsoleInputRouter.RouteOffline(HandleOfflineCommand); + ConsoleIO.WriteLine(string.Empty); + ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_disconnected, Config.Main.Advanced.InternalCmdChar.ToLogString())); + if (ConsoleIO.Backend is Tui.TuiConsoleBackend) + ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_use_quit_to_exit, Config.Main.Advanced.InternalCmdChar.ToLogString())); + else + ConsoleIO.WriteLineFormatted(Translations.mcc_press_exit, acceptnewlines: true); + })) + { + return true; + } - command = ConsoleIO.ReadLine().Trim(); + return offlinePromptRoute.OwnerAttempt == connectionAttempt; + } - if (command.Length == 0) - { - if (ConsoleIO.Backend is not Tui.TuiConsoleBackend) - Commands.Exit.DoExit(Config.AppVar.ExpandVars(command)); - continue; - } + private static void EndOfflinePrompt() + { + offlinePromptRoute.TryDeactivate(() => + { + ConsoleInputRouter.ClearOfflineRoute(HandleOfflineCommand); + ConsoleIO.Reset(); + }); + } - string message = ""; + internal static void EndOfflinePrompt(long connectionAttempt) + { + offlinePromptRoute.TryDeactivate(connectionAttempt, () => + { + ConsoleInputRouter.ClearOfflineRoute(HandleOfflineCommand); + ConsoleIO.Reset(); + }); + } - if (Config.Main.Advanced.InternalCmdChar.ToChar() != ' ' - && command[0] == Config.Main.Advanced.InternalCmdChar.ToChar()) - command = command[1..]; + private static void TransferOfflinePrompt(long sourceConnectionAttempt, long targetConnectionAttempt) + { + offlinePromptRoute.TryTransfer(sourceConnectionAttempt, targetConnectionAttempt); + } - if (command.StartsWith("reco")) - { - message = Commands.Reco.DoReconnect(Config.AppVar.ExpandVars(command)); - if (message == "") - { - exitThread = true; - continue; - } - } - else if (command.StartsWith("connect")) - { - message = Commands.Connect.DoConnect(Config.AppVar.ExpandVars(command)); - if (message == "") - { - exitThread = true; - continue; - } - } - else if (command.StartsWith("exit") || command.StartsWith("quit")) - { - message = Commands.Exit.DoExit(Config.AppVar.ExpandVars(command)); - } - else if (command.StartsWith("help")) - { - ConsoleIO.WriteLineFormatted("§8MCC: " + - Config.Main.Advanced.InternalCmdChar.ToLogString() + - new Commands.Reco().GetCmdDescTranslated()); - ConsoleIO.WriteLineFormatted("§8MCC: " + - Config.Main.Advanced.InternalCmdChar.ToLogString() + - new Commands.Connect().GetCmdDescTranslated()); - } - else - ConsoleIO.WriteLineFormatted(string.Format(Translations.icmd_unknown, command.Split(' ')[0])); + private static void HandleOfflineCommand(string input) + { + string command = input.Trim(); + if (command.Length == 0) + { + if (ConsoleIO.Backend is not Tui.TuiConsoleBackend) + Commands.Exit.DoExit(Config.AppVar.ExpandVars(command)); + return; + } - if (message != "") - ConsoleIO.WriteLineFormatted("§8MCC: " + message); - } - })), cancellationTokenSource); - offlinePrompt.Item1.Start(); - } + if (Config.Main.Advanced.InternalCmdChar.ToChar() != ' ' + && command[0] == Config.Main.Advanced.InternalCmdChar.ToChar()) + { + command = command[1..]; + } + + string message = string.Empty; + if (command.StartsWith("reco", StringComparison.Ordinal)) + { + message = Commands.Reco.DoReconnect(Config.AppVar.ExpandVars(command)); + if (message.Length == 0) + return; + } + else if (command.StartsWith("connect", StringComparison.Ordinal)) + { + message = Commands.Connect.DoConnect(Config.AppVar.ExpandVars(command)); + if (message.Length == 0) + return; + } + else if (command.StartsWith("exit", StringComparison.Ordinal) + || command.StartsWith("quit", StringComparison.Ordinal)) + { + message = Commands.Exit.DoExit(Config.AppVar.ExpandVars(command)); + } + else if (command.StartsWith("help", StringComparison.Ordinal)) + { + ConsoleIO.WriteLineFormatted("§8MCC: " + + Config.Main.Advanced.InternalCmdChar.ToLogString() + + new Commands.Reco().GetCmdDescTranslated()); + ConsoleIO.WriteLineFormatted("§8MCC: " + + Config.Main.Advanced.InternalCmdChar.ToLogString() + + new Commands.Connect().GetCmdDescTranslated()); } else { - // Not in interactive mode, just exit and let the calling script handle the failure - if (disconnectReason.HasValue) - { - // Return distinct exit codes for known failures. - if (disconnectReason.Value == ChatBot.DisconnectReason.UserLogout) Exit(1); - if (disconnectReason.Value == ChatBot.DisconnectReason.InGameKick) Exit(2); - if (disconnectReason.Value == ChatBot.DisconnectReason.ConnectionLost) Exit(3); - if (disconnectReason.Value == ChatBot.DisconnectReason.LoginRejected) Exit(4); - } - Exit(); + ConsoleIO.WriteLineFormatted(string.Format(Translations.icmd_unknown, command.Split(' ')[0])); } + if (message.Length != 0) + ConsoleIO.WriteLineFormatted("§8MCC: " + message); + } + + private static int GetFailureExitCode(ChatBot.DisconnectReason? disconnectReason) + { + return disconnectReason switch + { + ChatBot.DisconnectReason.InGameKick => 2, + ChatBot.DisconnectReason.ConnectionLost => 3, + ChatBot.DisconnectReason.LoginRejected => 4, + _ => 1, + }; } /// diff --git a/MinecraftClient/Properties/AssemblyInfo.cs b/MinecraftClient/Properties/AssemblyInfo.cs index 99b66052..7e608e53 100644 --- a/MinecraftClient/Properties/AssemblyInfo.cs +++ b/MinecraftClient/Properties/AssemblyInfo.cs @@ -1,6 +1,9 @@ using System.Reflection; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +[assembly: InternalsVisibleTo("MinecraftClient.Tests")] + // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. diff --git a/MinecraftClient/Protocol/Dialogs/DialogNbtParser.cs b/MinecraftClient/Protocol/Dialogs/DialogNbtParser.cs new file mode 100644 index 00000000..2636b5be --- /dev/null +++ b/MinecraftClient/Protocol/Dialogs/DialogNbtParser.cs @@ -0,0 +1,475 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using MinecraftClient.Dialogs; +using MinecraftClient.Protocol.Message; + +namespace MinecraftClient.Protocol.Dialogs; + +public sealed class DialogNbtParser +{ + public DialogDefinition Parse(Dictionary nbt) + { + var type = NormalizeType(GetString(nbt, "type") ?? "minecraft:notice"); + var common = ParseCommon(nbt, type); + var actions = new List(); + DialogActionDefinition? cancelAction = null; + var columns = GetInt(nbt, "columns", 1); + var buttonWidth = GetInt(nbt, "button_width", 150); + + switch (type) + { + case "minecraft:notice": + var noticeAction = ParseButton(nbt, "action", 1); + actions.Add(noticeAction ?? new DialogButton(1, Translations.dialog_action_ok, null)); + cancelAction = actions[0].Action; + break; + + case "minecraft:confirmation": + AddIfNotNull(actions, ParseButton(nbt, "yes", 1)); + AddIfNotNull(actions, ParseButton(nbt, "no", 2)); + cancelAction = actions.Count >= 2 ? actions[1].Action : null; + break; + + case "minecraft:multi_action": + actions.AddRange(ParseButtonList(GetValue(nbt, "actions"))); + cancelAction = ParseButton(nbt, "exit_action", 0)?.Action; + break; + + case "minecraft:dialog_list": + actions.AddRange(ParseDialogListActions(GetValue(nbt, "dialogs"))); + cancelAction = ParseButton(nbt, "exit_action", 0)?.Action; + break; + + case "minecraft:server_links": + cancelAction = ParseButton(nbt, "exit_action", 0)?.Action; + break; + } + + return new DialogDefinition( + type, + common.Title, + common.ExternalTitle, + common.CanCloseWithEscape, + common.Pause, + common.AfterAction, + common.Body, + common.Inputs, + actions, + cancelAction, + columns, + buttonWidth); + } + + public DialogDefinition? TryParse(Dictionary? nbt) + { + return nbt is null ? null : Parse(nbt); + } + + private static DialogCommon ParseCommon(Dictionary nbt, string type) + { + var title = ParseComponent(GetValue(nbt, "title")); + var externalTitle = nbt.TryGetValue("external_title", out var externalTitleValue) + ? ParseComponent(externalTitleValue) + : null; + var canCloseWithEscape = GetBool(nbt, "can_close_with_escape", true); + var pause = GetBool(nbt, "pause", true); + var afterAction = ParseAfterAction(GetString(nbt, "after_action") ?? "close"); + var body = ParseBody(GetValue(nbt, "body")); + var inputs = ParseInputs(GetValue(nbt, "inputs")); + + return new DialogCommon(title, externalTitle, canCloseWithEscape, pause, afterAction, body, inputs); + } + + private static IReadOnlyList ParseBody(object? value) + { + if (value is null) + return []; + + List body = []; + foreach (var item in Enumerate(value)) + { + if (item is Dictionary compound) + { + var type = NormalizeType(GetString(compound, "type") ?? "minecraft:plain_message"); + if (type == "minecraft:item") + { + var description = compound.TryGetValue("description", out var desc) + ? ParsePlainMessage(desc) + : string.Empty; + body.Add(new DialogBody(DialogBodyKind.Item, string.IsNullOrWhiteSpace(description) ? Translations.dialog_item_body : description, type)); + continue; + } + + body.Add(new DialogBody(DialogBodyKind.PlainMessage, ParsePlainMessage(compound), type)); + continue; + } + + body.Add(new DialogBody(DialogBodyKind.PlainMessage, ParseComponent(item), "minecraft:plain_message")); + } + + return body; + } + + private static string ParsePlainMessage(object? value) + { + if (value is Dictionary compound && compound.TryGetValue("contents", out var contents)) + return ParseComponent(contents); + + return ParseComponent(value); + } + + private static IReadOnlyList ParseInputs(object? value) + { + if (value is null) + return []; + + List inputs = []; + foreach (var item in Enumerate(value)) + { + if (item is not Dictionary inputData) + continue; + + var key = GetString(inputData, "key"); + if (string.IsNullOrWhiteSpace(key)) + continue; + + var control = inputData.TryGetValue("control", out var controlValue) && controlValue is Dictionary controlData + ? controlData + : inputData; + + var type = NormalizeType(GetString(control, "type") ?? "minecraft:text"); + inputs.Add(type switch + { + "minecraft:boolean" => ParseBooleanInput(key, type, control), + "minecraft:number_range" => ParseNumberInput(key, type, control), + "minecraft:single_option" => ParseOptionInput(key, type, control), + "minecraft:text" => ParseTextInput(key, type, control), + _ => new DialogInput(key, DialogInputKind.Unknown, ParseComponent(GetValue(control, "label")), string.Empty, Type: type) + }); + } + + return inputs; + } + + private static DialogInput ParseTextInput(string key, string type, Dictionary control) + { + return new DialogInput( + key, + DialogInputKind.Text, + ParseComponent(GetValue(control, "label")), + GetString(control, "initial") ?? string.Empty, + MaxLength: GetInt(control, "max_length", 32), + LabelVisible: GetBool(control, "label_visible", true), + Multiline: control.ContainsKey("multiline"), + Type: type); + } + + private static DialogInput ParseBooleanInput(string key, string type, Dictionary control) + { + var initial = GetBool(control, "initial", false); + return new DialogInput( + key, + DialogInputKind.Boolean, + ParseComponent(GetValue(control, "label")), + initial ? "true" : "false", + OnTrue: GetString(control, "on_true") ?? "true", + OnFalse: GetString(control, "on_false") ?? "false", + Type: type); + } + + private static DialogInput ParseOptionInput(string key, string type, Dictionary control) + { + var options = ParseOptions(GetValue(control, "options")); + var initial = options.FirstOrDefault(static option => option.Initial)?.Id + ?? options.FirstOrDefault()?.Id + ?? string.Empty; + return new DialogInput( + key, + DialogInputKind.SingleOption, + ParseComponent(GetValue(control, "label")), + initial, + LabelVisible: GetBool(control, "label_visible", true), + Options: options, + Type: type); + } + + private static DialogInput ParseNumberInput(string key, string type, Dictionary control) + { + var range = control.TryGetValue("range_info", out var rangeValue) && rangeValue is Dictionary rangeData + ? rangeData + : control; + var start = GetFloat(range, "start", 0); + var end = GetFloat(range, "end", 1); + var initial = TryGetFloat(range, "initial") ?? ((start + end) / 2F); + return new DialogInput( + key, + DialogInputKind.NumberRange, + ParseComponent(GetValue(control, "label")), + NumberToString(initial), + Start: start, + End: end, + InitialNumber: initial, + Step: TryGetFloat(range, "step"), + Type: type); + } + + private static IReadOnlyList ParseOptions(object? value) + { + if (value is null) + return []; + + List options = []; + foreach (var item in Enumerate(value)) + { + if (item is string id) + { + options.Add(new DialogOption(id, id, false)); + continue; + } + + if (item is Dictionary option) + { + var optionId = GetString(option, "id"); + if (optionId is null) + continue; + + var display = option.TryGetValue("display", out var displayValue) + ? ParseComponent(displayValue) + : optionId; + options.Add(new DialogOption(optionId, display, GetBool(option, "initial", false))); + } + } + + return options; + } + + private static List ParseButtonList(object? value) + { + List buttons = []; + var index = 1; + foreach (var item in Enumerate(value)) + { + if (item is Dictionary buttonData) + buttons.Add(ParseButton(buttonData, index++) ?? new DialogButton(index - 1, Translations.dialog_action_unnamed, null)); + } + + return buttons; + } + + private static IEnumerable ParseDialogListActions(object? value) + { + List buttons = []; + var index = 1; + foreach (var item in Enumerate(value)) + { + switch (item) + { + case string tag when tag.StartsWith('#'): + buttons.Add(new DialogButton(index++, tag, new DialogActionDefinition(DialogActionKind.Unknown, Type: "dialog_tag"))); + break; + case string resource: + buttons.Add(new DialogButton(index++, resource, new DialogActionDefinition(DialogActionKind.ShowDialog, Value: resource, Type: "dialog_reference_name"))); + break; + case Dictionary dialog: + var nested = new DialogNbtParser().Parse(dialog); + buttons.Add(new DialogButton(index++, nested.DisplayTitle(), new DialogActionDefinition(DialogActionKind.ShowDialog, NestedDialog: nested))); + break; + } + } + + return buttons; + } + + private static DialogButton? ParseButton(Dictionary owner, string key, int index) + { + return owner.TryGetValue(key, out var value) && value is Dictionary data + ? ParseButton(data, index) + : null; + } + + private static DialogButton? ParseButton(Dictionary data, int index) + { + var label = data.TryGetValue("label", out var labelValue) + ? ParseComponent(labelValue) + : Translations.dialog_action_unnamed; + var action = data.TryGetValue("action", out var actionValue) && actionValue is Dictionary actionData + ? ParseAction(actionData) + : null; + return new DialogButton(index, label, action); + } + + private static DialogActionDefinition ParseAction(Dictionary action) + { + var type = NormalizeType(GetString(action, "type") ?? GetString(action, "action") ?? "minecraft:none"); + return type switch + { + "minecraft:run_command" => new DialogActionDefinition(DialogActionKind.RunCommand, Value: GetString(action, "command"), Type: type), + "minecraft:dynamic/run_command" => new DialogActionDefinition(DialogActionKind.RunCommand, Value: GetString(action, "template"), Type: type), + "minecraft:custom" => new DialogActionDefinition(DialogActionKind.CustomClick, Id: GetString(action, "id"), Payload: GetCompound(action, "payload"), Type: type), + "minecraft:dynamic/custom" => new DialogActionDefinition(DialogActionKind.CustomClick, Id: GetString(action, "id"), Payload: GetCompound(action, "additions"), Type: type), + "minecraft:open_url" => new DialogActionDefinition(DialogActionKind.OpenUrl, Value: GetString(action, "url"), Type: type), + "minecraft:suggest_command" => new DialogActionDefinition(DialogActionKind.SuggestCommand, Value: GetString(action, "command"), Type: type), + "minecraft:copy_to_clipboard" => new DialogActionDefinition(DialogActionKind.CopyToClipboard, Value: GetString(action, "value"), Type: type), + "minecraft:show_dialog" => ParseShowDialogAction(action, type), + _ => new DialogActionDefinition(DialogActionKind.Unknown, Type: type) + }; + } + + private static DialogActionDefinition ParseShowDialogAction(Dictionary action, string type) + { + if (!action.TryGetValue("dialog", out var value)) + return new DialogActionDefinition(DialogActionKind.ShowDialog, Type: type); + + if (value is Dictionary dialogData) + return new DialogActionDefinition(DialogActionKind.ShowDialog, NestedDialog: new DialogNbtParser().Parse(dialogData), Type: type); + + if (value is int protocolId) + return new DialogActionDefinition(DialogActionKind.ShowDialog, DialogReferenceId: protocolId, Type: type); + + return new DialogActionDefinition(DialogActionKind.ShowDialog, Value: value.ToString(), Type: type); + } + + private static DialogAfterAction ParseAfterAction(string value) + { + return value switch + { + "none" => DialogAfterAction.None, + "wait_for_response" => DialogAfterAction.WaitForResponse, + _ => DialogAfterAction.Close + }; + } + + private static string ParseComponent(object? value) + { + if (value is null) + return string.Empty; + + try + { + return value switch + { + Dictionary compound => ChatParser.ParseText(compound), + string text when text.StartsWith('{') || text.StartsWith('[') => ChatParser.ParseText(text), + string text => text, + _ => value.ToString() ?? string.Empty + }; + } + catch + { + return value.ToString() ?? string.Empty; + } + } + + private static IEnumerable Enumerate(object? value) + { + if (value is null) + yield break; + + if (value is object[] array) + { + foreach (var item in array) + yield return item; + yield break; + } + + yield return value; + } + + private static object? GetValue(Dictionary data, string key) + { + return data.TryGetValue(key, out var value) ? value : null; + } + + private static string? GetString(Dictionary data, string key) + { + return data.TryGetValue(key, out var value) ? value as string ?? value.ToString() : null; + } + + private static Dictionary? GetCompound(Dictionary data, string key) + { + return data.TryGetValue(key, out var value) && value is Dictionary compound ? compound : null; + } + + private static bool GetBool(Dictionary data, string key, bool fallback) + { + if (!data.TryGetValue(key, out var value)) + return fallback; + + return value switch + { + bool boolean => boolean, + byte number => number != 0, + sbyte number => number != 0, + int number => number != 0, + string text when bool.TryParse(text, out var parsed) => parsed, + _ => fallback + }; + } + + private static int GetInt(Dictionary data, string key, int fallback) + { + if (!data.TryGetValue(key, out var value)) + return fallback; + + return value switch + { + byte number => number, + short number => number, + int number => number, + long number => (int)number, + string text when int.TryParse(text, NumberStyles.Integer, CultureInfo.InvariantCulture, out var parsed) => parsed, + _ => fallback + }; + } + + private static float GetFloat(Dictionary data, string key, float fallback) + { + return TryGetFloat(data, key) ?? fallback; + } + + private static float? TryGetFloat(Dictionary data, string key) + { + if (!data.TryGetValue(key, out var value)) + return null; + + return value switch + { + float number => number, + double number => (float)number, + int number => number, + long number => number, + string text when float.TryParse(text, NumberStyles.Float, CultureInfo.InvariantCulture, out var parsed) => parsed, + _ => null + }; + } + + private static string NormalizeType(string type) + { + return type.Contains(':', StringComparison.Ordinal) ? type : "minecraft:" + type; + } + + private static void AddIfNotNull(List buttons, DialogButton? button) + { + if (button is not null) + buttons.Add(button); + } + + private static string NumberToString(float value) + { + var integer = (int)value; + return integer == value + ? integer.ToString(CultureInfo.InvariantCulture) + : value.ToString(CultureInfo.InvariantCulture); + } + + private sealed record DialogCommon( + string Title, + string? ExternalTitle, + bool CanCloseWithEscape, + bool Pause, + DialogAfterAction AfterAction, + IReadOnlyList Body, + IReadOnlyList Inputs); +} diff --git a/MinecraftClient/Protocol/Handlers/ConfigurationPacketTypesIn.cs b/MinecraftClient/Protocol/Handlers/ConfigurationPacketTypesIn.cs index f3b4be23..d140bbcc 100644 --- a/MinecraftClient/Protocol/Handlers/ConfigurationPacketTypesIn.cs +++ b/MinecraftClient/Protocol/Handlers/ConfigurationPacketTypesIn.cs @@ -22,6 +22,6 @@ public enum ConfigurationPacketTypesIn ClearDialog, // Added in 1.21.6 ShowDialog, // Added in 1.21.6 CodeOfConduct, // Added in 1.21.9 - + Unknown } diff --git a/MinecraftClient/Protocol/Handlers/ConfigurationPacketTypesOut.cs b/MinecraftClient/Protocol/Handlers/ConfigurationPacketTypesOut.cs index 30b7c909..1bb492d2 100644 --- a/MinecraftClient/Protocol/Handlers/ConfigurationPacketTypesOut.cs +++ b/MinecraftClient/Protocol/Handlers/ConfigurationPacketTypesOut.cs @@ -12,6 +12,6 @@ public enum ConfigurationPacketTypesOut KnownDataPacks, CustomClickAction, // Added in 1.21.6 AcceptCodeOfConduct, // Added in 1.21.9 - + Unknown } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/DataTypes.cs b/MinecraftClient/Protocol/Handlers/DataTypes.cs index bdbdecea..a3e95cb4 100644 --- a/MinecraftClient/Protocol/Handlers/DataTypes.cs +++ b/MinecraftClient/Protocol/Handlers/DataTypes.cs @@ -411,6 +411,12 @@ namespace MinecraftClient.Protocol.Handlers return ReadNextNbt(cache, true); } + public object? ReadNextNbtTag(Queue cache) + { + var tagType = ReadNextByte(cache); + return tagType == 0 ? null : ReadNbtField(cache, tagType); + } + /// /// Read an ItemStackTemplate (26.1+) from a cache of bytes. /// Unlike ItemStack, this uses item-first encoding: item_id, count, DataComponentPatch. @@ -453,7 +459,7 @@ namespace MinecraftClient.Protocol.Handlers var nbt = null as Dictionary; var item = null as Item; var strcturedComponentsToAdd = new List(); - + switch (protocolversion) { // MC 1.13.2 and greater @@ -461,10 +467,10 @@ namespace MinecraftClient.Protocol.Handlers itemCount = ReadNextVarInt(cache); if (itemCount <= 0) return null; - + itemId = ReadNextVarInt(cache); item = new Item(itemPalette.FromId(itemId), itemCount, null); - + var numberOfComponentsToAdd = ReadNextVarInt(cache); var numberofComponentsToRemove = ReadNextVarInt(cache); var structuredComponentHandler = new StructuredComponentsHandler(protocolversion, this, itemPalette); @@ -500,55 +506,55 @@ namespace MinecraftClient.Protocol.Handlers return item; case >= Protocol18Handler.MC_1_13_2_Version: - { - var itemPresent = ReadNextBool(cache); + { + var itemPresent = ReadNextBool(cache); - if (!itemPresent) - return null; + if (!itemPresent) + return null; - itemId = ReadNextVarInt(cache); + itemId = ReadNextVarInt(cache); - if (itemId == -1) - return null; + if (itemId == -1) + return null; - var type = itemPalette.FromId(itemId); - itemCount = ReadNextByte(cache); - nbt = ReadNextNbt(cache); - return new Item(type, itemCount, nbt); - } + var type = itemPalette.FromId(itemId); + itemCount = ReadNextByte(cache); + nbt = ReadNextNbt(cache); + return new Item(type, itemCount, itemId, nbt); + } case >= Protocol18Handler.MC_1_13_Version: - { - itemId = ReadNextShort(cache); + { + itemId = ReadNextShort(cache); - if (itemId == -1) - return null; + if (itemId == -1) + return null; - var type = itemPalette.FromId(itemId); - itemCount = ReadNextByte(cache); - nbt = ReadNextNbt(cache); - return new Item(type, itemCount, nbt); - } + var type = itemPalette.FromId(itemId); + itemCount = ReadNextByte(cache); + nbt = ReadNextNbt(cache); + return new Item(type, itemCount, itemId, nbt); + } default: - { - itemId = ReadNextShort(cache); + { + itemId = ReadNextShort(cache); - if (itemId == -1) - return null; + if (itemId == -1) + return null; - itemCount = ReadNextByte(cache); - var data = ReadNextShort(cache); - nbt = ReadNextNbt(cache); + itemCount = ReadNextByte(cache); + var data = ReadNextShort(cache); + nbt = ReadNextNbt(cache); - // For 1.8 - 1.12.2 we combine Item Id and Item Data/Damage to a single value using: (id << 16) | data - return new Item(itemPalette.FromId((itemId << 16) | (ushort)data), itemCount, data, nbt); - } + // For 1.8 - 1.12.2 we combine Item Id and Item Data/Damage to a single value using: (id << 16) | data + return new Item(itemPalette.FromId((itemId << 16) | (ushort)data), itemCount, data, nbt); + } } } private void ReadNextDetail(Queue cache) { var potionEffectId = ReadNextVarInt(cache); - + // Details var potionEffectAmplifier = ReadNextVarInt(cache); var duration = ReadNextVarInt(cache); // -1 for infinite @@ -1173,14 +1179,14 @@ namespace MinecraftClient.Protocol.Handlers if (protocolversion >= Protocol18Handler.MC_1_20_6_Version) ReadNextVarInt(cache); // BlockState (minecraft:block) break; - + case 2: // 1.18 if (protocolversion > Protocol18Handler.MC_1_17_1_Version) ReadNextVarInt(cache); // Block state (minecraft:block before 1.20.6, minecraft:block_marker in 1.20.6+) break; case 3: - if (protocolversion is (< Protocol18Handler.MC_1_17_Version or > Protocol18Handler.MC_1_17_1_Version) + if (protocolversion is (< Protocol18Handler.MC_1_17_Version or > Protocol18Handler.MC_1_17_1_Version) and < Protocol18Handler.MC_1_20_6_Version) ReadNextVarInt( cache); // Block State (minecraft:block before 1.18, minecraft:block_marker after 1.18 up to 1.20.6) @@ -1340,7 +1346,7 @@ namespace MinecraftClient.Protocol.Handlers break; case 45: // 1.21+ - if(protocolversion >= Protocol18Handler.MC_1_21_Version) + if (protocolversion >= Protocol18Handler.MC_1_21_Version) ReadVibration(cache); break; case 99: @@ -1383,19 +1389,21 @@ namespace MinecraftClient.Protocol.Handlers ReadNextFloat(cache); // Entity eye height ReadNextVarInt(cache); // Ticks } - + /// /// Read a single villager trade from a cache of bytes and remove it from the cache /// /// The item that was read or NULL for an empty slot public VillagerTrade ReadNextTrade(Queue cache, ItemPalette itemPalette) { - Item inputItem1 = ReadNextItemSlot(cache, itemPalette)!; + Item inputItem1 = ReadNextTradeCost(cache, itemPalette)!; Item outputItem = ReadNextItemSlot(cache, itemPalette)!; Item? inputItem2 = null; - if (protocolversion >= Protocol18Handler.MC_1_19_3_Version) + if (protocolversion >= Protocol18Handler.MC_1_20_6_Version) + inputItem2 = ReadNextOptionalTradeCost(cache, itemPalette); + else if (protocolversion >= Protocol18Handler.MC_1_19_3_Version) inputItem2 = ReadNextItemSlot(cache, itemPalette); else { @@ -1414,21 +1422,62 @@ namespace MinecraftClient.Protocol.Handlers maximumNumberOfTradeUses, xp, specialPrice, priceMultiplier, demand); } + private Item? ReadNextTradeCost(Queue cache, ItemPalette itemPalette) + { + if (protocolversion < Protocol18Handler.MC_1_20_6_Version) + return ReadNextItemSlot(cache, itemPalette); + + var itemId = ReadNextVarInt(cache); + var itemCount = ReadNextVarInt(cache); + var item = new Item(itemPalette.FromId(itemId), itemCount, null); + var componentCount = ReadNextVarInt(cache); + + if (componentCount > 0) + { + var structuredComponentHandler = new StructuredComponentsHandler(protocolversion, this, itemPalette); + var components = new List(componentCount); + for (var i = 0; i < componentCount; i++) + { + var componentTypeId = ReadNextVarInt(cache); + components.Add(structuredComponentHandler.Parse(componentTypeId, cache)); + } + + item.Components = components; + } + + return item; + } + + private Item? ReadNextOptionalTradeCost(Queue cache, ItemPalette itemPalette) + { + if (!ReadNextBool(cache)) + return null; + + return ReadNextTradeCost(cache, itemPalette); + } + public string ReadNextChat(Queue cache) { if (protocolversion >= Protocol18Handler.MC_1_20_4_Version) { - // Read as NBT - var r = ReadNextNbt(cache); - var msg = ChatParser.ParseText(r); - return msg; - } - else - { - // Read as String - var json = ReadNextString(cache); - return ChatParser.ParseText(json); + // Vanilla 1.20.4+ uses NBT here, but Hypixel exposed a JSON-string fallback on the same path. + Queue fallbackCache = new(cache); + try + { + var r = ReadNextNbt(cache); + return ChatParser.ParseText(r); + } + catch (System.IO.InvalidDataException) + { + cache.Clear(); + foreach (var b in fallbackCache) + cache.Enqueue(b); + } } + + // Read as String + var json = ReadNextString(cache); + return ChatParser.ParseText(json); } /// @@ -1441,6 +1490,17 @@ namespace MinecraftClient.Protocol.Handlers return GetNbt(nbt, true); } + public byte[] GetNbtTag(object? tag) + { + if (tag is null) + return [0]; + + var tagData = GetNbtField(tag, out var tagType); + var data = new List { tagType }; + data.AddRange(tagData); + return data.ToArray(); + } + /// /// Build an uncompressed Named Binary Tag blob for sending over the network (internal) /// @@ -1892,6 +1952,39 @@ namespace MinecraftClient.Protocol.Handlers return slotData.ToArray(); } + /// + /// Get a byte array representing the given item as a non-empty ItemStackTemplate. + /// + /// Item + /// Item Palette + /// ItemStackTemplate representation + public byte[] GetItemStackTemplate(Item item, ItemPalette itemPalette) + { + List slotData = new(); + + slotData.AddRange(GetVarInt(itemPalette.ToId(item.Type))); + slotData.AddRange(GetVarInt(item.Count)); + + if (item.Components is not null && item.Components.Count > 0) + { + slotData.AddRange(GetVarInt(item.Components.Count)); + slotData.AddRange(GetVarInt(0)); // components to remove + foreach (var component in item.Components) + { + slotData.AddRange(GetVarInt(component.TypeId)); + var serialized = component.Serialize(); + slotData.AddRange(serialized); + } + } + else + { + slotData.AddRange(GetVarInt(0)); // no components to add + slotData.AddRange(GetVarInt(0)); // no components to remove + } + + return slotData.ToArray(); + } + /// /// Get a byte array representing an array of item slots /// diff --git a/MinecraftClient/Protocol/Handlers/Forge/ForgeInfo.cs b/MinecraftClient/Protocol/Handlers/Forge/ForgeInfo.cs index 7baca1ba..644be909 100755 --- a/MinecraftClient/Protocol/Handlers/Forge/ForgeInfo.cs +++ b/MinecraftClient/Protocol/Handlers/Forge/ForgeInfo.cs @@ -133,7 +133,7 @@ namespace MinecraftClient.Protocol.Handlers.Forge break; case FMLVersion.FML3: // Example ModInfo for Minecraft 1.18 and greater (FML3) - + // "forgeData": { // "channels": [], // "mods": [], @@ -169,24 +169,26 @@ namespace MinecraftClient.Protocol.Handlers.Forge // [ Channel Version ][ String ] // [ Required On Client ][ Bool ] - for (var i = 0; i < modsSize; i++) { + for (var i = 0; i < modsSize; i++) + { var channelSizeAndVersionFlag = dataTypes.ReadNextVarInt(dataPackage); var channelSize = channelSizeAndVersionFlag >> 1; int VERSION_FLAG_IGNORESERVERONLY = 0b1; var isIgnoreServerOnly = (channelSizeAndVersionFlag & VERSION_FLAG_IGNORESERVERONLY) != 0; - + var modId = dataTypes.ReadNextString(dataPackage); - + string IGNORESERVERONLY = "IGNORED"; var modVersion = isIgnoreServerOnly ? IGNORESERVERONLY : dataTypes.ReadNextString(dataPackage); - - for (var i1 = 0; i1 < channelSize; i1++) { + + for (var i1 = 0; i1 < channelSize; i1++) + { dataTypes.ReadNextString(dataPackage); // channelName dataTypes.ReadNextString(dataPackage); // channelVersion dataTypes.ReadNextBool(dataPackage); // requiredOnClient } - + mods.Add(modId, modVersion); Mods.Add(new ForgeMod(modId, modVersion)); } @@ -213,7 +215,8 @@ namespace MinecraftClient.Protocol.Handlers.Forge /// The code below is converted from forge source code, see: /// https://github.com/MinecraftForge/MinecraftForge/blob/cb12df41e13da576b781be695f80728b9594c25f/src/main/java/net/minecraftforge/network/ServerStatusPing.java#L361 /// - private static Queue decodeOptimized(string encodedData) { + private static Queue decodeOptimized(string encodedData) + { int size0 = encodedData[0]; int size1 = encodedData[1]; int size = size0 | (size1 << 15); diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette119.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette119.cs index 0757dcb8..7a7e9eb6 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette119.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette119.cs @@ -118,9 +118,9 @@ namespace MinecraftClient.Protocol.Handlers.PacketPalettes { 0x00, PacketTypesOut.TeleportConfirm }, // (Wiki name: Confirm Teleportation) { 0x01, PacketTypesOut.QueryBlockNBT }, // (Wiki name: Query Block Entity Tag) { 0x02, PacketTypesOut.SetDifficulty }, // (Wiki name: Change Difficutly) - { 0x03, PacketTypesOut.MessageAcknowledgment }, // - { 0x04, PacketTypesOut.ChatCommand }, // Added in 1.19 - { 0x05, PacketTypesOut.ChatMessage }, // Changed in 1.19 (Completely changed) (Wiki name: Chat) + { 0x03, PacketTypesOut.ChatCommand }, // Added in 1.19 + { 0x04, PacketTypesOut.ChatMessage }, // Changed in 1.19 (Completely changed) (Wiki name: Chat) + { 0x05, PacketTypesOut.ChatPreview }, // Added in 1.19 (Wiki name: Chat Preview (serverbound)) { 0x06, PacketTypesOut.ClientStatus }, // (Wiki name: Client Command) { 0x07, PacketTypesOut.ClientSettings }, // (Wiki name: Client Information) { 0x08, PacketTypesOut.TabComplete }, // (Wiki name: Command Suggestions Request) @@ -147,25 +147,24 @@ namespace MinecraftClient.Protocol.Handlers.PacketPalettes { 0x1D, PacketTypesOut.EntityAction }, // (Wiki name: Player Command) { 0x1E, PacketTypesOut.SteerVehicle }, // (Wiki name: Player Input) { 0x1F, PacketTypesOut.Pong }, // (Wiki name: Pong (play)) - { 0x20, PacketTypesOut.PlayerSession }, // Added in 1.19.3 - { 0x21, PacketTypesOut.SetDisplayedRecipe }, // (Wiki name: Recipe Book Change Settings) - { 0x22, PacketTypesOut.SetRecipeBookState }, // (Wiki name: Recipe Book Seen Recipe) - { 0x23, PacketTypesOut.NameItem }, // (Wiki name: Rename Item) - { 0x24, PacketTypesOut.ResourcePackStatus }, // (Wiki name: Resource Pack (serverbound)) - { 0x25, PacketTypesOut.AdvancementTab }, // (Wiki name: Seen Advancements) - { 0x26, PacketTypesOut.SelectTrade }, // - { 0x27, PacketTypesOut.SetBeaconEffect }, // Changed in 1.19 (Added a "Secondary Effect Present" and "Secondary Effect" fields) (Wiki name: Set Beacon) - (No need to be implemented) - { 0x28, PacketTypesOut.HeldItemChange }, // (Wiki name: Set Carried Item (serverbound)) - { 0x29, PacketTypesOut.UpdateCommandBlock }, // (Wiki name: Set Command Block) - { 0x2A, PacketTypesOut.UpdateCommandBlockMinecart }, // - { 0x2B, PacketTypesOut.CreativeInventoryAction }, // (Wiki name: Set Creative Mode Slot) - { 0x2C, PacketTypesOut.UpdateJigsawBlock }, // (Wiki name: Set Jigsaw Block) - { 0x2D, PacketTypesOut.UpdateStructureBlock }, // (Wiki name: Set Structure Block) - { 0x2E, PacketTypesOut.UpdateSign }, // (Wiki name: Sign Update) - { 0x2F, PacketTypesOut.Animation }, // (Wiki name: Swing) - { 0x30, PacketTypesOut.Spectate }, // (Wiki name: Teleport To Entity) - { 0x31, PacketTypesOut.PlayerBlockPlacement }, // Changed in 1.19 (Added a "Sequence" field) (Wiki name: Use Item On) - { 0x32, PacketTypesOut.UseItem }, // Changed in 1.19 (Added a "Sequence" field) (Wiki name: Use Item) + { 0x20, PacketTypesOut.SetDisplayedRecipe }, // (Wiki name: Recipe Book Change Settings) + { 0x21, PacketTypesOut.SetRecipeBookState }, // (Wiki name: Recipe Book Seen Recipe) + { 0x22, PacketTypesOut.NameItem }, // (Wiki name: Rename Item) + { 0x23, PacketTypesOut.ResourcePackStatus }, // (Wiki name: Resource Pack (serverbound)) + { 0x24, PacketTypesOut.AdvancementTab }, // (Wiki name: Seen Advancements) + { 0x25, PacketTypesOut.SelectTrade }, // + { 0x26, PacketTypesOut.SetBeaconEffect }, // Changed in 1.19 (Added a "Secondary Effect Present" and "Secondary Effect" fields) (Wiki name: Set Beacon) - (No need to be implemented) + { 0x27, PacketTypesOut.HeldItemChange }, // (Wiki name: Set Carried Item (serverbound)) + { 0x28, PacketTypesOut.UpdateCommandBlock }, // (Wiki name: Set Command Block) + { 0x29, PacketTypesOut.UpdateCommandBlockMinecart }, // + { 0x2A, PacketTypesOut.CreativeInventoryAction }, // (Wiki name: Set Creative Mode Slot) + { 0x2B, PacketTypesOut.UpdateJigsawBlock }, // (Wiki name: Set Jigsaw Block) + { 0x2C, PacketTypesOut.UpdateStructureBlock }, // (Wiki name: Set Structure Block) + { 0x2D, PacketTypesOut.UpdateSign }, // (Wiki name: Sign Update) + { 0x2E, PacketTypesOut.Animation }, // (Wiki name: Swing) + { 0x2F, PacketTypesOut.Spectate }, // (Wiki name: Teleport To Entity) + { 0x30, PacketTypesOut.PlayerBlockPlacement }, // Changed in 1.19 (Added a "Sequence" field) (Wiki name: Use Item On) + { 0x31, PacketTypesOut.UseItem }, // Changed in 1.19 (Added a "Sequence" field) (Wiki name: Use Item) }; protected override Dictionary GetListIn() => typeIn; diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1202.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1202.cs index 1e771589..7781a9c9 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1202.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1202.cs @@ -178,7 +178,7 @@ namespace MinecraftClient.Protocol.Handlers.PacketPalettes { 0x34, PacketTypesOut.PlayerBlockPlacement }, // Changed in 1.19 (Added a "Sequence" field) (Wiki name: Use Item On) { 0x35, PacketTypesOut.UseItem }, // Changed in 1.19 (Added a "Sequence" field) (Wiki name: Use Item) }; - + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.PluginMessage }, @@ -201,7 +201,7 @@ namespace MinecraftClient.Protocol.Handlers.PacketPalettes { 0x04, ConfigurationPacketTypesOut.Pong }, { 0x05, ConfigurationPacketTypesOut.ResourcePackResponse } }; - + protected override Dictionary GetListIn() => typeIn; protected override Dictionary GetListOut() => typeOut; protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1204.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1204.cs index 0f7bcd04..46721231 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1204.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1204.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; namespace MinecraftClient.Protocol.Handlers.PacketPalettes; public class PacketPalette1204 : PacketTypePalette - { - private readonly Dictionary typeIn = new() +{ + private readonly Dictionary typeIn = new() { { 0x00, PacketTypesIn.Bundle }, // Added in 1.19.4 { 0x01, PacketTypesIn.SpawnEntity }, // Changed in 1.19 (Wiki name: Spawn Entity) @@ -125,7 +125,7 @@ public class PacketPalette1204 : PacketTypePalette { 0x74, PacketTypesIn.Tags }, // (Wiki name: Update Tags) }; - private readonly Dictionary typeOut = new() + private readonly Dictionary typeOut = new() { { 0x00, PacketTypesOut.TeleportConfirm }, // (Wiki name: Confirm Teleportation) { 0x01, PacketTypesOut.QueryBlockNBT }, // (Wiki name: Query Block Entity Tag) @@ -184,7 +184,7 @@ public class PacketPalette1204 : PacketTypePalette { 0x36, PacketTypesOut.UseItem }, // Changed in 1.19 (Added a "Sequence" field) (Wiki name: Use Item) }; - private readonly Dictionary configurationTypesIn = new() + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.PluginMessage }, { 0x01, ConfigurationPacketTypesIn.Disconnect }, @@ -198,7 +198,7 @@ public class PacketPalette1204 : PacketTypePalette { 0x09, ConfigurationPacketTypesIn.UpdateTags }, }; - private readonly Dictionary configurationTypesOut = new() + private readonly Dictionary configurationTypesOut = new() { { 0x00, ConfigurationPacketTypesOut.ClientInformation }, { 0x01, ConfigurationPacketTypesOut.PluginMessage }, @@ -207,9 +207,9 @@ public class PacketPalette1204 : PacketTypePalette { 0x04, ConfigurationPacketTypesOut.Pong }, { 0x05, ConfigurationPacketTypesOut.ResourcePackResponse } }; - - protected override Dictionary GetListIn() => typeIn; - protected override Dictionary GetListOut() => typeOut; - protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; - protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; - } \ No newline at end of file + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; + protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; +} \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1206.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1206.cs index 2a5abce5..f053d41e 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1206.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1206.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; namespace MinecraftClient.Protocol.Handlers.PacketPalettes; public class PacketPalette1206 : PacketTypePalette - { - private readonly Dictionary typeIn = new() +{ + private readonly Dictionary typeIn = new() { { 0x00, PacketTypesIn.Bundle }, // Added in 1.19.4 { 0x01, PacketTypesIn.SpawnEntity }, // Changed in 1.19 (Wiki name: Spawn Entity) @@ -130,7 +130,7 @@ public class PacketPalette1206 : PacketTypePalette { 0x79, PacketTypesIn.ProjectilePower }, // Added in 1.20.6 }; - private readonly Dictionary typeOut = new() + private readonly Dictionary typeOut = new() { { 0x00, PacketTypesOut.TeleportConfirm }, // (Wiki name: Confirm Teleportation) { 0x01, PacketTypesOut.QueryBlockNBT }, // (Wiki name: Query Block Entity Tag) @@ -192,7 +192,7 @@ public class PacketPalette1206 : PacketTypePalette { 0x39, PacketTypesOut.UseItem }, // Changed in 1.19 (Added a "Sequence" field) (Wiki name: Use Item) }; - private readonly Dictionary configurationTypesIn = new() + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.CookieRequest }, { 0x01, ConfigurationPacketTypesIn.PluginMessage }, @@ -211,7 +211,7 @@ public class PacketPalette1206 : PacketTypePalette { 0x0E, ConfigurationPacketTypesIn.KnownDataPacks } }; - private readonly Dictionary configurationTypesOut = new() + private readonly Dictionary configurationTypesOut = new() { { 0x00, ConfigurationPacketTypesOut.ClientInformation }, { 0x01, ConfigurationPacketTypesOut.CookieResponse }, @@ -222,9 +222,9 @@ public class PacketPalette1206 : PacketTypePalette { 0x06, ConfigurationPacketTypesOut.ResourcePackResponse }, { 0x07, ConfigurationPacketTypesOut.KnownDataPacks } }; - - protected override Dictionary GetListIn() => typeIn; - protected override Dictionary GetListOut() => typeOut; - protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; - protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; - } \ No newline at end of file + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; + protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; +} \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette121.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette121.cs index fc8b64bb..8c35b2c8 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette121.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette121.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; namespace MinecraftClient.Protocol.Handlers.PacketPalettes; public class PacketPalette121 : PacketTypePalette - { - private readonly Dictionary typeIn = new() +{ + private readonly Dictionary typeIn = new() { { 0x00, PacketTypesIn.Bundle }, // Added in 1.19.4 { 0x01, PacketTypesIn.SpawnEntity }, // Changed in 1.19 (Wiki name: Spawn Entity) @@ -132,7 +132,7 @@ public class PacketPalette121 : PacketTypePalette { 0x7B, PacketTypesIn.ServerLinks } // Added in 1.21 }; - private readonly Dictionary typeOut = new() + private readonly Dictionary typeOut = new() { { 0x00, PacketTypesOut.TeleportConfirm }, // (Wiki name: Confirm Teleportation) { 0x01, PacketTypesOut.QueryBlockNBT }, // (Wiki name: Query Block Entity Tag) @@ -194,7 +194,7 @@ public class PacketPalette121 : PacketTypePalette { 0x39, PacketTypesOut.UseItem }, // Changed in 1.19 (Added a "Sequence" field) (Wiki name: Use Item) }; - private readonly Dictionary configurationTypesIn = new() + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.CookieRequest }, { 0x01, ConfigurationPacketTypesIn.PluginMessage }, @@ -215,7 +215,7 @@ public class PacketPalette121 : PacketTypePalette { 0x10, ConfigurationPacketTypesIn.ServerLinks } // Added in 1.21 (Not used) }; - private readonly Dictionary configurationTypesOut = new() + private readonly Dictionary configurationTypesOut = new() { { 0x00, ConfigurationPacketTypesOut.ClientInformation }, { 0x01, ConfigurationPacketTypesOut.CookieResponse }, @@ -226,9 +226,9 @@ public class PacketPalette121 : PacketTypePalette { 0x06, ConfigurationPacketTypesOut.ResourcePackResponse }, { 0x07, ConfigurationPacketTypesOut.KnownDataPacks } }; - - protected override Dictionary GetListIn() => typeIn; - protected override Dictionary GetListOut() => typeOut; - protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; - protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; - } \ No newline at end of file + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; + protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; +} \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1212.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1212.cs index 76deae7e..e5aa2e63 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1212.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1212.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; namespace MinecraftClient.Protocol.Handlers.PacketPalettes; public class PacketPalette1212 : PacketTypePalette - { - private readonly Dictionary typeIn = new() +{ + private readonly Dictionary typeIn = new() { { 0x00, PacketTypesIn.Bundle }, // Bundle delimiter { 0x01, PacketTypesIn.SpawnEntity }, // Add Entity @@ -139,7 +139,7 @@ public class PacketPalette1212 : PacketTypePalette { 0x82, PacketTypesIn.ServerLinks } // Server Links }; - private readonly Dictionary typeOut = new() + private readonly Dictionary typeOut = new() { { 0x00, PacketTypesOut.TeleportConfirm }, // Accept Teleportation { 0x01, PacketTypesOut.QueryBlockNBT }, // Block Entity Tag Query @@ -203,7 +203,7 @@ public class PacketPalette1212 : PacketTypePalette { 0x3B, PacketTypesOut.UseItem }, // Use Item }; - private readonly Dictionary configurationTypesIn = new() + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.CookieRequest }, { 0x01, ConfigurationPacketTypesIn.PluginMessage }, @@ -224,7 +224,7 @@ public class PacketPalette1212 : PacketTypePalette { 0x10, ConfigurationPacketTypesIn.ServerLinks } }; - private readonly Dictionary configurationTypesOut = new() + private readonly Dictionary configurationTypesOut = new() { { 0x00, ConfigurationPacketTypesOut.ClientInformation }, { 0x01, ConfigurationPacketTypesOut.CookieResponse }, @@ -235,9 +235,9 @@ public class PacketPalette1212 : PacketTypePalette { 0x06, ConfigurationPacketTypesOut.ResourcePackResponse }, { 0x07, ConfigurationPacketTypesOut.KnownDataPacks } }; - - protected override Dictionary GetListIn() => typeIn; - protected override Dictionary GetListOut() => typeOut; - protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; - protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; - } + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; + protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; +} diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1214.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1214.cs index 8ab00e22..a7b90eca 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1214.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1214.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; namespace MinecraftClient.Protocol.Handlers.PacketPalettes; public class PacketPalette1214 : PacketTypePalette - { - private readonly Dictionary typeIn = new() +{ + private readonly Dictionary typeIn = new() { { 0x00, PacketTypesIn.Bundle }, // Bundle delimiter { 0x01, PacketTypesIn.SpawnEntity }, // Add Entity @@ -139,7 +139,7 @@ public class PacketPalette1214 : PacketTypePalette { 0x82, PacketTypesIn.ServerLinks } // Server Links }; - private readonly Dictionary typeOut = new() + private readonly Dictionary typeOut = new() { { 0x00, PacketTypesOut.TeleportConfirm }, // Accept Teleportation { 0x01, PacketTypesOut.QueryBlockNBT }, // Block Entity Tag Query @@ -205,7 +205,7 @@ public class PacketPalette1214 : PacketTypePalette { 0x3D, PacketTypesOut.UseItem }, // Use Item }; - private readonly Dictionary configurationTypesIn = new() + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.CookieRequest }, { 0x01, ConfigurationPacketTypesIn.PluginMessage }, @@ -226,7 +226,7 @@ public class PacketPalette1214 : PacketTypePalette { 0x10, ConfigurationPacketTypesIn.ServerLinks } }; - private readonly Dictionary configurationTypesOut = new() + private readonly Dictionary configurationTypesOut = new() { { 0x00, ConfigurationPacketTypesOut.ClientInformation }, { 0x01, ConfigurationPacketTypesOut.CookieResponse }, @@ -237,9 +237,9 @@ public class PacketPalette1214 : PacketTypePalette { 0x06, ConfigurationPacketTypesOut.ResourcePackResponse }, { 0x07, ConfigurationPacketTypesOut.KnownDataPacks } }; - - protected override Dictionary GetListIn() => typeIn; - protected override Dictionary GetListOut() => typeOut; - protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; - protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; - } + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; + protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; +} diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1215.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1215.cs index 4ecc5079..0e8f7a93 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1215.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1215.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; namespace MinecraftClient.Protocol.Handlers.PacketPalettes; public class PacketPalette1215 : PacketTypePalette - { - private readonly Dictionary typeIn = new() +{ + private readonly Dictionary typeIn = new() { { 0x00, PacketTypesIn.Bundle }, // Bundle delimiter { 0x01, PacketTypesIn.SpawnEntity }, // Add Entity @@ -139,7 +139,7 @@ public class PacketPalette1215 : PacketTypePalette { 0x82, PacketTypesIn.ServerLinks } // Server Links }; - private readonly Dictionary typeOut = new() + private readonly Dictionary typeOut = new() { { 0x00, PacketTypesOut.TeleportConfirm }, // Accept Teleportation { 0x01, PacketTypesOut.QueryBlockNBT }, // Block Entity Tag Query @@ -207,7 +207,7 @@ public class PacketPalette1215 : PacketTypePalette { 0x3F, PacketTypesOut.UseItem }, // Use Item }; - private readonly Dictionary configurationTypesIn = new() + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.CookieRequest }, { 0x01, ConfigurationPacketTypesIn.PluginMessage }, @@ -228,7 +228,7 @@ public class PacketPalette1215 : PacketTypePalette { 0x10, ConfigurationPacketTypesIn.ServerLinks } }; - private readonly Dictionary configurationTypesOut = new() + private readonly Dictionary configurationTypesOut = new() { { 0x00, ConfigurationPacketTypesOut.ClientInformation }, { 0x01, ConfigurationPacketTypesOut.CookieResponse }, @@ -239,9 +239,9 @@ public class PacketPalette1215 : PacketTypePalette { 0x06, ConfigurationPacketTypesOut.ResourcePackResponse }, { 0x07, ConfigurationPacketTypesOut.KnownDataPacks } }; - - protected override Dictionary GetListIn() => typeIn; - protected override Dictionary GetListOut() => typeOut; - protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; - protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; - } + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; + protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; +} diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1216.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1216.cs index e49504fd..3f1520f7 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1216.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1216.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; namespace MinecraftClient.Protocol.Handlers.PacketPalettes; public class PacketPalette1216 : PacketTypePalette - { - private readonly Dictionary typeIn = new() +{ + private readonly Dictionary typeIn = new() { { 0x00, PacketTypesIn.Bundle }, // Bundle delimiter { 0x01, PacketTypesIn.SpawnEntity }, // Add Entity @@ -142,7 +142,7 @@ public class PacketPalette1216 : PacketTypePalette { 0x85, PacketTypesIn.ShowDialog } // Show Dialog (new in 1.21.6) }; - private readonly Dictionary typeOut = new() + private readonly Dictionary typeOut = new() { { 0x00, PacketTypesOut.TeleportConfirm }, // Accept Teleportation { 0x01, PacketTypesOut.QueryBlockNBT }, // Block Entity Tag Query @@ -212,7 +212,7 @@ public class PacketPalette1216 : PacketTypePalette { 0x41, PacketTypesOut.CustomClickAction } // Custom Click Action (new in 1.21.6) }; - private readonly Dictionary configurationTypesIn = new() + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.CookieRequest }, { 0x01, ConfigurationPacketTypesIn.PluginMessage }, @@ -235,7 +235,7 @@ public class PacketPalette1216 : PacketTypePalette { 0x12, ConfigurationPacketTypesIn.ShowDialog } // New in 1.21.6 }; - private readonly Dictionary configurationTypesOut = new() + private readonly Dictionary configurationTypesOut = new() { { 0x00, ConfigurationPacketTypesOut.ClientInformation }, { 0x01, ConfigurationPacketTypesOut.CookieResponse }, @@ -247,9 +247,9 @@ public class PacketPalette1216 : PacketTypePalette { 0x07, ConfigurationPacketTypesOut.KnownDataPacks }, { 0x08, ConfigurationPacketTypesOut.CustomClickAction } // New in 1.21.6 }; - - protected override Dictionary GetListIn() => typeIn; - protected override Dictionary GetListOut() => typeOut; - protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; - protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; - } + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; + protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; +} diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1219.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1219.cs index 0f4bfe90..5aab09bc 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1219.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette1219.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; namespace MinecraftClient.Protocol.Handlers.PacketPalettes; public class PacketPalette1219 : PacketTypePalette - { - private readonly Dictionary typeIn = new() +{ + private readonly Dictionary typeIn = new() { { 0x00, PacketTypesIn.Bundle }, // Bundle delimiter { 0x01, PacketTypesIn.SpawnEntity }, // Add Entity @@ -147,7 +147,7 @@ public class PacketPalette1219 : PacketTypePalette { 0x8A, PacketTypesIn.ShowDialog } // Show Dialog }; - private readonly Dictionary typeOut = new() + private readonly Dictionary typeOut = new() { { 0x00, PacketTypesOut.TeleportConfirm }, // Accept Teleportation { 0x01, PacketTypesOut.QueryBlockNBT }, // Block Entity Tag Query @@ -217,7 +217,7 @@ public class PacketPalette1219 : PacketTypePalette { 0x41, PacketTypesOut.CustomClickAction } // Custom Click Action }; - private readonly Dictionary configurationTypesIn = new() + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.CookieRequest }, { 0x01, ConfigurationPacketTypesIn.PluginMessage }, @@ -241,7 +241,7 @@ public class PacketPalette1219 : PacketTypePalette { 0x13, ConfigurationPacketTypesIn.CodeOfConduct } // New in 1.21.9 }; - private readonly Dictionary configurationTypesOut = new() + private readonly Dictionary configurationTypesOut = new() { { 0x00, ConfigurationPacketTypesOut.ClientInformation }, { 0x01, ConfigurationPacketTypesOut.CookieResponse }, @@ -254,9 +254,9 @@ public class PacketPalette1219 : PacketTypePalette { 0x08, ConfigurationPacketTypesOut.CustomClickAction }, { 0x09, ConfigurationPacketTypesOut.AcceptCodeOfConduct } // New in 1.21.9 }; - - protected override Dictionary GetListIn() => typeIn; - protected override Dictionary GetListOut() => typeOut; - protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; - protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; - } + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; + protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; +} diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette17.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette17.cs index bd337612..ecbdf4a9 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette17.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette17.cs @@ -114,7 +114,7 @@ namespace MinecraftClient.Protocol.Handlers.PacketPalettes protected override Dictionary GetListIn() => typeIn; protected override Dictionary GetListOut() => typeOut; - + protected override Dictionary GetConfigurationListIn() => new(); protected override Dictionary GetConfigurationListOut() => new(); } diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette19.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette19.cs new file mode 100644 index 00000000..ebffc31a --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette19.cs @@ -0,0 +1,127 @@ +using System.Collections.Generic; + +namespace MinecraftClient.Protocol.Handlers.PacketPalettes +{ + public class PacketPalette19 : PacketTypePalette + { + private readonly Dictionary typeIn = new() + { + { 0x00, PacketTypesIn.SpawnEntity }, + { 0x01, PacketTypesIn.SpawnExperienceOrb }, + { 0x02, PacketTypesIn.SpawnWeatherEntity }, + { 0x03, PacketTypesIn.SpawnLivingEntity }, + { 0x04, PacketTypesIn.SpawnPainting }, + { 0x05, PacketTypesIn.SpawnPlayer }, + { 0x06, PacketTypesIn.EntityAnimation }, + { 0x07, PacketTypesIn.Statistics }, + { 0x08, PacketTypesIn.BlockBreakAnimation }, + { 0x09, PacketTypesIn.BlockEntityData }, + { 0x0A, PacketTypesIn.BlockAction }, + { 0x0B, PacketTypesIn.BlockChange }, + { 0x0C, PacketTypesIn.BossBar }, + { 0x0D, PacketTypesIn.ServerDifficulty }, + { 0x0E, PacketTypesIn.TabComplete }, + { 0x0F, PacketTypesIn.ChatMessage }, + { 0x10, PacketTypesIn.MultiBlockChange }, + { 0x11, PacketTypesIn.WindowConfirmation }, + { 0x12, PacketTypesIn.CloseWindow }, + { 0x13, PacketTypesIn.OpenWindow }, + { 0x14, PacketTypesIn.WindowItems }, + { 0x15, PacketTypesIn.WindowProperty }, + { 0x16, PacketTypesIn.SetSlot }, + { 0x17, PacketTypesIn.SetCooldown }, + { 0x18, PacketTypesIn.PluginMessage }, + { 0x19, PacketTypesIn.NamedSoundEffect }, + { 0x1A, PacketTypesIn.Disconnect }, + { 0x1B, PacketTypesIn.EntityStatus }, + { 0x1C, PacketTypesIn.Explosion }, + { 0x1D, PacketTypesIn.UnloadChunk }, + { 0x1E, PacketTypesIn.ChangeGameState }, + { 0x1F, PacketTypesIn.KeepAlive }, + { 0x20, PacketTypesIn.ChunkData }, + { 0x21, PacketTypesIn.Effect }, + { 0x22, PacketTypesIn.Particle }, + { 0x23, PacketTypesIn.JoinGame }, + { 0x24, PacketTypesIn.MapData }, + { 0x25, PacketTypesIn.EntityPosition }, + { 0x26, PacketTypesIn.EntityPositionAndRotation }, + { 0x27, PacketTypesIn.EntityRotation }, + { 0x28, PacketTypesIn.EntityMovement }, + { 0x29, PacketTypesIn.VehicleMove }, + { 0x2A, PacketTypesIn.OpenSignEditor }, + { 0x2B, PacketTypesIn.PlayerAbilities }, + { 0x2C, PacketTypesIn.CombatEvent }, + { 0x2D, PacketTypesIn.PlayerInfo }, + { 0x2E, PacketTypesIn.PlayerPositionAndLook }, + { 0x2F, PacketTypesIn.UseBed }, + { 0x30, PacketTypesIn.DestroyEntities }, + { 0x31, PacketTypesIn.RemoveEntityEffect }, + { 0x32, PacketTypesIn.ResourcePackSend }, + { 0x33, PacketTypesIn.Respawn }, + { 0x34, PacketTypesIn.EntityHeadLook }, + { 0x35, PacketTypesIn.WorldBorder }, + { 0x36, PacketTypesIn.Camera }, + { 0x37, PacketTypesIn.HeldItemChange }, + { 0x38, PacketTypesIn.DisplayScoreboard }, + { 0x39, PacketTypesIn.EntityMetadata }, + { 0x3A, PacketTypesIn.AttachEntity }, + { 0x3B, PacketTypesIn.EntityVelocity }, + { 0x3C, PacketTypesIn.EntityEquipment }, + { 0x3D, PacketTypesIn.SetExperience }, + { 0x3E, PacketTypesIn.UpdateHealth }, + { 0x3F, PacketTypesIn.ScoreboardObjective }, + { 0x40, PacketTypesIn.SetPassengers }, + { 0x41, PacketTypesIn.Teams }, + { 0x42, PacketTypesIn.UpdateScore }, + { 0x43, PacketTypesIn.SpawnPosition }, + { 0x44, PacketTypesIn.TimeUpdate }, + { 0x45, PacketTypesIn.Title }, + { 0x46, PacketTypesIn.UpdateSign }, + { 0x47, PacketTypesIn.SoundEffect }, + { 0x48, PacketTypesIn.PlayerListHeaderAndFooter }, + { 0x49, PacketTypesIn.CollectItem }, + { 0x4A, PacketTypesIn.EntityTeleport }, + { 0x4B, PacketTypesIn.EntityProperties }, + { 0x4C, PacketTypesIn.EntityEffect }, + }; + + private readonly Dictionary typeOut = new() + { + { 0x00, PacketTypesOut.TeleportConfirm }, + { 0x01, PacketTypesOut.TabComplete }, + { 0x02, PacketTypesOut.ChatMessage }, + { 0x03, PacketTypesOut.ClientStatus }, + { 0x04, PacketTypesOut.ClientSettings }, + { 0x05, PacketTypesOut.WindowConfirmation }, + { 0x06, PacketTypesOut.EnchantItem }, + { 0x07, PacketTypesOut.ClickWindow }, + { 0x08, PacketTypesOut.CloseWindow }, + { 0x09, PacketTypesOut.PluginMessage }, + { 0x0A, PacketTypesOut.InteractEntity }, + { 0x0B, PacketTypesOut.KeepAlive }, + { 0x0C, PacketTypesOut.PlayerPosition }, + { 0x0D, PacketTypesOut.PlayerPositionAndRotation }, + { 0x0E, PacketTypesOut.PlayerRotation }, + { 0x0F, PacketTypesOut.PlayerMovement }, + { 0x10, PacketTypesOut.VehicleMove }, + { 0x11, PacketTypesOut.SteerBoat }, + { 0x12, PacketTypesOut.PlayerAbilities }, + { 0x13, PacketTypesOut.PlayerDigging }, + { 0x14, PacketTypesOut.EntityAction }, + { 0x15, PacketTypesOut.SteerVehicle }, + { 0x16, PacketTypesOut.ResourcePackStatus }, + { 0x17, PacketTypesOut.HeldItemChange }, + { 0x18, PacketTypesOut.CreativeInventoryAction }, + { 0x19, PacketTypesOut.UpdateSign }, + { 0x1A, PacketTypesOut.Animation }, + { 0x1B, PacketTypesOut.Spectate }, + { 0x1C, PacketTypesOut.PlayerBlockPlacement }, + { 0x1D, PacketTypesOut.UseItem }, + }; + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => new(); + protected override Dictionary GetConfigurationListOut() => new(); + } +} diff --git a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette261.cs b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette261.cs index ead41d2c..0f58c527 100644 --- a/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette261.cs +++ b/MinecraftClient/Protocol/Handlers/PacketPalettes/PacketPalette261.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; namespace MinecraftClient.Protocol.Handlers.PacketPalettes; public class PacketPalette261 : PacketTypePalette - { - private readonly Dictionary typeIn = new() +{ + private readonly Dictionary typeIn = new() { { 0x00, PacketTypesIn.Bundle }, // Bundle delimiter { 0x01, PacketTypesIn.SpawnEntity }, // Add Entity @@ -149,7 +149,7 @@ public class PacketPalette261 : PacketTypePalette { 0x8C, PacketTypesIn.ShowDialog } // Show Dialog }; - private readonly Dictionary typeOut = new() + private readonly Dictionary typeOut = new() { { 0x00, PacketTypesOut.TeleportConfirm }, // Accept Teleportation { 0x01, PacketTypesOut.Attack }, // Attack (new in 26.1) @@ -221,7 +221,7 @@ public class PacketPalette261 : PacketTypePalette { 0x44, PacketTypesOut.CustomClickAction } // Custom Click Action }; - private readonly Dictionary configurationTypesIn = new() + private readonly Dictionary configurationTypesIn = new() { { 0x00, ConfigurationPacketTypesIn.CookieRequest }, { 0x01, ConfigurationPacketTypesIn.PluginMessage }, @@ -245,7 +245,7 @@ public class PacketPalette261 : PacketTypePalette { 0x13, ConfigurationPacketTypesIn.CodeOfConduct } }; - private readonly Dictionary configurationTypesOut = new() + private readonly Dictionary configurationTypesOut = new() { { 0x00, ConfigurationPacketTypesOut.ClientInformation }, { 0x01, ConfigurationPacketTypesOut.CookieResponse }, @@ -258,9 +258,9 @@ public class PacketPalette261 : PacketTypePalette { 0x08, ConfigurationPacketTypesOut.CustomClickAction }, { 0x09, ConfigurationPacketTypesOut.AcceptCodeOfConduct } }; - - protected override Dictionary GetListIn() => typeIn; - protected override Dictionary GetListOut() => typeOut; - protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; - protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; - } + + protected override Dictionary GetListIn() => typeIn; + protected override Dictionary GetListOut() => typeOut; + protected override Dictionary GetConfigurationListIn() => configurationTypesIn!; + protected override Dictionary GetConfigurationListOut() => configurationTypesOut!; +} diff --git a/MinecraftClient/Protocol/Handlers/PacketType18Handler.cs b/MinecraftClient/Protocol/Handlers/PacketType18Handler.cs index 21515782..05443e37 100644 --- a/MinecraftClient/Protocol/Handlers/PacketType18Handler.cs +++ b/MinecraftClient/Protocol/Handlers/PacketType18Handler.cs @@ -48,14 +48,15 @@ namespace MinecraftClient.Protocol.Handlers { PacketTypePalette p = protocol switch { - > Protocol18Handler.MC_26_1_Version => throw new NotImplementedException(Translations + > Protocol18Handler.MC_26_2_Version => throw new NotImplementedException(Translations .exception_palette_packet), - >= Protocol18Handler.MC_26_1_Version => new PacketPalette261(), + >= Protocol18Handler.MC_26_1_Version => new PacketPalette261(), // 26.1 - 26.2 (packet IDs unchanged in 26.2) <= Protocol18Handler.MC_1_21_11_Version and > Protocol18Handler.MC_1_21_7_Version => new PacketPalette1219(), <= Protocol18Handler.MC_1_21_7_Version and > Protocol18Handler.MC_1_21_5_Version => new PacketPalette1216(), <= Protocol18Handler.MC_1_21_5_Version and > Protocol18Handler.MC_1_21_4_Version => new PacketPalette1215(), <= Protocol18Handler.MC_1_21_4_Version and > Protocol18Handler.MC_1_21_2_Version => new PacketPalette1214(), <= Protocol18Handler.MC_1_8_Version => new PacketPalette17(), + <= Protocol18Handler.MC_1_9_2_Version => new PacketPalette19(), <= Protocol18Handler.MC_1_11_2_Version => new PacketPalette110(), <= Protocol18Handler.MC_1_12_Version => new PacketPalette112(), <= Protocol18Handler.MC_1_12_2_Version => new PacketPalette1122(), diff --git a/MinecraftClient/Protocol/Handlers/PacketTypesIn.cs b/MinecraftClient/Protocol/Handlers/PacketTypesIn.cs index a36bc4ba..8aee524a 100644 --- a/MinecraftClient/Protocol/Handlers/PacketTypesIn.cs +++ b/MinecraftClient/Protocol/Handlers/PacketTypesIn.cs @@ -146,7 +146,7 @@ namespace MinecraftClient.Protocol.Handlers UpdateHealth, // UpdateLight, // UpdateScore, // - UpdateSign, // For 1.8 or below + UpdateSign, // For 1.8 or below, and 1.9-1.9.2 UpdateSimulationDistance, // UpdateViewDistance, // UpdateViewPosition, // diff --git a/MinecraftClient/Protocol/Handlers/Protocol16.cs b/MinecraftClient/Protocol/Handlers/Protocol16.cs index 6777200d..f7bd3d4a 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol16.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol16.cs @@ -132,6 +132,7 @@ namespace MinecraftClient.Protocol.Handlers byte[] keepalive = new byte[5] { 0, 0, 0, 0, 0 }; Receive(keepalive, 1, 4, SocketFlags.None); handler.OnServerKeepAlive(); + handler.SetCanSendMessage(true); Send(keepalive); break; case 0x01: ReadData(4); ReadNextString(); ReadData(5); break; case 0x02: ReadData(1); ReadNextString(); ReadNextString(); ReadData(4); break; @@ -208,7 +209,8 @@ namespace MinecraftClient.Protocol.Handlers case 0xC9: string name = ReadNextString(); bool online = ReadNextByte() != 0x00; ReadData(2); Guid FakeUUID = new(MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(name)).Take(16).ToArray()); - if (online) { handler.OnPlayerJoin(new PlayerInfo(name, FakeUUID)); } else { handler.OnPlayerLeave(FakeUUID); } + if (online) handler.OnPlayerJoin(new PlayerInfo(name, FakeUUID)); + else handler.OnPlayerLeave(FakeUUID); break; case 0xCA: if (protocolversion >= 72) { ReadData(9); } else ReadData(3); break; case 0xCB: @@ -264,6 +266,11 @@ namespace MinecraftClient.Protocol.Handlers throw new NotImplementedException(); } + public bool SendCustomClickAction(string id, Dictionary? payload) + { + return false; + } + public void Dispose() { try @@ -550,7 +557,7 @@ namespace MinecraftClient.Protocol.Handlers if (Settings.Config.Logging.DebugMessages) ConsoleIO.WriteLineFormatted("§8" + Translations.debug_crypto, acceptnewlines: true); - if (serverIDhash != "-") + if (serverIDhash != "-" && !string.IsNullOrWhiteSpace(sessionID)) { ConsoleIO.WriteLine(Translations.mcc_session); string serverHash = CryptoHandler.GetServerHash(serverIDhash, serverPublicKey, secretKey); @@ -816,6 +823,11 @@ namespace MinecraftClient.Protocol.Handlers return false; //MC 1.8-1.12.1 recipe book not supported } + public bool SendEditBook(Item currentBook, IReadOnlyList pages, string? title, string author, int selectedHotbarSlot) + { + return false; //MC 1.4.6-1.6.4 book editing is not supported + } + public bool SendCloseWindow(int windowId) { return false; //Currently not implemented @@ -944,7 +956,7 @@ namespace MinecraftClient.Protocol.Handlers { return false; //Currently not implemented } - + public bool SendRenameItem(string itemName) { return false; diff --git a/MinecraftClient/Protocol/Handlers/Protocol18.cs b/MinecraftClient/Protocol/Handlers/Protocol18.cs index 21d37c88..510a2e6d 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol18.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol18.cs @@ -10,6 +10,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading; using MinecraftClient.Crypto; +using MinecraftClient.Dialogs; using MinecraftClient.Inventory; using MinecraftClient.Inventory.ItemPalettes; using MinecraftClient.Logger; @@ -19,6 +20,7 @@ using MinecraftClient.Mapping.EntityPalettes; using MinecraftClient.Protocol.Handlers.Forge; using MinecraftClient.Protocol.Handlers.packet.s2c; using MinecraftClient.Protocol.Handlers.PacketPalettes; +using MinecraftClient.Protocol.Dialogs; using MinecraftClient.Protocol.Message; using MinecraftClient.Protocol.ProfileKey; using MinecraftClient.Protocol.Session; @@ -45,6 +47,7 @@ namespace MinecraftClient.Protocol.Handlers internal const int MC_1_8_Version = 47; internal const int MC_1_9_Version = 107; internal const int MC_1_9_1_Version = 108; + internal const int MC_1_9_2_Version = 109; internal const int MC_1_10_Version = 210; internal const int MC_1_11_Version = 315; internal const int MC_1_11_2_Version = 316; @@ -81,6 +84,7 @@ namespace MinecraftClient.Protocol.Handlers internal const int MC_1_21_9_Version = 773; internal const int MC_1_21_11_Version = 774; internal const int MC_26_1_Version = 775; + internal const int MC_26_2_Version = 776; private int compression_treshold = -1; private int autocomplete_transaction_id = 0; @@ -117,6 +121,7 @@ namespace MinecraftClient.Protocol.Handlers readonly PacketTypePalette packetPalette; readonly SocketWrapper socketWrapper; readonly DataTypes dataTypes; + readonly DialogNbtParser dialogNbtParser = new(); Tuple? netMain = null; // main thread Tuple? netReader = null; // reader thread readonly ILogger log; @@ -141,21 +146,21 @@ namespace MinecraftClient.Protocol.Handlers lastSeenMessagesCollector = protocolVersion >= MC_1_19_3_Version ? new(20) : new(5); chunkBatchStartTime = GetNanos(); - if (handler.GetTerrainEnabled() && protocolVersion > MC_26_1_Version) + if (handler.GetTerrainEnabled() && protocolVersion > MC_26_2_Version) { log.Error($"§c{Translations.extra_terrainandmovement_disabled}"); handler.SetTerrainEnabled(false); } if (handler.GetInventoryEnabled() && - protocolVersion is < MC_1_8_Version or > MC_26_1_Version) + protocolVersion is < MC_1_8_Version or > MC_26_2_Version) { log.Error($"§c{Translations.extra_inventory_disabled}"); handler.SetInventoryEnabled(false); } if (handler.GetEntityHandlingEnabled() && - protocolVersion is < MC_1_8_Version or > MC_26_1_Version) + protocolVersion is < MC_1_8_Version or > MC_26_2_Version) { log.Error($"§c{Translations.extra_entity_disabled}"); handler.SetEntityHandlingEnabled(false); @@ -164,8 +169,9 @@ namespace MinecraftClient.Protocol.Handlers Block.Palette = protocolVersion switch { // Block palette - > MC_26_1_Version when handler.GetTerrainEnabled() => + > MC_26_2_Version when handler.GetTerrainEnabled() => throw new NotImplementedException(Translations.exception_palette_block), + >= MC_26_2_Version => new Palette262(), >= MC_26_1_Version => new Palette261(), >= MC_1_21_9_Version => new Palette1219(), >= MC_1_21_6_Version => new Palette1216(), // 1.21.7/1.21.8 blocks unchanged, reuse 1216 @@ -189,8 +195,9 @@ namespace MinecraftClient.Protocol.Handlers entityPalette = protocolVersion switch { // Entity palette - > MC_26_1_Version when handler.GetEntityHandlingEnabled() => + > MC_26_2_Version when handler.GetEntityHandlingEnabled() => throw new NotImplementedException(Translations.exception_palette_entity), + >= MC_26_2_Version => new EntityPalette262(), >= MC_26_1_Version => new EntityPalette261(), >= MC_1_21_11_Version => new EntityPalette12111(), >= MC_1_21_9_Version => new EntityPalette1219(), @@ -211,6 +218,7 @@ namespace MinecraftClient.Protocol.Handlers >= MC_1_14_Version => new EntityPalette114(), >= MC_1_13_Version => new EntityPalette113(), >= MC_1_12_Version => new EntityPalette112(), + >= MC_1_11_Version => new EntityPalette112(), _ => new EntityPalette18() }; @@ -219,8 +227,9 @@ namespace MinecraftClient.Protocol.Handlers itemPalette = protocolVersion switch { // Item palette - > MC_26_1_Version when handler.GetInventoryEnabled() => + > MC_26_2_Version when handler.GetInventoryEnabled() => throw new NotImplementedException(Translations.exception_palette_item), + >= MC_26_2_Version => new ItemPalette262(), >= MC_26_1_Version => new ItemPalette261(), >= MC_1_21_11_Version => new ItemPalette12111(), >= MC_1_21_9_Version => new ItemPalette1219(), @@ -241,6 +250,9 @@ namespace MinecraftClient.Protocol.Handlers >= MC_1_16_2_Version => new ItemPalette1162(), >= MC_1_16_1_Version => new ItemPalette1161(), >= MC_1_15_Version => new ItemPalette115(), + >= MC_1_14_Version => new ItemPalette114(), + >= MC_1_13_2_Version => new ItemPalette1132(), + >= MC_1_13_Version => new ItemPalette113(), >= MC_1_12_Version => new ItemPalette112(), >= MC_1_11_Version => new ItemPalette111(), >= MC_1_10_Version => new ItemPalette110(), @@ -275,6 +287,7 @@ namespace MinecraftClient.Protocol.Handlers }, _ => ChatParser.ChatId2Type }; + ChatParser.ClearChatTypeDecorations(); } /// @@ -283,6 +296,7 @@ namespace MinecraftClient.Protocol.Handlers private void Updater(object? o) { var cancelToken = (CancellationToken)o!; + var exitReason = Translations.debug_packet_loop_reason_queue_completed; if (cancelToken.IsCancellationRequested) return; @@ -291,7 +305,10 @@ namespace MinecraftClient.Protocol.Handlers { Stopwatch stopWatch = Stopwatch.StartNew(); long nextUpdateDue = 0; - while (!packetQueue.IsAddingCompleted) + // Continue until the reader has finished and every queued packet has been handled. + // A server can close immediately after a Disconnect packet, completing the queue + // while that final packet is still waiting to be processed. + while (!packetQueue.IsCompleted) { cancelToken.ThrowIfCancellationRequested(); @@ -317,23 +334,29 @@ namespace MinecraftClient.Protocol.Handlers } catch (ObjectDisposedException) { + exitReason = nameof(ObjectDisposedException); } catch (OperationCanceledException) { + exitReason = nameof(OperationCanceledException); } catch (NullReferenceException) { + exitReason = nameof(NullReferenceException); } catch (SocketException) { + exitReason = nameof(SocketException); } catch (System.IO.IOException) { + exitReason = nameof(System.IO.IOException); } if (cancelToken.IsCancellationRequested) return; + LogNetworkLoopExit(nameof(Updater), exitReason); handler.OnConnectionLost(ChatBot.DisconnectReason.ConnectionLost, ""); } @@ -343,13 +366,17 @@ namespace MinecraftClient.Protocol.Handlers internal void PacketReader(object? o) { var cancelToken = (CancellationToken)o!; + var exitReason = Translations.debug_packet_loop_reason_socket_closed; while (socketWrapper.IsConnected() && !cancelToken.IsCancellationRequested) { try { while (socketWrapper.HasDataAvailable()) { - packetQueue.Add(ReadNextPacket(), cancelToken); + var packet = ReadNextPacket(); + if (packet.Item1 == -1) + continue; + packetQueue.Add(packet, cancelToken); if (cancelToken.IsCancellationRequested) break; @@ -357,31 +384,43 @@ namespace MinecraftClient.Protocol.Handlers } catch (OperationCanceledException) { + exitReason = nameof(OperationCanceledException); break; } catch (System.IO.IOException) { + exitReason = nameof(System.IO.IOException); break; } catch (SocketException) { + exitReason = nameof(SocketException); break; } catch (NullReferenceException) { + exitReason = nameof(NullReferenceException); break; } catch (System.IO.InvalidDataException) { + exitReason = nameof(System.IO.InvalidDataException); break; } if (cancelToken.IsCancellationRequested) + { + exitReason = Translations.debug_packet_loop_reason_cancelled; break; + } Thread.Sleep(10); } + if (cancelToken.IsCancellationRequested) + exitReason = Translations.debug_packet_loop_reason_cancelled; + + LogNetworkLoopExit(nameof(PacketReader), exitReason); packetQueue.CompleteAdding(); } @@ -393,22 +432,34 @@ namespace MinecraftClient.Protocol.Handlers internal Tuple> ReadNextPacket() { var size = dataTypes.ReadNextVarIntRAW(socketWrapper); //Packet size - Queue packetData = new(socketWrapper.ReadDataRAW(size)); //Packet contents + var rawBytes = socketWrapper.ReadDataRAW(size); + Queue packetData = new(rawBytes); //Packet contents + var compressed = false; + var sizeUncompressed = 0; //Handle packet decompression if (protocolVersion >= MC_1_8_Version && compression_treshold >= 0) { - var sizeUncompressed = dataTypes.ReadNextVarInt(packetData); + sizeUncompressed = dataTypes.ReadNextVarInt(packetData); if (sizeUncompressed != 0) // != 0 means compressed, let's decompress { var toDecompress = packetData.ToArray(); var uncompressed = ZlibUtils.Decompress(toDecompress, sizeUncompressed); packetData = new Queue(uncompressed); + compressed = true; } } + if (packetData.Count == 0) + { + var rawHex = rawBytes.Length > 0 ? BitConverter.ToString(rawBytes).Replace("-", " ") : "(empty)"; + log.Debug("Empty packet after decompress: size={0}, sizeUncompressed={1}, protocol={2}, state={3}, rawBytes=[{4}]", size, sizeUncompressed, protocolVersion, currentState, rawHex); + return new(-1, packetData); + } + var packetId = dataTypes.ReadNextVarInt(packetData); // Packet ID + LogIncomingPacket(packetId, packetData.Count, size, compressed, sizeUncompressed); if (handler.GetNetworkPacketCaptureEnabled()) handler.OnNetworkPacket(packetId, packetData.ToList(), currentState == CurrentState.Login, true); @@ -467,7 +518,19 @@ namespace MinecraftClient.Protocol.Handlers // https://wiki.vg/Protocol#Configuration case CurrentState.Configuration: - switch (packetPalette.GetIncomingConfigurationTypeById(packetId)) + if (!packetPalette.GetMappingInConfiguration().TryGetValue(packetId, out var configurationPacketType)) + { + if (packetPalette.GetMappingIn().ContainsKey(packetId)) + { + SetCurrentState(CurrentState.Play); + return HandlePlayPackets(packetId, packetData); + } + + throw new KeyNotFoundException("Configuration Packet ID of 0x" + packetId.ToString("X2") + + " doesn't exist!"); + } + + switch (configurationPacketType) { case ConfigurationPacketTypesIn.CookieRequest: var cookieName = dataTypes.ReadNextString(packetData); @@ -482,7 +545,7 @@ namespace MinecraftClient.Protocol.Handlers return false; case ConfigurationPacketTypesIn.FinishConfiguration: - currentState = CurrentState.Play; + SetCurrentState(CurrentState.Play); SendPacket(ConfigurationPacketTypesOut.FinishConfiguration, new List()); break; @@ -512,8 +575,8 @@ namespace MinecraftClient.Protocol.Handlers var isDimension = registryId == "minecraft:dimension_type"; var isAttribute = registryId == "minecraft:attribute"; var isEnchantment = registryId == "minecraft:enchantment"; + var isDialog = registryId == "minecraft:dialog"; - var availableChats = isChat ? new Dictionary() : null; var dimensionIdMap = isDimension ? new Dictionary() : null; var attributeIdMap = isAttribute ? new Dictionary() : null; var enchantmentIdMap = isEnchantment ? new Dictionary() : null; @@ -528,7 +591,7 @@ namespace MinecraftClient.Protocol.Handlers nbtData = dataTypes.ReadNextNbt(packetData); if (isChat) - availableChats!.Add(i, entryId); + ChatParser.ReadChatType(i, entryId, nbtData); else if (isDimension) { dimensionIdMap!.Add(i, entryId); @@ -544,11 +607,11 @@ namespace MinecraftClient.Protocol.Handlers } else if (isEnchantment) enchantmentIdMap!.Add(i, entryId); + else if (isDialog && nbtData is not null) + handler.OnDialogRegistryData(i, entryId, dialogNbtParser.Parse(nbtData)); } - if (isChat) - ChatParser.ReadChatType(availableChats!); - else if (isDimension) + if (isDimension) { World.SetDimensionIdMap(dimensionIdMap!); if (!handler.GetTerrainEnabled() || !World.HasAnyDimension()) @@ -564,7 +627,9 @@ namespace MinecraftClient.Protocol.Handlers case ConfigurationPacketTypesIn.RemoveResourcePack: if (dataTypes.ReadNextBool(packetData)) // Has UUID - dataTypes.ReadNextUUID(packetData); // UUID + ChatParser.RemoveResourcePackTranslations(dataTypes.ReadNextUUID(packetData).ToString("D")); // UUID + else + ChatParser.ClearResourcePackTranslations(); break; case ConfigurationPacketTypesIn.ResourcePack: @@ -611,17 +676,21 @@ namespace MinecraftClient.Protocol.Handlers } break; + case ConfigurationPacketTypesIn.CodeOfConduct: + dataTypes.ReadNextString(packetData); // Code of conduct text + SendPacket(ConfigurationPacketTypesOut.AcceptCodeOfConduct, new List()); + break; + case ConfigurationPacketTypesIn.ServerLinks: - var cfgLinksCount = dataTypes.ReadNextVarInt(packetData); - for (var i = 0; i < cfgLinksCount; i++) - { - var cfgIsBuiltIn = dataTypes.ReadNextBool(packetData); - if (cfgIsBuiltIn) - dataTypes.ReadNextVarInt(packetData); // Known type ID - else - dataTypes.ReadNextChat(packetData); // Component label - dataTypes.ReadNextString(packetData); // URL - } + handler.OnServerLinksUpdated(ReadServerLinks(packetData)); + break; + + case ConfigurationPacketTypesIn.ClearDialog: + handler.OnDialogCleared(); + break; + + case ConfigurationPacketTypesIn.ShowDialog: + HandleShowDialog(packetData, DialogPhase.Configuration); break; // Ignore other packets at this stage @@ -682,6 +751,15 @@ namespace MinecraftClient.Protocol.Handlers var url = dataTypes.ReadNextString(packetData); var hash = dataTypes.ReadNextString(packetData); + // Use the server-provided UUID when available, then fall back to the legacy SHA-1 hash, + // and finally the URL so pre-UUID resource packs can still be replaced or cleared locally. + string packIdentifier; + if (uuid != Guid.Empty) + packIdentifier = uuid.ToString("D"); + else if (hash.Length == 40) + packIdentifier = hash; + else + packIdentifier = url; if (protocolVersion >= MC_1_17_Version) { @@ -719,6 +797,8 @@ namespace MinecraftClient.Protocol.Handlers SendPacket(PacketTypesOut.ResourcePackStatus, acceptedResourcePackData); // Accepted SendPacket(PacketTypesOut.ResourcePackStatus, loadedResourcePackData); // Successfully loaded } + + ChatParser.LoadResourcePackTranslations(packIdentifier, url, hash); } private bool HandlePlayPackets(int packetId, Queue packetData) @@ -736,7 +816,7 @@ namespace MinecraftClient.Protocol.Handlers case PacketTypesIn.JoinGame: // Temporary fix - log.Debug("Receive JoinGame"); + log.PacketDebug("Receive JoinGame"); receiveDeclareCommands = receivePlayerInfo = false; @@ -807,7 +887,7 @@ namespace MinecraftClient.Protocol.Handlers packetData); // Dimension Type: NBT Tag Compound break; default: - dataTypes.ReadNextString(packetData); + dimensionTypeName = dataTypes.ReadNextString(packetData); break; } @@ -929,7 +1009,7 @@ namespace MinecraftClient.Protocol.Handlers case PacketTypesIn.DeclareCommands: if (protocolVersion >= MC_1_19_Version) { - log.Debug("Receive DeclareCommands"); + log.PacketDebug("Receive DeclareCommands"); DeclareCommands.Read(dataTypes, packetData, protocolVersion); receiveDeclareCommands = true; if (receivePlayerInfo) @@ -1150,7 +1230,8 @@ namespace MinecraftClient.Protocol.Handlers // Network Target // net.minecraft.network.message.MessageType.Serialized#write - var chatTypeId = dataTypes.ReadNextVarInt(packetData); + var chatTypeId = ChatParser.ReadChatTypeHolder( + dataTypes, packetData, protocolVersion, out var directChatTypeDecoration); var chatName = dataTypes.ReadNextChat(packetData); var targetName = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextChat(packetData) @@ -1199,7 +1280,10 @@ namespace MinecraftClient.Protocol.Handlers } ChatMessage chat = new(message, false, chatTypeId, senderUuid, unsignedChatContent, - senderDisplayName, senderTeamName, timestamp, messageSignature, verifyResult); + senderDisplayName, senderTeamName, timestamp, messageSignature, verifyResult) + { + chatTypeDecoration = directChatTypeDecoration + }; lock (MessageSigningLock) Acknowledge(chat); handler.OnTextReceived(chat); @@ -1225,7 +1309,7 @@ namespace MinecraftClient.Protocol.Handlers chunkBatchStartTime = GetNanos(); break; case PacketTypesIn.StartConfiguration: - currentState = CurrentState.Configuration; + SetCurrentState(CurrentState.Configuration); SendAcknowledgeConfiguration(); break; case PacketTypesIn.HideMessage: @@ -1263,14 +1347,17 @@ namespace MinecraftClient.Protocol.Handlers break; case PacketTypesIn.ProfilelessChatMessage: var message_ = dataTypes.ReadNextChat(packetData); - var messageType_ = dataTypes.ReadNextVarInt(packetData); + var messageType_ = ChatParser.ReadChatTypeHolder( + dataTypes, packetData, protocolVersion, out var directProfilelessChatTypeDecoration); var messageName = dataTypes.ReadNextChat(packetData); var targetName_ = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextChat(packetData) : null; - ChatMessage profilelessChat = new(message_, targetName_ ?? messageName, false, messageType_, + ChatMessage profilelessChat = new(message_, messageName, false, messageType_, Guid.Empty, true); profilelessChat.isSenderJson = false; + profilelessChat.teamName = targetName_; + profilelessChat.chatTypeDecoration = directProfilelessChatTypeDecoration; handler.OnTextReceived(profilelessChat); break; case PacketTypesIn.CombatEvent: @@ -1379,7 +1466,7 @@ namespace MinecraftClient.Protocol.Handlers dataTypes.ReadNextNbt(packetData); // Dimension Type: NBT Tag Compound break; default: - dataTypes.ReadNextString(packetData); + dimensionTypeNameRespawn = dataTypes.ReadNextString(packetData); break; } @@ -2034,12 +2121,9 @@ namespace MinecraftClient.Protocol.Handlers break; case PacketTypesIn.ChangeGameState: - if (protocolVersion >= MC_1_15_2_Version) - { - var reason = dataTypes.ReadNextByte(packetData); - var state = dataTypes.ReadNextFloat(packetData); - handler.OnGameEvent(reason, state); - } + var reason = dataTypes.ReadNextByte(packetData); + var state = dataTypes.ReadNextFloat(packetData); + handler.OnGameEvent(reason, state); break; case PacketTypesIn.PlayerInfo: @@ -2096,7 +2180,7 @@ namespace MinecraftClient.Protocol.Handlers if (playerUuid == handler.GetUserUuid()) { - log.Debug($"Receive ChatUuid = {chatUuid}"); + log.PacketDebug($"Receive ChatUuid = {chatUuid}"); this.chatUuid = chatUuid; } } @@ -2105,7 +2189,7 @@ namespace MinecraftClient.Protocol.Handlers player.ClearPublicKey(); if (playerUuid == handler.GetUserUuid()) - log.Debug("Receive ChatUuid = Empty"); + log.PacketDebug("Receive ChatUuid = Empty"); } if (playerUuid == handler.GetUserUuid()) @@ -2138,7 +2222,7 @@ namespace MinecraftClient.Protocol.Handlers // Consume all action-selected fields to keep entry boundaries aligned. if (protocolVersion >= MC_1_21_2_Version && (actionBitset & 1 << 6) > 0) // Actions bit 6: update list order - dataTypes.ReadNextVarInt(packetData); + player.TabListOrder = dataTypes.ReadNextVarInt(packetData); if (protocolVersion >= MC_1_21_4_Version && (actionBitset & 1 << 7) > 0) // Actions bit 7: update hat dataTypes.ReadNextBool(packetData); @@ -2190,7 +2274,7 @@ namespace MinecraftClient.Protocol.Handlers string? displayName = null; if (dataTypes.ReadNextBool(packetData)) // Has display name - displayName = dataTypes.ReadNextString(packetData); // Display name + displayName = ChatParser.ParseText(dataTypes.ReadNextString(packetData)); // Display name // 1.19 Additions long? keyExpiration = null; @@ -2231,7 +2315,7 @@ namespace MinecraftClient.Protocol.Handlers { var player = handler.GetPlayerInfo(uuid); if (player is not null) - player.DisplayName = dataTypes.ReadNextString(packetData); + player.DisplayName = ChatParser.ParseText(dataTypes.ReadNextString(packetData)); else dataTypes.SkipNextString(packetData); } @@ -2268,6 +2352,11 @@ namespace MinecraftClient.Protocol.Handlers } break; + case PacketTypesIn.PlayerListHeaderAndFooter: + handler.OnTabListHeaderAndFooter( + dataTypes.ReadNextChat(packetData), + dataTypes.ReadNextChat(packetData)); + break; case PacketTypesIn.TabComplete: var oldTransactionId = autocomplete_transaction_id; if (protocolVersion >= MC_1_13_Version) @@ -2296,8 +2385,13 @@ namespace MinecraftClient.Protocol.Handlers // Length is unneeded as the whole remaining packetData is the entire payload of the packet. if (protocolVersion < MC_1_8_Version) pForge.ReadNextVarShort(packetData); + if (IsOpenBookPluginChannel(channel)) + handler.OnBookOpen(ReadBookHand(new Queue(packetData))); handler.OnPluginChannelMessage(channel, packetData.ToArray()); return pForge.HandlePluginMessage(channel, packetData, ref currentDimension); + case PacketTypesIn.OpenBook: + handler.OnBookOpen(ReadBookHand(packetData)); + break; case PacketTypesIn.Disconnect: handler.OnConnectionLost(ChatBot.DisconnectReason.InGameKick, dataTypes.ReadNextChat(packetData)); @@ -2421,7 +2515,9 @@ namespace MinecraftClient.Protocol.Handlers break; case PacketTypesIn.RemoveResourcePack: if (dataTypes.ReadNextBool(packetData)) // Has UUID - dataTypes.ReadNextUUID(packetData); // UUID + ChatParser.RemoveResourcePackTranslations(dataTypes.ReadNextUUID(packetData).ToString("D")); // UUID + else + ChatParser.ClearResourcePackTranslations(); break; case PacketTypesIn.ResourcePackSend: HandleResourcePackPacket(packetData); @@ -2528,7 +2624,9 @@ namespace MinecraftClient.Protocol.Handlers if (Enum.IsDefined(typeof(Effects), effectId)) { var effect = (Effects)effectId; - var amplifier = dataTypes.ReadNextByte(packetData); + var amplifier = protocolVersion >= MC_1_20_6_Version + ? dataTypes.ReadNextVarInt(packetData) + : dataTypes.ReadNextByte(packetData); var duration = dataTypes.ReadNextVarInt(packetData); var flags = dataTypes.ReadNextByte(packetData); var hasFactorData = false; @@ -2737,7 +2835,7 @@ namespace MinecraftClient.Protocol.Handlers // Also make a palette for field? Will be a lot of work var healthField = protocolVersion switch { - > MC_26_1_Version => throw new NotImplementedException(Translations + > MC_26_2_Version => throw new NotImplementedException(Translations .exception_palette_healthfield), // 1.17 and above >= MC_1_17_Version => 9, @@ -2857,12 +2955,21 @@ namespace MinecraftClient.Protocol.Handlers if (protocolVersion >= MC_1_21_2_Version) { - // 1.21.2+: removed strength, block records, and player motion floats; - // added optional knockback (doubles) and single particle explosionLocation = new(dataTypes.ReadNextDouble(packetData), dataTypes.ReadNextDouble(packetData), dataTypes.ReadNextDouble(packetData)); - explosionStrength = 0; - explosionBlockCount = 0; + + if (protocolVersion >= MC_1_21_9_Version) + { + // 1.21.9+: added radius (float), blockCount (int), and blockParticles (WeightedList) + explosionStrength = dataTypes.ReadNextFloat(packetData); // Radius + explosionBlockCount = dataTypes.ReadNextInt(packetData); // Block count + } + else + { + // 1.21.2–1.21.8: no strength/block-count fields + explosionStrength = 0; + explosionBlockCount = 0; + } if (dataTypes.ReadNextBool(packetData)) // Has player knockback { @@ -2880,6 +2987,20 @@ namespace MinecraftClient.Protocol.Handlers if (dataTypes.ReadNextBool(packetData)) dataTypes.ReadNextFloat(packetData); // Fixed range } + + if (protocolVersion >= MC_1_21_9_Version) + { + // 1.21.9+: WeightedList blockParticles + // Each entry: particle + float scaling + float speed + VarInt weight + var blockParticleCount = dataTypes.ReadNextVarInt(packetData); + for (var i = 0; i < blockParticleCount; i++) + { + dataTypes.ReadParticleData(packetData, itemPalette); // Particle type + dataTypes.ReadNextFloat(packetData); // Scaling + dataTypes.ReadNextFloat(packetData); // Speed + dataTypes.ReadNextVarInt(packetData); // Weight + } + } } else { @@ -2921,67 +3042,77 @@ namespace MinecraftClient.Protocol.Handlers handler.OnExplosion(explosionLocation, explosionStrength, explosionBlockCount); break; case PacketTypesIn.NamedSoundEffect: - { - string? soundName = dataTypes.ReadNextString(packetData); - int category = dataTypes.ReadNextVarInt(packetData); - double x = dataTypes.ReadNextInt(packetData) / 8.0D; - double y = dataTypes.ReadNextInt(packetData) / 8.0D; - double z = dataTypes.ReadNextInt(packetData) / 8.0D; - float volume = dataTypes.ReadNextFloat(packetData); - float pitch = dataTypes.ReadNextFloat(packetData); + { + string? soundName = dataTypes.ReadNextString(packetData); + int category = dataTypes.ReadNextVarInt(packetData); + double x = dataTypes.ReadNextInt(packetData) / 8.0D; + double y = dataTypes.ReadNextInt(packetData) / 8.0D; + double z = dataTypes.ReadNextInt(packetData) / 8.0D; + float volume = dataTypes.ReadNextFloat(packetData); + float pitch = protocolVersion < MC_1_10_Version + ? dataTypes.ReadNextByte(packetData) / 63.0f + : dataTypes.ReadNextFloat(packetData); - handler.OnSoundEffect(soundName, new Location(x, y, z), category, volume, pitch, null); - break; - } + handler.OnSoundEffect(soundName, new Location(x, y, z), category, volume, pitch, null); + break; + } case PacketTypesIn.SoundEffect: - { - string? soundName; - if (protocolVersion >= MC_1_19_Version) - soundName = ReadSoundEventHolderName(packetData); - else { - dataTypes.ReadNextVarInt(packetData); // Sound id - soundName = null; + string? soundName; + if (protocolVersion >= MC_1_19_Version) + soundName = ReadSoundEventHolderName(packetData); + else + { + dataTypes.ReadNextVarInt(packetData); // Sound id + soundName = null; + } + + if (protocolVersion < MC_1_19_Version && packetData.Count < 21) + break; + + int category = dataTypes.ReadNextVarInt(packetData); + double x = dataTypes.ReadNextInt(packetData) / 8.0D; + double y = dataTypes.ReadNextInt(packetData) / 8.0D; + double z = dataTypes.ReadNextInt(packetData) / 8.0D; + float volume = dataTypes.ReadNextFloat(packetData); + float pitch = protocolVersion < MC_1_10_Version + ? dataTypes.ReadNextByte(packetData) / 63.0f + : dataTypes.ReadNextFloat(packetData); + + if (protocolVersion >= MC_1_19_Version) + dataTypes.ReadNextLong(packetData); // Seed + + handler.OnSoundEffect(soundName, new Location(x, y, z), category, volume, pitch, null); + break; } - - int category = dataTypes.ReadNextVarInt(packetData); - double x = dataTypes.ReadNextInt(packetData) / 8.0D; - double y = dataTypes.ReadNextInt(packetData) / 8.0D; - double z = dataTypes.ReadNextInt(packetData) / 8.0D; - float volume = dataTypes.ReadNextFloat(packetData); - float pitch = dataTypes.ReadNextFloat(packetData); - - if (protocolVersion >= MC_1_19_Version) - dataTypes.ReadNextLong(packetData); // Seed - - handler.OnSoundEffect(soundName, new Location(x, y, z), category, volume, pitch, null); - break; - } case PacketTypesIn.EntitySoundEffect: - { - string? soundName; - if (protocolVersion >= MC_1_19_Version) - soundName = ReadSoundEventHolderName(packetData); - else { - dataTypes.ReadNextVarInt(packetData); // Sound id - soundName = null; + string? soundName; + if (protocolVersion >= MC_1_19_Version) + soundName = ReadSoundEventHolderName(packetData); + else + { + dataTypes.ReadNextVarInt(packetData); // Sound id + soundName = null; + } + + int category = dataTypes.ReadNextVarInt(packetData); + int entityId = dataTypes.ReadNextVarInt(packetData); + float volume = dataTypes.ReadNextFloat(packetData); + float pitch = dataTypes.ReadNextFloat(packetData); + + if (protocolVersion >= MC_1_19_Version) + dataTypes.ReadNextLong(packetData); // Seed + + handler.OnSoundEffect(soundName, null, category, volume, pitch, entityId); + break; } - - int category = dataTypes.ReadNextVarInt(packetData); - int entityId = dataTypes.ReadNextVarInt(packetData); - float volume = dataTypes.ReadNextFloat(packetData); - float pitch = dataTypes.ReadNextFloat(packetData); - - if (protocolVersion >= MC_1_19_Version) - dataTypes.ReadNextLong(packetData); // Seed - - handler.OnSoundEffect(soundName, null, category, volume, pitch, entityId); - break; - } case PacketTypesIn.HeldItemChange: case PacketTypesIn.SetHeldSlot: - handler.OnHeldItemChange(dataTypes.ReadNextByte(packetData)); // Slot + var heldSlot = protocolVersion >= MC_1_21_4_Version + ? dataTypes.ReadNextVarInt(packetData) + : dataTypes.ReadNextByte(packetData); + handler.OnHeldItemChange((byte)heldSlot); break; case PacketTypesIn.ScoreboardObjective: var objectiveName = dataTypes.ReadNextString(packetData); @@ -2999,7 +3130,18 @@ namespace MinecraftClient.Protocol.Handlers if (protocolVersion >= MC_1_20_4_Version) { if (dataTypes.ReadNextBool(packetData)) // Has Number Format + { numberFormat = dataTypes.ReadNextVarInt(packetData); // Number Format + switch (numberFormat) + { + case 1: // styled + dataTypes.ReadNextNbt(packetData); // Styling compound tag + break; + case 2: // fixed + dataTypes.ReadNextChat(packetData); // Content text component + break; + } + } } } @@ -3020,11 +3162,21 @@ namespace MinecraftClient.Protocol.Handlers objectiveValue2 = dataTypes.ReadNextVarInt(packetData); // Value if (dataTypes.ReadNextBool(packetData)) // Has Display Name - objectiveDisplayName3 = - ChatParser.ParseText(dataTypes.ReadNextString(packetData)); // Has Display Name + objectiveDisplayName3 = dataTypes.ReadNextChat(packetData); if (dataTypes.ReadNextBool(packetData)) // Has Number Format + { numberFormat2 = dataTypes.ReadNextVarInt(packetData); // Number Format + switch (numberFormat2) + { + case 1: // styled + dataTypes.ReadNextNbt(packetData); // Styling compound tag + break; + case 2: // fixed + dataTypes.ReadNextChat(packetData); // Content text component + break; + } + } } else { @@ -3045,12 +3197,27 @@ namespace MinecraftClient.Protocol.Handlers case PacketTypesIn.Teams: // Wire format per version: // All versions: name (string), method (byte) - // method 0/2: displayName (component), options (byte), + // 1.8/1.8.9 method 0/2: + // displayName (string), prefix (string), suffix (string), + // options (byte), nameTagVisibility, color (byte) + // 1.9-1.12.2 method 0/2: + // displayName (string), prefix (string), suffix (string), + // options (byte), nameTagVisibility, collisionRule, + // color (byte) + // 1.13-1.21.4 method 0/2: + // displayName (component), options (byte), // nameTagVisibility, collisionRule, color (VarInt), // prefix (component), suffix (component) + // 1.21.5-26.1 method 0/2: + // displayName (component), options (byte), + // nameTagVisibility (VarInt), collisionRule (VarInt), + // color (VarInt), prefix (component), suffix (component) + // 26.2+ method 0/2: + // displayName (component), prefix (component), + // suffix (component), nameTagVisibility (VarInt), + // collisionRule (VarInt), color (Optional), + // options (byte) // method 0/3/4: players list (VarInt count + strings) - // 1.21.9+ (protocol 773): nameTagVisibility and collisionRule are - // VarInt-encoded enum IDs instead of UTF strings. var teamName = dataTypes.ReadNextString(packetData); var teamMethod = dataTypes.ReadNextByte(packetData); @@ -3064,12 +3231,25 @@ namespace MinecraftClient.Protocol.Handlers if (teamMethod is 0 or 2) { - teamDisplayName = dataTypes.ReadNextChat(packetData); - teamFriendlyFlags = dataTypes.ReadNextByte(packetData); - - // nameTagVisibility - if (protocolVersion >= MC_1_21_9_Version) + if (protocolVersion < MC_1_13_Version) { + teamDisplayName = dataTypes.ReadNextString(packetData); + teamPrefix = dataTypes.ReadNextString(packetData); + teamSuffix = dataTypes.ReadNextString(packetData); + teamFriendlyFlags = dataTypes.ReadNextByte(packetData); + teamNameTagVisibility = dataTypes.ReadNextString(packetData); + + if (protocolVersion >= MC_1_9_Version) + teamCollisionRule = dataTypes.ReadNextString(packetData); + + teamColor = unchecked((sbyte)dataTypes.ReadNextByte(packetData)); + } + else if (protocolVersion >= MC_26_2_Version) + { + teamDisplayName = dataTypes.ReadNextChat(packetData); + teamPrefix = dataTypes.ReadNextChat(packetData); + teamSuffix = dataTypes.ReadNextChat(packetData); + // STREAM_CODEC: 0=always, 1=never, 2=hideForOtherTeams, 3=hideForOwnTeam teamNameTagVisibility = dataTypes.ReadNextVarInt(packetData) switch { @@ -3079,15 +3259,7 @@ namespace MinecraftClient.Protocol.Handlers 3 => "hideForOwnTeam", _ => "always" }; - } - else - { - teamNameTagVisibility = dataTypes.ReadNextString(packetData); - } - // collisionRule - if (protocolVersion >= MC_1_21_9_Version) - { // STREAM_CODEC: 0=always, 1=never, 2=pushOtherTeams, 3=pushOwnTeam teamCollisionRule = dataTypes.ReadNextVarInt(packetData) switch { @@ -3097,15 +3269,59 @@ namespace MinecraftClient.Protocol.Handlers 3 => "pushOwnTeam", _ => "always" }; + + // Optional: bool + VarInt id (ids match legacy color ordinals 0-15) + teamColor = dataTypes.ReadNextBool(packetData) + ? dataTypes.ReadNextVarInt(packetData) + : -1; + + teamFriendlyFlags = dataTypes.ReadNextByte(packetData); } else { - teamCollisionRule = dataTypes.ReadNextString(packetData); - } + teamDisplayName = dataTypes.ReadNextChat(packetData); + teamFriendlyFlags = dataTypes.ReadNextByte(packetData); - teamColor = dataTypes.ReadNextVarInt(packetData); - teamPrefix = dataTypes.ReadNextChat(packetData); - teamSuffix = dataTypes.ReadNextChat(packetData); + // nameTagVisibility + if (protocolVersion >= MC_1_21_5_Version) + { + // STREAM_CODEC: 0=always, 1=never, 2=hideForOtherTeams, 3=hideForOwnTeam + teamNameTagVisibility = dataTypes.ReadNextVarInt(packetData) switch + { + 0 => "always", + 1 => "never", + 2 => "hideForOtherTeams", + 3 => "hideForOwnTeam", + _ => "always" + }; + } + else + { + teamNameTagVisibility = dataTypes.ReadNextString(packetData); + } + + // collisionRule + if (protocolVersion >= MC_1_21_5_Version) + { + // STREAM_CODEC: 0=always, 1=never, 2=pushOtherTeams, 3=pushOwnTeam + teamCollisionRule = dataTypes.ReadNextVarInt(packetData) switch + { + 0 => "always", + 1 => "never", + 2 => "pushOtherTeams", + 3 => "pushOwnTeam", + _ => "always" + }; + } + else + { + teamCollisionRule = dataTypes.ReadNextString(packetData); + } + + teamColor = dataTypes.ReadNextVarInt(packetData); + teamPrefix = dataTypes.ReadNextChat(packetData); + teamSuffix = dataTypes.ReadNextChat(packetData); + } } var teamPlayers = new List(); @@ -3212,16 +3428,15 @@ namespace MinecraftClient.Protocol.Handlers break; case PacketTypesIn.ServerLinks: - var linksCount = dataTypes.ReadNextVarInt(packetData); - for (var i = 0; i < linksCount; i++) - { - var isBuiltIn = dataTypes.ReadNextBool(packetData); - if (isBuiltIn) - dataTypes.ReadNextVarInt(packetData); // Known type ID - else - dataTypes.ReadNextChat(packetData); // Component label - dataTypes.ReadNextString(packetData); // URL - } + handler.OnServerLinksUpdated(ReadServerLinks(packetData)); + break; + + case PacketTypesIn.ClearDialog: + handler.OnDialogCleared(); + break; + + case PacketTypesIn.ShowDialog: + HandleShowDialog(packetData, DialogPhase.Play); break; // 1.21.2+ new packets @@ -3827,9 +4042,9 @@ namespace MinecraftClient.Protocol.Handlers private bool SkipRecipeBookSettings(Queue packetData) { - // MC 1.13 uses 4 booleans for the crafting/smelting recipe book states. - // MC 1.14+ expands this to 8 booleans by adding blast furnace and smoker states. - int boolCount = protocolVersion >= MC_1_14_Version ? 8 : 4; + // MC 1.13-1.16.1 uses 4 booleans for the crafting/smelting recipe book states. + // MC 1.16.2+ expands this to 8 booleans through RecipeBookSettings. + int boolCount = protocolVersion >= MC_1_16_2_Version ? 8 : 4; if (packetData.Count < boolCount) return false; @@ -3875,20 +4090,19 @@ namespace MinecraftClient.Protocol.Handlers { try { - if (netMain is not null) + netMain?.Item2.Cancel(); + } + finally + { + try { - netMain.Item2.Cancel(); + netReader?.Item2.Cancel(); } - - if (netReader is not null) + finally { - netReader.Item2.Cancel(); socketWrapper.Disconnect(); } } - catch - { - } } /// @@ -3898,7 +4112,7 @@ namespace MinecraftClient.Protocol.Handlers /// packet Data private void SendPacket(PacketTypesOut packet, IEnumerable packetData) { - SendPacket(packetPalette.GetOutgoingIdByType(packet), packetData); + SendPacket(packetPalette.GetOutgoingIdByType(packet), packetData, packet.ToString()); } private void ProcessChunkBlockEntityData(int chunkX, int chunkZ, Queue packetData) @@ -3909,6 +4123,21 @@ namespace MinecraftClient.Protocol.Handlers int blockEntityCount = dataTypes.ReadNextVarInt(packetData); for (int i = 0; i < blockEntityCount; i++) { + if (protocolVersion < MC_1_18_1_Version) + { + Dictionary? blockEntityNbt = dataTypes.ReadNextNbt(packetData); + if (blockEntityNbt.TryGetValue("x", out var nbtX) + && blockEntityNbt.TryGetValue("y", out var nbtY) + && blockEntityNbt.TryGetValue("z", out var nbtZ)) + { + handler.OnBlockEntityData( + new Location(Convert.ToInt32(nbtX), Convert.ToInt32(nbtY), Convert.ToInt32(nbtZ)), + blockEntityNbt); + } + + continue; + } + int packedXZ = dataTypes.ReadNextByte(packetData); int y = dataTypes.ReadNextShort(packetData); dataTypes.ReadNextVarInt(packetData); // Block entity type registry id @@ -3926,7 +4155,62 @@ namespace MinecraftClient.Protocol.Handlers /// packet Data private void SendPacket(ConfigurationPacketTypesOut packet, IEnumerable packetData) { - SendPacket(packetPalette.GetOutgoingIdByTypeConfiguration(packet), packetData); + SendPacket(packetPalette.GetOutgoingIdByTypeConfiguration(packet), packetData, packet.ToString()); + } + + private void HandleShowDialog(Queue packetData, DialogPhase phase) + { + if (phase == DialogPhase.Play) + { + var holderId = dataTypes.ReadNextVarInt(packetData); + if (holderId != 0) + { + handler.OnDialogRegistryReferenceShown(holderId - 1, phase); + return; + } + } + + var dialog = dialogNbtParser.Parse(dataTypes.ReadNextNbt(packetData)); + handler.OnDialogShown(dialog, phase); + } + + private IReadOnlyList ReadServerLinks(Queue packetData) + { + var linksCount = dataTypes.ReadNextVarInt(packetData); + List links = new(linksCount); + + for (var i = 0; i < linksCount; i++) + { + string label; + var isBuiltIn = dataTypes.ReadNextBool(packetData); + if (isBuiltIn) + label = GetKnownServerLinkLabel(dataTypes.ReadNextVarInt(packetData)); + else + label = dataTypes.ReadNextChat(packetData); + + var url = dataTypes.ReadNextString(packetData); + links.Add(new DialogServerLink(label, url)); + } + + return links; + } + + private static string GetKnownServerLinkLabel(int id) + { + return id switch + { + 0 => Translations.dialog_server_link_report_bug, + 1 => Translations.dialog_server_link_community_guidelines, + 2 => Translations.dialog_server_link_support, + 3 => Translations.dialog_server_link_status, + 4 => Translations.dialog_server_link_feedback, + 5 => Translations.dialog_server_link_community, + 6 => Translations.dialog_server_link_website, + 7 => Translations.dialog_server_link_forums, + 8 => Translations.dialog_server_link_news, + 9 => Translations.dialog_server_link_announcements, + _ => id.ToString(CultureInfo.InvariantCulture) + }; } /// @@ -3934,9 +4218,10 @@ namespace MinecraftClient.Protocol.Handlers /// /// packet ID /// packet Data - private void SendPacket(int packetId, IEnumerable packetData) + private void SendPacket(int packetId, IEnumerable packetData, string? packetType = null) { byte[] payload = packetData as byte[] ?? packetData.ToArray(); + LogOutgoingPacket(packetId, payload.Length, packetType); if (handler.GetNetworkPacketCaptureEnabled()) { @@ -3974,6 +4259,122 @@ namespace MinecraftClient.Protocol.Handlers socketWrapper.SendDataRAW(fullPacket); } + private void SetCurrentState(CurrentState newState) + { + if (currentState == newState) + return; + + var previousState = currentState; + currentState = newState; + + if (!log.DebugEnabled) + return; + + log.PacketDebug(string.Format(Translations.debug_packet_state_change, previousState, newState)); + } + + private static bool IsPacketExcluded(string packetType) + { + var exclusions = Settings.Config.Logging.PacketDebugExclusions; + return exclusions.Count > 0 && exclusions.Contains(packetType, StringComparer.OrdinalIgnoreCase); + } + + private void LogIncomingPacket(int packetId, int payloadLength, int frameLength, bool compressed, int uncompressedLength) + { + if (!log.DebugEnabled) + return; + + var packetType = ResolveIncomingPacketType(packetId); + if (IsPacketExcluded(packetType)) + return; + + var compressionInfo = compression_treshold < 0 + ? Translations.debug_packet_compression_disabled + : compressed + ? string.Format(Translations.debug_packet_compression_compressed, uncompressedLength) + : Translations.debug_packet_compression_uncompressed; + + log.PacketDebug(string.Format(Translations.debug_packet_incoming, + currentState, + packetId, + packetType, + payloadLength, + frameLength, + compressionInfo)); + } + + private void LogOutgoingPacket(int packetId, int payloadLength, string? packetType) + { + if (!log.DebugEnabled) + return; + + var resolvedType = packetType ?? ResolveOutgoingPacketType(packetId); + if (IsPacketExcluded(resolvedType)) + return; + + log.PacketDebug(string.Format(Translations.debug_packet_outgoing, + currentState, + packetId, + resolvedType, + payloadLength, + compression_treshold)); + } + + private void LogNetworkLoopExit(string loopName, string reason) + { + if (!log.DebugEnabled) + return; + + log.PacketDebug(string.Format(Translations.debug_packet_loop_exit, + loopName, + reason, + currentState, + socketWrapper.IsConnected())); + } + + private string ResolveIncomingPacketType(int packetId) + { + return currentState switch + { + CurrentState.Login => packetId switch + { + 0x00 => "Disconnect", + 0x01 => "EncryptionRequest", + 0x02 => "LoginSuccess", + 0x03 => "SetCompression", + 0x04 => "LoginPluginRequest", + 0x05 => "CookieRequest", + _ => string.Format(Translations.debug_packet_unknown_type, packetId) + }, + CurrentState.Configuration when packetPalette.GetMappingInConfiguration().TryGetValue(packetId, out var configurationPacket) => + configurationPacket.ToString(), + CurrentState.Play when packetPalette.GetMappingIn().TryGetValue(packetId, out var playPacket) => + playPacket.ToString(), + _ => string.Format(Translations.debug_packet_unknown_type, packetId) + }; + } + + private string ResolveOutgoingPacketType(int packetId) + { + return currentState switch + { + CurrentState.Login => packetId switch + { + 0x00 => "LoginStart", + 0x01 => "EncryptionResponse", + 0x02 => "LoginPluginResponse", + 0x03 => "LoginAcknowledged", + 0x04 => "CookieResponse", + _ => string.Format(Translations.debug_packet_unknown_type, packetId) + }, + CurrentState.Configuration when packetPalette.GetMappingOutConfiguration().TryGetValue(packetId, out var configurationPacket) => + configurationPacket.ToString(), + CurrentState.Play when packetPalette.GetMappingOut().TryGetValue(packetId, out var playPacket) => + playPacket.ToString(), + _ => string.Format(Translations.debug_packet_unknown_type, packetId) + }; + } + /// /// Do the Minecraft login. /// @@ -3983,7 +4384,7 @@ namespace MinecraftClient.Protocol.Handlers int nextState = isTransfer && protocolVersion >= MC_1_20_6_Version ? 3 : 2; if (nextState == 3) - log.Debug("Using transfer handshake intent for transferred login."); + log.PacketDebug("Using transfer handshake intent for transferred login."); // 1. Send the handshake packet SendPacket(0x00, dataTypes.ConcatBytes( @@ -3997,7 +4398,8 @@ namespace MinecraftClient.Protocol.Handlers dataTypes.GetUShort((ushort)handler.GetServerPort()), // Next State - DataTypes.GetVarInt(nextState)) // 2 is Login, 3 is Transfer + DataTypes.GetVarInt(nextState)), // 2 is Login, 3 is Transfer + "Handshake" ); // 2. Send the Login Start packet @@ -4052,7 +4454,7 @@ namespace MinecraftClient.Protocol.Handlers break; } - SendPacket(0x00, fullLoginPacket); + SendPacket(0x00, fullLoginPacket, "LoginStart"); // 3. Encryption Request - 9. Login Acknowledged while (true) @@ -4089,12 +4491,16 @@ namespace MinecraftClient.Protocol.Handlers case 0x02: { log.Info($"§8{Translations.mcc_server_offline}"); - currentState = protocolVersion < MC_1_20_2_Version + SetCurrentState(protocolVersion < MC_1_20_2_Version ? CurrentState.Play - : CurrentState.Configuration; + : CurrentState.Configuration); if (protocolVersion >= MC_1_20_2_Version) - SendPacket(0x03, new List()); + { + // Hypixel and other 1.20.2+ servers stay in configuration until ClientInformation is sent. + SendPacket(0x03, new List(), "LoginAcknowledged"); + SendConfiguredClientSettings(); + } if (!pForge.CompleteForgeHandshake()) { @@ -4122,9 +4528,9 @@ namespace MinecraftClient.Protocol.Handlers var RSAService = CryptoHandler.DecodeRSAPublicKey(serverPublicKey)!; var secretKey = CryptoHandler.ClientAESPrivateKey ?? CryptoHandler.GenerateAESPrivateKey(); - log.Debug($"§8{Translations.debug_crypto}"); + log.PacketDebug($"§8{Translations.debug_crypto}"); - if (serverIDhash != "-") + if (serverIDhash != "-" && !string.IsNullOrWhiteSpace(sessionID)) { log.Info(Translations.mcc_session); @@ -4237,12 +4643,16 @@ namespace MinecraftClient.Protocol.Handlers if (protocolVersion >= MC_1_20_6_Version && protocolVersion < MC_1_21_2_Version) dataTypes.ReadNextBool(packetData); - currentState = protocolVersion < MC_1_20_2_Version + SetCurrentState(protocolVersion < MC_1_20_2_Version ? CurrentState.Play - : CurrentState.Configuration; + : CurrentState.Configuration); if (protocolVersion >= MC_1_20_2_Version) - SendPacket(0x03, new List()); + { + // Hypixel and other 1.20.2+ servers stay in configuration until ClientInformation is sent. + SendPacket(0x03, new List(), "LoginAcknowledged"); + SendConfiguredClientSettings(); + } handler.OnLoginSuccess(uuidReceived, userName, playerProperty); @@ -4612,7 +5022,7 @@ namespace MinecraftClient.Protocol.Handlers command = Regex.Replace(command, @"\s+", " "); command = Regex.Replace(command, @"\s$", string.Empty); - log.Debug($"chat command = {command}"); + log.PacketDebug($"chat command = {command}"); if (protocolVersion >= MC_1_20_6_Version && !isOnlineMode) { @@ -4640,7 +5050,7 @@ namespace MinecraftClient.Protocol.Handlers else { needSigned = []; - log.Debug("DeclareCommands tree unavailable, sending command without signed arguments."); + log.PacketDebug("DeclareCommands tree unavailable, sending command without signed arguments."); } } @@ -4723,6 +5133,49 @@ namespace MinecraftClient.Protocol.Handlers } } + public bool SendCustomClickAction(string id, Dictionary? payload) + { + if (protocolVersion < MC_1_21_6_Version) + return false; + + try + { + List fields = new(); + fields.AddRange(dataTypes.GetString(id.Contains(':', StringComparison.Ordinal) ? id : "minecraft:" + id)); + + var tagBytes = dataTypes.GetNbtTag(payload); + if (tagBytes.Length > 65536) + return false; + + fields.AddRange(DataTypes.GetVarInt(tagBytes.Length)); + fields.AddRange(tagBytes); + + switch (currentState) + { + case CurrentState.Configuration: + SendPacket(ConfigurationPacketTypesOut.CustomClickAction, fields); + return true; + case CurrentState.Play: + SendPacket(PacketTypesOut.CustomClickAction, fields); + return true; + default: + return false; + } + } + catch (SocketException) + { + return false; + } + catch (System.IO.IOException) + { + return false; + } + catch (ObjectDisposedException) + { + return false; + } + } + /// /// Send a chat message to the server /// @@ -4948,7 +5401,13 @@ namespace MinecraftClient.Protocol.Handlers if (protocolVersion >= MC_1_21_2_Version) fields.AddRange(DataTypes.GetVarInt(0)); // 1.21.2+ Particle status: 0=All, 1=Decreased, 2=Minimal - SendPacket(PacketTypesOut.ClientSettings, fields); + + if (currentState == CurrentState.Configuration) + SendPacket(ConfigurationPacketTypesOut.ClientInformation, fields); + else + SendPacket(PacketTypesOut.ClientSettings, fields); + + return true; } catch (SocketException) { @@ -4965,6 +5424,22 @@ namespace MinecraftClient.Protocol.Handlers return false; } + private bool SendConfiguredClientSettings() + { + if (!Config.MCSettings.Enabled) + return true; + + // Keep the configuration-phase send separate so modern servers receive ClientInformation, not play-era ClientSettings. + return SendClientSettings( + Config.MCSettings.Locale, + Config.MCSettings.RenderDistance, + (byte)Config.MCSettings.Difficulty, + (byte)Config.MCSettings.ChatMode, + Config.MCSettings.ChatColors, + Config.MCSettings.Skin.GetByte(), + (byte)Config.MCSettings.MainHand); + } + /// /// Send a location update to the server @@ -5192,6 +5667,18 @@ namespace MinecraftClient.Protocol.Handlers } } + private bool IsOpenBookPluginChannel(string channel) + { + return protocolVersion < MC_1_13_Version + ? string.Equals(channel, "MC|BOpen", StringComparison.Ordinal) + : string.Equals(channel, "minecraft:book_open", StringComparison.Ordinal); + } + + private int ReadBookHand(Queue packetData) + { + return packetData.Count > 0 ? dataTypes.ReadNextVarInt(packetData) : (int)BookHand.Main; + } + /// /// Send a Login Plugin Response packet (0x02) /// @@ -5204,7 +5691,8 @@ namespace MinecraftClient.Protocol.Handlers try { SendPacket(0x02, - dataTypes.ConcatBytes(DataTypes.GetVarInt(messageId), dataTypes.GetBool(understood), data)); + dataTypes.ConcatBytes(DataTypes.GetVarInt(messageId), dataTypes.GetBool(understood), data), + "LoginPluginResponse"); return true; } catch (SocketException) @@ -5233,6 +5721,13 @@ namespace MinecraftClient.Protocol.Handlers { List fields = new(); fields.AddRange(DataTypes.GetVarInt(EntityID)); + + if (protocolVersion >= MC_26_1_Version && type == (int)InteractType.Attack) + { + SendPacket(PacketTypesOut.Attack, fields); + return true; + } + fields.AddRange(DataTypes.GetVarInt(type)); // Is player Sneaking (Only 1.16 and above) @@ -5415,10 +5910,9 @@ namespace MinecraftClient.Protocol.Handlers playerInventory.Items.TryGetValue(slotWindowIds[currentSlot], out var item); packet.AddRange(dataTypes.GetItemSlot(item, itemPalette)); - packet.Add(0); // cursorX - packet.Add(0); // cursorY - packet.Add(0); // cursorZ + AddLegacyBlockPlacementCursor(packet, cursorX, cursorY, cursorZ); + SendPacket(PacketTypesOut.PlayerBlockPlacement, packet); return true; case < MC_1_14_Version: packet.AddRange(dataTypes.GetLocation(location)); @@ -5432,9 +5926,14 @@ namespace MinecraftClient.Protocol.Handlers break; } - packet.AddRange(dataTypes.GetFloat(cursorX)); // cursorX - packet.AddRange(dataTypes.GetFloat(cursorY)); // cursorY - packet.AddRange(dataTypes.GetFloat(cursorZ)); // cursorZ + if (protocolVersion < MC_1_11_Version) + AddLegacyBlockPlacementCursor(packet, cursorX, cursorY, cursorZ); + else + { + packet.AddRange(dataTypes.GetFloat(cursorX)); // cursorX + packet.AddRange(dataTypes.GetFloat(cursorY)); // cursorY + packet.AddRange(dataTypes.GetFloat(cursorZ)); // cursorZ + } if (protocolVersion >= MC_1_14_Version) packet.Add(0); // insideBlock = false @@ -5473,6 +5972,18 @@ namespace MinecraftClient.Protocol.Handlers _ => (0.5f, 0.5f, 0.5f), }; + private static void AddLegacyBlockPlacementCursor(List packet, float cursorX, float cursorY, float cursorZ) + { + packet.Add(ToLegacyBlockPlacementCursor(cursorX)); + packet.Add(ToLegacyBlockPlacementCursor(cursorY)); + packet.Add(ToLegacyBlockPlacementCursor(cursorZ)); + } + + private static byte ToLegacyBlockPlacementCursor(float cursor) + { + return (byte)Math.Clamp((int)(cursor * 16.0f), 0, 15); + } + public bool SendHeldItemChange(short slot) { try @@ -5606,16 +6117,11 @@ namespace MinecraftClient.Protocol.Handlers switch (protocolVersion) { - // 1.18+ - case >= MC_1_18_1_Version: + // 1.17.1+ + case >= MC_1_17_1_Version: packet.AddRange(DataTypes.GetVarInt(stateId)); // State ID packet.AddRange(dataTypes.GetShort((short)slotId)); // Slot ID break; - // 1.17.1 - case MC_1_17_1_Version: - packet.AddRange(dataTypes.GetShort((short)slotId)); // Slot ID - packet.AddRange(DataTypes.GetVarInt(stateId)); // State ID - break; // Older default: packet.AddRange(dataTypes.GetShort((short)slotId)); // Slot ID @@ -5741,11 +6247,18 @@ namespace MinecraftClient.Protocol.Handlers { try { - var packet = new List + List packet = new(); + if (protocolVersion >= MC_1_20_6_Version) { - (byte)windowId, - (byte)buttonId - }; + packet.AddRange(DataTypes.GetVarInt(windowId)); + packet.AddRange(DataTypes.GetVarInt(buttonId)); + } + else + { + packet.Add((byte)windowId); + packet.Add((byte)buttonId); + } + SendPacket(PacketTypesOut.ClickWindowButton, packet); return true; } @@ -5794,6 +6307,80 @@ namespace MinecraftClient.Protocol.Handlers } } + public bool SendEditBook(Item currentBook, IReadOnlyList pages, string? title, string author, int selectedHotbarSlot) + { + try + { + if (protocolVersion < MC_1_8_Version) + return false; + + bool signing = title is not null; + IReadOnlyList normalizedPages = BookContentHelper.NormalizePages(pages); + + if (protocolVersion < MC_1_13_Version) + { + Item payload = signing + ? BookContentHelper.CreateWrittenPayload( + currentBook, + normalizedPages, + title ?? string.Empty, + author, + encodePagesAsJson: protocolVersion < MC_1_9_Version) + : BookContentHelper.CreateWritablePayload(currentBook, normalizedPages); + + byte[] payloadData = dataTypes.GetItemSlot(payload, itemPalette); + if (payloadData.Length > 32767) + return false; + + return SendPluginChannelPacket(signing ? "MC|BSign" : "MC|BEdit", payloadData); + } + + if (protocolVersion < MC_1_17_Version) + { + Item payload = signing + ? BookContentHelper.CreateWrittenPayload(currentBook, normalizedPages, title ?? string.Empty, author, encodePagesAsJson: false) + : BookContentHelper.CreateWritablePayload(currentBook, normalizedPages); + + List packet = new(); + packet.AddRange(dataTypes.GetItemSlot(payload, itemPalette)); + packet.AddRange(dataTypes.GetBool(signing)); + + if (protocolVersion >= MC_1_16_5_Version) + packet.AddRange(DataTypes.GetVarInt(selectedHotbarSlot)); + else if (protocolVersion >= MC_1_13_2_Version) + packet.AddRange(DataTypes.GetVarInt((int)BookHand.Main)); + + SendPacket(PacketTypesOut.EditBook, packet); + return true; + } + + List modernPacket = new(); + modernPacket.AddRange(DataTypes.GetVarInt(selectedHotbarSlot)); + modernPacket.AddRange(DataTypes.GetVarInt(normalizedPages.Count)); + foreach (string page in normalizedPages) + modernPacket.AddRange(dataTypes.GetString(page)); + + modernPacket.AddRange(dataTypes.GetBool(signing)); + if (signing) + modernPacket.AddRange(dataTypes.GetString(title ?? string.Empty)); + + SendPacket(PacketTypesOut.EditBook, modernPacket); + return true; + } + catch (SocketException) + { + return false; + } + catch (System.IO.IOException) + { + return false; + } + catch (ObjectDisposedException) + { + return false; + } + } + public bool SendAnimation(int animation, int playerId) { try @@ -6026,7 +6613,7 @@ namespace MinecraftClient.Protocol.Handlers packet.AddRange(DataTypes.GetVarInt(playerKeyPair.PublicKey.SignatureV2!.Length)); packet.AddRange(playerKeyPair.PublicKey.SignatureV2); - log.Debug( + log.PacketDebug( $"SendPlayerSession MessageUUID = {chatUuid.ToString()}, len(PublicKey) = {playerKeyPair.PublicKey.Key.Length}, len(SignatureV2) = {playerKeyPair.PublicKey.SignatureV2!.Length}"); SendPacket(PacketTypesOut.PlayerSession, packet); @@ -6087,7 +6674,7 @@ namespace MinecraftClient.Protocol.Handlers switch (currentState) { case CurrentState.Login: - SendPacket(0x04, packet); + SendPacket(0x04, packet, "CookieResponse"); break; case CurrentState.Configuration: diff --git a/MinecraftClient/Protocol/Handlers/Protocol18Forge.cs b/MinecraftClient/Protocol/Handlers/Protocol18Forge.cs index 7359d200..e940fc11 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol18Forge.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol18Forge.cs @@ -301,6 +301,8 @@ namespace MinecraftClient.Protocol.Handlers for (int i = 0; i < modCount; i++) mods.Add(dataTypes.ReadNextString(packetData)); + ChatParser.LoadForgeModTranslations(mods); + Dictionary channels = new(); int channelCount = dataTypes.ReadNextVarInt(packetData); for (int i = 0; i < channelCount; i++) @@ -375,7 +377,7 @@ namespace MinecraftClient.Protocol.Handlers string registryName = dataTypes.ReadNextString(packetData); ConsoleIO.WriteLineFormatted("§8" + string.Format(Translations.forge_fml2_registry, registryName)); } - + fmlResponsePacket.AddRange(DataTypes.GetVarInt(99)); fmlResponseReady = true; break; @@ -408,7 +410,7 @@ namespace MinecraftClient.Protocol.Handlers // [ Version ][ String ] // // We're ignoring this packet in MCC - + if (Settings.Config.Logging.DebugMessages) { ConsoleIO.WriteLineFormatted("§8" + "Received FML3 Server Mod Data List"); @@ -503,7 +505,7 @@ namespace MinecraftClient.Protocol.Handlers { return new ForgeInfo(FMLVersion.FML3); } - return new ForgeInfo(FMLVersion.FML2); + return new ForgeInfo(FMLVersion.FML2); } else throw new InvalidOperationException(Translations.error_forgeforce); } @@ -566,6 +568,6 @@ namespace MinecraftClient.Protocol.Handlers } } return false; - } + } } } diff --git a/MinecraftClient/Protocol/Handlers/SocketWrapper.cs b/MinecraftClient/Protocol/Handlers/SocketWrapper.cs index a4f451b1..7aaac71c 100644 --- a/MinecraftClient/Protocol/Handlers/SocketWrapper.cs +++ b/MinecraftClient/Protocol/Handlers/SocketWrapper.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Net.Sockets; using MinecraftClient.Crypto; @@ -38,7 +39,7 @@ namespace MinecraftClient.Protocol.Handlers /// TRUE if data is available to read public bool HasDataAvailable() { - return c.Client.Available > 0; + return c.Client.Available > 0 || c.Client.Poll(0, SelectMode.SelectRead); } /// @@ -61,10 +62,16 @@ namespace MinecraftClient.Protocol.Handlers int read = 0; while (read < offset) { + int bytesRead; if (encrypted) - read += s!.Read(buffer, start + read, offset - read); + bytesRead = s!.Read(buffer, start + read, offset - read); else - read += c.Client.Receive(buffer, start + read, offset - read, f); + bytesRead = c.Client.Receive(buffer, start + read, offset - read, f); + + if (bytesRead == 0) + throw new EndOfStreamException(); + + read += bytesRead; } } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/AttributeModifiersComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/AttributeModifiersComponent.cs index b458b786..4741eed0 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/AttributeModifiersComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/AttributeModifiersComponent.cs @@ -6,13 +6,13 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class AttributeModifiersComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class AttributeModifiersComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfAttributes { get; set; } public List Attributes { get; set; } = new(); public bool ShowInTooltip { get; set; } - + public override void Parse(Queue data) { NumberOfAttributes = DataTypes.ReadNextVarInt(data); @@ -27,13 +27,13 @@ public class AttributeModifiersComponent(DataTypes dataTypes, ItemPalette itemPa { var data = new List(); data.AddRange(DataTypes.GetVarInt(NumberOfAttributes)); - - if(Attributes.Count != NumberOfAttributes) + + if (Attributes.Count != NumberOfAttributes) throw new ArgumentNullException($"Can not serialize a AttributeModifiersComponent when the Attributes count != NumberOfAttributes!"); - + foreach (var attribute in Attributes) data.AddRange(attribute.Serialize()); - + data.AddRange(DataTypes.GetBool(ShowInTooltip)); return new Queue(data); } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BannerPatternsComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BannerPatternsComponent.cs index 497dd330..fb2a21a4 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BannerPatternsComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BannerPatternsComponent.cs @@ -5,12 +5,12 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class BannerPatternsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class BannerPatternsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfLayers { get; set; } public List Layers { get; set; } = []; - + public override void Parse(Queue data) { NumberOfLayers = DataTypes.ReadNextVarInt(data); @@ -44,17 +44,17 @@ public class BannerPatternsComponent(DataTypes dataTypes, ItemPalette itemPalett if (bannerLayer.PatternType == 0) { - if(string.IsNullOrEmpty(bannerLayer.AssetId) || string.IsNullOrEmpty(bannerLayer.TranslationKey)) + if (string.IsNullOrEmpty(bannerLayer.AssetId) || string.IsNullOrEmpty(bannerLayer.TranslationKey)) throw new Exception("Can't serialize BannerPatternsComponent because AssetId or TranslationKey is null/empty!"); - + data.AddRange(DataTypes.GetString(bannerLayer.AssetId)); data.AddRange(DataTypes.GetString(bannerLayer.TranslationKey)); } - + data.AddRange(DataTypes.GetVarInt(bannerLayer.DyeColor)); } } - + return new Queue(data); } } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BaseColorComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BaseColorComponent.cs index 417c658c..615328d2 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BaseColorComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BaseColorComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class BaseColorComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class BaseColorComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int DyeColor { get; set; } - + public override void Parse(Queue data) { DyeColor = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BeesComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BeesComponent.cs index cbe0424b..575bfda3 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BeesComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BeesComponent.cs @@ -6,12 +6,12 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class BeesComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class BeesComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfBees { get; set; } public List Bees { get; set; } = []; - + public override void Parse(Queue data) { NumberOfBees = DataTypes.ReadNextVarInt(data); @@ -30,7 +30,7 @@ public class BeesComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComp { if (NumberOfBees != Bees.Count) throw new Exception("Can't serialize the BeeComponent because NumberOfBees and Bees.Count differ!"); - + foreach (var bee in Bees) { data.AddRange(DataTypes.GetNbt(bee.EntityDataNbt)); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BlockStateComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BlockStateComponent.cs index c36bb10c..8bbeeb2b 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BlockStateComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BlockStateComponent.cs @@ -4,15 +4,15 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class BlockStateComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class BlockStateComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public List<(string, string)> Properties { get; set; } = []; - + public override void Parse(Queue data) { var count = DataTypes.ReadNextVarInt(data); - for(var i = 0; i < count; i++) + for (var i = 0; i < count; i++) Properties.Add((DataTypes.ReadNextString(data), DataTypes.ReadNextString(data))); } @@ -25,7 +25,7 @@ public class BlockStateComponent(DataTypes dataTypes, ItemPalette itemPalette, S data.AddRange(DataTypes.GetString(key)); data.AddRange(DataTypes.GetString(value)); } - + return new Queue(data); } } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BundleContentsComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BundleContentsComponent.cs index 753a621b..76e11195 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BundleContentsComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/BundleContentsComponent.cs @@ -5,7 +5,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class BundleContentsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class BundleContentsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public List Items { get; set; } = []; diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CanBreakComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CanBreakComponent.cs index d561788b..aeff50f2 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CanBreakComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CanBreakComponent.cs @@ -7,13 +7,13 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class CanBreakComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class CanBreakComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfPredicates { get; set; } public List BlockPredicates { get; set; } = new(); public bool ShowInTooltip { get; set; } - + public override void Parse(Queue data) { NumberOfPredicates = DataTypes.ReadNextVarInt(data); @@ -28,13 +28,13 @@ public class CanBreakComponent(DataTypes dataTypes, ItemPalette itemPalette, Sub { var data = new List(); data.AddRange(DataTypes.GetVarInt(NumberOfPredicates)); - - if(NumberOfPredicates > 0 && BlockPredicates.Count == 0) + + if (NumberOfPredicates > 0 && BlockPredicates.Count == 0) throw new ArgumentNullException($"Can not serialize a CanBreakComponent when the BlockPredicates is empty but NumberOfPredicates is > 0!"); - + foreach (var blockPredicate in BlockPredicates) data.AddRange(blockPredicate.Serialize()); - + data.AddRange(DataTypes.GetBool(ShowInTooltip)); return new Queue(data); } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CanPlaceOnComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CanPlaceOnComponent.cs index 2a15d58d..0134563e 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CanPlaceOnComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CanPlaceOnComponent.cs @@ -7,13 +7,13 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class CanPlaceOnComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class CanPlaceOnComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfPredicates { get; set; } public List BlockPredicates { get; set; } = new(); public bool ShowInTooltip { get; set; } - + public override void Parse(Queue data) { NumberOfPredicates = DataTypes.ReadNextVarInt(data); @@ -28,13 +28,13 @@ public class CanPlaceOnComponent(DataTypes dataTypes, ItemPalette itemPalette, S { var data = new List(); data.AddRange(DataTypes.GetVarInt(NumberOfPredicates)); - - if(NumberOfPredicates > 0 && BlockPredicates.Count == 0) + + if (NumberOfPredicates > 0 && BlockPredicates.Count == 0) throw new ArgumentNullException($"Can not serialize a CanPlaceOnComponent when the BlockPredicates is empty but NumberOfPredicates is > 0!"); - + foreach (var blockPredicate in BlockPredicates) data.AddRange(blockPredicate.Serialize()); - + data.AddRange(DataTypes.GetBool(ShowInTooltip)); return new Queue(data); } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ChargedProjectilesComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ChargedProjectilesComponent.cs index 55e597a3..5a5259ad 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ChargedProjectilesComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ChargedProjectilesComponent.cs @@ -5,7 +5,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class ChargedProjectilesComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class ChargedProjectilesComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public List Items { get; set; } = []; diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ContainerComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ContainerComponent.cs index f198952a..5264f43d 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ContainerComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ContainerComponent.cs @@ -5,11 +5,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class ContainerComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class ContainerComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public List Items { get; set; } = []; - + public override void Parse(Queue data) { var count = DataTypes.ReadNextVarInt(data); @@ -23,7 +23,7 @@ public class ContainerComponent(DataTypes dataTypes, ItemPalette itemPalette, Su data.AddRange(DataTypes.GetVarInt(Items.Count)); foreach (var item in Items) data.AddRange(DataTypes.GetItemSlot(item, ItemPalette)); - + return new Queue(data); } } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ContainerLootComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ContainerLootComponent.cs index a1ebfa6c..8b68ecd7 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ContainerLootComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ContainerLootComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class ContainerLootComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class ContainerLootComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public Dictionary? Nbt { get; set; } - + public override void Parse(Queue data) { Nbt = DataTypes.ReadNextNbt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CreativeSlotLockComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CreativeSlotLockComponent.cs index 06989ec9..6d188397 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CreativeSlotLockComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CreativeSlotLockComponent.cs @@ -4,5 +4,5 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class CreativeSlotLockComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class CreativeSlotLockComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : EmptyComponent(dataTypes, itemPalette, subComponentRegistry); \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomDataComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomDataComponent.cs index 4abf1782..9509d539 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomDataComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomDataComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class CustomDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class CustomDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public Dictionary? Nbt { get; set; } = new(); - + public override void Parse(Queue data) { Nbt = DataTypes.ReadNextNbt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomModelDataComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomModelDataComponent.cs index 2aa9ee0b..20df0870 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomModelDataComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomModelDataComponent.cs @@ -10,7 +10,7 @@ public class CustomModelDataComponent(DataTypes dataTypes, ItemPalette itemPalet public List Flags { get; set; } = []; public List Strings { get; set; } = []; public List Colors { get; set; } = []; - + public override void Parse(Queue data) { Floats = ReadList(data, static (dataTypes, componentData) => dataTypes.ReadNextFloat(componentData)); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomNameComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomNameComponent.cs index 140b60d5..1104b598 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomNameComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/CustomNameComponent.cs @@ -5,12 +5,12 @@ using MinecraftClient.Protocol.Message; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class CustomNameComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class CustomNameComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public string CustomName { get; set; } = string.Empty; public Dictionary? CustomNameNbt { get; set; } - + public override void Parse(Queue data) { CustomNameNbt = DataTypes.ReadNextNbt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DamageComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DamageComponent.cs index 3c377177..c105ee0c 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DamageComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DamageComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class DamageComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class DamageComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int Damage { get; set; } - + public override void Parse(Queue data) { Damage = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DebugStickStateComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DebugStickStateComponent.cs index 3d2eba6d..a39a352d 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DebugStickStateComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DebugStickStateComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class DebugStickStateComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class DebugStickStateComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public Dictionary? Nbt { get; set; } - + public override void Parse(Queue data) { Nbt = DataTypes.ReadNextNbt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DyeColorComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DyeColorComponent.cs index deb3f584..d887ecee 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DyeColorComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/DyeColorComponent.cs @@ -4,12 +4,12 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class DyeColorComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class DyeColorComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int Color { get; set; } public bool ShowInTooltip { get; set; } - + public override void Parse(Queue data) { Color = DataTypes.ReadNextInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EnchantmentGlintOverrideComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EnchantmentGlintOverrideComponent.cs index af8032fc..6528ffb5 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EnchantmentGlintOverrideComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EnchantmentGlintOverrideComponent.cs @@ -8,7 +8,7 @@ public class EnchantmentGlintOverrideComponent(DataTypes dataTypes, ItemPalette : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public bool HasGlint { get; set; } - + public override void Parse(Queue data) { HasGlint = DataTypes.ReadNextBool(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EnchantmentsComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EnchantmentsComponent.cs index 579777be..8322201f 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EnchantmentsComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EnchantmentsComponent.cs @@ -5,7 +5,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class EnchantmentsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class EnchantmentsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfEnchantments { get; set; } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EntityDataComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EntityDataComponent.cs index a40b7bc6..ba31c9f9 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EntityDataComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/EntityDataComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class EntityDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class EntityDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public Dictionary? Nbt { get; set; } - + public override void Parse(Queue data) { Nbt = DataTypes.ReadNextNbt(data); @@ -22,8 +22,10 @@ public class EntityDataComponent(DataTypes dataTypes, ItemPalette itemPalette, S } } -public class BucketEntityDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) - : EntityDataComponent(dataTypes, itemPalette, subComponentRegistry) {} +public class BucketEntityDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : EntityDataComponent(dataTypes, itemPalette, subComponentRegistry) +{ } -public class BlockEntityDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) - : EntityDataComponent(dataTypes, itemPalette, subComponentRegistry) {} \ No newline at end of file +public class BlockEntityDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : EntityDataComponent(dataTypes, itemPalette, subComponentRegistry) +{ } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireResistantComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireResistantComponent.cs index e0eed96c..351eb684 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireResistantComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireResistantComponent.cs @@ -3,5 +3,5 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class FireResistantComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class FireResistantComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : EmptyComponent(dataTypes, itemPalette, subComponentRegistry); \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireworkExplosionComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireworkExplosionComponent.cs index b85a0d93..a515f3bb 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireworkExplosionComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireworkExplosionComponent.cs @@ -8,11 +8,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class FireworkExplosionComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class FireworkExplosionComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public FireworkExplosionSubComponent? FireworkExplosionSubComponent { get; set; } - + public override void Parse(Queue data) { FireworkExplosionSubComponent = (FireworkExplosionSubComponent)SubComponentRegistry.ParseSubComponent(SubComponents.FireworkExplosion, data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireworksComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireworksComponent.cs index 46fdfacd..db73c815 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireworksComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FireworksComponent.cs @@ -9,14 +9,14 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class FireworksComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class FireworksComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int FlightDuration { get; set; } public int NumberOfExplosions { get; set; } public List Explosions { get; set; } = []; - + public override void Parse(Queue data) { FlightDuration = DataTypes.ReadNextVarInt(data); @@ -24,7 +24,7 @@ public class FireworksComponent(DataTypes dataTypes, ItemPalette itemPalette, Su if (NumberOfExplosions > 0) { - for(var i = 0; i < NumberOfExplosions; i++) + for (var i = 0; i < NumberOfExplosions; i++) Explosions.Add( (FireworkExplosionSubComponent)SubComponentRegistry.ParseSubComponent(SubComponents.FireworkExplosion, data)); @@ -40,8 +40,8 @@ public class FireworksComponent(DataTypes dataTypes, ItemPalette itemPalette, Su { if (NumberOfExplosions != Explosions.Count) throw new Exception("Can't serialize FireworksComponent because NumberOfExplosions and the lenght of Explosions differ!"); - - foreach(var explosion in Explosions) + + foreach (var explosion in Explosions) data.AddRange(explosion.Serialize().ToList()); } return new Queue(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FoodComponentComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FoodComponent.cs similarity index 87% rename from MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FoodComponentComponent.cs rename to MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FoodComponent.cs index 276de892..f8679473 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FoodComponentComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/FoodComponent.cs @@ -7,7 +7,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class FoodComponentComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class FoodComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int Nutrition { get; set; } @@ -15,7 +15,7 @@ public class FoodComponentComponent(DataTypes dataTypes, ItemPalette itemPalette public bool CanAlwaysEat { get; set; } public float SecondsToEat { get; set; } public List Effects { get; set; } = new(); - + public override void Parse(Queue data) { Nutrition = DataTypes.ReadNextVarInt(data); @@ -23,8 +23,8 @@ public class FoodComponentComponent(DataTypes dataTypes, ItemPalette itemPalette CanAlwaysEat = DataTypes.ReadNextBool(data); SecondsToEat = DataTypes.ReadNextFloat(data); var numberOfEffects = DataTypes.ReadNextVarInt(data); - - for(var i = 0; i < numberOfEffects; i++) + + for (var i = 0; i < numberOfEffects; i++) Effects.Add((EffectSubComponent)SubComponentRegistry.ParseSubComponent(SubComponents.Effect, data)); } @@ -37,9 +37,9 @@ public class FoodComponentComponent(DataTypes dataTypes, ItemPalette itemPalette data.AddRange(DataTypes.GetFloat(SecondsToEat)); data.AddRange(DataTypes.GetVarInt(Effects.Count)); - foreach(var effect in Effects) + foreach (var effect in Effects) data.AddRange(effect.Serialize()); - + return new Queue(data); } } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/HideAdditionalTooltipComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/HideAdditionalTooltipComponent.cs index 13a7197a..9f659b9f 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/HideAdditionalTooltipComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/HideAdditionalTooltipComponent.cs @@ -3,5 +3,5 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class HideAdditionalTooltipComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class HideAdditionalTooltipComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : EmptyComponent(dataTypes, itemPalette, subComponentRegistry); \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/HideTooltipComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/HideTooltipComponent.cs index b1d0783e..77cdc7fa 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/HideTooltipComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/HideTooltipComponent.cs @@ -3,5 +3,5 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class HideTooltipComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class HideTooltipComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : EmptyComponent(dataTypes, itemPalette, subComponentRegistry); \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/InstrumentComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/InstrumentComponent.cs index 8c0895eb..87692b70 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/InstrumentComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/InstrumentComponent.cs @@ -4,7 +4,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class InstrumentComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class InstrumentComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { // holder ID: 0 = inline instrument data, N>0 = registry reference (id = N-1) @@ -20,7 +20,7 @@ public class InstrumentComponent(DataTypes dataTypes, ItemPalette itemPalette, S public int UseDuration { get; set; } public float Range { get; set; } - + public override void Parse(Queue data) { InstrumentHolderId = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/IntangibleProjectileComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/IntangibleProjectileComponent.cs index 5006fad0..b6d24a5e 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/IntangibleProjectileComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/IntangibleProjectileComponent.cs @@ -4,20 +4,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class IntangibleProjectileComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) - : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +public class IntangibleProjectileComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : EmptyComponent(dataTypes, itemPalette, subComponentRegistry) { - public Dictionary? Nbt { get; set; } = new(); - - public override void Parse(Queue data) - { - Nbt = DataTypes.ReadNextNbt(data); - } - - public override Queue Serialize() - { - var data = new List(); - data.AddRange(DataTypes.GetNbt(Nbt)); - return new Queue(data); - } -} \ No newline at end of file +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ItemNameComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ItemNameComponent.cs index 3aa26373..4b42c779 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ItemNameComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ItemNameComponent.cs @@ -5,12 +5,12 @@ using MinecraftClient.Protocol.Message; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class ItemNameComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class ItemNameComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public string ItemName { get; set; } = string.Empty; public Dictionary? ItemNameNbt { get; set; } - + public override void Parse(Queue data) { ItemNameNbt = DataTypes.ReadNextNbt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LockComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LockComponent.cs index cc7b924c..85d050e2 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LockComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LockComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class LockComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class LockComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public Dictionary? Nbt { get; set; } - + public override void Parse(Queue data) { Nbt = DataTypes.ReadNextNbt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LodestoneTrackerComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LodestoneTrackerComponent.cs index b1cdda3a..f3353755 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LodestoneTrackerComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LodestoneTrackerComponent.cs @@ -5,14 +5,14 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class LodestoneTrackerComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class LodestoneTrackerComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public bool HasGlobalPosition { get; set; } public string Dimension { get; set; } = null!; public Location Position { get; set; } public bool Tracked { get; set; } - + public override void Parse(Queue data) { HasGlobalPosition = DataTypes.ReadNextBool(data); @@ -22,7 +22,7 @@ public class LodestoneTrackerComponent(DataTypes dataTypes, ItemPalette itemPale Dimension = DataTypes.ReadNextString(data); Position = DataTypes.ReadNextLocation(data); } - + Tracked = DataTypes.ReadNextBool(data); } @@ -36,7 +36,7 @@ public class LodestoneTrackerComponent(DataTypes dataTypes, ItemPalette itemPale data.AddRange(DataTypes.GetString(Dimension)); data.AddRange(DataTypes.GetLocation(Position)); } - + data.AddRange(DataTypes.GetBool(Tracked)); return new Queue(data); } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LoreComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LoreComponent.cs index 2c5219f9..d8cb5161 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LoreComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/LoreComponent.cs @@ -5,19 +5,19 @@ using MinecraftClient.Protocol.Message; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class LoreNameComponent1206(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class LoreNameComponent1206(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfLines { get; set; } public List Lines { get; set; } = []; public List> LinesNbt { get; set; } = []; - + public override void Parse(Queue data) { NumberOfLines = DataTypes.ReadNextVarInt(data); - + if (NumberOfLines <= 0) return; - + for (var i = 0; i < NumberOfLines; i++) { var lineNbt = DataTypes.ReadNextNbt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapColorComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapColorComponent.cs index af5a6989..457e74b5 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapColorComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapColorComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class MapColorComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class MapColorComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int Id { get; set; } - + public override void Parse(Queue data) { Id = DataTypes.ReadNextInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapDecorationsComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapDecorationsComponent.cs index 4c38ec50..70b8b28d 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapDecorationsComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapDecorationsComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class MapDecorationsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class MapDecorationsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public Dictionary? Nbt { get; set; } = new(); - + public override void Parse(Queue data) { Nbt = DataTypes.ReadNextNbt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapIdComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapIdComponent.cs index 88312a23..712b721f 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapIdComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapIdComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class MapIdComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class MapIdComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int Id { get; set; } - + public override void Parse(Queue data) { Id = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapPostProcessingComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapPostProcessingComponent.cs index cda1ced4..c7d58700 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapPostProcessingComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MapPostProcessingComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class MapPostProcessingComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class MapPostProcessingComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int Type { get; set; } - + public override void Parse(Queue data) { Type = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MaxDamageComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MaxDamageComponent.cs index fd90e8bf..45e8545b 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MaxDamageComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MaxDamageComponent.cs @@ -8,7 +8,7 @@ public class MaxDamageComponent(DataTypes dataTypes, ItemPalette itemPalette, Su : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int MaxDamage { get; set; } - + public override void Parse(Queue data) { MaxDamage = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MaxStackSizeComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MaxStackSizeComponent.cs index 6bd20710..32da4c9f 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MaxStackSizeComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/MaxStackSizeComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class MaxStackSizeComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class MaxStackSizeComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int MaxStackSize { get; set; } - + public override void Parse(Queue data) { MaxStackSize = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/NoteBlockSoundComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/NoteBlockSoundComponent.cs index 985c7609..5d7c0792 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/NoteBlockSoundComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/NoteBlockSoundComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class NoteBlockSoundComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class NoteBlockSoundComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public string Identifier { get; set; } = null!; - + public override void Parse(Queue data) { Identifier = DataTypes.ReadNextString(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/OmniousBottleAmplifierComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/OminousBottleAmplifierComponent.cs similarity index 90% rename from MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/OmniousBottleAmplifierComponent.cs rename to MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/OminousBottleAmplifierComponent.cs index 6f688b79..ed92d953 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/OmniousBottleAmplifierComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/OminousBottleAmplifierComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class OmniousBottleAmplifierComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class OminousBottleAmplifierComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int Amplifier { get; set; } - + public override void Parse(Queue data) { Amplifier = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/PotDecorationsComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/PotDecorationsComponent.cs index e7bf200e..97b91827 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/PotDecorationsComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/PotDecorationsComponent.cs @@ -4,15 +4,15 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class PotDecorationsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class PotDecorationsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public List Items { get; set; } = []; - + public override void Parse(Queue data) { var count = DataTypes.ReadNextVarInt(data); - for(var i = 0; i < count; i++) + for (var i = 0; i < count; i++) Items.Add(DataTypes.ReadNextVarInt(data)); } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/PotionContentsComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/PotionContentsComponent.cs index ff76f5a7..b56e6897 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/PotionContentsComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/PotionContentsComponent.cs @@ -6,7 +6,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class PotionContentsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class PotionContentsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public bool HasPotionId { get; set; } @@ -14,7 +14,7 @@ public class PotionContentsComponent(DataTypes dataTypes, ItemPalette itemPalett public bool HasCustomColor { get; set; } public int CustomColor { get; set; } public List Effects { get; set; } = new(); - + public override void Parse(Queue data) { HasPotionId = DataTypes.ReadNextBool(data); @@ -44,7 +44,7 @@ public class PotionContentsComponent(DataTypes dataTypes, ItemPalette itemPalett data.AddRange(DataTypes.GetVarInt(Effects.Count)); foreach (var effect in Effects) data.AddRange(effect.Serialize()); - + return new Queue(data); } } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ProfileComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ProfileComponent.cs index d8540488..23cc92bf 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ProfileComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ProfileComponent.cs @@ -18,7 +18,7 @@ public class ProfileComponent(DataTypes dataTypes, ItemPalette itemPalette, SubC public string? CapeAssetId { get; set; } public string? ElytraAssetId { get; set; } public ProfileSkinModel? Model { get; set; } - + public override void Parse(Queue data) { ResetState(); @@ -112,12 +112,7 @@ public class ProfileComponent(DataTypes dataTypes, ItemPalette itemPalette, SubC data.AddRange(DataTypes.GetBool(HasName)); if (HasName) - { - if (string.IsNullOrEmpty(Name)) - throw new NullReferenceException("Can't serialize the ProfileComponent because the Name is null/empty!"); - - data.AddRange(DataTypes.GetString(Name)); - } + data.AddRange(DataTypes.GetString(Name ?? "")); data.AddRange(DataTypes.GetBool(HasUniqueId)); if (HasUniqueId) @@ -140,22 +135,14 @@ public class ProfileComponent(DataTypes dataTypes, ItemPalette itemPalette, SubC if (!HasUniqueId) throw new NullReferenceException("Can't serialize the ProfileComponent because a full profile requires a UUID!"); - if (!HasName || string.IsNullOrEmpty(Name)) - throw new NullReferenceException("Can't serialize the ProfileComponent because a full profile requires a name!"); - data.AddRange(DataTypes.GetUUID(Uuid)); - data.AddRange(DataTypes.GetString(Name)); + data.AddRange(DataTypes.GetString(Name ?? "")); } else { data.AddRange(DataTypes.GetBool(HasName)); if (HasName) - { - if (string.IsNullOrEmpty(Name)) - throw new NullReferenceException("Can't serialize the ProfileComponent because HasName is true, but the Name is null/empty!"); - - data.AddRange(DataTypes.GetString(Name)); - } + data.AddRange(DataTypes.GetString(Name ?? "")); data.AddRange(DataTypes.GetBool(HasUniqueId)); if (HasUniqueId) diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RarityComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RarityComponent.cs index 2814cf2b..cbe3b9e9 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RarityComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RarityComponent.cs @@ -5,11 +5,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class RarityComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class RarityComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public ItemRarity Rarity { get; set; } - + public override void Parse(Queue data) { Rarity = (ItemRarity)DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RecipesComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RecipesComponent.cs index 7f95bcd0..9df0e22b 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RecipesComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RecipesComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class RecipesComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class RecipesComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public Dictionary? Nbt { get; set; } - + public override void Parse(Queue data) { Nbt = DataTypes.ReadNextNbt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RepairCostComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RepairCostComponent.cs index b025a0a7..951f14f5 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RepairCostComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/RepairCostComponent.cs @@ -4,11 +4,11 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class RepairCostComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class RepairCostComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int Cost { get; set; } - + public override void Parse(Queue data) { Cost = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/StoredEnchantmentsComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/StoredEnchantmentsComponent.cs index 0ddbc431..a741d54d 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/StoredEnchantmentsComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/StoredEnchantmentsComponent.cs @@ -5,5 +5,5 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class StoredEnchantmentsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class StoredEnchantmentsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : EnchantmentsComponent(dataTypes, itemPalette, subComponentRegistry); \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/SuspiciousStewEffectsComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/SuspiciousStewEffectsComponent.cs index d97dee90..b6518820 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/SuspiciousStewEffectsComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/SuspiciousStewEffectsComponent.cs @@ -7,7 +7,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class SuspiciousStewEffectsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class SuspiciousStewEffectsComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfEffects { get; set; } @@ -28,7 +28,7 @@ public class SuspiciousStewEffectsComponent(DataTypes dataTypes, ItemPalette ite if (NumberOfEffects != Effects.Count) throw new InvalidOperationException("Can not serialize SuspiciousStewEffectsComponent1206 because umberOfEffects != Effects.Count!"); - + foreach (var effect in Effects) { data.AddRange(DataTypes.GetVarInt(effect.TypeId)); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ToolComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ToolComponent.cs index 033d41bf..2d761739 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ToolComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/ToolComponent.cs @@ -7,14 +7,14 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class ToolComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class ToolComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public int NumberOfRules { get; set; } public List Rules { get; set; } = new(); public float DefaultMiningSpeed { get; set; } public int DamagePerBlock { get; set; } - + public override void Parse(Queue data) { NumberOfRules = DataTypes.ReadNextVarInt(data); @@ -30,13 +30,13 @@ public class ToolComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComp { var data = new List(); data.AddRange(DataTypes.GetVarInt(NumberOfRules)); - - if(Rules.Count != NumberOfRules) + + if (Rules.Count != NumberOfRules) throw new ArgumentNullException($"Can not serialize a ToolComponent1206 when the Rules count != NumberOfRules!"); - + foreach (var rule in Rules) data.AddRange(rule.Serialize()); - + data.AddRange(DataTypes.GetFloat(DefaultMiningSpeed)); data.AddRange(DataTypes.GetVarInt(DamagePerBlock)); return new Queue(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/TrimComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/TrimComponent.cs index ed474825..90b79127 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/TrimComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/TrimComponent.cs @@ -24,7 +24,7 @@ public class TrimComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComp public string TrimPatternTypeDescription { get; set; } = null!; public bool Decal { get; set; } public bool ShowInTooltip { get; set; } - + public override void Parse(Queue data) { TrimMaterialType = DataTypes.ReadNextVarInt(data); @@ -73,16 +73,16 @@ public class TrimComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComp { if (string.IsNullOrEmpty(AssetName)) throw new NullReferenceException("Can't serialize the TrimComponent because the Asset Name is null!"); - + data.AddRange(DataTypes.GetString(AssetName)); data.AddRange(DataTypes.GetVarInt(Ingredient)); data.AddRange(DataTypes.GetFloat(ItemModelIndex)); data.AddRange(DataTypes.GetVarInt(NumberOfOverrides)); if (NumberOfOverrides > 0) { - if(NumberOfOverrides != Overrides?.Count) + if (NumberOfOverrides != Overrides?.Count) throw new NullReferenceException("Can't serialize the TrimComponent because value of NumberOfOverrides and the size of Overrides don't match!"); - + foreach (var (armorMaterialType, assetName) in Overrides) { data.AddRange(DataTypes.GetVarInt(armorMaterialType)); @@ -97,15 +97,15 @@ public class TrimComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComp { if (string.IsNullOrEmpty(TrimPatternTypeAssetName)) throw new NullReferenceException("Can't serialize the TrimComponent because the TrimPatternTypeAssetName is null!"); - + data.AddRange(DataTypes.GetString(TrimPatternTypeAssetName)); data.AddRange(DataTypes.GetVarInt(TemplateItem)); data.AddRange(DataTypes.GetNbt(TrimPatternTypeDescriptionNbt)); data.AddRange(DataTypes.GetBool(Decal)); } - + data.AddRange(DataTypes.GetBool(ShowInTooltip)); - + return new Queue(data); } } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/UnbreakableComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/UnbreakableComponent.cs index bfc09cda..b4f354f6 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/UnbreakableComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/UnbreakableComponent.cs @@ -4,20 +4,20 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class UnbrekableComponent1206(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) +public class UnbreakableComponent1206(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { - public bool Unbrekable { get; set; } - + public bool Unbreakable { get; set; } + public override void Parse(Queue data) { - Unbrekable = DataTypes.ReadNextBool(data); + Unbreakable = DataTypes.ReadNextBool(data); } public override Queue Serialize() { var data = new List(); - data.AddRange(DataTypes.GetBool(Unbrekable)); + data.AddRange(DataTypes.GetBool(Unbreakable)); return new Queue(data); } } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WritableBlookContentComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WritableBookContentComponent.cs similarity index 75% rename from MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WritableBlookContentComponent.cs rename to MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WritableBookContentComponent.cs index c366e6b7..59dc0409 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WritableBlookContentComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WritableBookContentComponent.cs @@ -6,10 +6,10 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class WritableBlookContentComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +public class WritableBookContentComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public List Pages { get; set; } = []; - + public override void Parse(Queue data) { var count = DataTypes.ReadNextVarInt(data); @@ -19,10 +19,10 @@ public class WritableBlookContentComponent(DataTypes dataTypes, ItemPalette item var rawContent = DataTypes.ReadNextString(data); var hasFilteredContent = DataTypes.ReadNextBool(data); var filteredContent = null as string; - - if(hasFilteredContent) + + if (hasFilteredContent) filteredContent = DataTypes.ReadNextString(data); - + Pages.Add(new BookPage(rawContent, hasFilteredContent, filteredContent)); } } @@ -30,7 +30,7 @@ public class WritableBlookContentComponent(DataTypes dataTypes, ItemPalette item public override Queue Serialize() { var data = new List(); - + data.AddRange(DataTypes.GetVarInt(Pages.Count)); foreach (var page in Pages) @@ -40,9 +40,9 @@ public class WritableBlookContentComponent(DataTypes dataTypes, ItemPalette item if (page.HasFilteredContent) { - if(page.FilteredContent is null) - throw new InvalidOperationException("Can not serialize WritableBlookContentComponent because page.HasFilteredContent = true, but FilteredContent is null!"); - + if (page.FilteredContent is null) + throw new InvalidOperationException("Can not serialize WritableBookContentComponent because page.HasFilteredContent = true, but FilteredContent is null!"); + data.AddRange(DataTypes.GetString(page.FilteredContent)); } } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WrittenBlookContentComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WrittenBookContentComponent.cs similarity index 68% rename from MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WrittenBlookContentComponent.cs rename to MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WrittenBookContentComponent.cs index 55650913..413c94d8 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WrittenBlookContentComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_20_6/WrittenBookContentComponent.cs @@ -7,7 +7,7 @@ using MinecraftClient.Protocol.Message; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; -public class WrittenBlookContentComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +public class WrittenBookContentComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { public string RawTitle { get; set; } = null!; public bool HasFilteredTitle { get; set; } @@ -17,7 +17,7 @@ public class WrittenBlookContentComponent(DataTypes dataTypes, ItemPalette itemP public int NumberOfPages { get; set; } public List Pages { get; set; } = []; public bool Resolved { get; set; } - + public override void Parse(Queue data) { RawTitle = DataTypes.ReadNextString(data); @@ -25,46 +25,64 @@ public class WrittenBlookContentComponent(DataTypes dataTypes, ItemPalette itemP if (HasFilteredTitle) FilteredTitle = DataTypes.ReadNextString(data); - + Author = DataTypes.ReadNextString(data); Generation = DataTypes.ReadNextVarInt(data); NumberOfPages = DataTypes.ReadNextVarInt(data); for (var i = 0; i < NumberOfPages; i++) { - var rawContentNbt = DataTypes.ReadNextNbt(data); - var rawContent = ChatParser.ParseText(rawContentNbt); + var (rawContent, rawContentNbt) = ReadPageComponent(data); var hasFilteredContent = DataTypes.ReadNextBool(data); Dictionary? filteredContentNbt = null; string? filteredContent = null; - + if (hasFilteredContent) - { - filteredContentNbt = DataTypes.ReadNextNbt(data); - filteredContent = ChatParser.ParseText(filteredContentNbt); - } - + (filteredContent, filteredContentNbt) = ReadPageComponent(data); + Pages.Add(new BookPage(rawContent, hasFilteredContent, filteredContent, rawContentNbt, filteredContentNbt)); } Resolved = DataTypes.ReadNextBool(data); } + private (string Content, Dictionary Nbt) ReadPageComponent(Queue data) + { + // Hypixel sent page payloads in the string-shaped form on this structured-book path, + // so keep the parser tolerant while still preserving the raw data for serialization. + Queue fallbackData = new(data); + + try + { + var nbt = DataTypes.ReadNextNbt(data); + return (ChatParser.ParseText(nbt), nbt); + } + catch (System.IO.InvalidDataException) + { + data.Clear(); + foreach (var b in fallbackData) + data.Enqueue(b); + + var json = DataTypes.ReadNextString(data); + return (ChatParser.ParseText(json), new Dictionary { [""] = json }); + } + } + public override Queue Serialize() { var data = new List(); - + data.AddRange(DataTypes.GetString(RawTitle)); data.AddRange(DataTypes.GetBool(HasFilteredTitle)); if (HasFilteredTitle) { - if(FilteredTitle is null) + if (FilteredTitle is null) throw new InvalidOperationException("Can not serialize WrittenBookContentComponent because HasFilteredTitle is true but FilteredTitle is null!"); - + data.AddRange(DataTypes.GetString(FilteredTitle)); } - + data.AddRange(DataTypes.GetString(Author)); data.AddRange(DataTypes.GetVarInt(Generation)); data.AddRange(DataTypes.GetVarInt(Pages.Count)); @@ -80,4 +98,4 @@ public class WrittenBlookContentComponent(DataTypes dataTypes, ItemPalette itemP data.AddRange(DataTypes.GetBool(Resolved)); return new Queue(data); } -} \ No newline at end of file +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21/JukeBoxPlayableComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21/JukeBoxPlayableComponent.cs deleted file mode 100644 index d5f7c6f5..00000000 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21/JukeBoxPlayableComponent.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Collections.Generic; -using MinecraftClient.Inventory.ItemPalettes; -using MinecraftClient.Protocol.Handlers.StructuredComponents.Components.Subcomponents; -using MinecraftClient.Protocol.Handlers.StructuredComponents.Components.Subcomponents._1_21; -using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; - -namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21; - -public class JukeBoxPlayableComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) - : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) -{ - public bool DirectMode { get; set; } - public string? SongName { get; set; } - public int? SongType { get; set; } - public SoundEventSubComponent? SoundEvent { get; set; } - public string? Description { get; set; } - public float? Duration { get; set; } - public int? Output { get; set; } - public bool ShowTooltip { get; set; } - - public override void Parse(Queue data) - { - DirectMode = DataTypes.ReadNextBool(data); - - if (!DirectMode) - SongName = DataTypes.ReadNextString(data); - - if (DirectMode) - { - SongType = DataTypes.ReadNextVarInt(data); - - if (SongType == 0) - { - SoundEvent = - (SoundEventSubComponent)SubComponentRegistry.ParseSubComponent(SubComponents.SoundEvent, data); - Description = DataTypes.ReadNextString(data); - Duration = DataTypes.ReadNextFloat(data); - Output = DataTypes.ReadNextVarInt(data); - } - } - - ShowTooltip = DataTypes.ReadNextBool(data); - } - - public override Queue Serialize() - { - var data = new List(); - - data.AddRange(DataTypes.GetBool(DirectMode)); - - if (!DirectMode) - { - if (string.IsNullOrEmpty(SongName?.Trim())) - throw new ArgumentNullException($"Can not serialize JukeBoxPlayableComponent due to SongName being null or empty!"); - - data.AddRange(DataTypes.GetString(SongName)); - } - - if (DirectMode) - { - if(SongType is null) - throw new ArgumentNullException($"Can not serialize JukeBoxPlayableComponent due to SongType being null!"); - - data.AddRange(DataTypes.GetVarInt((int)SongType)); - - if (SongType == 0) - { - if (SoundEvent is null) - throw new ArgumentNullException( - $"Can not serialize JukeBoxPlayableComponent due to SoundEvent being null"); - - data.AddRange(SoundEvent.Serialize()); - - if (string.IsNullOrEmpty(Description?.Trim())) - throw new ArgumentNullException( - $"Can not serialize JukeBoxPlayableComponent due to Description being null or empty!"); - - data.AddRange(DataTypes.GetString(Description)); - - if (Duration is null) - throw new ArgumentNullException( - $"Can not serialize JukeBoxPlayableComponent due to Duration being null!"); - - data.AddRange(DataTypes.GetFloat((float)Duration)); - - if (Output is null) - throw new ArgumentNullException( - $"Can not serialize JukeBoxPlayableComponent due to Description being null!"); - - data.AddRange(DataTypes.GetVarInt((int)Output)); - } - } - - data.AddRange(DataTypes.GetBool(ShowTooltip)); - - return new Queue(data); - } -} \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_11/KineticWeaponComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_11/KineticWeaponComponent.cs index 9bfeb283..4d676f51 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_11/KineticWeaponComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_11/KineticWeaponComponent.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components; using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_11; @@ -7,41 +8,65 @@ namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_2 public class KineticWeaponComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) { + public int ContactCooldownTicks { get; set; } + public int DelayTicks { get; set; } + public KineticWeaponConditionData? DismountConditions { get; set; } + public KineticWeaponConditionData? KnockbackConditions { get; set; } + public KineticWeaponConditionData? DamageConditions { get; set; } + public float ForwardMovement { get; set; } + public float DamageMultiplier { get; set; } + public SoundEventHolderData? Sound { get; set; } + public SoundEventHolderData? HitSound { get; set; } + public override void Parse(Queue data) { - DataTypes.ReadNextVarInt(data); // contactCooldownTicks - DataTypes.ReadNextVarInt(data); // delayTicks - ReadOptionalCondition(data); // dismountConditions - ReadOptionalCondition(data); // knockbackConditions - ReadOptionalCondition(data); // damageConditions - DataTypes.ReadNextFloat(data); // forwardMovement - DataTypes.ReadNextFloat(data); // damageMultiplier - ReadOptionalSoundEventHolder(data); // sound - ReadOptionalSoundEventHolder(data); // hitSound + ContactCooldownTicks = DataTypes.ReadNextVarInt(data); + DelayTicks = DataTypes.ReadNextVarInt(data); + DismountConditions = ReadOptionalCondition(data); + KnockbackConditions = ReadOptionalCondition(data); + DamageConditions = ReadOptionalCondition(data); + ForwardMovement = DataTypes.ReadNextFloat(data); + DamageMultiplier = DataTypes.ReadNextFloat(data); + Sound = StructuredComponentCodecHelpers.ReadOptionalSoundEventHolder(DataTypes, data); + HitSound = StructuredComponentCodecHelpers.ReadOptionalSoundEventHolder(DataTypes, data); } - private void ReadOptionalCondition(Queue data) + private KineticWeaponConditionData? ReadOptionalCondition(Queue data) { - if (!DataTypes.ReadNextBool(data)) return; - DataTypes.ReadNextVarInt(data); // maxDurationTicks - DataTypes.ReadNextFloat(data); // minSpeed - DataTypes.ReadNextFloat(data); // minRelativeSpeed + if (!DataTypes.ReadNextBool(data)) + return null; + + return new KineticWeaponConditionData( + DataTypes.ReadNextVarInt(data), + DataTypes.ReadNextFloat(data), + DataTypes.ReadNextFloat(data)); } - private void ReadOptionalSoundEventHolder(Queue data) + private void WriteOptionalCondition(List data, KineticWeaponConditionData? condition) { - if (!DataTypes.ReadNextBool(data)) return; - var holderId = DataTypes.ReadNextVarInt(data); - if (holderId == 0) - { - DataTypes.ReadNextString(data); - if (DataTypes.ReadNextBool(data)) - DataTypes.ReadNextFloat(data); - } + data.AddRange(DataTypes.GetBool(condition is not null)); + if (condition is null) + return; + + data.AddRange(DataTypes.GetVarInt(condition.MaxDurationTicks)); + data.AddRange(DataTypes.GetFloat(condition.MinSpeed)); + data.AddRange(DataTypes.GetFloat(condition.MinRelativeSpeed)); } public override Queue Serialize() { - return new Queue(); + var data = new List(); + data.AddRange(DataTypes.GetVarInt(ContactCooldownTicks)); + data.AddRange(DataTypes.GetVarInt(DelayTicks)); + WriteOptionalCondition(data, DismountConditions); + WriteOptionalCondition(data, KnockbackConditions); + WriteOptionalCondition(data, DamageConditions); + data.AddRange(DataTypes.GetFloat(ForwardMovement)); + data.AddRange(DataTypes.GetFloat(DamageMultiplier)); + StructuredComponentCodecHelpers.WriteOptionalSoundEventHolder(DataTypes, data, Sound); + StructuredComponentCodecHelpers.WriteOptionalSoundEventHolder(DataTypes, data, HitSound); + return new Queue(data); } } + +public sealed record KineticWeaponConditionData(int MaxDurationTicks, float MinSpeed, float MinRelativeSpeed); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_11/PiercingWeaponComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_11/PiercingWeaponComponent.cs index 904044ef..a6af8bef 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_11/PiercingWeaponComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_11/PiercingWeaponComponent.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components; using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_11; @@ -9,29 +10,24 @@ public class PiercingWeaponComponent(DataTypes dataTypes, ItemPalette itemPalett { public bool DealsKnockback { get; set; } public bool Dismounts { get; set; } + public SoundEventHolderData? Sound { get; set; } + public SoundEventHolderData? HitSound { get; set; } public override void Parse(Queue data) { DealsKnockback = DataTypes.ReadNextBool(data); Dismounts = DataTypes.ReadNextBool(data); - ReadOptionalSoundEventHolder(data); - ReadOptionalSoundEventHolder(data); - } - - private void ReadOptionalSoundEventHolder(Queue data) - { - if (!DataTypes.ReadNextBool(data)) return; - var holderId = DataTypes.ReadNextVarInt(data); - if (holderId == 0) - { - DataTypes.ReadNextString(data); - if (DataTypes.ReadNextBool(data)) - DataTypes.ReadNextFloat(data); - } + Sound = StructuredComponentCodecHelpers.ReadOptionalSoundEventHolder(DataTypes, data); + HitSound = StructuredComponentCodecHelpers.ReadOptionalSoundEventHolder(DataTypes, data); } public override Queue Serialize() { - return new Queue(); + var data = new List(); + data.AddRange(DataTypes.GetBool(DealsKnockback)); + data.AddRange(DataTypes.GetBool(Dismounts)); + StructuredComponentCodecHelpers.WriteOptionalSoundEventHolder(DataTypes, data, Sound); + StructuredComponentCodecHelpers.WriteOptionalSoundEventHolder(DataTypes, data, HitSound); + return new Queue(data); } } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_2/EquippableComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_2/EquippableComponent.cs index 46191449..eb3a93b0 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_2/EquippableComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_2/EquippableComponent.cs @@ -27,7 +27,7 @@ public class EquippableComponent(DataTypes dataTypes, ItemPalette itemPalette, S { Slot = DataTypes.ReadNextVarInt(data); EquipSound = (SoundEventSubComponent)SubComponentRegistry.ParseSubComponent(SubComponents.SoundEvent, data); - + HasModel = DataTypes.ReadNextBool(data); if (HasModel) Model = DataTypes.ReadNextString(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_5/BlocksAttacksComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_5/BlocksAttacksComponent.cs index 030133c7..5c497bf4 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_5/BlocksAttacksComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/1_21_5/BlocksAttacksComponent.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components; using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_5; @@ -9,10 +10,13 @@ public class BlocksAttacksComponent(DataTypes dataTypes, ItemPalette itemPalette { public float BlockDelaySeconds { get; set; } public float DisableCooldownScale { get; set; } - public List RawDamageReductions { get; set; } = []; + public List DamageReductions { get; set; } = []; public float ItemDamageThreshold { get; set; } public float ItemDamageBase { get; set; } public float ItemDamageFactor { get; set; } + public string? BypassedBy { get; set; } + public SoundEventHolderData? BlockSound { get; set; } + public SoundEventHolderData? DisableSound { get; set; } public override void Parse(Queue data) { @@ -25,11 +29,13 @@ public class BlocksAttacksComponent(DataTypes dataTypes, ItemPalette itemPalette var horizontalBlockingAngle = DataTypes.ReadNextFloat(data); var hasTypeFilter = DataTypes.ReadNextBool(data); - if (hasTypeFilter) - ReadHolderSet(data); + var typeFilter = hasTypeFilter + ? StructuredComponentCodecHelpers.ReadHolderSet(DataTypes, data) + : null; var baseDmg = DataTypes.ReadNextFloat(data); var factor = DataTypes.ReadNextFloat(data); + DamageReductions.Add(new DamageReductionData(horizontalBlockingAngle, typeFilter, baseDmg, factor)); } ItemDamageThreshold = DataTypes.ReadNextFloat(data); @@ -38,46 +44,38 @@ public class BlocksAttacksComponent(DataTypes dataTypes, ItemPalette itemPalette var hasBypassedBy = DataTypes.ReadNextBool(data); if (hasBypassedBy) - DataTypes.ReadNextString(data); // TagKey as ResourceLocation + BypassedBy = DataTypes.ReadNextString(data); // TagKey as ResourceLocation - var hasBlockSound = DataTypes.ReadNextBool(data); - if (hasBlockSound) - ReadSoundEventHolder(data); - - var hasDisableSound = DataTypes.ReadNextBool(data); - if (hasDisableSound) - ReadSoundEventHolder(data); - } - - private void ReadHolderSet(Queue data) - { - var sizeOrTag = DataTypes.ReadNextVarInt(data); - if (sizeOrTag == 0) - { - DataTypes.ReadNextString(data); // Tag ResourceLocation - } - else - { - var count = sizeOrTag - 1; - for (var i = 0; i < count; i++) - DataTypes.ReadNextVarInt(data); // Holder registry ids - } - } - - private void ReadSoundEventHolder(Queue data) - { - var holderId = DataTypes.ReadNextVarInt(data); - if (holderId == 0) - { - DataTypes.ReadNextString(data); // ResourceLocation - var hasFixedRange = DataTypes.ReadNextBool(data); - if (hasFixedRange) - DataTypes.ReadNextFloat(data); - } + BlockSound = StructuredComponentCodecHelpers.ReadOptionalSoundEventHolder(DataTypes, data); + DisableSound = StructuredComponentCodecHelpers.ReadOptionalSoundEventHolder(DataTypes, data); } public override Queue Serialize() { - return new Queue(); + var data = new List(); + data.AddRange(DataTypes.GetFloat(BlockDelaySeconds)); + data.AddRange(DataTypes.GetFloat(DisableCooldownScale)); + data.AddRange(DataTypes.GetVarInt(DamageReductions.Count)); + foreach (var reduction in DamageReductions) + { + data.AddRange(DataTypes.GetFloat(reduction.HorizontalBlockingAngle)); + data.AddRange(DataTypes.GetBool(reduction.Type is not null)); + if (reduction.Type is not null) + StructuredComponentCodecHelpers.WriteHolderSet(DataTypes, data, reduction.Type); + data.AddRange(DataTypes.GetFloat(reduction.Base)); + data.AddRange(DataTypes.GetFloat(reduction.Factor)); + } + + data.AddRange(DataTypes.GetFloat(ItemDamageThreshold)); + data.AddRange(DataTypes.GetFloat(ItemDamageBase)); + data.AddRange(DataTypes.GetFloat(ItemDamageFactor)); + data.AddRange(DataTypes.GetBool(BypassedBy is not null)); + if (BypassedBy is not null) + data.AddRange(DataTypes.GetString(BypassedBy)); + StructuredComponentCodecHelpers.WriteOptionalSoundEventHolder(DataTypes, data, BlockSound); + StructuredComponentCodecHelpers.WriteOptionalSoundEventHolder(DataTypes, data, DisableSound); + return new Queue(data); } } + +public sealed record DamageReductionData(float HorizontalBlockingAngle, HolderSetData? Type, float Base, float Factor); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/ContainerComponent261.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/ContainerComponent261.cs new file mode 100644 index 00000000..87a83a4e --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/ContainerComponent261.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using MinecraftClient.Inventory; +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; + +public class ContainerComponent261(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +{ + public List Items { get; set; } = []; + + public override void Parse(Queue data) + { + var count = DataTypes.ReadNextVarInt(data); + for (var i = 0; i < count; i++) + Items.Add(DataTypes.ReadNextBool(data) ? DataTypes.ReadNextItemStackTemplate(data, ItemPalette) : null); + } + + public override Queue Serialize() + { + var data = new List(); + data.AddRange(DataTypes.GetVarInt(Items.Count)); + foreach (var item in Items) + { + var hasItem = item is not null && !item.IsEmpty; + data.AddRange(DataTypes.GetBool(hasItem)); + if (hasItem) + data.AddRange(DataTypes.GetItemStackTemplate(item!, ItemPalette)); + } + + return new Queue(data); + } +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/HolderSetComponent261.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/HolderSetComponent261.cs new file mode 100644 index 00000000..516117ab --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/HolderSetComponent261.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; + +public class HolderSetComponent261(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +{ + public string? TagKey { get; set; } + public List HolderIds { get; } = []; + + public override void Parse(Queue data) + { + var count = DataTypes.ReadNextVarInt(data) - 1; + if (count == -1) + { + TagKey = DataTypes.ReadNextString(data); + return; + } + + for (var i = 0; i < count; i++) + HolderIds.Add(DataTypes.ReadNextVarInt(data)); + } + + public override Queue Serialize() + { + var bytes = new List(); + if (TagKey is not null) + { + bytes.AddRange(DataTypes.GetVarInt(0)); + bytes.AddRange(DataTypes.GetString(TagKey)); + return new Queue(bytes); + } + + bytes.AddRange(DataTypes.GetVarInt(HolderIds.Count + 1)); + foreach (var holderId in HolderIds) + bytes.AddRange(DataTypes.GetVarInt(holderId)); + + return new Queue(bytes); + } +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/InstrumentComponent261.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/InstrumentComponent261.cs new file mode 100644 index 00000000..0f91f0b3 --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/InstrumentComponent261.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; + +public class InstrumentComponent261(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +{ + public int HolderId { get; set; } + + public override void Parse(Queue data) + { + HolderId = DataTypes.ReadNextVarInt(data); + if (HolderId != 0) + return; + + var soundHolderId = DataTypes.ReadNextVarInt(data); + if (soundHolderId == 0) + { + DataTypes.ReadNextString(data); // ResourceLocation + var hasFixedRange = DataTypes.ReadNextBool(data); + if (hasFixedRange) + DataTypes.ReadNextFloat(data); + } + + DataTypes.ReadNextFloat(data); // useDuration + DataTypes.ReadNextFloat(data); // range + DataTypes.ReadNextNbt(data); // ComponentSerialization.STREAM_CODEC + } + + public override Queue Serialize() + { + var bytes = new List(); + bytes.AddRange(DataTypes.GetVarInt(HolderId)); + return new Queue(bytes); + } +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/ItemStackTemplateListComponent261.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/ItemStackTemplateListComponent261.cs new file mode 100644 index 00000000..7c7fdc74 --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/ItemStackTemplateListComponent261.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using MinecraftClient.Inventory; +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; + +public class ItemStackTemplateListComponent261(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +{ + public List Items { get; set; } = []; + + public override void Parse(Queue data) + { + var count = DataTypes.ReadNextVarInt(data); + + for (var i = 0; i < count; i++) + Items.Add(DataTypes.ReadNextItemStackTemplate(data, ItemPalette)); + } + + public override Queue Serialize() + { + var data = new List(); + data.AddRange(DataTypes.GetVarInt(Items.Count)); + + foreach (var item in Items) + data.AddRange(DataTypes.GetItemStackTemplate(item, ItemPalette)); + + return new Queue(data); + } +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/NbtTagComponent261.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/NbtTagComponent261.cs new file mode 100644 index 00000000..1c864dcf --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/NbtTagComponent261.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; + +public class NbtTagComponent261(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +{ + public object? Tag { get; set; } + + public override void Parse(Queue data) + { + Tag = DataTypes.ReadNextNbtTag(data); + } + + public override Queue Serialize() + { + return new Queue(DataTypes.GetNbtTag(Tag)); + } +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/ProvidesTrimMaterialComponent261.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/ProvidesTrimMaterialComponent261.cs new file mode 100644 index 00000000..7c76b44a --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/ProvidesTrimMaterialComponent261.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; + +public class ProvidesTrimMaterialComponent261(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +{ + public int HolderId { get; set; } + + public override void Parse(Queue data) + { + HolderId = DataTypes.ReadNextVarInt(data); + if (HolderId != 0) + return; + + DataTypes.ReadNextString(data); // base asset suffix + + var overrideCount = DataTypes.ReadNextVarInt(data); + for (var i = 0; i < overrideCount; i++) + { + DataTypes.ReadNextString(data); // ResourceKey + DataTypes.ReadNextString(data); // override suffix + } + + DataTypes.ReadNextNbt(data); // ComponentSerialization.STREAM_CODEC + } + + public override Queue Serialize() + { + var bytes = new List(); + bytes.AddRange(DataTypes.GetVarInt(HolderId)); + return new Queue(bytes); + } +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/TypedEntityDataComponent261.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/TypedEntityDataComponent261.cs new file mode 100644 index 00000000..d05b147a --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/TypedEntityDataComponent261.cs @@ -0,0 +1,13 @@ +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; + +public class TypedEntityDataComponent261(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : TypedEntityDataComponent(dataTypes, itemPalette, subComponentRegistry) +{ } + +public class BlockEntityDataComponent261(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : TypedBlockEntityDataComponent(dataTypes, itemPalette, subComponentRegistry) +{ } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/UseRemainderComponent261.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/UseRemainderComponent261.cs new file mode 100644 index 00000000..e5b3323e --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_1/UseRemainderComponent261.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using MinecraftClient.Inventory; +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; + +public class UseRemainderComponent261(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +{ + public Item? ConvertInto { get; set; } + + public override void Parse(Queue data) + { + ConvertInto = DataTypes.ReadNextItemStackTemplate(data, ItemPalette); + } + + public override Queue Serialize() + { + var data = new List(); + if (ConvertInto is not null && !ConvertInto.IsEmpty) + data.AddRange(DataTypes.GetItemStackTemplate(ConvertInto, ItemPalette)); + return new Queue(data); + } +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_2/SulfurCubeContentComponent262.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_2/SulfurCubeContentComponent262.cs new file mode 100644 index 00000000..282373d1 --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/26_2/SulfurCubeContentComponent262.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using MinecraftClient.Inventory; +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_2; + +public class SulfurCubeContentComponent262(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +{ + public Item? AbsorbedBlockItemStack { get; set; } + + public override void Parse(Queue data) + { + AbsorbedBlockItemStack = DataTypes.ReadNextItemStackTemplate(data, ItemPalette); + } + + public override Queue Serialize() + { + var data = new List(); + if (AbsorbedBlockItemStack is not null && !AbsorbedBlockItemStack.IsEmpty) + data.AddRange(DataTypes.GetItemStackTemplate(AbsorbedBlockItemStack, ItemPalette)); + return new Queue(data); + } +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/StructuredComponentCodecHelpers.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/StructuredComponentCodecHelpers.cs new file mode 100644 index 00000000..dc3fc218 --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/StructuredComponentCodecHelpers.cs @@ -0,0 +1,74 @@ +using System.Collections.Generic; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components; + +internal static class StructuredComponentCodecHelpers +{ + public static HolderSetData ReadHolderSet(DataTypes dataTypes, Queue data) + { + var sizeOrTag = dataTypes.ReadNextVarInt(data); + if (sizeOrTag == 0) + return new HolderSetData(dataTypes.ReadNextString(data), []); + + var count = sizeOrTag - 1; + var holderIds = new List(count); + for (var i = 0; i < count; i++) + holderIds.Add(dataTypes.ReadNextVarInt(data)); + + return new HolderSetData(null, holderIds); + } + + public static void WriteHolderSet(DataTypes dataTypes, List bytes, HolderSetData holderSet) + { + if (holderSet.Tag is not null) + { + bytes.AddRange(DataTypes.GetVarInt(0)); + bytes.AddRange(dataTypes.GetString(holderSet.Tag)); + return; + } + + bytes.AddRange(DataTypes.GetVarInt(holderSet.HolderIds.Count + 1)); + foreach (var holderId in holderSet.HolderIds) + bytes.AddRange(DataTypes.GetVarInt(holderId)); + } + + public static SoundEventHolderData ReadSoundEventHolder(DataTypes dataTypes, Queue data) + { + var holderId = dataTypes.ReadNextVarInt(data); + if (holderId != 0) + return new SoundEventHolderData(holderId, null, false, 0); + + var soundLocation = dataTypes.ReadNextString(data); + var hasFixedRange = dataTypes.ReadNextBool(data); + var fixedRange = hasFixedRange ? dataTypes.ReadNextFloat(data) : 0; + return new SoundEventHolderData(holderId, soundLocation, hasFixedRange, fixedRange); + } + + public static void WriteSoundEventHolder(DataTypes dataTypes, List bytes, SoundEventHolderData soundEvent) + { + bytes.AddRange(DataTypes.GetVarInt(soundEvent.HolderId)); + if (soundEvent.HolderId != 0) + return; + + bytes.AddRange(dataTypes.GetString(soundEvent.SoundLocation ?? "")); + bytes.AddRange(dataTypes.GetBool(soundEvent.HasFixedRange)); + if (soundEvent.HasFixedRange) + bytes.AddRange(dataTypes.GetFloat(soundEvent.FixedRange)); + } + + public static SoundEventHolderData? ReadOptionalSoundEventHolder(DataTypes dataTypes, Queue data) + { + return dataTypes.ReadNextBool(data) ? ReadSoundEventHolder(dataTypes, data) : null; + } + + public static void WriteOptionalSoundEventHolder(DataTypes dataTypes, List bytes, SoundEventHolderData? soundEvent) + { + bytes.AddRange(dataTypes.GetBool(soundEvent is not null)); + if (soundEvent is not null) + WriteSoundEventHolder(dataTypes, bytes, soundEvent); + } +} + +public sealed record HolderSetData(string? Tag, List HolderIds); + +public sealed record SoundEventHolderData(int HolderId, string? SoundLocation, bool HasFixedRange, float FixedRange); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/AttributeSubComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/AttributeSubComponent.cs index 897d41b8..72905355 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/AttributeSubComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/AttributeSubComponent.cs @@ -12,7 +12,7 @@ public class AttributeSubComponent(DataTypes dataTypes, SubComponentRegistry sub public double Value { get; set; } public int Operation { get; set; } public int Slot { get; set; } - + protected override void Parse(Queue data) { TypeId = DataTypes.ReadNextVarInt(data); @@ -28,10 +28,10 @@ public class AttributeSubComponent(DataTypes dataTypes, SubComponentRegistry sub var data = new List(); data.AddRange(DataTypes.GetVarInt(TypeId)); data.AddRange(DataTypes.GetUUID(Uuid)); - + if (string.IsNullOrEmpty(Name?.Trim())) throw new ArgumentNullException($"Can not serialize AttributeSubComponent due to Name being null or empty!"); - + data.AddRange(DataTypes.GetString(Name)); data.AddRange(DataTypes.GetDouble(Value)); data.AddRange(DataTypes.GetVarInt(Operation)); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/BlockPredicateSubcomponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/BlockPredicateSubcomponent.cs index d66eb47c..74639c6e 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/BlockPredicateSubcomponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/BlockPredicateSubcomponent.cs @@ -12,7 +12,7 @@ public class BlockPredicateSubcomponent(DataTypes dataTypes, SubComponentRegistr public List? Properties { get; set; } public bool HasNbt { get; set; } public Dictionary? Nbt { get; set; } - + protected override void Parse(Queue data) { HasBlocks = DataTypes.ReadNextBool(data); @@ -31,7 +31,7 @@ public class BlockPredicateSubcomponent(DataTypes dataTypes, SubComponentRegistr } HasNbt = DataTypes.ReadNextBool(data); - + if (HasNbt) Nbt = DataTypes.ReadNextNbt(data); } @@ -39,22 +39,22 @@ public class BlockPredicateSubcomponent(DataTypes dataTypes, SubComponentRegistr public override Queue Serialize() { var data = new List(); - + // Block Sets data.AddRange(DataTypes.GetBool(HasBlocks)); if (HasBlocks) { - if(BlockSet is null) + if (BlockSet is null) throw new ArgumentNullException($"Can not serialize a BlockPredicate when the BlockSet is empty but HasBlocks is true!"); - + data.AddRange(BlockSet.Serialize()); } - + // Properties data.AddRange(DataTypes.GetBool(HasProperities)); if (HasProperities) { - if(Properties is null || Properties.Count == 0) + if (Properties is null || Properties.Count == 0) throw new ArgumentNullException($"Can not serialize a BlockPredicate when the Properties is empty but HasProperties is true!"); data.AddRange(DataTypes.GetVarInt(Properties.Count)); @@ -66,12 +66,12 @@ public class BlockPredicateSubcomponent(DataTypes dataTypes, SubComponentRegistr data.AddRange(DataTypes.GetBool(HasNbt)); if (HasNbt) { - if(Nbt is null) + if (Nbt is null) throw new ArgumentNullException($"Can not serialize a BlockPredicate when the Nbt is empty but HasNbt is true!"); - + data.AddRange(DataTypes.GetNbt(Nbt)); } - + return new Queue(data); } } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/BlockSetSubcomponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/BlockSetSubcomponent.cs index 70f2b78c..2fe1be6d 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/BlockSetSubcomponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/BlockSetSubcomponent.cs @@ -9,7 +9,7 @@ public class BlockSetSubcomponent(DataTypes dataTypes, SubComponentRegistry subC public int Type { get; set; } public string? TagName { get; set; } public List? BlockIds { get; set; } - + protected override void Parse(Queue data) { Type = DataTypes.ReadNextVarInt(data); @@ -18,9 +18,9 @@ public class BlockSetSubcomponent(DataTypes dataTypes, SubComponentRegistry subC TagName = DataTypes.ReadNextString(data); if (Type == 0) return; - + BlockIds = []; - + for (var i = 0; i < Type - 1; i++) BlockIds.Add(DataTypes.ReadNextVarInt(data)); } @@ -33,16 +33,16 @@ public class BlockSetSubcomponent(DataTypes dataTypes, SubComponentRegistry subC { if (string.IsNullOrEmpty(TagName?.Trim())) throw new ArgumentNullException($"Can not serialize an empty tag name when the Block Set type is 0!"); - + data.AddRange(DataTypes.GetString(TagName)); } if (Type == 0) return new Queue(data); - - if(BlockIds is null || BlockIds.Count == 0) + + if (BlockIds is null || BlockIds.Count == 0) throw new ArgumentNullException($"Can not serialize an empty list of Block IDs in a Block Set when the type is not 0!"); - - for(var i = 0; i < Type - 1; i++) + + for (var i = 0; i < Type - 1; i++) data.AddRange(DataTypes.GetVarInt(BlockIds[i])); return new Queue(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/DetailsSubComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/DetailsSubComponent.cs index ac6b28c9..05b3c918 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/DetailsSubComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/DetailsSubComponent.cs @@ -13,7 +13,7 @@ public class DetailsSubComponent(DataTypes dataTypes, SubComponentRegistry subCo public bool ShowIcon { get; set; } public bool HasHiddenEffects { get; set; } public DetailsSubComponent? Detail { get; set; } - + protected override void Parse(Queue data) { Amplifier = DataTypes.ReadNextVarInt(data); @@ -22,8 +22,8 @@ public class DetailsSubComponent(DataTypes dataTypes, SubComponentRegistry subCo ShowParticles = DataTypes.ReadNextBool(data); ShowIcon = DataTypes.ReadNextBool(data); HasHiddenEffects = DataTypes.ReadNextBool(data); - - if(HasHiddenEffects) + + if (HasHiddenEffects) Detail = (DetailsSubComponent)SubComponentRegistry.ParseSubComponent(SubComponents.Details, data); } @@ -39,9 +39,9 @@ public class DetailsSubComponent(DataTypes dataTypes, SubComponentRegistry subCo if (HasHiddenEffects) { - if(Detail is null) + if (Detail is null) throw new ArgumentNullException($"Can not serialize a DetailSubComponent1206 when the Detail is empty but HasHiddenEffects is true!"); - + data.AddRange(Detail.Serialize()); } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/EffectSubComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/EffectSubComponent.cs index 250cbd6f..d17d43f0 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/EffectSubComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/EffectSubComponent.cs @@ -8,7 +8,7 @@ public class EffectSubComponent(DataTypes dataTypes, SubComponentRegistry subCom { public PotionEffectSubComponent TypeId { get; set; } = null!; public float Probability { get; set; } - + protected override void Parse(Queue data) { TypeId = (PotionEffectSubComponent)SubComponentRegistry.ParseSubComponent(SubComponents.PotionEffect, data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/FireworkExplosionSubComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/FireworkExplosionSubComponent.cs index 37fec5b7..8073964c 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/FireworkExplosionSubComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/FireworkExplosionSubComponent.cs @@ -13,7 +13,7 @@ public class FireworkExplosionSubComponent(DataTypes dataTypes, SubComponentRegi public List FadeColors { get; set; } = []; public bool HasTrail { get; set; } public bool HasTwinkle { get; set; } - + protected override void Parse(Queue data) { Shape = DataTypes.ReadNextVarInt(data); @@ -21,12 +21,12 @@ public class FireworkExplosionSubComponent(DataTypes dataTypes, SubComponentRegi for (var i = 0; i < NumberOfColors; i++) Colors.Add(DataTypes.ReadNextInt(data)); - + NumberOfFadeColors = DataTypes.ReadNextVarInt(data); for (var i = 0; i < NumberOfFadeColors; i++) FadeColors.Add(DataTypes.ReadNextInt(data)); - + HasTrail = DataTypes.ReadNextBool(data); HasTwinkle = DataTypes.ReadNextBool(data); } @@ -45,7 +45,7 @@ public class FireworkExplosionSubComponent(DataTypes dataTypes, SubComponentRegi foreach (var color in Colors) data.AddRange(DataTypes.GetInt(color)); } - + data.AddRange(DataTypes.GetVarInt(NumberOfFadeColors)); if (NumberOfFadeColors > 0) { @@ -55,7 +55,7 @@ public class FireworkExplosionSubComponent(DataTypes dataTypes, SubComponentRegi foreach (var fadeColor in FadeColors) data.AddRange(DataTypes.GetInt(fadeColor)); } - + data.AddRange(DataTypes.GetBool(HasTrail)); data.AddRange(DataTypes.GetBool(HasTwinkle)); return new Queue(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/PotionEffectSubComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/PotionEffectSubComponent.cs index d667c5b3..dc9e31f0 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/PotionEffectSubComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/PotionEffectSubComponent.cs @@ -8,7 +8,7 @@ public class PotionEffectSubComponent(DataTypes dataTypes, SubComponentRegistry { public int TypeId { get; set; } public DetailsSubComponent Details { get; set; } = null!; - + protected override void Parse(Queue data) { TypeId = DataTypes.ReadNextVarInt(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/PropertySubComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/PropertySubComponent.cs index af83fc08..52e18770 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/PropertySubComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/PropertySubComponent.cs @@ -11,7 +11,7 @@ public class PropertySubComponent(DataTypes dataTypes, SubComponentRegistry subC public string? ExactValue { get; set; } public string? MinValue { get; set; } public string? MaxValue { get; set; } - + protected override void Parse(Queue data) { Name = DataTypes.ReadNextString(data); @@ -34,7 +34,7 @@ public class PropertySubComponent(DataTypes dataTypes, SubComponentRegistry subC if (string.IsNullOrEmpty(Name?.Trim())) throw new ArgumentNullException($"Can not serialize a Property sub-component if the Name is null or empty!"); - + data.AddRange(DataTypes.GetString(Name)); data.AddRange(DataTypes.GetBool(IsExactMatch)); @@ -42,7 +42,7 @@ public class PropertySubComponent(DataTypes dataTypes, SubComponentRegistry subC { if (string.IsNullOrEmpty(ExactValue?.Trim())) throw new ArgumentNullException($"Can not serialize a Property sub-component if the ExactValue is null or empty when the type is Exact Match!"); - + data.AddRange(DataTypes.GetString(ExactValue)); } else @@ -50,12 +50,12 @@ public class PropertySubComponent(DataTypes dataTypes, SubComponentRegistry subC data.AddRange(DataTypes.GetBool(MinValue is not null)); if (MinValue is not null) data.AddRange(DataTypes.GetString(MinValue)); - + data.AddRange(DataTypes.GetBool(MaxValue is not null)); if (MaxValue is not null) data.AddRange(DataTypes.GetString(MaxValue)); } - + return new Queue(data); } } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/RuleSubComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/RuleSubComponent.cs index 1356ceef..74565c9b 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/RuleSubComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_20_6/RuleSubComponent.cs @@ -11,18 +11,18 @@ public class RuleSubComponent(DataTypes dataTypes, SubComponentRegistry subCompo public float Speed { get; set; } public bool HasCorrectDropForBlocks { get; set; } public bool CorrectDropForBlocks { get; set; } - + protected override void Parse(Queue data) { Blocks = (BlockSetSubcomponent)SubComponentRegistry.ParseSubComponent(SubComponents.BlockSet, data); HasSpeed = DataTypes.ReadNextBool(data); - - if(HasSpeed) + + if (HasSpeed) Speed = DataTypes.ReadNextFloat(data); - + HasCorrectDropForBlocks = DataTypes.ReadNextBool(data); - - if(HasCorrectDropForBlocks) + + if (HasCorrectDropForBlocks) CorrectDropForBlocks = DataTypes.ReadNextBool(data); } @@ -31,13 +31,13 @@ public class RuleSubComponent(DataTypes dataTypes, SubComponentRegistry subCompo var data = new List(); data.AddRange(Blocks.Serialize()); data.AddRange(DataTypes.GetBool(HasSpeed)); - if(HasSpeed) + if (HasSpeed) data.AddRange(DataTypes.GetFloat(Speed)); data.AddRange(DataTypes.GetBool(HasCorrectDropForBlocks)); - if(HasCorrectDropForBlocks) + if (HasCorrectDropForBlocks) data.AddRange(DataTypes.GetBool(CorrectDropForBlocks)); - + return new Queue(data); } } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_21/AttributeSubComponent121.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_21/AttributeSubComponent121.cs index 46b70970..60bc94dc 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_21/AttributeSubComponent121.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_21/AttributeSubComponent121.cs @@ -11,7 +11,7 @@ public class AttributeSubComponent121(DataTypes dataTypes, SubComponentRegistry public double Value { get; set; } public int Operation { get; set; } public int Slot { get; set; } - + protected override void Parse(Queue data) { TypeId = DataTypes.ReadNextVarInt(data); @@ -25,10 +25,10 @@ public class AttributeSubComponent121(DataTypes dataTypes, SubComponentRegistry { var data = new List(); data.AddRange(DataTypes.GetVarInt(TypeId)); - + if (string.IsNullOrEmpty(ResourceLocation?.Trim())) throw new ArgumentNullException($"Can not serialize AttributeSubComponent121 due to ResourceLocation being null or empty!"); - + data.AddRange(DataTypes.GetString(ResourceLocation)); data.AddRange(DataTypes.GetDouble(Value)); data.AddRange(DataTypes.GetVarInt(Operation)); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_21/SoundEventSubComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_21/SoundEventSubComponent.cs index cb10dcee..2c2885c8 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_21/SoundEventSubComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/Subcomponents/1_21/SoundEventSubComponent.cs @@ -10,13 +10,13 @@ public class SoundEventSubComponent(DataTypes dataTypes, SubComponentRegistry su public string? SoundName { get; set; } public bool HasFixedRange { get; set; } public float FixedRange { get; set; } - + protected override void Parse(Queue data) { Type = DataTypes.ReadNextVarInt(data); if (Type != 0) return; - + SoundName = DataTypes.ReadNextString(data); HasFixedRange = DataTypes.ReadNextBool(data); @@ -30,14 +30,14 @@ public class SoundEventSubComponent(DataTypes dataTypes, SubComponentRegistry su data.AddRange(DataTypes.GetVarInt(Type)); if (Type != 0) return new Queue(data); - + if (string.IsNullOrEmpty(SoundName?.Trim())) throw new ArgumentNullException($"Can not serialize SoundEventSubComponent due to SoundName being null or empty!"); - + data.AddRange(DataTypes.GetString(SoundName)); data.AddRange(DataTypes.GetBool(HasFixedRange)); - - if(HasFixedRange) + + if (HasFixedRange) data.AddRange(DataTypes.GetFloat(FixedRange)); return new Queue(data); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/TypedEntityDataComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/TypedEntityDataComponent.cs new file mode 100644 index 00000000..ab7ae279 --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Components/TypedEntityDataComponent.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Components; + +public class TypedEntityDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : StructuredComponent(dataTypes, itemPalette, subComponentRegistry) +{ + public int EntityTypeId { get; set; } + public Dictionary? Nbt { get; set; } + + public override void Parse(Queue data) + { + EntityTypeId = DataTypes.ReadNextVarInt(data); + Nbt = DataTypes.ReadNextNbt(data); + } + + public override Queue Serialize() + { + var data = new List(); + data.AddRange(DataTypes.GetVarInt(EntityTypeId)); + data.AddRange(DataTypes.GetNbt(Nbt)); + return new Queue(data); + } +} + +public class TypedBlockEntityDataComponent(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : TypedEntityDataComponent(dataTypes, itemPalette, subComponentRegistry) +{ } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/StructuredComponent.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/StructuredComponent.cs index 2c0b66e3..5fa5f82d 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/StructuredComponent.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/StructuredComponent.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Text.Json.Serialization; using MinecraftClient.Inventory.ItemPalettes; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Core; @@ -12,8 +13,15 @@ public abstract class StructuredComponent(DataTypes dataTypes, ItemPalette itemP /// /// The registry type ID assigned during parsing, used for round-trip serialization. /// + [JsonIgnore] public int TypeId { get; set; } = -1; + /// + /// The registry name assigned during parsing (e.g. "minecraft:custom_data"), used for NBT serialization. + /// + [JsonIgnore] + public string ComponentName { get; set; } = string.Empty; + public abstract void Parse(Queue data); public abstract Queue Serialize(); } \ No newline at end of file diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/StructuredComponentRegistry.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/StructuredComponentRegistry.cs index 3ae07057..805f2a79 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/StructuredComponentRegistry.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/StructuredComponentRegistry.cs @@ -33,10 +33,11 @@ public abstract class StructuredComponentRegistry(DataTypes dataTypes, ItemPalet if (ComponentParsers.TryGetValue(name, out var type)) { var component = - Activator.CreateInstance(type, dataTypes, itemPalette, subComponentRegistry) as StructuredComponent + Activator.CreateInstance(type, dataTypes, itemPalette, subComponentRegistry) as StructuredComponent ?? throw new InvalidOperationException($"Could not instantiate a parser for a structured component type {name}"); component.TypeId = id; + component.ComponentName = name; component.Parse(data); return component; } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/SubComponentRegistry.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/SubComponentRegistry.cs index 4a991fd7..0da8120b 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/SubComponentRegistry.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Core/SubComponentRegistry.cs @@ -10,7 +10,7 @@ public abstract class SubComponentRegistry(DataTypes dataTypes) protected void RegisterSubComponent(string name) where T : SubComponent { - if(_subComponentParsers.TryGetValue(name, out _)) + if (_subComponentParsers.TryGetValue(name, out _)) throw new Exception($"Sub component {name} already registered!"); _subComponentParsers.Add(name, typeof(T)); @@ -23,17 +23,17 @@ public abstract class SubComponentRegistry(DataTypes dataTypes) public SubComponent ParseSubComponent(string name, Queue data) { - if(!_subComponentParsers.TryGetValue(name, out var subComponentParserType)) + if (!_subComponentParsers.TryGetValue(name, out var subComponentParserType)) throw new Exception($"Sub component {name} not registered!"); - var instance= Activator.CreateInstance(subComponentParserType, dataTypes, this) as SubComponent ?? + var instance = Activator.CreateInstance(subComponentParserType, dataTypes, this) as SubComponent ?? throw new InvalidOperationException($"Could not create instance of a sub component parser type: {subComponentParserType.Name}"); - + var parseMethod = instance.GetType().GetMethod("Parse", BindingFlags.Instance | BindingFlags.NonPublic); - + if (parseMethod is null) throw new InvalidOperationException($"Sub component parser type {subComponentParserType.Name} does not have a Parse method."); - + parseMethod.Invoke(instance, new object[] { data }); return instance; } diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1206.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1206.cs index 2e0a9eb4..8f5dee2e 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1206.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1206.cs @@ -6,14 +6,14 @@ namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Registries; public class StructuredComponentsRegistry1206 : StructuredComponentRegistry { - public StructuredComponentsRegistry1206(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + public StructuredComponentsRegistry1206(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : base(dataTypes, itemPalette, subComponentRegistry) { RegisterComponent(0, "minecraft:custom_data"); RegisterComponent(1, "minecraft:max_stack_size"); RegisterComponent(2, "minecraft:max_damage"); RegisterComponent(3, "minecraft:damage"); - RegisterComponent(4, "minecraft:unbreakable"); + RegisterComponent(4, "minecraft:unbreakable"); RegisterComponent(5, "minecraft:custom_name"); RegisterComponent(6, "minecraft:item_name"); RegisterComponent(7, "minecraft:lore"); @@ -29,7 +29,7 @@ public class StructuredComponentsRegistry1206 : StructuredComponentRegistry RegisterComponent(17, "minecraft:creative_slot_lock"); RegisterComponent(18, "minecraft:enchantment_glint_override"); RegisterComponent(19, "minecraft:intangible_projectile"); - RegisterComponent(20, "minecraft:food"); + RegisterComponent(20, "minecraft:food"); RegisterComponent(21, "minecraft:fire_resistant"); RegisterComponent(22, "minecraft:tool"); RegisterComponent(23, "minecraft:stored_enchantments"); @@ -42,15 +42,15 @@ public class StructuredComponentsRegistry1206 : StructuredComponentRegistry RegisterComponent(30, "minecraft:bundle_contents"); RegisterComponent(31, "minecraft:potion_contents"); RegisterComponent(32, "minecraft:suspicious_stew_effects"); - RegisterComponent(33, "minecraft:writable_book_content"); - RegisterComponent(34, "minecraft:written_book_content"); + RegisterComponent(33, "minecraft:writable_book_content"); + RegisterComponent(34, "minecraft:written_book_content"); RegisterComponent(35, "minecraft:trim"); RegisterComponent(36, "minecraft:debug_stick_state"); RegisterComponent(37, "minecraft:entity_data"); RegisterComponent(38, "minecraft:bucket_entity_data"); RegisterComponent(39, "minecraft:block_entity_data"); RegisterComponent(40, "minecraft:instrument"); - RegisterComponent(41, "minecraft:ominous_bottle_amplifier"); + RegisterComponent(41, "minecraft:ominous_bottle_amplifier"); RegisterComponent(42, "minecraft:recipes"); RegisterComponent(43, "minecraft:lodestone_tracker"); RegisterComponent(44, "minecraft:firework_explosion"); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry121.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry121.cs index 922c1d90..5e22bd78 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry121.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry121.cs @@ -7,14 +7,14 @@ namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Registries; public class StructuredComponentsRegistry121 : StructuredComponentRegistry { - public StructuredComponentsRegistry121(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + public StructuredComponentsRegistry121(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : base(dataTypes, itemPalette, subComponentRegistry) { RegisterComponent(0, "minecraft:custom_data"); RegisterComponent(1, "minecraft:max_stack_size"); RegisterComponent(2, "minecraft:max_damage"); RegisterComponent(3, "minecraft:damage"); - RegisterComponent(4, "minecraft:unbreakable"); + RegisterComponent(4, "minecraft:unbreakable"); RegisterComponent(5, "minecraft:custom_name"); RegisterComponent(6, "minecraft:item_name"); RegisterComponent(7, "minecraft:lore"); @@ -30,7 +30,7 @@ public class StructuredComponentsRegistry121 : StructuredComponentRegistry RegisterComponent(17, "minecraft:creative_slot_lock"); RegisterComponent(18, "minecraft:enchantment_glint_override"); RegisterComponent(19, "minecraft:intangible_projectile"); - RegisterComponent(20, "minecraft:food"); + RegisterComponent(20, "minecraft:food"); RegisterComponent(21, "minecraft:fire_resistant"); RegisterComponent(22, "minecraft:tool"); RegisterComponent(23, "minecraft:stored_enchantments"); @@ -43,15 +43,15 @@ public class StructuredComponentsRegistry121 : StructuredComponentRegistry RegisterComponent(30, "minecraft:bundle_contents"); RegisterComponent(31, "minecraft:potion_contents"); RegisterComponent(32, "minecraft:suspicious_stew_effects"); - RegisterComponent(33, "minecraft:writable_book_content"); - RegisterComponent(34, "minecraft:written_book_content"); + RegisterComponent(33, "minecraft:writable_book_content"); + RegisterComponent(34, "minecraft:written_book_content"); RegisterComponent(35, "minecraft:trim"); RegisterComponent(36, "minecraft:debug_stick_state"); RegisterComponent(37, "minecraft:entity_data"); RegisterComponent(38, "minecraft:bucket_entity_data"); RegisterComponent(39, "minecraft:block_entity_data"); RegisterComponent(40, "minecraft:instrument"); - RegisterComponent(41, "minecraft:ominous_bottle_amplifier"); + RegisterComponent(41, "minecraft:ominous_bottle_amplifier"); RegisterComponent(42, "minecraft:jukebox_playable"); RegisterComponent(43, "minecraft:recipes"); RegisterComponent(44, "minecraft:lodestone_tracker"); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry12111.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry12111.cs index 7788f0c2..0be0c7d2 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry12111.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry12111.cs @@ -7,6 +7,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_5; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_8; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_9; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_11; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Registries; @@ -68,16 +69,16 @@ public class StructuredComponentsRegistry12111 : StructuredComponentRegistry RegisterComponent(49, "minecraft:potion_contents"); RegisterComponent(50, "minecraft:potion_duration_scale"); RegisterComponent(51, "minecraft:suspicious_stew_effects"); - RegisterComponent(52, "minecraft:writable_book_content"); - RegisterComponent(53, "minecraft:written_book_content"); + RegisterComponent(52, "minecraft:writable_book_content"); + RegisterComponent(53, "minecraft:written_book_content"); RegisterComponent(54, "minecraft:trim"); RegisterComponent(55, "minecraft:debug_stick_state"); - RegisterComponent(56, "minecraft:entity_data"); + RegisterComponent(56, "minecraft:entity_data"); RegisterComponent(57, "minecraft:bucket_entity_data"); - RegisterComponent(58, "minecraft:block_entity_data"); + RegisterComponent(58, "minecraft:block_entity_data"); RegisterComponent(59, "minecraft:instrument"); RegisterComponent(60, "minecraft:provides_trim_material"); - RegisterComponent(61, "minecraft:ominous_bottle_amplifier"); + RegisterComponent(61, "minecraft:ominous_bottle_amplifier"); RegisterComponent(62, "minecraft:jukebox_playable"); RegisterComponent(63, "minecraft:provides_banner_patterns"); RegisterComponent(64, "minecraft:recipes"); @@ -110,7 +111,7 @@ public class StructuredComponentsRegistry12111 : StructuredComponentRegistry RegisterComponent(90, "minecraft:rabbit/variant"); RegisterComponent(91, "minecraft:pig/variant"); RegisterComponent(92, "minecraft:cow/variant"); - RegisterComponent(93, "minecraft:chicken/variant"); + RegisterComponent(93, "minecraft:chicken/variant"); RegisterComponent(94, "minecraft:zombie_nautilus/variant"); RegisterComponent(95, "minecraft:frog/variant"); RegisterComponent(96, "minecraft:horse/variant"); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1212.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1212.cs index 79c9475e..ffe89d0f 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1212.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1212.cs @@ -15,7 +15,7 @@ public class StructuredComponentsRegistry1212 : StructuredComponentRegistry RegisterComponent(1, "minecraft:max_stack_size"); RegisterComponent(2, "minecraft:max_damage"); RegisterComponent(3, "minecraft:damage"); - RegisterComponent(4, "minecraft:unbreakable"); + RegisterComponent(4, "minecraft:unbreakable"); RegisterComponent(5, "minecraft:custom_name"); RegisterComponent(6, "minecraft:item_name"); RegisterComponent(7, "minecraft:item_model"); @@ -25,7 +25,10 @@ public class StructuredComponentsRegistry1212 : StructuredComponentRegistry RegisterComponent(11, "minecraft:can_place_on"); RegisterComponent(12, "minecraft:can_break"); RegisterComponent(13, "minecraft:attribute_modifiers"); - RegisterComponent(14, "minecraft:custom_model_data"); + if (dataTypes.ProtocolVersion >= Protocol18Handler.MC_1_21_4_Version) + RegisterComponent(14, "minecraft:custom_model_data"); + else + RegisterComponent(14, "minecraft:custom_model_data"); RegisterComponent(15, "minecraft:hide_additional_tooltip"); RegisterComponent(16, "minecraft:hide_tooltip"); RegisterComponent(17, "minecraft:repair_cost"); @@ -54,15 +57,15 @@ public class StructuredComponentsRegistry1212 : StructuredComponentRegistry RegisterComponent(40, "minecraft:bundle_contents"); RegisterComponent(41, "minecraft:potion_contents"); RegisterComponent(42, "minecraft:suspicious_stew_effects"); - RegisterComponent(43, "minecraft:writable_book_content"); - RegisterComponent(44, "minecraft:written_book_content"); + RegisterComponent(43, "minecraft:writable_book_content"); + RegisterComponent(44, "minecraft:written_book_content"); RegisterComponent(45, "minecraft:trim"); RegisterComponent(46, "minecraft:debug_stick_state"); RegisterComponent(47, "minecraft:entity_data"); RegisterComponent(48, "minecraft:bucket_entity_data"); RegisterComponent(49, "minecraft:block_entity_data"); RegisterComponent(50, "minecraft:instrument"); - RegisterComponent(51, "minecraft:ominous_bottle_amplifier"); + RegisterComponent(51, "minecraft:ominous_bottle_amplifier"); RegisterComponent(52, "minecraft:jukebox_playable"); RegisterComponent(53, "minecraft:recipes"); RegisterComponent(54, "minecraft:lodestone_tracker"); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1215.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1215.cs index cca30281..d78d87b9 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1215.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry1215.cs @@ -6,6 +6,7 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_2; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_5; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_8; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_9; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_11; using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Registries; @@ -15,8 +16,9 @@ public class StructuredComponentsRegistry1215 : StructuredComponentRegistry public StructuredComponentsRegistry1215(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) : base(dataTypes, itemPalette, subComponentRegistry) { - var uses1218AttributeAndEquippableFormats = dataTypes.ProtocolVersion >= Protocol18Handler.MC_1_21_6_Version; + var uses1216AttributeAndEquippableFormats = dataTypes.ProtocolVersion >= Protocol18Handler.MC_1_21_6_Version; var usesTypedBeesFormat = dataTypes.ProtocolVersion >= Protocol18Handler.MC_1_21_9_Version; + var usesTypedEntityDataFormat = dataTypes.ProtocolVersion >= Protocol18Handler.MC_1_21_9_Version; RegisterComponent(0, "minecraft:custom_data"); RegisterComponent(1, "minecraft:max_stack_size"); @@ -31,7 +33,7 @@ public class StructuredComponentsRegistry1215 : StructuredComponentRegistry RegisterComponent(10, "minecraft:enchantments"); RegisterComponent(11, "minecraft:can_place_on"); RegisterComponent(12, "minecraft:can_break"); - if (uses1218AttributeAndEquippableFormats) + if (uses1216AttributeAndEquippableFormats) RegisterComponent(13, "minecraft:attribute_modifiers"); else RegisterComponent(13, "minecraft:attribute_modifiers"); @@ -50,7 +52,7 @@ public class StructuredComponentsRegistry1215 : StructuredComponentRegistry RegisterComponent(25, "minecraft:tool"); RegisterComponent(26, "minecraft:weapon"); // NEW RegisterComponent(27, "minecraft:enchantable"); - if (uses1218AttributeAndEquippableFormats) + if (uses1216AttributeAndEquippableFormats) RegisterComponent(28, "minecraft:equippable"); else RegisterComponent(28, "minecraft:equippable"); @@ -70,16 +72,22 @@ public class StructuredComponentsRegistry1215 : StructuredComponentRegistry RegisterComponent(42, "minecraft:potion_contents"); RegisterComponent(43, "minecraft:potion_duration_scale"); // NEW RegisterComponent(44, "minecraft:suspicious_stew_effects"); - RegisterComponent(45, "minecraft:writable_book_content"); - RegisterComponent(46, "minecraft:written_book_content"); + RegisterComponent(45, "minecraft:writable_book_content"); + RegisterComponent(46, "minecraft:written_book_content"); RegisterComponent(47, "minecraft:trim"); RegisterComponent(48, "minecraft:debug_stick_state"); - RegisterComponent(49, "minecraft:entity_data"); + if (usesTypedEntityDataFormat) + RegisterComponent(49, "minecraft:entity_data"); + else + RegisterComponent(49, "minecraft:entity_data"); RegisterComponent(50, "minecraft:bucket_entity_data"); - RegisterComponent(51, "minecraft:block_entity_data"); + if (usesTypedEntityDataFormat) + RegisterComponent(51, "minecraft:block_entity_data"); + else + RegisterComponent(51, "minecraft:block_entity_data"); RegisterComponent(52, "minecraft:instrument"); // Changed to EitherHolder in 1.21.5 RegisterComponent(53, "minecraft:provides_trim_material"); // NEW - RegisterComponent(54, "minecraft:ominous_bottle_amplifier"); + RegisterComponent(54, "minecraft:ominous_bottle_amplifier"); RegisterComponent(55, "minecraft:jukebox_playable"); RegisterComponent(56, "minecraft:provides_banner_patterns"); // NEW RegisterComponent(57, "minecraft:recipes"); @@ -116,7 +124,7 @@ public class StructuredComponentsRegistry1215 : StructuredComponentRegistry RegisterComponent(83, "minecraft:rabbit/variant"); RegisterComponent(84, "minecraft:pig/variant"); RegisterComponent(85, "minecraft:cow/variant"); - RegisterComponent(86, "minecraft:chicken/variant"); // EitherHolder + RegisterComponent(86, "minecraft:chicken/variant"); // EitherHolder RegisterComponent(87, "minecraft:frog/variant"); RegisterComponent(88, "minecraft:horse/variant"); RegisterComponent(89, "minecraft:painting/variant"); // Holder diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry261.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry261.cs index eff20fe7..c0b4281d 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry261.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry261.cs @@ -4,7 +4,10 @@ using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_2; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_5; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_8; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_9; using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_11; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Registries; @@ -22,7 +25,7 @@ public class StructuredComponentsRegistry261 : StructuredComponentRegistry RegisterComponent(5, "minecraft:use_effects"); RegisterComponent(6, "minecraft:custom_name"); RegisterComponent(7, "minecraft:minimum_attack_charge"); - RegisterComponent(8, "minecraft:damage_type"); + RegisterComponent(8, "minecraft:damage_type"); RegisterComponent(9, "minecraft:item_name"); RegisterComponent(10, "minecraft:item_model"); RegisterComponent(11, "minecraft:lore"); @@ -30,7 +33,7 @@ public class StructuredComponentsRegistry261 : StructuredComponentRegistry RegisterComponent(13, "minecraft:enchantments"); RegisterComponent(14, "minecraft:can_place_on"); RegisterComponent(15, "minecraft:can_break"); - RegisterComponent(16, "minecraft:attribute_modifiers"); + RegisterComponent(16, "minecraft:attribute_modifiers"); RegisterComponent(17, "minecraft:custom_model_data"); RegisterComponent(18, "minecraft:tooltip_display"); RegisterComponent(19, "minecraft:repair_cost"); @@ -39,14 +42,14 @@ public class StructuredComponentsRegistry261 : StructuredComponentRegistry RegisterComponent(22, "minecraft:intangible_projectile"); RegisterComponent(23, "minecraft:food"); RegisterComponent(24, "minecraft:consumable"); - RegisterComponent(25, "minecraft:use_remainder"); + RegisterComponent(25, "minecraft:use_remainder"); RegisterComponent(26, "minecraft:use_cooldown"); - RegisterComponent(27, "minecraft:damage_resistant"); - RegisterComponent(28, "minecraft:tool"); + RegisterComponent(27, "minecraft:damage_resistant"); + RegisterComponent(28, "minecraft:tool"); RegisterComponent(29, "minecraft:weapon"); RegisterComponent(30, "minecraft:attack_range"); RegisterComponent(31, "minecraft:enchantable"); - RegisterComponent(32, "minecraft:equippable"); + RegisterComponent(32, "minecraft:equippable"); RegisterComponent(33, "minecraft:repairable"); RegisterComponent(34, "minecraft:glider"); RegisterComponent(35, "minecraft:tooltip_style"); @@ -63,24 +66,24 @@ public class StructuredComponentsRegistry261 : StructuredComponentRegistry RegisterComponent(46, "minecraft:map_id"); RegisterComponent(47, "minecraft:map_decorations"); RegisterComponent(48, "minecraft:map_post_processing"); - RegisterComponent(49, "minecraft:charged_projectiles"); - RegisterComponent(50, "minecraft:bundle_contents"); - RegisterComponent(51, "minecraft:potion_contents"); + RegisterComponent(49, "minecraft:charged_projectiles"); + RegisterComponent(50, "minecraft:bundle_contents"); + RegisterComponent(51, "minecraft:potion_contents"); RegisterComponent(52, "minecraft:potion_duration_scale"); RegisterComponent(53, "minecraft:suspicious_stew_effects"); - RegisterComponent(54, "minecraft:writable_book_content"); - RegisterComponent(55, "minecraft:written_book_content"); + RegisterComponent(54, "minecraft:writable_book_content"); + RegisterComponent(55, "minecraft:written_book_content"); RegisterComponent(56, "minecraft:trim"); RegisterComponent(57, "minecraft:debug_stick_state"); - RegisterComponent(58, "minecraft:entity_data"); + RegisterComponent(58, "minecraft:entity_data"); RegisterComponent(59, "minecraft:bucket_entity_data"); - RegisterComponent(60, "minecraft:block_entity_data"); - RegisterComponent(61, "minecraft:instrument"); - RegisterComponent(62, "minecraft:provides_trim_material"); - RegisterComponent(63, "minecraft:ominous_bottle_amplifier"); - RegisterComponent(64, "minecraft:jukebox_playable"); - RegisterComponent(65, "minecraft:provides_banner_patterns"); - RegisterComponent(66, "minecraft:recipes"); + RegisterComponent(60, "minecraft:block_entity_data"); + RegisterComponent(61, "minecraft:instrument"); + RegisterComponent(62, "minecraft:provides_trim_material"); + RegisterComponent(63, "minecraft:ominous_bottle_amplifier"); + RegisterComponent(64, "minecraft:jukebox_playable"); + RegisterComponent(65, "minecraft:provides_banner_patterns"); + RegisterComponent(66, "minecraft:recipes"); RegisterComponent(67, "minecraft:lodestone_tracker"); RegisterComponent(68, "minecraft:firework_explosion"); RegisterComponent(69, "minecraft:fireworks"); @@ -89,9 +92,9 @@ public class StructuredComponentsRegistry261 : StructuredComponentRegistry RegisterComponent(72, "minecraft:banner_patterns"); RegisterComponent(73, "minecraft:base_color"); RegisterComponent(74, "minecraft:pot_decorations"); - RegisterComponent(75, "minecraft:container"); + RegisterComponent(75, "minecraft:container"); RegisterComponent(76, "minecraft:block_state"); - RegisterComponent(77, "minecraft:bees"); + RegisterComponent(77, "minecraft:bees"); RegisterComponent(78, "minecraft:lock"); RegisterComponent(79, "minecraft:container_loot"); @@ -112,9 +115,9 @@ public class StructuredComponentsRegistry261 : StructuredComponentRegistry RegisterComponent(94, "minecraft:pig/sound_variant"); // New in 26.1 RegisterComponent(95, "minecraft:cow/variant"); RegisterComponent(96, "minecraft:cow/sound_variant"); // New in 26.1 - RegisterComponent(97, "minecraft:chicken/variant"); + RegisterComponent(97, "minecraft:chicken/variant"); RegisterComponent(98, "minecraft:chicken/sound_variant"); // New in 26.1 - RegisterComponent(99, "minecraft:zombie_nautilus/variant"); + RegisterComponent(99, "minecraft:zombie_nautilus/variant"); RegisterComponent(100, "minecraft:frog/variant"); RegisterComponent(101, "minecraft:horse/variant"); RegisterComponent(102, "minecraft:painting/variant"); diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry262.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry262.cs new file mode 100644 index 00000000..85d04ee9 --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/Registries/StructuredComponentsRegistry262.cs @@ -0,0 +1,134 @@ +using MinecraftClient.Inventory.ItemPalettes; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_2; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_5; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_8; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_9; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_21_11; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_1; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._26_2; +using MinecraftClient.Protocol.Handlers.StructuredComponents.Core; + +namespace MinecraftClient.Protocol.Handlers.StructuredComponents.Registries; + +public class StructuredComponentsRegistry262 : StructuredComponentRegistry +{ + public StructuredComponentsRegistry262(DataTypes dataTypes, ItemPalette itemPalette, SubComponentRegistry subComponentRegistry) + : base(dataTypes, itemPalette, subComponentRegistry) + { + RegisterComponent(0, "minecraft:custom_data"); + RegisterComponent(1, "minecraft:max_stack_size"); + RegisterComponent(2, "minecraft:max_damage"); + RegisterComponent(3, "minecraft:damage"); + RegisterComponent(4, "minecraft:unbreakable"); + RegisterComponent(5, "minecraft:use_effects"); + RegisterComponent(6, "minecraft:custom_name"); + RegisterComponent(7, "minecraft:minimum_attack_charge"); + RegisterComponent(8, "minecraft:damage_type"); + RegisterComponent(9, "minecraft:item_name"); + RegisterComponent(10, "minecraft:item_model"); + RegisterComponent(11, "minecraft:lore"); + RegisterComponent(12, "minecraft:rarity"); + RegisterComponent(13, "minecraft:enchantments"); + RegisterComponent(14, "minecraft:can_place_on"); + RegisterComponent(15, "minecraft:can_break"); + RegisterComponent(16, "minecraft:attribute_modifiers"); + RegisterComponent(17, "minecraft:custom_model_data"); + RegisterComponent(18, "minecraft:tooltip_display"); + RegisterComponent(19, "minecraft:repair_cost"); + RegisterComponent(20, "minecraft:creative_slot_lock"); + RegisterComponent(21, "minecraft:enchantment_glint_override"); + RegisterComponent(22, "minecraft:intangible_projectile"); + RegisterComponent(23, "minecraft:food"); + RegisterComponent(24, "minecraft:consumable"); + RegisterComponent(25, "minecraft:use_remainder"); + RegisterComponent(26, "minecraft:use_cooldown"); + RegisterComponent(27, "minecraft:damage_resistant"); + RegisterComponent(28, "minecraft:tool"); + RegisterComponent(29, "minecraft:weapon"); + RegisterComponent(30, "minecraft:attack_range"); + RegisterComponent(31, "minecraft:enchantable"); + RegisterComponent(32, "minecraft:equippable"); + RegisterComponent(33, "minecraft:repairable"); + RegisterComponent(34, "minecraft:glider"); + RegisterComponent(35, "minecraft:tooltip_style"); + RegisterComponent(36, "minecraft:death_protection"); + RegisterComponent(37, "minecraft:blocks_attacks"); + RegisterComponent(38, "minecraft:piercing_weapon"); + RegisterComponent(39, "minecraft:kinetic_weapon"); + RegisterComponent(40, "minecraft:swing_animation"); + RegisterComponent(41, "minecraft:additional_trade_cost"); // New in 26.1 + RegisterComponent(42, "minecraft:stored_enchantments"); + RegisterComponent(43, "minecraft:dye"); // New in 26.1 + RegisterComponent(44, "minecraft:dyed_color"); + RegisterComponent(45, "minecraft:map_color"); + RegisterComponent(46, "minecraft:map_id"); + RegisterComponent(47, "minecraft:map_decorations"); + RegisterComponent(48, "minecraft:map_post_processing"); + RegisterComponent(49, "minecraft:charged_projectiles"); + RegisterComponent(50, "minecraft:bundle_contents"); + RegisterComponent(51, "minecraft:potion_contents"); + RegisterComponent(52, "minecraft:potion_duration_scale"); + RegisterComponent(53, "minecraft:suspicious_stew_effects"); + RegisterComponent(54, "minecraft:writable_book_content"); + RegisterComponent(55, "minecraft:written_book_content"); + RegisterComponent(56, "minecraft:trim"); + RegisterComponent(57, "minecraft:debug_stick_state"); + RegisterComponent(58, "minecraft:entity_data"); + RegisterComponent(59, "minecraft:bucket_entity_data"); + RegisterComponent(60, "minecraft:block_entity_data"); + RegisterComponent(61, "minecraft:instrument"); + RegisterComponent(62, "minecraft:provides_trim_material"); + RegisterComponent(63, "minecraft:ominous_bottle_amplifier"); + RegisterComponent(64, "minecraft:jukebox_playable"); + RegisterComponent(65, "minecraft:provides_banner_patterns"); + RegisterComponent(66, "minecraft:recipes"); + RegisterComponent(67, "minecraft:lodestone_tracker"); + RegisterComponent(68, "minecraft:firework_explosion"); + RegisterComponent(69, "minecraft:fireworks"); + RegisterComponent(70, "minecraft:profile"); + RegisterComponent(71, "minecraft:note_block_sound"); + RegisterComponent(72, "minecraft:banner_patterns"); + RegisterComponent(73, "minecraft:base_color"); + RegisterComponent(74, "minecraft:pot_decorations"); + RegisterComponent(75, "minecraft:container"); + RegisterComponent(76, "minecraft:block_state"); + RegisterComponent(77, "minecraft:bees"); + RegisterComponent(78, "minecraft:sulfur_cube_content"); // New in 26.2 + RegisterComponent(79, "minecraft:lock"); + RegisterComponent(80, "minecraft:container_loot"); + + RegisterComponent(81, "minecraft:break_sound"); + RegisterComponent(82, "minecraft:villager/variant"); + RegisterComponent(83, "minecraft:wolf/variant"); + RegisterComponent(84, "minecraft:wolf/sound_variant"); + RegisterComponent(85, "minecraft:wolf/collar"); + RegisterComponent(86, "minecraft:fox/variant"); + RegisterComponent(87, "minecraft:salmon/size"); + RegisterComponent(88, "minecraft:parrot/variant"); + RegisterComponent(89, "minecraft:tropical_fish/pattern"); + RegisterComponent(90, "minecraft:tropical_fish/base_color"); + RegisterComponent(91, "minecraft:tropical_fish/pattern_color"); + RegisterComponent(92, "minecraft:mooshroom/variant"); + RegisterComponent(93, "minecraft:rabbit/variant"); + RegisterComponent(94, "minecraft:pig/variant"); + RegisterComponent(95, "minecraft:pig/sound_variant"); // New in 26.1 + RegisterComponent(96, "minecraft:cow/variant"); + RegisterComponent(97, "minecraft:cow/sound_variant"); // New in 26.1 + RegisterComponent(98, "minecraft:chicken/variant"); + RegisterComponent(99, "minecraft:chicken/sound_variant"); // New in 26.1 + RegisterComponent(100, "minecraft:zombie_nautilus/variant"); + RegisterComponent(101, "minecraft:frog/variant"); + RegisterComponent(102, "minecraft:horse/variant"); + RegisterComponent(103, "minecraft:painting/variant"); + RegisterComponent(104, "minecraft:llama/variant"); + RegisterComponent(105, "minecraft:axolotl/variant"); + RegisterComponent(106, "minecraft:cat/variant"); + RegisterComponent(107, "minecraft:cat/sound_variant"); // New in 26.1 + RegisterComponent(108, "minecraft:cat/collar"); + RegisterComponent(109, "minecraft:sheep/color"); + RegisterComponent(110, "minecraft:shulker/color"); + } +} diff --git a/MinecraftClient/Protocol/Handlers/StructuredComponents/StructuredComponentsHandler.cs b/MinecraftClient/Protocol/Handlers/StructuredComponents/StructuredComponentsHandler.cs index bd148ab3..6214b2f5 100644 --- a/MinecraftClient/Protocol/Handlers/StructuredComponents/StructuredComponentsHandler.cs +++ b/MinecraftClient/Protocol/Handlers/StructuredComponents/StructuredComponentsHandler.cs @@ -10,7 +10,7 @@ namespace MinecraftClient.Protocol.Handlers.StructuredComponents; public class StructuredComponentsHandler { private StructuredComponentRegistry ComponentRegistry { get; } - + public StructuredComponentsHandler( int protocolVersion, DataTypes dataTypes, @@ -25,14 +25,15 @@ public class StructuredComponentsHandler _ => throw new NotSupportedException($"Protocol version {protocolVersion} is not supported for subcomponent registries!") }; - var subcomponentRegistry = Activator.CreateInstance(subcomponentRegistryType, dataTypes) as SubComponentRegistry + var subcomponentRegistry = Activator.CreateInstance(subcomponentRegistryType, dataTypes) as SubComponentRegistry ?? throw new InvalidOperationException($"Failed to instantiate a component registry for type {nameof(subcomponentRegistryType)}"); - + // Get the appropriate component registry type based on the protocol version and then instantiate it var registryType = protocolVersion switch { Protocol18Handler.MC_1_20_6_Version => typeof(StructuredComponentsRegistry1206), Protocol18Handler.MC_1_21_Version => typeof(StructuredComponentsRegistry121), + >= Protocol18Handler.MC_26_2_Version => typeof(StructuredComponentsRegistry262), >= Protocol18Handler.MC_26_1_Version => typeof(StructuredComponentsRegistry261), >= Protocol18Handler.MC_1_21_11_Version => typeof(StructuredComponentsRegistry12111), >= Protocol18Handler.MC_1_21_5_Version => typeof(StructuredComponentsRegistry1215), @@ -40,7 +41,7 @@ public class StructuredComponentsHandler _ => throw new NotSupportedException($"Protocol version {protocolVersion} is not supported for structured component registries!") }; - ComponentRegistry = Activator.CreateInstance(registryType, dataTypes, itemPalette, subcomponentRegistry) as StructuredComponentRegistry + ComponentRegistry = Activator.CreateInstance(registryType, dataTypes, itemPalette, subcomponentRegistry) as StructuredComponentRegistry ?? throw new InvalidOperationException($"Failed to instantiate a component registry for type {nameof(registryType)}"); } diff --git a/MinecraftClient/Protocol/IMinecraftCom.cs b/MinecraftClient/Protocol/IMinecraftCom.cs index 96b261b1..ee604ceb 100644 --- a/MinecraftClient/Protocol/IMinecraftCom.cs +++ b/MinecraftClient/Protocol/IMinecraftCom.cs @@ -48,6 +48,14 @@ namespace MinecraftClient.Protocol /// True if successfully sent bool SendChatMessage(string message, PlayerKeyPair? playerKeyPair = null); + /// + /// Send a custom click action packet introduced for dialogs in Minecraft 1.21.6. + /// + /// Custom action resource location + /// Optional NBT payload + /// True if successfully sent + bool SendCustomClickAction(string id, Dictionary? payload); + /// /// Allow to respawn after death /// @@ -199,6 +207,17 @@ namespace MinecraftClient.Protocol /// True if packet was successfully sent bool SendPlaceRecipe(int windowId, string recipeId, bool makeAll); + /// + /// Send a book edit/sign packet for the currently held writable book. + /// + /// Current held writable book + /// Book pages + /// Title when signing, otherwise null + /// Current player name when signing + /// Selected hotbar slot, 0-8 + /// True if packet was successfully sent + bool SendEditBook(Item currentBook, IReadOnlyList pages, string? title, string author, int selectedHotbarSlot); + /// /// Plays animation /// @@ -271,7 +290,7 @@ namespace MinecraftClient.Protocol /// /// bool SendPlayerSession(PlayerKeyPair? playerKeyPair); - + /// /// Send the server a command to type in the item name in the Anvil inventory when it's open. /// @@ -290,7 +309,7 @@ namespace MinecraftClient.Protocol /// The cookie identifier/name /// The cookie data byte array bool SendCookieResponse(string name, byte[]? data); - + /// /// Send the server known data packs /// diff --git a/MinecraftClient/Protocol/IMinecraftComHandler.cs b/MinecraftClient/Protocol/IMinecraftComHandler.cs index 5c100981..447c7287 100644 --- a/MinecraftClient/Protocol/IMinecraftComHandler.cs +++ b/MinecraftClient/Protocol/IMinecraftComHandler.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using MinecraftClient.Dialogs; using MinecraftClient.Inventory; using MinecraftClient.Logger; using MinecraftClient.Mapping; @@ -49,7 +50,7 @@ namespace MinecraftClient.Protocol void DeleteCookie(string key); void Transfer(string newHost, int newPort); - + /// /// Invoke a task on the main thread, wait for completion and retrieve return value. /// @@ -93,6 +94,31 @@ namespace MinecraftClient.Protocol /// Message received public void OnTextReceived(ChatMessage message); + /// + /// Called when the server synchronizes a dialog registry entry. + /// + void OnDialogRegistryData(int protocolId, string resourceId, DialogDefinition dialog); + + /// + /// Called when the server shows a custom dialog. + /// + void OnDialogShown(DialogDefinition dialog, DialogPhase phase); + + /// + /// Called when the server shows a custom dialog by registry protocol ID. + /// + void OnDialogRegistryReferenceShown(int protocolId, DialogPhase phase); + + /// + /// Called when the server clears the current custom dialog. + /// + void OnDialogCleared(); + + /// + /// Called when the server sends updated server links. + /// + void OnServerLinksUpdated(IReadOnlyList links); + /// /// Will be called every animations of the hit and place block /// @@ -224,6 +250,12 @@ namespace MinecraftClient.Protocol /// The data from the channel void OnPluginChannelMessage(string channel, byte[] data); + /// + /// Called when the server asks the client to open a book UI. + /// + /// Book hand, 0 main hand, 1 off hand. + void OnBookOpen(int hand); + /// /// Called when an entity has spawned /// @@ -512,7 +544,7 @@ namespace MinecraftClient.Protocol /// Header /// Footer void OnTabListHeaderAndFooter(string header, string footer); - + /// /// Called when tradeList is received from server /// @@ -598,7 +630,7 @@ namespace MinecraftClient.Protocol /// True if packet was successfully sent bool ClickContainerButton(int windowId, int buttonId); - + /// /// Send a rename item packet when the anvil inventory is open and there is an item in the first slot /// diff --git a/MinecraftClient/Protocol/Message/ChatMessage.cs b/MinecraftClient/Protocol/Message/ChatMessage.cs index 832fa19b..762bab5f 100644 --- a/MinecraftClient/Protocol/Message/ChatMessage.cs +++ b/MinecraftClient/Protocol/Message/ChatMessage.cs @@ -35,6 +35,8 @@ namespace MinecraftClient.Protocol.Message public bool? isSignatureLegal; + internal ChatParser.ChatTypeDecoration? chatTypeDecoration; + public ChatMessage(string content, bool isJson, int chatType, Guid senderUUID, string? unsignedContent, string displayName, string? teamName, long timestamp, byte[]? signature, bool isSignatureLegal) { isSignedChat = true; diff --git a/MinecraftClient/Protocol/Message/ChatParser.cs b/MinecraftClient/Protocol/Message/ChatParser.cs index e0954ee2..269340ce 100644 --- a/MinecraftClient/Protocol/Message/ChatParser.cs +++ b/MinecraftClient/Protocol/Message/ChatParser.cs @@ -1,13 +1,19 @@ using System; using System.Collections.Generic; using System.IO; +using System.IO.Compression; using System.Linq; using System.Net.Http; using System.Net.Http.Json; +using System.Diagnostics.CodeAnalysis; +using System.Security.Cryptography; using System.Text; using System.Text.Json; using System.Text.RegularExpressions; using System.Threading.Tasks; +using MinecraftClient.Protocol.Handlers; +using Tomlet; +using Tomlet.Models; using static MinecraftClient.Settings; namespace MinecraftClient.Protocol.Message @@ -31,40 +37,59 @@ namespace MinecraftClient.Protocol.Message public static Dictionary? ChatId2Type; + internal enum ChatTypeParameter + { + Sender, + Target, + Content + } + + internal sealed record ChatTypeDecoration(string TranslationKey, ChatTypeParameter[] Parameters); + + private static readonly Dictionary ChatId2Decoration = new(); + + internal static void ClearChatTypeDecorations() + { + ChatId2Decoration.Clear(); + } + // Used to store Chat Types in 1.20.6+ - public static void ReadChatType(Dictionary data) + public static void ReadChatType(int chatId, string chatName, Dictionary? chatTypeData) { var chatTypeDictionary = ChatId2Type ?? new Dictionary(); - foreach (var (chatId, chatName) in data) + chatTypeDictionary[chatId] = chatName switch { - chatTypeDictionary[chatId] = chatName switch - { - "minecraft:chat" => MessageType.CHAT, - "minecraft:emote_command" => MessageType.EMOTE_COMMAND, - "minecraft:msg_command_incoming" => MessageType.MSG_COMMAND_INCOMING, - "minecraft:msg_command_outgoing" => MessageType.MSG_COMMAND_OUTGOING, - "minecraft:say_command" => MessageType.SAY_COMMAND, - "minecraft:team_msg_command_incoming" => MessageType.TEAM_MSG_COMMAND_INCOMING, - "minecraft:team_msg_command_outgoing" => MessageType.TEAM_MSG_COMMAND_OUTGOING, - _ => MessageType.CHAT, - }; - } + "minecraft:chat" => MessageType.CHAT, + "minecraft:emote_command" => MessageType.EMOTE_COMMAND, + "minecraft:msg_command_incoming" => MessageType.MSG_COMMAND_INCOMING, + "minecraft:msg_command_outgoing" => MessageType.MSG_COMMAND_OUTGOING, + "minecraft:say_command" => MessageType.SAY_COMMAND, + "minecraft:team_msg_command_incoming" => MessageType.TEAM_MSG_COMMAND_INCOMING, + "minecraft:team_msg_command_outgoing" => MessageType.TEAM_MSG_COMMAND_OUTGOING, + _ => MessageType.CHAT, + }; ChatId2Type = chatTypeDictionary; + + if (TryReadChatTypeDecoration(chatTypeData, out var decoration)) + ChatId2Decoration[chatId] = decoration; + else + ChatId2Decoration.Remove(chatId); } public static void ReadChatType(Dictionary registryCodec) { - Dictionary chatTypeDictionary = ChatId2Type ?? new(); - // Check if the chat type registry is in the correct format - if (!registryCodec.ContainsKey("minecraft:chat_type")) { - + if (!registryCodec.ContainsKey("minecraft:chat_type")) + { + // If not, then we force the registry to be in the correct format - if (registryCodec.ContainsKey("chat_type")) { - - foreach (var key in registryCodec.Keys.ToArray()) { + if (registryCodec.ContainsKey("chat_type")) + { + + foreach (var key in registryCodec.Keys.ToArray()) + { // Skip entries with a namespace already if (key.Contains(':', StringComparison.OrdinalIgnoreCase)) continue; @@ -74,27 +99,82 @@ namespace MinecraftClient.Protocol.Message } } } - + var chatTypeListNbt = (object[])(((Dictionary)registryCodec["minecraft:chat_type"])["value"]); - foreach (var (chatName, chatId) in from Dictionary chatTypeNbt in chatTypeListNbt - let chatName = (string)chatTypeNbt["name"] - let chatId = (int)chatTypeNbt["id"] - select (chatName, chatId)) + foreach (Dictionary chatTypeNbt in chatTypeListNbt) { - chatTypeDictionary[chatId] = chatName switch + string chatName = (string)chatTypeNbt["name"]; + int chatId = (int)chatTypeNbt["id"]; + var chatTypeData = chatTypeNbt.TryGetValue("element", out var element) + ? element as Dictionary + : null; + ReadChatType(chatId, chatName, chatTypeData); + } + } + + internal static int ReadChatTypeHolder( + DataTypes dataTypes, + Queue packetData, + int protocolVersion, + out ChatTypeDecoration? directDecoration) + { + int encodedId = dataTypes.ReadNextVarInt(packetData); + directDecoration = null; + + if (protocolVersion < Protocol18Handler.MC_1_21_Version) + return encodedId; + + if (encodedId > 0) + return encodedId - 1; + + directDecoration = ReadNetworkChatTypeDecoration(dataTypes, packetData); + _ = ReadNetworkChatTypeDecoration(dataTypes, packetData); // Narration decoration + return -1; + } + + private static ChatTypeDecoration ReadNetworkChatTypeDecoration( + DataTypes dataTypes, + Queue packetData) + { + string translationKey = dataTypes.ReadNextString(packetData); + int parameterCount = dataTypes.ReadNextVarInt(packetData); + var parameters = new ChatTypeParameter[parameterCount]; + + for (int i = 0; i < parameterCount; i++) + parameters[i] = (ChatTypeParameter)dataTypes.ReadNextVarInt(packetData); + + _ = dataTypes.ReadNextNbtTag(packetData); // Style + return new ChatTypeDecoration(translationKey, parameters); + } + + private static bool TryReadChatTypeDecoration( + Dictionary? chatTypeData, + [NotNullWhen(true)] out ChatTypeDecoration? decoration) + { + decoration = null; + if (chatTypeData is null + || !chatTypeData.TryGetValue("chat", out var chat) + || chat is not Dictionary chatDecoration + || !chatDecoration.TryGetValue("translation_key", out var translationKey) + || translationKey is not string translationKeyText + || !chatDecoration.TryGetValue("parameters", out var parameters) + || parameters is not object[] parameterList) + return false; + + var parsedParameters = new ChatTypeParameter[parameterList.Length]; + for (int i = 0; i < parameterList.Length; i++) + { + parsedParameters[i] = parameterList[i] switch { - "minecraft:chat" => MessageType.CHAT, - "minecraft:emote_command" => MessageType.EMOTE_COMMAND, - "minecraft:msg_command_incoming" => MessageType.MSG_COMMAND_INCOMING, - "minecraft:msg_command_outgoing" => MessageType.MSG_COMMAND_OUTGOING, - "minecraft:say_command" => MessageType.SAY_COMMAND, - "minecraft:team_msg_command_incoming" => MessageType.TEAM_MSG_COMMAND_INCOMING, - "minecraft:team_msg_command_outgoing" => MessageType.TEAM_MSG_COMMAND_OUTGOING, - _ => MessageType.CHAT, + "sender" => ChatTypeParameter.Sender, + "target" => ChatTypeParameter.Target, + "content" => ChatTypeParameter.Content, + _ => ChatTypeParameter.Sender }; } - ChatId2Type = chatTypeDictionary; + decoration = new ChatTypeDecoration(translationKeyText, parsedParameters); + return true; } /// @@ -139,6 +219,26 @@ namespace MinecraftClient.Protocol.Message string text; List usingData = new(); + ChatTypeDecoration? decoration = message.chatTypeDecoration; + if (decoration is null) + ChatId2Decoration.TryGetValue(message.chatTypeId, out decoration); + + if (decoration is not null) + { + foreach (var parameter in decoration.Parameters) + { + usingData.Add(parameter switch + { + ChatTypeParameter.Sender => sender, + ChatTypeParameter.Target => message.teamName ?? string.Empty, + ChatTypeParameter.Content => content, + _ => string.Empty + }); + } + + return TranslateString(decoration.TranslationKey, usingData); + } + MessageType chatType; if (message.chatTypeId == -1) chatType = MessageType.RAW_MSG; @@ -200,7 +300,12 @@ namespace MinecraftClient.Protocol.Message /// Color code private static string Color2tag(string colorname) { - return colorname.ToLower() switch + string lower = colorname.ToLower(); + + if (lower.Length == 7 && lower[0] == '#' && IsHexColor(lower)) + return "§" + lower; + + return lower switch { #pragma warning disable format // @formatter:off @@ -227,6 +332,17 @@ namespace MinecraftClient.Protocol.Message }; } + private static bool IsHexColor(string s) + { + for (int i = 1; i < s.Length; i++) + { + char c = s[i]; + if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f'))) + return false; + } + return true; + } + /// /// Specify whether translation rules have been loaded /// @@ -237,12 +353,48 @@ namespace MinecraftClient.Protocol.Message /// private static Dictionary TranslationRules = new(); + private sealed class TranslationLayer(string identifier, Dictionary translations) + { + public string Identifier { get; } = identifier; + public Dictionary Translations { get; } = translations; + } + + private sealed class ResourcePackTranslationCacheEntry + { + public string CacheVersion { get; init; } = string.Empty; + public string Language { get; init; } = string.Empty; + public string SourceUrl { get; init; } = string.Empty; + public string SourceHash { get; init; } = string.Empty; + public Dictionary Translations { get; init; } = []; + } + + private sealed class ForgeModTranslationCacheEntry + { + public string CacheVersion { get; init; } = string.Empty; + public string Language { get; init; } = string.Empty; + public string SourceHash { get; init; } = string.Empty; + public Dictionary> TranslationsByModId { get; init; } = []; + } + + private const long MaxResourcePackDownloadBytes = 256L * 1024 * 1024; + private const int ResourcePackDownloadBufferSize = 81920; + private const string ResourcePackTranslationCacheVersion = "1"; + private const string ForgeModTranslationCacheVersion = "1"; + private const string LocalForgeModTranslationDirectory = "mods"; + + private static readonly List ForgeModTranslationLayers = []; + private static readonly List ResourcePackTranslationLayers = []; + private static readonly HttpClient ResourcePackHttpClient = new(); + /// /// Initialize translation rules. /// Necessary for properly printing some chat messages. /// public static void InitTranslations() { + ForgeModTranslationLayers.Clear(); + ResourcePackTranslationLayers.Clear(); + if (!RulesInitialized) { InitRules(); @@ -363,10 +515,123 @@ namespace MinecraftClient.Protocol.Message public static string? TranslateString(string rulename) { - if (TranslationRules.TryGetValue(rulename, out string? result)) - return result; - else - return null; + return TryGetTranslationRule(rulename, out string? result) ? result : null; + } + + public static void LoadResourcePackTranslations(string packIdentifier, string url, string hash) + { + ArgumentException.ThrowIfNullOrEmpty(packIdentifier); + ArgumentException.ThrowIfNullOrEmpty(url); + + if (!Config.Main.Advanced.LoadResourcePackTranslations) + return; + + if (!Uri.TryCreate(url, UriKind.Absolute, out Uri? resourcePackUri) + || resourcePackUri.Scheme is not "http" and not "https") + { + return; + } + + string cacheFilePath = GetResourcePackTranslationCacheFilePath(resourcePackUri, hash); + if (TryLoadCachedResourcePackTranslations(cacheFilePath, resourcePackUri, hash, out Dictionary? cachedTranslations)) + { + ReplaceResourcePackTranslations(packIdentifier, cachedTranslations); + return; + } + + string temporaryFilePath = Path.GetTempFileName(); + try + { + DownloadResourcePack(resourcePackUri, hash, temporaryFilePath); + using FileStream resourcePackFile = File.OpenRead(temporaryFilePath); + Dictionary resourcePackTranslations = ExtractResourcePackTranslations(resourcePackFile); + ReplaceResourcePackTranslations(packIdentifier, resourcePackTranslations); + SaveCachedResourcePackTranslations(cacheFilePath, resourcePackUri, hash, resourcePackTranslations); + } + catch (HttpRequestException) + { + } + catch (IOException) + { + } + catch (InvalidDataException) + { + } + catch (JsonException) + { + } + finally + { + try + { + File.Delete(temporaryFilePath); + } + catch (IOException) + { + } + } + } + + public static void RemoveResourcePackTranslations(string packIdentifier) + { + ResourcePackTranslationLayers.RemoveAll(layer => + layer.Identifier.Equals(packIdentifier, StringComparison.Ordinal)); + } + + public static void ClearResourcePackTranslations() + { + ResourcePackTranslationLayers.Clear(); + } + + public static void LoadForgeModTranslations(IEnumerable modIds) + { + ArgumentNullException.ThrowIfNull(modIds); + + ForgeModTranslationLayers.Clear(); + + if (!Config.Main.Advanced.LoadForgeModTranslations) + return; + + HashSet requestedModIds = new( + modIds + .Where(static modId => !string.IsNullOrWhiteSpace(modId)) + .Select(static modId => NormalizeForgeModId(modId)), + StringComparer.OrdinalIgnoreCase); + + if (requestedModIds.Count == 0) + return; + + Dictionary> translationsByModId = + new(StringComparer.OrdinalIgnoreCase); + + foreach (string modDirectory in GetForgeModTranslationDirectories()) + { + foreach (string modJarPath in Directory.EnumerateFiles(modDirectory, "*.jar")) + { + try + { + MergeForgeModTranslations(modJarPath, requestedModIds, translationsByModId); + } + catch (IOException) + { + } + catch (InvalidDataException) + { + } + catch (JsonException) + { + } + } + } + + foreach (string modId in requestedModIds) + { + if (translationsByModId.TryGetValue(modId, out Dictionary? translations) + && translations.Count > 0) + { + ForgeModTranslationLayers.Add(new TranslationLayer(modId, translations)); + } + } } /// @@ -384,49 +649,620 @@ namespace MinecraftClient.Protocol.Message RulesInitialized = true; } - if (TranslationRules.ContainsKey(rulename)) - { - int using_idx = 0; - string rule = TranslationRules[rulename]; - StringBuilder result = new(); - for (int i = 0; i < rule.Length; i++) - { - if (rule[i] == '%' && i + 1 < rule.Length) - { - //Using string or int with %s or %d - if (rule[i + 1] == 's' || rule[i + 1] == 'd') - { - if (using_data.Count > using_idx) - { - result.Append(using_data[using_idx]); - using_idx++; - i += 1; - continue; - } - } + if (!TryGetTranslationRule(rulename, out string? rule)) + rule = rulename; - //Using specified string or int with %1$s, %2$s... - else if (char.IsDigit(rule[i + 1]) - && i + 3 < rule.Length && rule[i + 2] == '$' - && (rule[i + 3] == 's' || rule[i + 3] == 'd')) + int using_idx = 0; + StringBuilder result = new(); + for (int i = 0; i < rule.Length; i++) + { + if (rule[i] == '%' && i + 1 < rule.Length) + { + //Using string or int with %s or %d + if (rule[i + 1] == 's' || rule[i + 1] == 'd') + { + if (using_data.Count > using_idx) { - int specified_idx = rule[i + 1] - '1'; - if (using_data.Count > specified_idx) - { - result.Append(using_data[specified_idx]); - using_idx++; - i += 3; - continue; - } + result.Append(using_data[using_idx]); + using_idx++; + i += 1; + continue; } } - result.Append(rule[i]); + //Using specified string or int with %1$s, %2$s... + else if (char.IsDigit(rule[i + 1]) + && i + 3 < rule.Length && rule[i + 2] == '$' + && (rule[i + 3] == 's' || rule[i + 3] == 'd')) + { + int specified_idx = rule[i + 1] - '1'; + if (using_data.Count > specified_idx) + { + result.Append(using_data[specified_idx]); + using_idx++; + i += 3; + continue; + } + } } - return result.ToString(); + result.Append(rule[i]); } - else return "[" + rulename + "] " + string.Join(" ", using_data); + + return result.ToString(); + } + + private static bool TryGetTranslationRule(string rulename, [NotNullWhen(true)] out string? result) + { + for (int i = ResourcePackTranslationLayers.Count - 1; i >= 0; i--) + { + if (ResourcePackTranslationLayers[i].Translations.TryGetValue(rulename, out result)) + return true; + } + + for (int i = ForgeModTranslationLayers.Count - 1; i >= 0; i--) + { + if (ForgeModTranslationLayers[i].Translations.TryGetValue(rulename, out result)) + return true; + } + + return TranslationRules.TryGetValue(rulename, out result); + } + + private static void DownloadResourcePack(Uri resourcePackUri, string hash, string temporaryFilePath) + { + using HttpResponseMessage response = + ResourcePackHttpClient.GetAsync(resourcePackUri, HttpCompletionOption.ResponseHeadersRead).GetAwaiter().GetResult(); + response.EnsureSuccessStatusCode(); + + using Stream resourcePackStream = response.Content.ReadAsStream(); + using FileStream temporaryFile = File.Create(temporaryFilePath); + using IncrementalHash incrementalHash = IncrementalHash.CreateHash(HashAlgorithmName.SHA1); + + byte[] buffer = new byte[ResourcePackDownloadBufferSize]; + long totalBytes = 0; + + while (true) + { + int bytesRead = resourcePackStream.Read(buffer, 0, buffer.Length); + if (bytesRead <= 0) + break; + + totalBytes += bytesRead; + if (totalBytes > MaxResourcePackDownloadBytes) + throw new InvalidDataException(); + + temporaryFile.Write(buffer, 0, bytesRead); + + if (hash.Length == 40) + incrementalHash.AppendData(buffer, 0, bytesRead); + } + + if (hash.Length == 40) + { + string downloadedHash = Convert.ToHexString(incrementalHash.GetHashAndReset()); + if (!downloadedHash.Equals(hash, StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException($"Resource pack hash mismatch for {resourcePackUri}. Expected {hash}, got {downloadedHash}."); + } + } + + private static Dictionary ExtractResourcePackTranslations(Stream resourcePackStream) + { + var mergedTranslations = new Dictionary(StringComparer.Ordinal); + var selectedLanguageTranslations = new Dictionary(StringComparer.Ordinal); + string selectedLanguage = Config.Main.Advanced.Language; + + using ZipArchive archive = new(resourcePackStream, ZipArchiveMode.Read, leaveOpen: true); + + foreach (ZipArchiveEntry entry in archive.Entries) + { + if (!TryGetResourcePackLanguage(entry.FullName, out string? language)) + continue; + + if (language.Equals("en_us", StringComparison.OrdinalIgnoreCase)) + { + MergeTranslationsFromZipEntry(entry, mergedTranslations); + } + else if (language.Equals(selectedLanguage, StringComparison.OrdinalIgnoreCase)) + { + MergeTranslationsFromZipEntry(entry, selectedLanguageTranslations); + } + } + + foreach (var entry in selectedLanguageTranslations) + mergedTranslations[entry.Key] = entry.Value; + + return mergedTranslations; + } + + private static bool TryGetResourcePackLanguage(string entryPath, [NotNullWhen(true)] out string? language) + { + language = null; + + string[] pathParts = entryPath + .Replace('\\', '/') + .Split('/', StringSplitOptions.RemoveEmptyEntries); + + if (pathParts.Length != 4 + || !pathParts[0].Equals("assets", StringComparison.OrdinalIgnoreCase) + || !pathParts[2].Equals("lang", StringComparison.OrdinalIgnoreCase) + || !pathParts[3].EndsWith(".json", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + language = Path.GetFileNameWithoutExtension(pathParts[3]); + return !string.IsNullOrEmpty(language); + } + + private static void MergeTranslationsFromZipEntry(ZipArchiveEntry entry, Dictionary translations) + { + using Stream entryStream = entry.Open(); + Dictionary? entryTranslations = + JsonSerializer.Deserialize>(entryStream); + + if (entryTranslations is null) + return; + + foreach (var (key, value) in entryTranslations) + translations[key] = value; + } + + private static void ReplaceResourcePackTranslations(string packIdentifier, Dictionary translations) + { + RemoveResourcePackTranslations(packIdentifier); + + if (translations.Count > 0) + ResourcePackTranslationLayers.Add(new TranslationLayer(packIdentifier, translations)); + } + + private static void MergeForgeModTranslations(string modJarPath, HashSet requestedModIds, + Dictionary> translationsByModId) + { + string sourceHash = ComputeFileSha256(modJarPath); + string cacheFilePath = GetForgeModTranslationCacheFilePath(sourceHash); + if (!TryLoadCachedForgeModTranslations(cacheFilePath, sourceHash, + out Dictionary>? cachedTranslations)) + { + using FileStream modJarStream = File.OpenRead(modJarPath); + cachedTranslations = ExtractForgeModTranslations(modJarStream); + SaveCachedForgeModTranslations(cacheFilePath, sourceHash, cachedTranslations); + } + + Dictionary> archiveTranslations = cachedTranslations + .Where(static entry => entry.Value.Count > 0) + .Where(entry => requestedModIds.Contains(entry.Key)) + .ToDictionary(static entry => entry.Key, static entry => entry.Value, StringComparer.OrdinalIgnoreCase); + + foreach (var (modId, translations) in archiveTranslations) + translationsByModId[modId] = translations; + } + + private static Dictionary> ExtractForgeModTranslations(Stream modJarStream) + { + using ZipArchive archive = new(modJarStream, ZipArchiveMode.Read, leaveOpen: true); + HashSet archiveModIds = GetForgeModIds(archive); + if (archiveModIds.Count == 0) + return new Dictionary>(StringComparer.OrdinalIgnoreCase); + + return ExtractForgeModTranslations(archive, archiveModIds); + } + + private static HashSet GetForgeModIds(ZipArchive archive) + { + ZipArchiveEntry? modsTomlEntry = archive.GetEntry("META-INF/mods.toml") + ?? archive.GetEntry("META-INF/MODS.TOML"); + + if (modsTomlEntry is null) + return []; + + using StreamReader reader = new(modsTomlEntry.Open(), Encoding.UTF8, detectEncodingFromByteOrderMarks: true); + TomlDocument document = new TomlParser().Parse(reader.ReadToEnd()); + if (!document.TryGetValue("mods", out TomlValue? modsValue) || modsValue is not TomlArray modsArray) + return []; + + HashSet modIds = new(StringComparer.OrdinalIgnoreCase); + foreach (TomlValue modValue in modsArray) + { + if (modValue is not TomlTable modTable || !modTable.ContainsKey("modId")) + continue; + + string modId = modTable.GetString("modId"); + if (!string.IsNullOrWhiteSpace(modId)) + modIds.Add(NormalizeForgeModId(modId)); + } + + return modIds; + } + + private static Dictionary> ExtractForgeModTranslations(ZipArchive archive, HashSet requestedModIds) + { + string selectedLanguage = NormalizeLanguageCode(Config.Main.Advanced.Language); + Dictionary> fallbackTranslations = + new(StringComparer.OrdinalIgnoreCase); + Dictionary> selectedTranslations = + new(StringComparer.OrdinalIgnoreCase); + + foreach (ZipArchiveEntry entry in archive.Entries) + { + if (!TryGetForgeModLanguage(entry.FullName, out string? modId, out string? language)) + continue; + + if (!requestedModIds.Contains(modId)) + continue; + + if (language.Equals("en_us", StringComparison.OrdinalIgnoreCase)) + { + if (!fallbackTranslations.TryGetValue(modId, out Dictionary? translations)) + { + translations = new Dictionary(StringComparer.Ordinal); + fallbackTranslations[modId] = translations; + } + + MergeTranslationsFromZipEntry(entry, translations); + } + else if (language.Equals(selectedLanguage, StringComparison.OrdinalIgnoreCase)) + { + if (!selectedTranslations.TryGetValue(modId, out Dictionary? translations)) + { + translations = new Dictionary(StringComparer.Ordinal); + selectedTranslations[modId] = translations; + } + + MergeTranslationsFromZipEntry(entry, translations); + } + } + + Dictionary> mergedTranslations = + new(StringComparer.OrdinalIgnoreCase); + + foreach (string modId in requestedModIds) + { + Dictionary modTranslations = new(StringComparer.Ordinal); + + if (fallbackTranslations.TryGetValue(modId, out Dictionary? fallback)) + { + foreach (var (key, value) in fallback) + modTranslations[key] = value; + } + + if (selectedTranslations.TryGetValue(modId, out Dictionary? selected)) + { + foreach (var (key, value) in selected) + modTranslations[key] = value; + } + + if (modTranslations.Count > 0) + mergedTranslations[modId] = modTranslations; + } + + return mergedTranslations; + } + + private static bool TryGetForgeModLanguage(string entryPath, [NotNullWhen(true)] out string? modId, + [NotNullWhen(true)] out string? language) + { + modId = null; + language = null; + + string[] pathParts = entryPath + .Replace('\\', '/') + .Split('/', StringSplitOptions.RemoveEmptyEntries); + + if (pathParts.Length != 4 + || !pathParts[0].Equals("assets", StringComparison.OrdinalIgnoreCase) + || !pathParts[2].Equals("lang", StringComparison.OrdinalIgnoreCase) + || !pathParts[3].EndsWith(".json", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + modId = NormalizeForgeModId(pathParts[1]); + language = NormalizeLanguageCode(Path.GetFileNameWithoutExtension(pathParts[3])); + return !string.IsNullOrEmpty(modId) && !string.IsNullOrEmpty(language); + } + + private static string NormalizeForgeModId(string modId) + { + return modId.Trim().ToLowerInvariant(); + } + + private static string NormalizeLanguageCode(string language) + { + return language.Trim().ToLowerInvariant().Replace('-', '_'); + } + + private static IEnumerable GetForgeModTranslationDirectories() + { + string? configuredPath = Config.Main.Advanced.ForgeModTranslationPath?.Trim(); + if (!string.IsNullOrWhiteSpace(configuredPath)) + { + string overridePath = Path.GetFullPath(configuredPath); + if (Directory.Exists(overridePath)) + yield return overridePath; + + yield break; + } + + HashSet yieldedPaths = new(PathComparer); + + foreach (string candidate in GetDefaultForgeModTranslationDirectories()) + { + string fullPath = Path.GetFullPath(candidate); + if (Directory.Exists(fullPath) && yieldedPaths.Add(fullPath)) + yield return fullPath; + } + + if (!Config.Main.Advanced.AutoDiscoverForgeModTranslationSources) + yield break; + + foreach (string candidate in DiscoverLauncherForgeModTranslationDirectories()) + { + string fullPath = Path.GetFullPath(candidate); + if (Directory.Exists(fullPath) && yieldedPaths.Add(fullPath)) + yield return fullPath; + } + } + + private static IEnumerable GetDefaultForgeModTranslationDirectories() + { + yield return LocalForgeModTranslationDirectory; + } + + private static IEnumerable DiscoverLauncherForgeModTranslationDirectories() + { + if (TryGetOfficialMinecraftModsDirectory(out string? officialModsDirectory)) + yield return officialModsDirectory; + + foreach (string prismModsDirectory in EnumerateInstanceModsDirectories(GetPrismLauncherInstancesDirectory())) + yield return prismModsDirectory; + + foreach (string curseForgeModsDirectory in EnumerateInstanceModsDirectories(GetCurseForgeInstancesDirectory(), "mods")) + yield return curseForgeModsDirectory; + } + + private static IEnumerable EnumerateInstanceModsDirectories(string? instancesDirectory, params string[] relativeModsPaths) + { + if (string.IsNullOrWhiteSpace(instancesDirectory) || !Directory.Exists(instancesDirectory)) + yield break; + + string[] instanceDirectories; + try + { + instanceDirectories = Directory.GetDirectories(instancesDirectory); + } + catch (IOException) + { + yield break; + } + catch (UnauthorizedAccessException) + { + yield break; + } + + foreach (string instanceDirectory in instanceDirectories) + { + foreach (string relativeModsPath in relativeModsPaths.Length > 0 + ? relativeModsPaths + : [Path.Combine(".minecraft", "mods"), Path.Combine("minecraft", "mods"), "mods"]) + { + string modsDirectory = Path.Combine(instanceDirectory, relativeModsPath); + if (Directory.Exists(modsDirectory)) + yield return modsDirectory; + } + } + } + + private static bool TryGetOfficialMinecraftModsDirectory([NotNullWhen(true)] out string? modsDirectory) + { + modsDirectory = null; + string? userProfile = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + if (string.IsNullOrWhiteSpace(userProfile)) + return false; + + string baseMinecraftDirectory = OperatingSystem.IsWindows() + ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft") + : Path.Combine(userProfile, ".minecraft"); + + modsDirectory = Path.Combine(baseMinecraftDirectory, "mods"); + return true; + } + + private static string? GetPrismLauncherInstancesDirectory() + { + string? userProfile = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + if (string.IsNullOrWhiteSpace(userProfile)) + return null; + + if (OperatingSystem.IsWindows()) + return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "PrismLauncher", "instances"); + + if (OperatingSystem.IsMacOS()) + return Path.Combine(userProfile, "Library", "Application Support", "PrismLauncher", "instances"); + + return Path.Combine(userProfile, ".local", "share", "PrismLauncher", "instances"); + } + + private static string? GetCurseForgeInstancesDirectory() + { + string? userProfile = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + if (string.IsNullOrWhiteSpace(userProfile)) + return null; + + return Path.Combine(userProfile, "curseforge", "minecraft", "Instances"); + } + + private static readonly StringComparer PathComparer = + OperatingSystem.IsWindows() ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal; + + private static string ComputeFileSha256(string filePath) + { + using FileStream stream = File.OpenRead(filePath); + using SHA256 sha256 = SHA256.Create(); + return Convert.ToHexString(sha256.ComputeHash(stream)).ToLowerInvariant(); + } + + private static bool TryLoadCachedForgeModTranslations(string cacheFilePath, string sourceHash, + [NotNullWhen(true)] out Dictionary>? translationsByModId) + { + translationsByModId = null; + + if (!File.Exists(cacheFilePath)) + return false; + + try + { + using FileStream cacheFile = File.OpenRead(cacheFilePath); + ForgeModTranslationCacheEntry? cacheEntry = + JsonSerializer.Deserialize(cacheFile); + + if (cacheEntry is not null + && cacheEntry.CacheVersion == ForgeModTranslationCacheVersion + && cacheEntry.Language.Equals(Config.Main.Advanced.Language, StringComparison.OrdinalIgnoreCase) + && cacheEntry.SourceHash.Equals(sourceHash, StringComparison.OrdinalIgnoreCase) + && cacheEntry.TranslationsByModId.Count > 0) + { + translationsByModId = cacheEntry.TranslationsByModId.ToDictionary( + static entry => entry.Key, + static entry => new Dictionary(entry.Value, StringComparer.Ordinal), + StringComparer.OrdinalIgnoreCase); + return true; + } + } + catch (IOException) + { + } + catch (JsonException) + { + } + + try + { + File.Delete(cacheFilePath); + } + catch (IOException) + { + } + + return false; + } + + private static void SaveCachedForgeModTranslations(string cacheFilePath, string sourceHash, + Dictionary> translationsByModId) + { + if (translationsByModId.Count == 0) + return; + + string? cacheDirectory = Path.GetDirectoryName(cacheFilePath); + if (string.IsNullOrEmpty(cacheDirectory)) + return; + + Directory.CreateDirectory(cacheDirectory); + + ForgeModTranslationCacheEntry cacheEntry = new() + { + CacheVersion = ForgeModTranslationCacheVersion, + Language = Config.Main.Advanced.Language, + SourceHash = sourceHash, + TranslationsByModId = translationsByModId.ToDictionary( + static entry => entry.Key, + static entry => new Dictionary(entry.Value, StringComparer.Ordinal), + StringComparer.OrdinalIgnoreCase) + }; + + File.WriteAllText(cacheFilePath, JsonSerializer.Serialize(cacheEntry), Encoding.UTF8); + } + + private static string GetForgeModTranslationCacheFilePath(string sourceHash) + { + return Path.Combine("lang", "forgemods", $"{sourceHash}.{NormalizeLanguageCode(Config.Main.Advanced.Language)}.json"); + } + + private static bool TryLoadCachedResourcePackTranslations(string cacheFilePath, Uri resourcePackUri, string hash, + [NotNullWhen(true)] out Dictionary? translations) + { + translations = null; + + if (!File.Exists(cacheFilePath)) + return false; + + try + { + using FileStream cacheFile = File.OpenRead(cacheFilePath); + ResourcePackTranslationCacheEntry? cacheEntry = + JsonSerializer.Deserialize(cacheFile); + + if (cacheEntry is not null + && cacheEntry.CacheVersion == ResourcePackTranslationCacheVersion + && cacheEntry.Language.Equals(Config.Main.Advanced.Language, StringComparison.OrdinalIgnoreCase) + && cacheEntry.SourceUrl.Equals(resourcePackUri.AbsoluteUri, StringComparison.Ordinal) + && cacheEntry.SourceHash.Equals(hash, StringComparison.OrdinalIgnoreCase) + && cacheEntry.Translations.Count > 0) + { + translations = new Dictionary(cacheEntry.Translations, StringComparer.Ordinal); + return true; + } + } + catch (IOException) + { + } + catch (JsonException) + { + } + + try + { + File.Delete(cacheFilePath); + } + catch (IOException) + { + } + + return false; + } + + private static void SaveCachedResourcePackTranslations(string cacheFilePath, Uri resourcePackUri, string hash, + Dictionary translations) + { + if (translations.Count == 0) + return; + + string? cacheDirectory = Path.GetDirectoryName(cacheFilePath); + if (string.IsNullOrEmpty(cacheDirectory)) + return; + + Directory.CreateDirectory(cacheDirectory); + + ResourcePackTranslationCacheEntry cacheEntry = new() + { + CacheVersion = ResourcePackTranslationCacheVersion, + Language = Config.Main.Advanced.Language, + SourceUrl = resourcePackUri.AbsoluteUri, + SourceHash = hash, + Translations = new Dictionary(translations, StringComparer.Ordinal) + }; + + File.WriteAllText(cacheFilePath, JsonSerializer.Serialize(cacheEntry), Encoding.UTF8); + } + + private static string GetResourcePackTranslationCacheFilePath(Uri resourcePackUri, string hash) + { + string cacheKey = GetResourcePackTranslationCacheKey(resourcePackUri, hash); + return Path.Combine("lang", "resourcepacks", $"{cacheKey}.{Config.Main.Advanced.Language}.json"); + } + + private static string GetResourcePackTranslationCacheKey(Uri resourcePackUri, string hash) + { + if (IsValidSha1(hash)) + return hash.ToLowerInvariant(); + + byte[] urlHash = SHA256.HashData(Encoding.UTF8.GetBytes(resourcePackUri.AbsoluteUri)); + return "url-" + Convert.ToHexString(urlHash).ToLowerInvariant(); + } + + private static bool IsValidSha1(string hash) + { + return hash.Length == 40 && hash.All(Uri.IsHexDigit); } /// @@ -443,8 +1279,8 @@ namespace MinecraftClient.Protocol.Message { "italic", "o" }, }; - /// Matches a single color code (§0–§9, §a–§f). Used to strip color when replacing. - private static readonly Regex ColorCodeRegex = new(@"§[0-9a-f]", RegexOptions.Compiled); + /// Matches a single color code (§0-§9, §a-§f) or a hex color (§#rrggbb). Used to strip color when replacing. + private static readonly Regex ColorCodeRegex = new(@"§(?:[0-9a-f]|#[0-9a-f]{6})", RegexOptions.Compiled); /// /// Use a JSON Object to build the corresponding string @@ -617,4 +1453,4 @@ namespace MinecraftClient.Protocol.Message return formatting + message + extraBuilder.ToString(); } } -} \ No newline at end of file +} diff --git a/MinecraftClient/Protocol/MicrosoftAuthentication.cs b/MinecraftClient/Protocol/MicrosoftAuthentication.cs index 4c84ce47..e91806ba 100644 --- a/MinecraftClient/Protocol/MicrosoftAuthentication.cs +++ b/MinecraftClient/Protocol/MicrosoftAuthentication.cs @@ -153,7 +153,7 @@ namespace MinecraftClient.Protocol // Extract email from JWT id_token string payload = JwtPayloadDecode.GetPayload(jsonData["id_token"]!.GetStringValue()); var jsonPayload = Json.ParseJson(payload); - string email = jsonPayload!["email"]!.GetStringValue(); + string email = jsonPayload?["email"]?.GetStringValue() ?? string.Empty; return new LoginResponse() { @@ -195,7 +195,7 @@ namespace MinecraftClient.Protocol // Extract email from JWT string payload = JwtPayloadDecode.GetPayload(jsonData["id_token"]!.GetStringValue()); var jsonPayload = Json.ParseJson(payload); - string email = jsonPayload!["email"]!.GetStringValue(); + string email = jsonPayload?["email"]?.GetStringValue() ?? string.Empty; return new LoginResponse() { Email = email, diff --git a/MinecraftClient/Protocol/PlayerInfo.cs b/MinecraftClient/Protocol/PlayerInfo.cs index 66e2441c..c0e211d6 100644 --- a/MinecraftClient/Protocol/PlayerInfo.cs +++ b/MinecraftClient/Protocol/PlayerInfo.cs @@ -22,6 +22,8 @@ namespace MinecraftClient.Protocol public bool Listed = true; + public int TabListOrder; + // Entity info public Mapping.Entity? entity; @@ -73,6 +75,7 @@ namespace MinecraftClient.Protocol Uuid = uuid; Gamemode = -1; Ping = 0; + TabListOrder = 0; lastMessageVerified = true; precedingSignature = null; } diff --git a/MinecraftClient/Protocol/ProfileKey/KeyUtils.cs b/MinecraftClient/Protocol/ProfileKey/KeyUtils.cs index 381af81f..ca19e243 100644 --- a/MinecraftClient/Protocol/ProfileKey/KeyUtils.cs +++ b/MinecraftClient/Protocol/ProfileKey/KeyUtils.cs @@ -26,9 +26,10 @@ namespace MinecraftClient.Protocol.ProfileKey ProxiedWebRequest.Response? response = null; try { - var authServer = Settings.Config.Main.General.AuthServer; - var request = new ProxiedWebRequest( - (authServer.UseHttps ? "https" : "http") + "://" + authServer.Host + ":" + authServer.Port + authServer.AuthlibInjectorAPIPath) + if (!Settings.Config.Main.General.TryGetAuthServerUri(out Uri? authServerUri)) + return false; + + var request = new ProxiedWebRequest(authServerUri.AbsoluteUri) { Accept = "application/json" }; @@ -66,9 +67,10 @@ namespace MinecraftClient.Protocol.ProfileKey string certificatesURL = "https://api.minecraftservices.com/player/certificates"; if (isYggdrasil) { - var authServer = Settings.Config.Main.General.AuthServer; - certificatesURL = (authServer.UseHttps ? "https" : "http") + "://" + authServer.Host + ":" + authServer.Port + - authServer.AuthlibInjectorAPIPath + "/minecraftservices/player/certificates"; + if (!Settings.Config.Main.General.TryGetAuthServerUri(out Uri? authServerUri)) + return null; + + certificatesURL = new Uri(authServerUri, "minecraftservices/player/certificates").AbsoluteUri; } ProxiedWebRequest.Response? response = null; diff --git a/MinecraftClient/Protocol/ProtocolHandler.cs b/MinecraftClient/Protocol/ProtocolHandler.cs index a8568f38..2ebf3ad7 100644 --- a/MinecraftClient/Protocol/ProtocolHandler.cs +++ b/MinecraftClient/Protocol/ProtocolHandler.cs @@ -27,6 +27,13 @@ namespace MinecraftClient.Protocol /// public static class ProtocolHandler { + public enum AuthlibServerValidationResult + { + Valid, + Unreachable, + InvalidResponse + } + /// /// Perform a DNS lookup for a Minecraft Service using the specified domain name /// @@ -134,6 +141,37 @@ namespace MinecraftClient.Protocol } } + /// + /// Verifies that an authlib-injector URL is reachable and returns its metadata document. + /// + public static AuthlibServerValidationResult ValidateAuthlibServer(Uri authServerUri) + { + string result = string.Empty; + int statusCode; + try + { + statusCode = DoHTTPSGet(authServerUri, ref result); + } + catch + { + return AuthlibServerValidationResult.Unreachable; + } + + if (statusCode != 200) + return AuthlibServerValidationResult.InvalidResponse; + + try + { + return Json.ParseJson(result)?["meta"]?["implementationName"]?.GetStringValue() is { Length: > 0 } + ? AuthlibServerValidationResult.Valid + : AuthlibServerValidationResult.InvalidResponse; + } + catch + { + return AuthlibServerValidationResult.InvalidResponse; + } + } + /// /// Get a protocol handler for the specified Minecraft version /// @@ -156,7 +194,7 @@ namespace MinecraftClient.Protocol { 4, 5, 47, 107, 108, 109, 110, 210, 315, 316, 335, 338, 340, 393, 401, 404, 477, 480, 485, 490, 498, 573, 575, 578, 735, 736, 751, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, - 769, 770, 771, 772, 773, 774, 775 + 769, 770, 771, 772, 773, 774, 775, 776 }; if (Array.IndexOf(suppoertedVersionsProtocol18, normalizedVersion) > -1) @@ -374,6 +412,8 @@ namespace MinecraftClient.Protocol return 774; case "26.1": return 775; + case "26.2": + return 776; default: return 0; } @@ -396,7 +436,7 @@ namespace MinecraftClient.Protocol 4, 5, 47, 107, 108, 109, 110, 210, 315, 316, 335, 338, 340, 393, 401, 404, 477, 480, 485, 490, 498, 573, 575, 578, 735, 736, 751, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, - 772, 773, 774, 775 + 772, 773, 774, 775, 776 ]; /// @@ -518,6 +558,7 @@ namespace MinecraftClient.Protocol 773 => "1.21.9", 774 => "1.21.11", 775 => "26.1", + 776 => "26.2", _ => "0.0" }; } @@ -711,9 +752,10 @@ namespace MinecraftClient.Protocol string json_request = "{\"agent\": { \"name\": \"Minecraft\", \"version\": 1 }, \"username\": \"" + JsonEncode(user) + "\", \"password\": \"" + JsonEncode(pass) + "\", \"clientToken\": \"" + JsonEncode(session.ClientID) + "\" }"; - int code = DoHTTPSPost(Config.Main.General.AuthServer.Host, Config.Main.General.AuthServer.Port, - Config.Main.General.AuthServer.AuthlibInjectorAPIPath + "/authserver/authenticate", json_request, - Config.Main.General.AuthServer.UseHttps, ref result); + if (!Config.Main.General.TryGetAuthServerUri(out Uri? authServerUri)) + return LoginResult.OtherError; + + int code = DoHTTPSPost(authServerUri, "authserver/authenticate", json_request, ref result); if (code == 200) { if (result.Contains("availableProfiles\":[]}")) @@ -919,7 +961,8 @@ namespace MinecraftClient.Protocol session.PlayerID = profile.UUID; session.ID = accessToken; session.RefreshToken = msaResponse.RefreshToken; - InternalConfig.Account.Login = msaResponse.Email; + if (!string.IsNullOrWhiteSpace(msaResponse.Email)) + InternalConfig.Account.Login = msaResponse.Email; return LoginResult.Success; } else @@ -1034,9 +1077,10 @@ namespace MinecraftClient.Protocol "\", \"clientToken\": \"" + JsonEncode(currentsession.ClientID) + "\", \"selectedProfile\": { \"id\": \"" + JsonEncode(currentsession.PlayerID) + "\", \"name\": \"" + JsonEncode(currentsession.PlayerName) + "\" } }"; - int code = DoHTTPSPost(Config.Main.General.AuthServer.Host, Config.Main.General.AuthServer.Port, - Config.Main.General.AuthServer.AuthlibInjectorAPIPath + "/authserver/refresh", json_request, - Config.Main.General.AuthServer.UseHttps, ref result); + if (!Config.Main.General.TryGetAuthServerUri(out Uri? authServerUri)) + return LoginResult.OtherError; + + int code = DoHTTPSPost(authServerUri, "authserver/refresh", json_request, ref result); if (code == 200) { if (result is null) @@ -1090,16 +1134,18 @@ namespace MinecraftClient.Protocol string result = ""; string json_request = "{\"accessToken\":\"" + accesstoken + "\",\"selectedProfile\":\"" + uuid + "\",\"serverId\":\"" + serverhash + "\"}"; - string host = type == LoginType.yggdrasil - ? Config.Main.General.AuthServer.Host - : "sessionserver.mojang.com"; - int port = type == LoginType.yggdrasil ? Config.Main.General.AuthServer.Port : 443; - string endpoint = type == LoginType.yggdrasil - ? Config.Main.General.AuthServer.AuthlibInjectorAPIPath + "/sessionserver/session/minecraft/join" - : "/session/minecraft/join"; + int code; + if (type == LoginType.yggdrasil) + { + if (!Config.Main.General.TryGetAuthServerUri(out Uri? authServerUri)) + return false; - bool useHttps = type == LoginType.yggdrasil ? Config.Main.General.AuthServer.UseHttps : true; - int code = DoHTTPSPost(host, port, endpoint, json_request, useHttps, ref result); + code = DoHTTPSPost(authServerUri, "sessionserver/session/minecraft/join", json_request, ref result); + } + else + { + code = DoHTTPSPost("sessionserver.mojang.com", 443, "/session/minecraft/join", json_request, ref result); + } return (code >= 200 && code < 300); } catch @@ -1238,6 +1284,16 @@ namespace MinecraftClient.Protocol return DoHTTPSRequest(HttpMethod.Get, host, port, path, headers, null, useHttps: true, ref result); } + private static int DoHTTPSGet(Uri requestUri, ref string result) + { + Dictionary headers = new() + { + { "User-Agent", "MCC/" + Program.Version } + }; + return DoHTTPSRequest(HttpMethod.Get, requestUri.Host, requestUri.Port, requestUri.PathAndQuery, headers, + null, requestUri.Scheme == Uri.UriSchemeHttps, ref result); + } + /// /// Make a POST request to the specified endpoint of the Mojang API /// @@ -1250,6 +1306,13 @@ namespace MinecraftClient.Protocol private static int DoHTTPSPost(string host, int port, string path, string body, ref string result) => DoHTTPSPost(host, port, path, body, useHttps: true, ref result); + private static int DoHTTPSPost(Uri baseUri, string relativePath, string body, ref string result) + { + Uri requestUri = new(baseUri, relativePath); + return DoHTTPSPost(requestUri.Host, requestUri.Port, requestUri.PathAndQuery, body, + requestUri.Scheme == Uri.UriSchemeHttps, ref result); + } + /// /// Make a POST request to the specified endpoint of the Mojang API /// @@ -1389,4 +1452,4 @@ namespace MinecraftClient.Protocol return dateTime; } } -} \ No newline at end of file +} diff --git a/MinecraftClient/Protocol/ReplayHandler.cs b/MinecraftClient/Protocol/ReplayHandler.cs index 3e9c5619..81862638 100644 --- a/MinecraftClient/Protocol/ReplayHandler.cs +++ b/MinecraftClient/Protocol/ReplayHandler.cs @@ -1,8 +1,11 @@ using System; +using System.Buffers.Binary; using System.Collections.Generic; using System.IO; using System.IO.Compression; -using System.Linq; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.Threading; using MinecraftClient.Mapping; using MinecraftClient.Protocol.Handlers; using MinecraftClient.Protocol.Handlers.PacketPalettes; @@ -10,405 +13,445 @@ using MinecraftClient.Protocol.Handlers.PacketPalettes; namespace MinecraftClient.Protocol { /// - /// Record and save replay file that can be used by Replay mod + /// Record and save replay files that can be used by Replay Mod. /// - public class ReplayHandler + public class ReplayHandler : IDisposable { - public string ReplayFileName = @"whhhh.mcpr"; - public string ReplayFileDirectory = @"replay_recordings"; - public MetaDataHandler MetaData; - public bool RecordRunning { get { return !cleanedUp; } } - - private readonly string recordingTmpFileName = @"recording.tmcpr"; - private readonly string temporaryCache = @"recording_cache"; - private readonly DataTypes dataTypes; - private readonly PacketTypePalette packetType; - private readonly int protocolVersion; - private readonly BinaryWriter? recordStream; - private readonly DateTime recordStartTime; - private DateTime lastPacketTime; - private bool prepareCleanUp = false; - private bool cleanedUp = false; + private const string DefaultReplayDirectory = "replay_recordings"; + private const string WorkingRootDirectory = "recording_cache"; + private const string RecordingEntryName = "recording.tmcpr"; + private const string BackupFileName = "REPLAY_BACKUP.mcpr"; private static readonly bool logOutput = true; - private int playerEntityID; - private Guid playerUUID; - private Location playerLastPosition; - private float playerLastYaw; - private float playerLastPitch; + private readonly Lock _sync = new(); + private readonly DataTypes _dataTypes; + private readonly PacketTypePalette _packetType; + private readonly int _protocolVersion; + private readonly string _instanceToken; + private readonly string _workingDirectory; + private readonly string _recordingFilePath; + private readonly string _backupReplayPath; + private readonly EventHandler _processExitHandler; + private readonly FileStream _recordStream; + private readonly DateTime _recordStartTime; + + private ReplayRecordingState _state = ReplayRecordingState.Recording; + private bool _recordStreamClosed; + private bool _disposed; + private DateTime _lastPacketTime; + + private int _playerEntityId = -1; + private Guid _playerUuid; + private Location _playerLastPosition; + private float _playerLastYaw; + private float _playerLastPitch; + + public string ReplayFileName { get; private set; } = string.Empty; + public string ReplayFileDirectory { get; } + public MetaDataHandler MetaData { get; } + + public bool RecordRunning + { + get + { + lock (_sync) + return _state == ReplayRecordingState.Recording; + } + } public ReplayHandler(int protocolVersion) + : this(protocolVersion, null, DefaultReplayDirectory) { - dataTypes = new DataTypes(protocolVersion); - packetType = new PacketTypeHandler().GetTypeHandler(protocolVersion); - this.protocolVersion = protocolVersion; + } - if (!Directory.Exists(ReplayFileDirectory)) - Directory.CreateDirectory(ReplayFileDirectory); - if (!Directory.Exists(temporaryCache)) - Directory.CreateDirectory(temporaryCache); + public ReplayHandler(int protocolVersion, string? serverName, string recordingDirectory = DefaultReplayDirectory) + { + ArgumentException.ThrowIfNullOrWhiteSpace(recordingDirectory); - recordStream = new BinaryWriter(new FileStream(Path.Combine(temporaryCache, recordingTmpFileName), FileMode.Create, FileAccess.ReadWrite)); - recordStartTime = DateTime.Now; + _dataTypes = new DataTypes(protocolVersion); + _packetType = new PacketTypeHandler().GetTypeHandler(protocolVersion); + _protocolVersion = protocolVersion; + ReplayFileDirectory = recordingDirectory; + Directory.CreateDirectory(ReplayFileDirectory); - MetaData = new MetaDataHandler + _instanceToken = Path.GetRandomFileName().Replace(".", string.Empty, StringComparison.Ordinal); + _workingDirectory = Path.Combine(WorkingRootDirectory, $"{DateTime.UtcNow:yyyyMMdd_HHmmss_fff}_{Environment.ProcessId}_{_instanceToken}"); + Directory.CreateDirectory(_workingDirectory); + + _recordingFilePath = Path.Combine(_workingDirectory, RecordingEntryName); + _backupReplayPath = Path.Combine(_workingDirectory, BackupFileName); + _recordStream = new FileStream(_recordingFilePath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read); + _processExitHandler = (_, _) => FinalizeOnProcessExit(); + + _recordStartTime = DateTime.UtcNow; + _lastPacketTime = _recordStartTime; + + MetaData = new MetaDataHandler(_workingDirectory) { - date = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds, + serverName = serverName, + date = new DateTimeOffset(_recordStartTime).ToUnixTimeMilliseconds(), protocol = protocolVersion, mcversion = ProtocolHandler.ProtocolVersion2MCVer(protocolVersion) }; MetaData.SaveToFile(); - playerLastPosition = new Location(0, 0, 0); + _playerLastPosition = new Location(0, 0, 0); + AppDomain.CurrentDomain.ProcessExit += _processExitHandler; + WriteLog("Start recording."); } - public ReplayHandler(int protocolVersion, string serverName, string recordingDirectory = @"replay_recordings") - : this(protocolVersion) + public void Dispose() { - dataTypes = new DataTypes(protocolVersion); - packetType = new PacketTypeHandler().GetTypeHandler(protocolVersion); + if (_disposed) + return; - MetaData.serverName = serverName; - ReplayFileDirectory = recordingDirectory; - } - - ~ReplayHandler() - { - OnShutDown(); + try + { + OnShutDown(); + } + finally + { + AppDomain.CurrentDomain.ProcessExit -= _processExitHandler; + _disposed = true; + GC.SuppressFinalize(this); + } } public void SetClientEntityID(int entityID) { - playerEntityID = entityID; + lock (_sync) + { + _playerEntityId = entityID; + if (entityID >= 0) + MetaData.selfId = entityID; + } } public void SetClientPlayerUUID(Guid uuid) { - playerUUID = uuid; - } - - #region File and stream handling - - public void CloseRecordStream() - { - try + lock (_sync) { - recordStream!.Flush(); - recordStream.Close(); + _playerUuid = uuid; + MetaData.AddPlayerUUID(uuid); } - catch { } } + public string GetBackupReplayPath() => _backupReplayPath; + /// - /// Stop recording and save replay file. Should called once before program exit + /// Stop recording and save the replay file. /// public void OnShutDown() { - if (!cleanedUp) + lock (_sync) { - prepareCleanUp = true; - CloseRecordStream(); - CreateReplayFile(); - cleanedUp = true; - } - } + EnsureNotDisposed(); - /// - /// Create the replay file for Replay mod to read - /// - public void CreateReplayFile() - { - string replayFileName = GetReplayDefaultName(); - CreateReplayFile(replayFileName); - } + if (_state != ReplayRecordingState.Recording) + return; - /// - /// Create the replay file for Replay mod to read - /// - /// Replay file name - public void CreateReplayFile(string replayFileName) - { - WriteLog("Creating replay file."); + string replayFileName = GetReplayDefaultName(); + string replayFilePath = ResolveReplayPath(replayFileName); - MetaData.duration = Convert.ToInt32((lastPacketTime - recordStartTime).TotalMilliseconds); - MetaData.SaveToFile(); - - using (Stream recordingFile = new FileStream(Path.Combine(temporaryCache, recordingTmpFileName), FileMode.Open)) - { - using Stream metaDataFile = new FileStream(Path.Combine(temporaryCache, MetaData.MetaDataFileName), FileMode.Open); - using FileStream replayArchiveFile = new(Path.Combine(ReplayFileDirectory, replayFileName), FileMode.Create, FileAccess.Write); - using ZipArchive replayArchive = new(replayArchiveFile, ZipArchiveMode.Create); - - ZipArchiveEntry recordingEntry = replayArchive.CreateEntry(recordingTmpFileName); - using (Stream recordingEntryStream = recordingEntry.Open()) + WriteLog("Creating replay file."); + _state = ReplayRecordingState.Finalizing; + try { - recordingFile.CopyTo(recordingEntryStream); + CloseRecordStreamUnsafe(); + WriteReplayArchiveUnsafe(replayFilePath, readFromActiveStream: false); + ReplayFileName = replayFileName; + _state = ReplayRecordingState.Stopped; + CleanupWorkingFilesUnsafe(); + WriteLog("Replay file created."); + } + catch + { + _state = ReplayRecordingState.Stopped; + throw; } - - ZipArchiveEntry metadataEntry = replayArchive.CreateEntry(MetaData.MetaDataFileName); - using Stream metadataEntryStream = metadataEntry.Open(); - metaDataFile.CopyTo(metadataEntryStream); } - - File.Delete(Path.Combine(temporaryCache, recordingTmpFileName)); - File.Delete(Path.Combine(temporaryCache, MetaData.MetaDataFileName)); - - WriteLog("Replay file created."); } /// - /// Create a backup replay file while recording + /// Create a snapshot replay file while the recording is still running. /// - /// public void CreateBackupReplay(string replayFileName) { - if (cleanedUp || prepareCleanUp) - return; - WriteDebugLog("Creating backup replay file."); - - MetaData.duration = Convert.ToInt32((lastPacketTime - recordStartTime).TotalMilliseconds); - MetaData.SaveToFile(); - - using (Stream metaDataFile = new FileStream(Path.Combine(temporaryCache, MetaData.MetaDataFileName), FileMode.Open)) + lock (_sync) { - using FileStream replayArchiveFile = new(replayFileName, FileMode.Create, FileAccess.Write); - using ZipArchive replayArchive = new(replayArchiveFile, ZipArchiveMode.Create); + EnsureNotDisposed(); - ZipArchiveEntry recordingEntry = replayArchive.CreateEntry(recordingTmpFileName); - using (Stream recordingEntryStream = recordingEntry.Open()) - { - // .CopyTo() method start from stream current position - // We need to reset position in order to get full content - long lastPosition = recordStream!.BaseStream.Position; - try - { - recordStream.BaseStream.Position = 0; - recordStream.BaseStream.CopyTo(recordingEntryStream); - } - finally - { - recordStream.BaseStream.Position = lastPosition; - } - } + if (_state != ReplayRecordingState.Recording) + return; - ZipArchiveEntry metadataEntry = replayArchive.CreateEntry(MetaData.MetaDataFileName); - using Stream metadataEntryStream = metadataEntry.Open(); - metaDataFile.CopyTo(metadataEntryStream); + WriteDebugLog("Creating backup replay file."); + WriteReplayArchiveUnsafe(ResolveReplayPath(replayFileName), readFromActiveStream: true); + WriteDebugLog("Backup replay file created."); } - - WriteDebugLog("Backup replay file created."); } /// - /// Get the default mcpr file name by current time + /// Get a default unique replay file name for the current recording. /// - /// public string GetReplayDefaultName() { - var now = DateTime.Now; - return string.Format("{0}_{1}_{2}_{3}_{4}_{5}.mcpr", now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second); // yyyy_mm_dd_hh_mm_ss + string version = ProtocolHandler.ProtocolVersion2MCVer(_protocolVersion).Replace('.', '_'); + return $"{DateTime.UtcNow:yyyy_MM_dd_HH_mm_ss_fff}_{version}_{Environment.ProcessId}_{_instanceToken}.mcpr"; } - #endregion - - #region Packet related method - /// - /// Add a packet from network + /// Add a packet from network capture. /// - /// - /// - /// - /// public void AddPacket(int packetID, IEnumerable packetData, bool isLogin, bool isInbound) { - if (cleanedUp || prepareCleanUp) - return; + byte[] packetBytes = packetData as byte[] ?? [.. packetData]; - try + lock (_sync) { - if (isInbound) - HandleInBoundPacket(packetID, packetData, isLogin); - else return; + if (_disposed || _state != ReplayRecordingState.Recording) + return; - if (PacketShouldSave(packetID, isLogin, isInbound)) - AddPacket(packetID, packetData); - } - catch (Exception e) - { - WriteDebugLog("Exception while adding packet: " + e.Message + "\n" + e.StackTrace); + try + { + if (!isInbound) + return; + + HandleInBoundPacket(packetID, packetBytes, isLogin); + + if (PacketShouldSave(packetID, isLogin, isInbound)) + AddPacketUnsafe(packetID, packetBytes); + } + catch (Exception e) + { + WriteDebugLog("Exception while adding packet: " + e.Message + "\n" + e.StackTrace); + } } } /// - /// Add packet directly without checking (internal use only) + /// Add a player's UUID to the metadata. /// - /// - /// - private void AddPacket(int packetID, IEnumerable packetData) - { - lastPacketTime = DateTime.Now; - // build raw packet - // format: packetID + packetData - List rawPacket = new(); - rawPacket.AddRange(DataTypes.GetVarInt(packetID).ToArray()); - rawPacket.AddRange(packetData.ToArray()); - // build format - // format: timestamp + packetLength + RawPacket - List line = new(); - int nowTime = Convert.ToInt32((lastPacketTime - recordStartTime).TotalMilliseconds); - line.AddRange(BitConverter.GetBytes((Int32)nowTime).AsEnumerable().Reverse().ToArray()); - line.AddRange(BitConverter.GetBytes((Int32)rawPacket.Count).AsEnumerable().Reverse().ToArray()); - line.AddRange(rawPacket.ToArray()); - // Write out to the file - recordStream!.Write(line.ToArray()); - } - - /// - /// Add a player's UUID to the MetaData - /// - /// - /// public void OnPlayerSpawn(Guid uuid) { - // Metadata has a field for storing uuid for all players entered client render range - MetaData.AddPlayerUUID(uuid); + lock (_sync) + { + MetaData.AddPlayerUUID(uuid); + } + } + + private void AddPacketUnsafe(int packetID, byte[] packetData) + { + _lastPacketTime = DateTime.UtcNow; + + byte[] packetId = [.. DataTypes.GetVarInt(packetID)]; + byte[] rawPacket = new byte[packetId.Length + packetData.Length]; + packetId.CopyTo(rawPacket, 0); + packetData.CopyTo(rawPacket, packetId.Length); + + int elapsedMilliseconds = Math.Max(0, Convert.ToInt32((_lastPacketTime - _recordStartTime).TotalMilliseconds)); + Span header = stackalloc byte[8]; + BinaryPrimitives.WriteInt32BigEndian(header, elapsedMilliseconds); + BinaryPrimitives.WriteInt32BigEndian(header[4..], rawPacket.Length); + + _recordStream.Write(header); + _recordStream.Write(rawPacket); } - /// - /// Determine a packet should be saved - /// - /// - /// - /// - /// private bool PacketShouldSave(int packetID, bool isLogin, bool isInbound) { - if (!isInbound) // save inbound only + if (!isInbound) return false; - if (!isLogin) // save all play state packet - { + + if (!isLogin) return true; - } - else - { // is login - if (packetID == 0x02) // login success - { - return true; - } - else return false; - } + + return packetID == 0x02; } - /// - /// Used to gather information needed - /// - /// - /// Also for converting client side packet to server side packet - /// - /// - /// - /// - private void HandleInBoundPacket(int packetID, IEnumerable packetData, bool isLogin) + private void HandleInBoundPacket(int packetID, byte[] packetData, bool isLogin) { Queue p = new(packetData); - PacketTypesIn pType = packetType.GetIncomingTypeById(packetID); - // Login success. Get player UUID + PacketTypesIn pType = _packetType.GetIncomingTypeById(packetID); + if (isLogin && packetID == 0x02) { - if (protocolVersion < Protocol18Handler.MC_1_16_Version) + if (_protocolVersion < Protocol18Handler.MC_1_16_Version) { - if (Guid.TryParse(dataTypes.ReadNextString(p), out Guid uuid)) + if (Guid.TryParse(_dataTypes.ReadNextString(p), out Guid uuid)) { SetClientPlayerUUID(uuid); - WriteDebugLog("User UUID: " + uuid.ToString()); + WriteDebugLog("User UUID: " + uuid); } } else { - var uuid2 = dataTypes.ReadNextUUID(p); - SetClientPlayerUUID(uuid2); - WriteDebugLog("User UUID: " + uuid2.ToString()); + Guid uuid = _dataTypes.ReadNextUUID(p); + SetClientPlayerUUID(uuid); + WriteDebugLog("User UUID: " + uuid); } return; } if (!isLogin && pType == PacketTypesIn.JoinGame) { - // Get client player entity ID - SetClientEntityID(dataTypes.ReadNextInt(p)); + SetClientEntityID(_dataTypes.ReadNextInt(p)); return; } if (!isLogin && pType == PacketTypesIn.SpawnPlayer) { - dataTypes.ReadNextVarInt(p); - OnPlayerSpawn(dataTypes.ReadNextUUID(p)); + _dataTypes.ReadNextVarInt(p); + OnPlayerSpawn(_dataTypes.ReadNextUUID(p)); return; } - // Get client player location for calculating movement delta later if (pType == PacketTypesIn.PlayerPositionAndLook) { - double x = dataTypes.ReadNextDouble(p); - double y = dataTypes.ReadNextDouble(p); - double z = dataTypes.ReadNextDouble(p); - float yaw = dataTypes.ReadNextFloat(p); - float pitch = dataTypes.ReadNextFloat(p); - byte locMask = dataTypes.ReadNextByte(p); + double x = _dataTypes.ReadNextDouble(p); + double y = _dataTypes.ReadNextDouble(p); + double z = _dataTypes.ReadNextDouble(p); + float yaw = _dataTypes.ReadNextFloat(p); + float pitch = _dataTypes.ReadNextFloat(p); + byte locMask = _dataTypes.ReadNextByte(p); - playerLastPitch = pitch; - playerLastYaw = yaw; - if (protocolVersion >= Protocol18Handler.MC_1_8_Version) + _playerLastPitch = pitch; + _playerLastYaw = yaw; + if (_protocolVersion >= Protocol18Handler.MC_1_8_Version) { - playerLastPosition.X = (locMask & 1 << 0) != 0 ? playerLastPosition.X + x : x; - playerLastPosition.Y = (locMask & 1 << 1) != 0 ? playerLastPosition.Y + y : y; - playerLastPosition.Z = (locMask & 1 << 2) != 0 ? playerLastPosition.Z + z : z; + _playerLastPosition.X = (locMask & 1 << 0) != 0 ? _playerLastPosition.X + x : x; + _playerLastPosition.Y = (locMask & 1 << 1) != 0 ? _playerLastPosition.Y + y : y; + _playerLastPosition.Z = (locMask & 1 << 2) != 0 ? _playerLastPosition.Z + z : z; } else { - playerLastPosition.X = x; - playerLastPosition.Y = y; - playerLastPosition.Z = z; + _playerLastPosition.X = x; + _playerLastPosition.Y = y; + _playerLastPosition.Z = z; } - return; } } - /// - /// Handle outbound packet (i.e. client player movement) - /// - /// - /// - /// - private void HandleOutBoundPacket(int packetID, IEnumerable packetData, bool isLogin) + private void WriteReplayArchiveUnsafe(string replayFilePath, bool readFromActiveStream) { - var packetType = this.packetType.GetOutgoingTypeById(packetID); - if (packetType == PacketTypesOut.PlayerPosition - || packetType == PacketTypesOut.PlayerPositionAndRotation) + Directory.CreateDirectory(Path.GetDirectoryName(replayFilePath) ?? "."); + + MetaData.duration = GetCurrentDurationMillisecondsUnsafe(); + if (_playerEntityId >= 0) + MetaData.selfId = _playerEntityId; + if (_playerUuid != Guid.Empty) + MetaData.AddPlayerUUID(_playerUuid); + + MetaData.SaveToFile(); + + using FileStream replayArchiveFile = new(replayFilePath, FileMode.Create, FileAccess.Write); + using ZipArchive replayArchive = new(replayArchiveFile, ZipArchiveMode.Create); + + ZipArchiveEntry recordingEntry = replayArchive.CreateEntry(RecordingEntryName); + using (Stream recordingEntryStream = recordingEntry.Open()) { - // translate them to incoming entitymovement packet then save them + if (readFromActiveStream) + CopyActiveRecordingUnsafe(recordingEntryStream); + else + using (FileStream recordingFile = new(_recordingFilePath, FileMode.Open, FileAccess.Read, FileShare.Read)) + recordingFile.CopyTo(recordingEntryStream); + } + + ZipArchiveEntry metadataEntry = replayArchive.CreateEntry(MetaData.MetaDataFileName); + using Stream metadataEntryStream = metadataEntry.Open(); + using FileStream metadataFile = new(Path.Combine(_workingDirectory, MetaData.MetaDataFileName), FileMode.Open, FileAccess.Read, FileShare.Read); + metadataFile.CopyTo(metadataEntryStream); + } + + private void CopyActiveRecordingUnsafe(Stream destination) + { + _recordStream.Flush(); + long position = _recordStream.Position; + try + { + _recordStream.Position = 0; + _recordStream.CopyTo(destination); + } + finally + { + _recordStream.Position = position; } } - private byte[] GetSpawnPlayerPacket(int entityID, Guid playerUUID, Location location, double pitch, double yaw) + private int GetCurrentDurationMillisecondsUnsafe() => + Math.Max(0, Convert.ToInt32((_lastPacketTime - _recordStartTime).TotalMilliseconds)); + + private bool HasCapturedPacketsUnsafe() => _lastPacketTime > _recordStartTime; + + private void CloseRecordStreamUnsafe() { - List packet = new(); - packet.AddRange(DataTypes.GetVarInt(entityID)); - packet.AddRange(playerUUID.ToBigEndianBytes()); - packet.AddRange(dataTypes.GetDouble(location.X)); - packet.AddRange(dataTypes.GetDouble(location.Y)); - packet.AddRange(dataTypes.GetDouble(location.Z)); - packet.Add((byte)0); - packet.Add((byte)0); - return packet.ToArray(); + if (_recordStreamClosed) + return; + + _recordStream.Flush(); + _recordStream.Dispose(); + _recordStreamClosed = true; } - #endregion + private void CleanupWorkingFilesUnsafe() + { + DeleteFileIfExists(_backupReplayPath); + DeleteFileIfExists(_recordingFilePath); + DeleteFileIfExists(Path.Combine(_workingDirectory, MetaData.MetaDataFileName)); - #region Helper method + if (Directory.Exists(_workingDirectory) && Directory.GetFileSystemEntries(_workingDirectory).Length == 0) + Directory.Delete(_workingDirectory); + } + + private void FinalizeOnProcessExit() + { + lock (_sync) + { + if (_disposed || _state != ReplayRecordingState.Recording) + return; + + try + { + _state = ReplayRecordingState.Finalizing; + CloseRecordStreamUnsafe(); + + if (HasCapturedPacketsUnsafe()) + { + string replayFileName = GetReplayDefaultName(); + WriteDebugLog("Process exit detected, finalizing replay file."); + WriteReplayArchiveUnsafe(ResolveReplayPath(replayFileName), readFromActiveStream: false); + ReplayFileName = replayFileName; + } + + _state = ReplayRecordingState.Stopped; + CleanupWorkingFilesUnsafe(); + } + catch (Exception e) + { + _state = ReplayRecordingState.Stopped; + WriteDebugLog("Exception while finalizing replay on process exit: " + e.Message + "\n" + e.StackTrace); + } + } + } + + private string ResolveReplayPath(string replayFileName) + { + ArgumentException.ThrowIfNullOrWhiteSpace(replayFileName); + + if (Path.IsPathRooted(replayFileName) || !string.IsNullOrEmpty(Path.GetDirectoryName(replayFileName))) + return replayFileName; + + return Path.Combine(ReplayFileDirectory, replayFileName); + } + + private void EnsureNotDisposed() => ObjectDisposedException.ThrowIf(_disposed, this); + + private static void DeleteFileIfExists(string path) + { + if (File.Exists(path)) + File.Delete(path); + } private static void WriteLog(string t) { @@ -422,88 +465,96 @@ namespace MinecraftClient.Protocol WriteLog(t); } - #endregion + private enum ReplayRecordingState + { + Recording, + Finalizing, + Stopped + } } /// - /// Handle MetaData used by Replay mod + /// Metadata used by Replay Mod. /// public class MetaDataHandler { - public readonly string MetaDataFileName = @"metaData.json"; - public readonly string temporaryCache = @"recording_cache"; + private static readonly JsonSerializerOptions s_jsonOptions = new() + { + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + }; + + private readonly HashSet _players = new(StringComparer.OrdinalIgnoreCase); + + public string MetaDataFileName { get; } = "metaData.json"; + public string temporaryCache { get; } public bool singlePlayer = false; public string? serverName; - public int duration = 0; // duration of the whole replay - public long date; // start time of the recording in unix timestamp milliseconds - public string mcversion = "0.0"; // e.g. 1.15.2 + public string? customServerName; + public int duration; + public long date; + public string mcversion = "0.0"; public string fileFormat = "MCPR"; - public int fileFormatVersion = 14; // 14 is what I found in metadata generated in 1.15.2 replay mod + public int fileFormatVersion = 14; public int protocol; - public string generator = "MCC"; // The program which generated the file (MCC have more popularity now :P) - public int selfId = -1; // I saw -1 in medaData file generated by Replay mod. Not sure what is this for - public List players; // Array of UUIDs of all players which can be seen in the replay + public string generator = "MCC"; + public int selfId = -1; - public MetaDataHandler() + public MetaDataHandler(string temporaryCache) { - players = new List(); + this.temporaryCache = temporaryCache; } - /// - /// Add a player's UUID who appeared in the replay - /// - /// public void AddPlayerUUID(Guid uuid) { - players.Add(uuid.ToString()); + _players.Add(uuid.ToString()); } - /// - /// Export metadata to JSON string - /// - /// JSON string public string ToJson() { - return String.Concat(new[] { "{" - , "\"singleplayer\":" , singlePlayer.ToString().ToLower() , "," - , "\"serverName\":\"" , serverName , "\"," - , "\"duration\":" , duration.ToString() , "," - , "\"date\":" , date.ToString() , "," - , "\"mcversion\":\"" , mcversion , "\"," - , "\"fileFormat\":\"" , fileFormat , "\"," - , "\"fileFormatVersion\":" , fileFormatVersion.ToString() , "," - , "\"protocol\":" , protocol.ToString() , "," - , "\"generator\":\"" , generator , "\"," - , "\"selfId\":" , selfId.ToString() + "," - , "\"player\":" , GetPlayersJsonArray() - , "}" - }); + ReplayMetaDataModel metaData = new() + { + Singleplayer = singlePlayer, + ServerName = serverName, + CustomServerName = customServerName, + Duration = duration, + Date = date, + Mcversion = mcversion, + FileFormat = fileFormat, + FileFormatVersion = fileFormatVersion, + Protocol = protocol, + Generator = generator, + SelfId = selfId, + Players = [.. _players] + }; + + return JsonSerializer.Serialize(metaData, s_jsonOptions); } - /// - /// Save metadata to disk file - /// public void SaveToFile() { + Directory.CreateDirectory(temporaryCache); File.WriteAllText(Path.Combine(temporaryCache, MetaDataFileName), ToJson()); } - /// - /// Get players UUID JSON array string - /// - /// - private string GetPlayersJsonArray() + private sealed class ReplayMetaDataModel { - if (players.Count == 0) - return "[]"; + public bool Singleplayer { get; init; } + public string? ServerName { get; init; } + public string? CustomServerName { get; init; } + public int Duration { get; init; } + public long Date { get; init; } - // Place between brackets the comma-separated list of player names placed between quotes - return String.Format("[{0}]", - String.Join(",", - players.Select(player => String.Format("\"{0}\"", player)) - ) - ); + [JsonPropertyName("mcversion")] + public string Mcversion { get; init; } = "0.0"; + + public string FileFormat { get; init; } = "MCPR"; + public int FileFormatVersion { get; init; } + public int Protocol { get; init; } + public string Generator { get; init; } = "MCC"; + public int SelfId { get; init; } = -1; + public string[] Players { get; init; } = []; } } } diff --git a/MinecraftClient/Protocol/Session/SessionToken.cs b/MinecraftClient/Protocol/Session/SessionToken.cs index 1364012b..a5d9f35c 100644 --- a/MinecraftClient/Protocol/Session/SessionToken.cs +++ b/MinecraftClient/Protocol/Session/SessionToken.cs @@ -28,7 +28,7 @@ namespace MinecraftClient.Protocol.Session public string ServerIDhash { get; set; } [Key(6)] public byte[]? ServerPublicKey { get; set; } - + [IgnoreMember] public Task? SessionPreCheckTask = null; diff --git a/MinecraftClient/Resources/ConfigComments/ConfigComments.Designer.cs b/MinecraftClient/Resources/ConfigComments/ConfigComments.Designer.cs index ee4b68ed..5c86e6b0 100644 --- a/MinecraftClient/Resources/ConfigComments/ConfigComments.Designer.cs +++ b/MinecraftClient/Resources/ConfigComments/ConfigComments.Designer.cs @@ -394,6 +394,24 @@ namespace MinecraftClient { } } + /// + /// Looks up a localized string similar to Apply Efficiency enchantment speed when AutoDig computes mining time. Disable this for strict anti-cheat compatibility.. + /// + internal static string ChatBot_AutoDig_Apply_Efficiency_Enchantments { + get { + return ResourceManager.GetString("ChatBot.AutoDig.Apply_Efficiency_Enchantments", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Apply Haste and Conduit Power speed effects when AutoDig computes mining time. Disable this for strict anti-cheat compatibility.. + /// + internal static string ChatBot_AutoDig_Apply_Haste_Effects { + get { + return ResourceManager.GetString("ChatBot.AutoDig.Apply_Haste_Effects", resourceCulture); + } + } + /// /// Looks up a localized string similar to Mining a block for more than "Dig_Timeout" seconds will be considered a timeout.. /// @@ -645,7 +663,7 @@ namespace MinecraftClient { } /// - /// Looks up a localized string similar to When set to true, autorelog will reconnect regardless of kick messages.. + /// Looks up a localized string similar to Reconnect after any server kick or login rejection. Network interruptions always trigger Auto Relog.. /// internal static string ChatBot_AutoRelog_Ignore_Kick_Message { get { @@ -654,7 +672,7 @@ namespace MinecraftClient { } /// - /// Looks up a localized string similar to If the kickout message matches any of the strings, then autorelog will be triggered.. + /// Looks up a localized string similar to Case-insensitive text fragments that trigger Auto Relog for server kicks and login rejections.. /// internal static string ChatBot_AutoRelog_Kick_Messages { get { @@ -663,7 +681,7 @@ namespace MinecraftClient { } /// - /// Looks up a localized string similar to Retries when failing to relog to the server. use -1 for unlimited retries.. + /// Looks up a localized string similar to Exact retry limit. Use 0 to disable retries or -1 for unlimited retries. The count resets after 60 seconds online.. /// internal static string ChatBot_AutoRelog_Retries { get { @@ -1429,6 +1447,15 @@ namespace MinecraftClient { } } + /// + /// Looks up a localized string similar to Whether to display received chat messages in the console. This does not affect chat bots or chat log files.. + /// + internal static string Console_General_Display_Chat { + get { + return ResourceManager.GetString("Console.General.Display_Chat", resourceCulture); + } + } + /// /// Looks up a localized string similar to Maximum number of input history records to keep.. /// @@ -1505,6 +1532,24 @@ namespace MinecraftClient { } } + /// + /// Looks up a localized string similar to Show low-level packet debug logs.. + /// + internal static string Logging_PacketDebugMessages { + get { + return ResourceManager.GetString("Logging.PacketDebugMessages", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Packet types to exclude from packet debug logs, e.g. ["KeepAlive", "Ping"].. + /// + internal static string Logging_PacketDebugExclusions { + get { + return ResourceManager.GetString("Logging.PacketDebugExclusions", resourceCulture); + } + } + /// /// Looks up a localized string similar to Show error messages.. /// @@ -1966,6 +2011,15 @@ namespace MinecraftClient { return ResourceManager.GetString("Main.General.AuthlibServer", resourceCulture); } } + + /// + /// Looks up a localized string similar to Authlib-injector URL to use for Yggdrasil accounts. It must use http or https and include any required path.. + /// + internal static string Main_General_AuthServerUrl { + get { + return ResourceManager.GetString("Main.General.AuthServerUrl", resourceCulture); + } + } /// /// Looks up a localized string similar to Yggdrasil authlib multi-user selection.. diff --git a/MinecraftClient/Resources/ConfigComments/ConfigComments.resx b/MinecraftClient/Resources/ConfigComments/ConfigComments.resx index 22028071..f109fd03 100644 --- a/MinecraftClient/Resources/ConfigComments/ConfigComments.resx +++ b/MinecraftClient/Resources/ConfigComments/ConfigComments.resx @@ -193,7 +193,7 @@ You need to enable Entity Handling to use this bot Capped between 1 to 4 - How long to wait between each attack. Set "Custom = false" to let MCC calculate it. + Delay between attacks. Set "Custom = false" to let MCC calculate it. When Custom = true, set Min/Max for the cooldown range. If RandomMode = true, a random value between Min and Max is used for each attack. All entity types can be found here: https://mccteam.github.io/r/entity/#L15 @@ -242,6 +242,12 @@ For the naming of the block, please see https://mccteam.github.io/r/block/#L15 Automatically switch to the appropriate tool. + + Apply Efficiency enchantment speed when AutoDig computes mining time. Disable this for strict anti-cheat compatibility. + + + Apply Haste and Conduit Power speed effects when AutoDig computes mining time. Disable this for strict anti-cheat compatibility. + Mining a block for more than "Dig_Timeout" seconds will be considered a timeout. @@ -346,13 +352,13 @@ You can use "/fish" to control the bot manually. The delay time before joining the server. (in seconds) - When set to true, autorelog will reconnect regardless of kick messages. + Reconnect after any server kick or login rejection. Network interruptions always trigger Auto Relog. - If the kickout message matches any of the strings, then autorelog will be triggered. + Case-insensitive text fragments that trigger Auto Relog for server kicks and login rejections. - Retries when failing to relog to the server. use -1 for unlimited retries. + Exact retry limit. Use 0 to disable retries or -1 for unlimited retries. The count resets after 60 seconds online. Run commands or send messages automatically when a specified pattern is detected in chat @@ -498,8 +504,10 @@ You need to have ChatFormat working correctly and add yourself in botowners to u /!\ Server admins can spoof PMs (/tellraw, /nick) so enable RemoteControl only if you trust server admins - Enable recording of the game (/replay start) and replay it later using the Replay Mod (https://www.replaymod.com/) + Enable automatic recording of the game and replay it later using the Replay Mod (https://www.replaymod.com/) +Use /replay save to create a snapshot replay file while still recording. Please note that due to technical limitations, the client player (you) will not be shown in the replay file +Each MCC instance uses its own temporary replay cache so multiple clients can record from the same folder without colliding. /!\ You SHOULD use /replay stop or exit the program gracefully with /quit OR THE REPLAY FILE MAY GET CORRUPT! @@ -587,6 +595,9 @@ Custom colors are only available when using "vt100_24bit" color mode. You can use "Ctrl+P" to print out the current input and cursor position. + + Whether to display received chat messages in the console. This does not affect chat bots or chat log files. + Maximum number of input history records to keep. @@ -615,6 +626,12 @@ Want to upgrade to a newer version? See https://github.com/MCCTeam/Minecraft-Con Please enable this before submitting bug reports. Thanks! + + Show low-level packet debug logs. + + + Packet types to exclude from packet debug logs, e.g. ["KeepAlive", "Ping"]. + Show error messages. @@ -679,6 +696,18 @@ Usage examples: "/tell <mybot> reco Player2", "/connect <serverip> P Load translations applied to MCC when available, turn it off to use English only. + + Load translations from server resource packs and cache extracted language entries locally for faster reuse. + + + Load translations from local Forge mod jars when their mod IDs are announced by the server. Disabled by default. + + + Also scan standard Minecraft, Prism Launcher, and CurseForge instance mod folders for translation jars when available. + + + Optional path to a mods folder. When set, MCC loads Forge mod translations from this folder instead of automatic discovery. + Use "auto", "no" or "force". Force-enabling only works for MC 1.13+. @@ -735,6 +764,9 @@ Usage examples: "/tell <mybot> connect Server1", "/connect Server2" Show inventory layout as ASCII art in inventory command. + + Show chat notifications when your active effects are gained or expire. Set to false to disable these messages entirely. + Show full effect names and levels in the TUI status bar instead of compact effect icons only. @@ -951,6 +983,9 @@ Note: This does NOT require a Bot Token, only an Application ID. Discord must be authlib-injector authentication server to use for Yggdrasil accounts + + Authlib-injector URL to use for Yggdrasil accounts. It must use http or https and include any required path. + Domain name or IP address @@ -1002,6 +1037,12 @@ Note: This does NOT require a Bot Token, only an Application ID. Discord must be Cave rendering mode: "auto" (detect ceiling), "on" (always cave view), "off" (always surface view). + + Settings for the /tab command and live TUI tab overlay. + + + Show a separate team column in /tab output. Disabled by default for a more vanilla-like player list. + Yggdrasil authlib multi-user selection. diff --git a/MinecraftClient/Resources/Translations/Translations.Designer.cs b/MinecraftClient/Resources/Translations/Translations.Designer.cs index 4eb1a044..4568ebd9 100644 --- a/MinecraftClient/Resources/Translations/Translations.Designer.cs +++ b/MinecraftClient/Resources/Translations/Translations.Designer.cs @@ -1221,6 +1221,15 @@ namespace MinecraftClient { } } + /// + /// Looks up a localized string similar to {0} is only available in Minecraft {1} and newer!. + /// + internal static string bot_farmer_crop_unavailable { + get { + return ResourceManager.GetString("bot.farmer.crop_unavailable", resourceCulture); + } + } + /// /// Looks up a localized string similar to Farming bot. /// @@ -1267,7 +1276,7 @@ namespace MinecraftClient { } /// - /// Looks up a localized string similar to Not implemented bellow 1.13!. + /// Looks up a localized string similar to Not implemented below 1.8!. /// internal static string bot_farmer_not_implemented { get { @@ -1682,6 +1691,24 @@ namespace MinecraftClient { } } + /// + /// Looks up a localized string similar to Map #{0} ({1}x{2}) [{3}%]. + /// + internal static string bot_map_tui_header { + get { + return ResourceManager.GetString("bot.map.tui_header", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Scroll=Zoom Drag=Pan +/-=Zoom Arrows=Pan Esc/E=Close. + /// + internal static string bot_map_tui_controls { + get { + return ResourceManager.GetString("bot.map.tui_controls", resourceCulture); + } + } + /// /// Looks up a localized string similar to replay command. /// @@ -1753,6 +1780,51 @@ namespace MinecraftClient { return ResourceManager.GetString("bot.script.pm.loaded", resourceCulture); } } + + /// + /// Looks up a localized string similar to Error in {0} at line {1}, column {2}: [{3}] {4}. + /// + internal static string script_compile_error { + get { + return ResourceManager.GetString("script.compile.error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error in {0}: [{1}] {2}. + /// + internal static string script_compile_error_no_location { + get { + return ResourceManager.GetString("script.compile.error_no_location", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [Script] Compilation failed with error(s):. + /// + internal static string script_compile_failed { + get { + return ResourceManager.GetString("script.compile.failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [Script] Starting compilation for {0}.... + /// + internal static string script_compile_started { + get { + return ResourceManager.GetString("script.compile.started", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [Script] Compilation done with no errors.. + /// + internal static string script_compile_succeeded { + get { + return ResourceManager.GetString("script.compile.succeeded", resourceCulture); + } + } /// /// Looks up a localized string similar to Loaded task: @@ -2700,7 +2772,7 @@ namespace MinecraftClient { } /// - /// Looks up a localized string similar to Found a bet at (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}).. + /// Looks up a localized string similar to Found a bed at (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}).. /// internal static string cmd_bed_found_a_bed_at { get { @@ -2997,6 +3069,42 @@ namespace MinecraftClient { } } + /// + /// Looks up a localized string similar to clear the console output.. + /// + internal static string cmd_clear_console_desc { + get { + return ResourceManager.GetString("cmd.clear_console.desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to toggle chat visibility in the console.. + /// + internal static string cmd_console_chat_desc { + get { + return ResourceManager.GetString("cmd.console_chat.desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Console chat output is now hidden.. + /// + internal static string cmd_console_chat_state_off { + get { + return ResourceManager.GetString("cmd.console_chat.state_off", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Console chat output is now visible.. + /// + internal static string cmd_console_chat_state_on { + get { + return ResourceManager.GetString("cmd.console_chat.state_on", resourceCulture); + } + } + /// /// Looks up a localized string similar to toggle debug messages.. /// @@ -4072,7 +4180,7 @@ namespace MinecraftClient { } /// - /// Looks up a localized string similar to Shift clicking slot {0} in window #{1}. + /// Looks up a localized string similar to Shift. /// internal static string cmd_inventory_shiftclick { get { @@ -4090,7 +4198,7 @@ namespace MinecraftClient { } /// - /// Looks up a localized string similar to Shift right-clicking slot {0} in window #{1}. + /// Looks up a localized string similar to Shift right. /// internal static string cmd_inventory_shiftrightclick { get { @@ -4178,6 +4286,78 @@ namespace MinecraftClient { return ResourceManager.GetString("cmd.list.players", resourceCulture); } } + + /// + /// Looks up a localized string similar to show a vanilla-like tab list. In TUI mode, opens a live overlay.. + /// + internal static string cmd_tab_desc { + get { + return ResourceManager.GetString("cmd.tab.desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No listed players are currently tracked.. + /// + internal static string cmd_tab_no_players { + get { + return ResourceManager.GetString("cmd.tab.no_players", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tab list ({0} players). + /// + internal static string cmd_tab_title { + get { + return ResourceManager.GetString("cmd.tab.title", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ping. + /// + internal static string cmd_tab_column_ping { + get { + return ResourceManager.GetString("cmd.tab.column_ping", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Team. + /// + internal static string cmd_tab_column_team { + get { + return ResourceManager.GetString("cmd.tab.column_team", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Player. + /// + internal static string cmd_tab_column_player { + get { + return ResourceManager.GetString("cmd.tab.column_player", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Live tab overlay opened.. + /// + internal static string cmd_tab_tui_opened { + get { + return ResourceManager.GetString("cmd.tab.tui_opened", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The tab overlay is not available right now.. + /// + internal static string cmd_tab_tui_unavailable { + get { + return ResourceManager.GetString("cmd.tab.tui_unavailable", resourceCulture); + } + } /// /// Looks up a localized string similar to log some text to the console.. @@ -4746,7 +4926,7 @@ namespace MinecraftClient { return ResourceManager.GetString("cmd.teams.team_no_members", resourceCulture); } } - + /// /// Looks up a localized string similar to Place a block or open chest. /// @@ -5818,6 +5998,24 @@ namespace MinecraftClient { return ResourceManager.GetString("mcc.connecting", resourceCulture); } } + + /// + /// Looks up a localized string similar to Select a login method: [1] Offline, [2] Online (Microsoft), [3] Yggdrasil. + /// + internal static string mcc_auth_method_prompt { + get { + return ResourceManager.GetString("mcc.auth_method_prompt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Please choose 1, 2, or 3.. + /// + internal static string mcc_auth_method_invalid { + get { + return ResourceManager.GetString("mcc.auth_method_invalid", resourceCulture); + } + } /// /// Looks up a localized string similar to Tip: try TUI mode for a cleaner interface, mouse-friendly container actions, and a nicer layout. Run {0}feature tui§8 to switch [Console.General] ConsoleMode to "tui" for the next restart.. @@ -6091,6 +6289,114 @@ namespace MinecraftClient { return ResourceManager.GetString("mcc.password_hidden", resourceCulture); } } + + /// + /// Looks up a localized string similar to Authlib server host:. + /// + internal static string mcc_yggdrasil_host { + get { + return ResourceManager.GetString("mcc.yggdrasil_host", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Authlib server port [{0}]:. + /// + internal static string mcc_yggdrasil_port { + get { + return ResourceManager.GetString("mcc.yggdrasil_port", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Authlib-Injector API path [{0}]:. + /// + internal static string mcc_yggdrasil_api_path { + get { + return ResourceManager.GetString("mcc.yggdrasil_api_path", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Use HTTPS? [Y/n]. + /// + internal static string mcc_yggdrasil_use_https { + get { + return ResourceManager.GetString("mcc.yggdrasil_use_https", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The authlib server host cannot be empty.. + /// + internal static string mcc_yggdrasil_invalid_host { + get { + return ResourceManager.GetString("mcc.yggdrasil_invalid_host", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The authlib server port must be between 1 and 65535.. + /// + internal static string mcc_yggdrasil_invalid_port { + get { + return ResourceManager.GetString("mcc.yggdrasil_invalid_port", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Please answer yes or no.. + /// + internal static string mcc_yggdrasil_invalid_yes_no { + get { + return ResourceManager.GetString("mcc.yggdrasil_invalid_yes_no", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Authlib-injector URL:. + /// + internal static string mcc_yggdrasil_url { + get { + return ResourceManager.GetString("mcc.yggdrasil_url", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The authlib-injector URL must be an absolute HTTP or HTTPS URL.. + /// + internal static string mcc_yggdrasil_invalid_url { + get { + return ResourceManager.GetString("mcc.yggdrasil_invalid_url", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not reach the authlib-injector server. Check the URL and try again.. + /// + internal static string mcc_yggdrasil_server_unreachable { + get { + return ResourceManager.GetString("mcc.yggdrasil_server_unreachable", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The server did not return valid authlib-injector metadata. Check the URL and try again.. + /// + internal static string mcc_yggdrasil_server_invalid { + get { + return ResourceManager.GetString("mcc.yggdrasil_server_invalid", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The configured authlib-injector URL must be an absolute HTTP or HTTPS URL.. + /// + internal static string config_auth_server_url_invalid { + get { + return ResourceManager.GetString("config.auth_server_url_invalid", resourceCulture); + } + } /// /// Looks up a localized string similar to You are dead. Type '{0}respawn' to respawn.. @@ -6896,6 +7202,15 @@ namespace MinecraftClient { } } + /// + /// Looks up a localized string similar to Press Esc to close. Refreshes automatically.. + /// + internal static string tui_tab_hint { + get { + return ResourceManager.GetString("tui.tab.hint", resourceCulture); + } + } + /// /// Looks up a localized string similar to You're now under {0} effect (Duration: {1}).. /// @@ -7453,5 +7768,537 @@ namespace MinecraftClient { return ResourceManager.GetString("cmd.achievement.entry", resourceCulture); } } + internal static string cmd_book_usage { + get { return ResourceManager.GetString("cmd.book.usage", resourceCulture); } + } + + internal static string cmd_book_desc { + get { return ResourceManager.GetString("cmd.book.desc", resourceCulture); } + } + + internal static string cmd_book_help_read { + get { return ResourceManager.GetString("cmd.book.help_read", resourceCulture); } + } + + internal static string cmd_book_help_write { + get { return ResourceManager.GetString("cmd.book.help_write", resourceCulture); } + } + + internal static string cmd_book_help_edit { + get { return ResourceManager.GetString("cmd.book.help_edit", resourceCulture); } + } + + internal static string cmd_book_help_sign { + get { return ResourceManager.GetString("cmd.book.help_sign", resourceCulture); } + } + + internal static string cmd_book_not_holding_book { + get { return ResourceManager.GetString("cmd.book.not_holding_book", resourceCulture); } + } + + internal static string cmd_book_not_holding_writable { + get { return ResourceManager.GetString("cmd.book.not_holding_writable", resourceCulture); } + } + + internal static string cmd_book_already_signed { + get { return ResourceManager.GetString("cmd.book.already_signed", resourceCulture); } + } + + internal static string cmd_book_cannot_edit_signed { + get { return ResourceManager.GetString("cmd.book.cannot_edit_signed", resourceCulture); } + } + + internal static string cmd_book_tui_opened { + get { return ResourceManager.GetString("cmd.book.tui_opened", resourceCulture); } + } + + internal static string cmd_book_tui_required { + get { return ResourceManager.GetString("cmd.book.tui_required", resourceCulture); } + } + + internal static string cmd_book_write_sent { + get { return ResourceManager.GetString("cmd.book.write_sent", resourceCulture); } + } + + internal static string cmd_book_edit_sent { + get { return ResourceManager.GetString("cmd.book.edit_sent", resourceCulture); } + } + + internal static string cmd_book_sign_sent { + get { return ResourceManager.GetString("cmd.book.sign_sent", resourceCulture); } + } + + internal static string cmd_book_write_failed { + get { return ResourceManager.GetString("cmd.book.write_failed", resourceCulture); } + } + + internal static string cmd_book_file_not_found { + get { return ResourceManager.GetString("cmd.book.file_not_found", resourceCulture); } + } + + internal static string cmd_book_page_out_of_range { + get { return ResourceManager.GetString("cmd.book.page_out_of_range", resourceCulture); } + } + + internal static string cmd_book_too_many_pages { + get { return ResourceManager.GetString("cmd.book.too_many_pages", resourceCulture); } + } + + internal static string cmd_book_page_too_long { + get { return ResourceManager.GetString("cmd.book.page_too_long", resourceCulture); } + } + + internal static string cmd_book_title_invalid { + get { return ResourceManager.GetString("cmd.book.title_invalid", resourceCulture); } + } + + internal static string cmd_book_header_signed { + get { return ResourceManager.GetString("cmd.book.header_signed", resourceCulture); } + } + + internal static string cmd_book_header_writable { + get { return ResourceManager.GetString("cmd.book.header_writable", resourceCulture); } + } + + internal static string cmd_book_page_header { + get { return ResourceManager.GetString("cmd.book.page_header", resourceCulture); } + } + + internal static string tui_book_title_watermark { + get { return ResourceManager.GetString("tui.book.title_watermark", resourceCulture); } + } + + internal static string tui_book_prev { + get { return ResourceManager.GetString("tui.book.prev", resourceCulture); } + } + + internal static string tui_book_next { + get { return ResourceManager.GetString("tui.book.next", resourceCulture); } + } + + internal static string tui_book_insert { + get { return ResourceManager.GetString("tui.book.insert", resourceCulture); } + } + + internal static string tui_book_delete { + get { return ResourceManager.GetString("tui.book.delete", resourceCulture); } + } + + internal static string tui_book_save { + get { return ResourceManager.GetString("tui.book.save", resourceCulture); } + } + + internal static string tui_book_sign { + get { return ResourceManager.GetString("tui.book.sign", resourceCulture); } + } + + internal static string tui_book_close { + get { return ResourceManager.GetString("tui.book.close", resourceCulture); } + } + + internal static string tui_book_saved { + get { return ResourceManager.GetString("tui.book.saved", resourceCulture); } + } + + internal static string tui_book_save_failed { + get { return ResourceManager.GetString("tui.book.save_failed", resourceCulture); } + } + + internal static string tui_book_signed { + get { return ResourceManager.GetString("tui.book.signed", resourceCulture); } + } + + internal static string tui_book_page_header { + get { return ResourceManager.GetString("tui.book.page_header", resourceCulture); } + } + + internal static string tui_book_editing { + get { return ResourceManager.GetString("tui.book.editing", resourceCulture); } + } + + internal static string tui_book_reading { + get { return ResourceManager.GetString("tui.book.reading", resourceCulture); } + } + + internal static string tui_book_edit_shortcut_tip { + get { return ResourceManager.GetString("tui.book.edit_shortcut_tip", resourceCulture); } + } + + internal static string tui_book_page_shortcut_tip { + get { return ResourceManager.GetString("tui.book.page_shortcut_tip", resourceCulture); } + } + + internal static string debug_packet_incoming { + get { return ResourceManager.GetString("debug.packet.incoming", resourceCulture); } + } + + internal static string debug_packet_outgoing { + get { return ResourceManager.GetString("debug.packet.outgoing", resourceCulture); } + } + + internal static string debug_packet_state_change { + get { return ResourceManager.GetString("debug.packet.state_change", resourceCulture); } + } + + internal static string debug_packet_unknown_type { + get { return ResourceManager.GetString("debug.packet.unknown_type", resourceCulture); } + } + + internal static string debug_packet_compression_disabled { + get { return ResourceManager.GetString("debug.packet.compression.disabled", resourceCulture); } + } + + internal static string debug_packet_compression_uncompressed { + get { return ResourceManager.GetString("debug.packet.compression.uncompressed", resourceCulture); } + } + + internal static string debug_packet_compression_compressed { + get { return ResourceManager.GetString("debug.packet.compression.compressed", resourceCulture); } + } + + internal static string debug_packet_loop_exit { + get { return ResourceManager.GetString("debug.packet.loop_exit", resourceCulture); } + } + + internal static string debug_packet_loop_reason_queue_completed { + get { return ResourceManager.GetString("debug.packet.loop_reason.queue_completed", resourceCulture); } + } + + internal static string debug_packet_loop_reason_socket_closed { + get { return ResourceManager.GetString("debug.packet.loop_reason.socket_closed", resourceCulture); } + } + + internal static string debug_packet_loop_reason_cancelled { + get { return ResourceManager.GetString("debug.packet.loop_reason.cancelled", resourceCulture); } + } + + internal static string cmd_dialog_usage { + get { return ResourceManager.GetString("cmd.dialog.usage", resourceCulture); } + } + + internal static string cmd_dialog_desc { + get { return ResourceManager.GetString("cmd.dialog.desc", resourceCulture); } + } + + internal static string dialog_received { + get { return ResourceManager.GetString("dialog.received", resourceCulture); } + } + + internal static string dialog_cleared { + get { return ResourceManager.GetString("dialog.cleared", resourceCulture); } + } + + internal static string dialog_none { + get { return ResourceManager.GetString("dialog.none", resourceCulture); } + } + + internal static string dialog_dismissed { + get { return ResourceManager.GetString("dialog.dismissed", resourceCulture); } + } + + internal static string dialog_unresolved_title { + get { return ResourceManager.GetString("dialog.unresolved_title", resourceCulture); } + } + + internal static string dialog_unresolved_body { + get { return ResourceManager.GetString("dialog.unresolved_body", resourceCulture); } + } + + internal static string dialog_unresolved_action_disabled { + get { return ResourceManager.GetString("dialog.unresolved_action_disabled", resourceCulture); } + } + + internal static string dialog_input_unknown { + get { return ResourceManager.GetString("dialog.input_unknown", resourceCulture); } + } + + internal static string dialog_input_set { + get { return ResourceManager.GetString("dialog.input_set", resourceCulture); } + } + + internal static string dialog_input_too_long { + get { return ResourceManager.GetString("dialog.input_too_long", resourceCulture); } + } + + internal static string dialog_input_boolean_invalid { + get { return ResourceManager.GetString("dialog.input_boolean_invalid", resourceCulture); } + } + + internal static string dialog_input_option_invalid { + get { return ResourceManager.GetString("dialog.input_option_invalid", resourceCulture); } + } + + internal static string dialog_input_number_invalid { + get { return ResourceManager.GetString("dialog.input_number_invalid", resourceCulture); } + } + + internal static string dialog_input_number_range_invalid { + get { return ResourceManager.GetString("dialog.input_number_range_invalid", resourceCulture); } + } + + internal static string dialog_action_unknown { + get { return ResourceManager.GetString("dialog.action_unknown", resourceCulture); } + } + + internal static string dialog_action_label_unknown { + get { return ResourceManager.GetString("dialog.action_label_unknown", resourceCulture); } + } + + internal static string dialog_action_label_ambiguous { + get { return ResourceManager.GetString("dialog.action_label_ambiguous", resourceCulture); } + } + + internal static string dialog_cannot_cancel { + get { return ResourceManager.GetString("dialog.cannot_cancel", resourceCulture); } + } + + internal static string dialog_action_closed { + get { return ResourceManager.GetString("dialog.action_closed", resourceCulture); } + } + + internal static string dialog_action_command_not_in_play { + get { return ResourceManager.GetString("dialog.action_command_not_in_play", resourceCulture); } + } + + internal static string dialog_action_invalid { + get { return ResourceManager.GetString("dialog.action_invalid", resourceCulture); } + } + + internal static string dialog_action_custom_failed { + get { return ResourceManager.GetString("dialog.action_custom_failed", resourceCulture); } + } + + internal static string dialog_action_command_sent { + get { return ResourceManager.GetString("dialog.action_command_sent", resourceCulture); } + } + + internal static string dialog_action_custom_sent { + get { return ResourceManager.GetString("dialog.action_custom_sent", resourceCulture); } + } + + internal static string dialog_action_nested_opened { + get { return ResourceManager.GetString("dialog.action_nested_opened", resourceCulture); } + } + + internal static string dialog_action_open_url { + get { return ResourceManager.GetString("dialog.action_open_url", resourceCulture); } + } + + internal static string dialog_action_suggest_command { + get { return ResourceManager.GetString("dialog.action_suggest_command", resourceCulture); } + } + + internal static string dialog_action_copy { + get { return ResourceManager.GetString("dialog.action_copy", resourceCulture); } + } + + internal static string dialog_action_unsupported { + get { return ResourceManager.GetString("dialog.action_unsupported", resourceCulture); } + } + + internal static string dialog_tui_pending { + get { return ResourceManager.GetString("dialog.tui_pending", resourceCulture); } + } + + internal static string dialog_tui_unavailable { + get { return ResourceManager.GetString("dialog.tui_unavailable", resourceCulture); } + } + + internal static string dialog_tui_opened { + get { return ResourceManager.GetString("dialog.tui_opened", resourceCulture); } + } + + internal static string dialog_action_unnamed { + get { return ResourceManager.GetString("dialog.action_unnamed", resourceCulture); } + } + + internal static string dialog_action_ok { + get { return ResourceManager.GetString("dialog.action_ok", resourceCulture); } + } + + internal static string dialog_item_body { + get { return ResourceManager.GetString("dialog.item_body", resourceCulture); } + } + + internal static string dialog_server_link_report_bug { + get { return ResourceManager.GetString("dialog.server_link.report_bug", resourceCulture); } + } + + internal static string dialog_server_link_community_guidelines { + get { return ResourceManager.GetString("dialog.server_link.community_guidelines", resourceCulture); } + } + + internal static string dialog_server_link_support { + get { return ResourceManager.GetString("dialog.server_link.support", resourceCulture); } + } + + internal static string dialog_server_link_status { + get { return ResourceManager.GetString("dialog.server_link.status", resourceCulture); } + } + + internal static string dialog_server_link_feedback { + get { return ResourceManager.GetString("dialog.server_link.feedback", resourceCulture); } + } + + internal static string dialog_server_link_community { + get { return ResourceManager.GetString("dialog.server_link.community", resourceCulture); } + } + + internal static string dialog_server_link_website { + get { return ResourceManager.GetString("dialog.server_link.website", resourceCulture); } + } + + internal static string dialog_server_link_forums { + get { return ResourceManager.GetString("dialog.server_link.forums", resourceCulture); } + } + + internal static string dialog_server_link_news { + get { return ResourceManager.GetString("dialog.server_link.news", resourceCulture); } + } + + internal static string dialog_server_link_announcements { + get { return ResourceManager.GetString("dialog.server_link.announcements", resourceCulture); } + } + + internal static string tui_dialog_cancel { + get { return ResourceManager.GetString("tui.dialog.cancel", resourceCulture); } + } + + internal static string dialog_render_header { + get { return ResourceManager.GetString("dialog.render.header", resourceCulture); } + } + + internal static string dialog_render_type { + get { return ResourceManager.GetString("dialog.render.type", resourceCulture); } + } + + internal static string dialog_render_body { + get { return ResourceManager.GetString("dialog.render.body", resourceCulture); } + } + + internal static string dialog_render_inputs { + get { return ResourceManager.GetString("dialog.render.inputs", resourceCulture); } + } + + internal static string dialog_render_input { + get { return ResourceManager.GetString("dialog.render.input", resourceCulture); } + } + + internal static string dialog_render_actions { + get { return ResourceManager.GetString("dialog.render.actions", resourceCulture); } + } + + internal static string dialog_render_action { + get { return ResourceManager.GetString("dialog.render.action", resourceCulture); } + } + + internal static string dialog_render_cancel_hint { + get { return ResourceManager.GetString("dialog.render.cancel_hint", resourceCulture); } + } + + internal static string dialog_input_desc_text { + get { return ResourceManager.GetString("dialog.input_desc_text", resourceCulture); } + } + + internal static string dialog_input_desc_boolean { + get { return ResourceManager.GetString("dialog.input_desc_boolean", resourceCulture); } + } + + internal static string dialog_input_desc_options { + get { return ResourceManager.GetString("dialog.input_desc_options", resourceCulture); } + } + + internal static string dialog_input_desc_number { + get { return ResourceManager.GetString("dialog.input_desc_number", resourceCulture); } + } + + internal static string dialog_input_desc_unknown { + get { return ResourceManager.GetString("dialog.input_desc_unknown", resourceCulture); } + } + + internal static string dialog_action_desc_close { + get { return ResourceManager.GetString("dialog.action_desc_close", resourceCulture); } + } + + internal static string dialog_action_desc_command { + get { return ResourceManager.GetString("dialog.action_desc_command", resourceCulture); } + } + + internal static string dialog_action_desc_custom { + get { return ResourceManager.GetString("dialog.action_desc_custom", resourceCulture); } + } + + internal static string dialog_action_desc_show_dialog { + get { return ResourceManager.GetString("dialog.action_desc_show_dialog", resourceCulture); } + } + + internal static string dialog_action_desc_open_url { + get { return ResourceManager.GetString("dialog.action_desc_open_url", resourceCulture); } + } + + internal static string dialog_action_desc_suggest { + get { return ResourceManager.GetString("dialog.action_desc_suggest", resourceCulture); } + } + + internal static string dialog_action_desc_copy { + get { return ResourceManager.GetString("dialog.action_desc_copy", resourceCulture); } + } + + internal static string dialog_action_desc_unknown { + get { return ResourceManager.GetString("dialog.action_desc_unknown", resourceCulture); } + } + + internal static string dialog_type_notice { + get { return ResourceManager.GetString("dialog.type.notice", resourceCulture); } + } + + internal static string dialog_type_confirmation { + get { return ResourceManager.GetString("dialog.type.confirmation", resourceCulture); } + } + + internal static string dialog_type_multi_action { + get { return ResourceManager.GetString("dialog.type.multi_action", resourceCulture); } + } + + internal static string dialog_type_dialog_list { + get { return ResourceManager.GetString("dialog.type.dialog_list", resourceCulture); } + } + + internal static string dialog_type_server_links { + get { return ResourceManager.GetString("dialog.type.server_links", resourceCulture); } + } + + internal static string dialog_type_unknown { + get { return ResourceManager.GetString("dialog.type.unknown", resourceCulture); } + } + + internal static string dialog_input_kind_text { + get { return ResourceManager.GetString("dialog.input_kind.text", resourceCulture); } + } + + internal static string dialog_input_kind_boolean { + get { return ResourceManager.GetString("dialog.input_kind.boolean", resourceCulture); } + } + + internal static string dialog_input_kind_options { + get { return ResourceManager.GetString("dialog.input_kind.options", resourceCulture); } + } + + internal static string dialog_input_kind_number { + get { return ResourceManager.GetString("dialog.input_kind.number", resourceCulture); } + } + + internal static string dialog_input_kind_unknown { + get { return ResourceManager.GetString("dialog.input_kind.unknown", resourceCulture); } + } + + internal static string dialog_render_help_hint { + get { return ResourceManager.GetString("dialog.render.help_hint", resourceCulture); } + } + + internal static string protocol_chat_raw_message { + get { return ResourceManager.GetString("protocol.chat.raw_message", resourceCulture); } + } + } } diff --git a/MinecraftClient/Resources/Translations/Translations.resx b/MinecraftClient/Resources/Translations/Translations.resx index 779572d9..117e5806 100644 --- a/MinecraftClient/Resources/Translations/Translations.resx +++ b/MinecraftClient/Resources/Translations/Translations.resx @@ -505,6 +505,9 @@ cooldown: {6} Crop type + + {0} is only available in Minecraft {1} and newer! + Farming bot @@ -521,7 +524,7 @@ cooldown: {6} The Farmer bot needs Terrain Handling in order to work, please enable it! - Not implemented bellow 1.13! + Not implemented below 1.8! Radius @@ -660,6 +663,12 @@ cooldown: {6} Sent a rendered image of a map with an id '{0}' to the Telegram via Telegram Bridge chat bot! + + Map #{0} ({1}x{2}) [{3}%] + + + Scroll=Zoom Drag=Pan +/-=Zoom Arrows=Pan Esc/E=Close + replay command @@ -684,6 +693,21 @@ cooldown: {6} Script '{0}' loaded. + + Error in {0} at line {1}, column {2}: [{3}] {4} + + + Error in {0}: [{1}] {2} + + + [Script] Compilation failed with error(s): + + + [Script] Starting compilation for {0}... + + + [Script] Compilation done with no errors. + Loaded task: {0} @@ -982,7 +1006,7 @@ Some messages won't be properly printed without this file. Failed to reach the bed position (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) in time (30 seconds). Giving up! - Found a bet at (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}). + Found a bed at (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}). Succesfully laid in bed! @@ -1081,6 +1105,18 @@ Change EnableEmoji=false in the settings if the display is confusing. Unknown account '{0}'. + + toggle chat visibility in the console. + + + Console chat output is now hidden. + + + Console chat output is now visible. + + + clear the console output. + toggle debug messages. @@ -1436,7 +1472,7 @@ Note that parameters in '[]' are optional. Right - Shift clicking slot {0} in window #{1} + Shift Shift click failed, this may be because this container type is not supported @@ -1447,6 +1483,30 @@ Note that parameters in '[]' are optional. PlayerList: {0} + + show a vanilla-like tab list. In TUI mode, opens a live overlay. + + + No listed players are currently tracked. + + + Tab list ({0} players) + + + Ping + + + Team + + + Player + + + Live tab overlay opened. + + + The tab overlay is not available right now. + log some text to the console. @@ -1944,6 +2004,27 @@ You can use "/chunk status {0:0.0} {1:0.0} {2:0.0}" to check the chunk loading s Connecting to {0}... + + Select a login method: [1] Offline, [2] Online (Microsoft), [3] Yggdrasil + + + Please choose 1, 2, or 3. + + + Authlib-injector URL: + + + The authlib-injector URL must be an absolute HTTP or HTTPS URL. + + + Could not reach the authlib-injector server. Check the URL and try again. + + + The server did not return valid authlib-injector metadata. Check the URL and try again. + + + The configured authlib-injector URL must be an absolute HTTP or HTTPS URL. + Tip: try TUI mode for a cleaner interface, mouse-friendly inventory actions, and a nicer layout. Run {0}tryout tui§8 to switch [Console.General] ConsoleMode to "tui" for the next restart. @@ -2037,6 +2118,27 @@ Type '{0}quit' to leave the server. Password(invisible): + + Authlib server host: + + + Authlib server port [{0}]: + + + Authlib-Injector API path [{0}]: + + + Use HTTPS? [Y/n] + + + The authlib server host cannot be empty. + + + The authlib server port must be between 1 and 65535. + + + Please answer yes or no. + You are dead. Type '{0}respawn' to respawn. @@ -2284,7 +2386,7 @@ Logging in... Minimum number that you have provided is bigger than the maximum, swapping them around! - Shift right-clicking slot {0} in window #{1} + Shift right Avaliable profiles: @@ -2437,6 +2539,9 @@ see item details. {0} items + + Press Esc to close. Refreshes automatically. + You're now under {0} effect (Duration: {1}). @@ -2626,4 +2731,403 @@ see item details. {0} {1} [{2}] + + book <read|write|edit|sign> + + + read, write, edit, and sign the book held in your main hand. + + + /book read [page] + + + /book write text <text> or /book write file <path>. Use \n for line breaks and \f for page breaks. + + + /book edit, /book edit page <page> <text>, /book edit insert <page> <text>, or /book edit delete <page>. + + + /book sign <title> + + + You are not holding a book. + + + You must hold a writable book in your main hand. + + + Book already signed. + + + You cannot edit a signed book. + + + Book TUI opened. + + + The book editor is only available in TUI mode. + + + Book write packet sent. + + + Book edit packet sent. + + + Book sign packet sent. + + + Book packet could not be sent. + + + Book file not found: {0} + + + Page {0} is outside the current page range 1-{1}. + + + Book has {0} pages, but this version supports at most {1} pages. + + + Page {0} has {1} characters, but this version supports at most {2} characters per page. + + + Book title must be 1-{0} characters. + + + Written book: {0} by {1} + + + Writable book + + + Page {0}/{1} + + + Title + + + Prev + + + Next + + + Insert + + + Delete + + + Save + + + Sign + + + Close + + + Saved. + + + Book packet could not be sent. + + + Signed. + + + Book page {0}/{1} + + + Editing writable book. + + + Reading book. + + + PageUp/PageDown: previous/next page + + + PageUp/PageDown: previous/next page + + + [S -> C] state={0} id=0x{1:X2} type={2} payload={3} frame={4} compression={5} + + + [C -> S] state={0} id=0x{1:X2} type={2} payload={3} compression_threshold={4} + + + Protocol state changed: {0} -> {1} + + + Unknown(0x{0:X2}) + + + disabled + + + uncompressed + + + compressed, uncompressed={0} + + + {0} exited: reason={1}, state={2}, socket_connected={3} + + + packet queue completed + + + socket closed + + + cancelled + + + dialog [show|open|set|click|click-label|cancel|dismiss] + + + View and interact with the current server custom dialog. + + + Server showed custom dialog: {0}. Use /dialog show. + + + Server cleared the custom dialog. + + + No custom dialog is active. + + + Dialog dismissed locally. + + + Unresolved dialog {0} + + + The server referenced dialog registry entry {0}, but MCC has no data for it. + + + This dialog could not be resolved, so actions are disabled. + + + Unknown dialog input: {0} + + + Dialog input {0} set to {1}. + + + Input {0} is longer than {1} characters. + + + Input {0} expects true or false. + + + Input {0} expects one of the listed option IDs. + + + Input {0} expects a number. + + + Input {0} must be between {1} and {2}. + + + Unknown dialog action index: {0} + + + Unknown dialog action label: {0} + + + Dialog action label is ambiguous: {0} + + + This dialog cannot be closed with cancel. + + + Dialog action closed locally. + + + This dialog command action is only available in play state. + + + Dialog action is invalid. + + + Custom dialog action packet could not be sent. + + + Dialog command sent: {0} + + + Dialog custom action sent: {0} + + + Nested dialog opened. + + + Dialog URL action: {0} + + + Dialog suggested command: {0} + + + Dialog copy action: {0} + + + Unsupported dialog action: {0} + + + Custom dialog is pending. Use dialog open after closing the current overlay. + + + Dialog TUI is unavailable. + + + Dialog TUI opened. + + + Action + + + OK + + + Item preview + + + Report bug + + + Community guidelines + + + Support + + + Status + + + Feedback + + + Community + + + Website + + + Forums + + + News + + + Announcements + + + Cancel + + + Dialog #{0} [{1}]: {2} + + + Type: {0} + + + Body: {0} + + + Inputs: + + + {0} ({1}) {2} = {3} [{4}] + + + Actions: + + + [{0}] {1} ({2}) + + + Use /dialog cancel to close or run the cancel action. + + + max {0} chars + + + Yes={0}, No={1} + + + options: {0} + + + range {0}..{1} + + + unknown input + + + close + + + command + + + custom + + + show dialog + + + open URL + + + suggest command + + + copy + + + unknown + + + Notice + + + Confirmation + + + Multi Action + + + Dialog list + + + Server links + + + Unknown + + + Text + + + Check box + + + Options + + + Number + + + Unknown + + + Use /dialog help for a list of commands. + + + Raw server chat message: {0} + diff --git a/MinecraftClient/RestartCoordinator.cs b/MinecraftClient/RestartCoordinator.cs new file mode 100644 index 00000000..00a75994 --- /dev/null +++ b/MinecraftClient/RestartCoordinator.cs @@ -0,0 +1,213 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Channels; +using System.Threading.Tasks; + +namespace MinecraftClient +{ + internal readonly record struct RestartRequest( + long ConnectionAttempt, + TimeSpan Delay, + bool KeepAccountAndServerSettings, + RestartSettingsSnapshot? SettingsSnapshot = null, + bool ReplaceUntilCommit = false, + Task? SourceCleanupCompletion = null, + long RequestId = 0); + + internal readonly record struct RestartSettingsSnapshot( + Settings.MainConfigHelper.MainConfig.AccountInfoConfig Account, + string ServerIP, + ushort ServerPort); + + internal enum RestartRequestState + { + Replaceable, + Committing, + } + + internal readonly record struct PendingRestart( + long RequestId, + RestartRequest Request, + RestartRequestState State); + + internal sealed class RestartCoordinator : IDisposable + { + private readonly Lock stateLock = new(); + private readonly Channel requests; + private readonly CancellationTokenSource shutdown = new(); + private readonly Func restart; + private readonly Action reportFailure; + private readonly Task worker; + private readonly Dictionary pendingAttempts = []; + private long highestScheduledAttempt = -1; + private long nextRequestId; + private bool stopped; + + internal RestartCoordinator( + Func restart, + Action reportFailure) + { + ArgumentNullException.ThrowIfNull(restart); + ArgumentNullException.ThrowIfNull(reportFailure); + + this.restart = restart; + this.reportFailure = reportFailure; + requests = Channel.CreateUnbounded(new UnboundedChannelOptions + { + SingleReader = true, + SingleWriter = false, + AllowSynchronousContinuations = false, + }); + worker = ProcessRequestsAsync(); + } + + internal bool HasScheduledRestart(long connectionAttempt) + { + lock (stateLock) + return !stopped && pendingAttempts.ContainsKey(connectionAttempt); + } + + internal bool TrySchedule(RestartRequest request, Func? beforePublish = null) + { + lock (stateLock) + { + if (stopped) + return false; + + if (pendingAttempts.TryGetValue(request.ConnectionAttempt, out PendingRestart pendingRequest)) + { + if (pendingRequest.State != RestartRequestState.Replaceable || !request.ReplaceUntilCommit) + return false; + + request = request with + { + RequestId = pendingRequest.RequestId, + SourceCleanupCompletion = pendingRequest.Request.SourceCleanupCompletion, + }; + pendingAttempts[request.ConnectionAttempt] = pendingRequest with { Request = request }; + return true; + } + + if (request.ConnectionAttempt <= highestScheduledAttempt) + return false; + + request = request with { RequestId = ++nextRequestId }; + pendingAttempts[request.ConnectionAttempt] = new PendingRestart( + request.RequestId, + request, + RestartRequestState.Replaceable); + try + { + if (beforePublish is not null && !beforePublish()) + { + pendingAttempts.Remove(request.ConnectionAttempt); + return false; + } + + if (requests.Writer.TryWrite(request)) + { + highestScheduledAttempt = Math.Max(highestScheduledAttempt, request.ConnectionAttempt); + return true; + } + } + catch + { + pendingAttempts.Remove(request.ConnectionAttempt); + throw; + } + + pendingAttempts.Remove(request.ConnectionAttempt); + return false; + } + } + + internal bool TryBeginCommit(RestartRequest scheduledRequest, out RestartRequest latestRequest) + { + lock (stateLock) + { + if (stopped + || !pendingAttempts.TryGetValue(scheduledRequest.ConnectionAttempt, out PendingRestart pendingRequest) + || pendingRequest.RequestId != scheduledRequest.RequestId + || pendingRequest.State != RestartRequestState.Replaceable) + { + latestRequest = default; + return false; + } + + latestRequest = pendingRequest.Request; + pendingAttempts[scheduledRequest.ConnectionAttempt] = pendingRequest with + { + State = RestartRequestState.Committing, + }; + return true; + } + } + + internal void Stop() + { + lock (stateLock) + { + if (stopped) + return; + + stopped = true; + pendingAttempts.Clear(); + requests.Writer.TryComplete(); + shutdown.Cancel(); + } + } + + private async Task ProcessRequestsAsync() + { + try + { + await foreach (RestartRequest request in requests.Reader.ReadAllAsync(shutdown.Token).ConfigureAwait(false)) + { + lock (stateLock) + { + if (!pendingAttempts.TryGetValue(request.ConnectionAttempt, out PendingRestart pendingRequest) + || pendingRequest.RequestId != request.RequestId) + continue; + } + + try + { + if (request.SourceCleanupCompletion is Task sourceCleanupCompletion) + await sourceCleanupCompletion.WaitAsync(shutdown.Token).ConfigureAwait(false); + + await restart(request, shutdown.Token).ConfigureAwait(false); + } + catch (OperationCanceledException) when (shutdown.IsCancellationRequested) + { + return; + } + catch (Exception exception) + { + reportFailure(exception); + } + finally + { + lock (stateLock) + { + if (pendingAttempts.TryGetValue(request.ConnectionAttempt, out PendingRestart pendingRequest) + && pendingRequest.RequestId == request.RequestId) + pendingAttempts.Remove(request.ConnectionAttempt); + } + } + } + } + catch (OperationCanceledException) when (shutdown.IsCancellationRequested) + { + } + } + + public void Dispose() + { + Stop(); + worker.GetAwaiter().GetResult(); + shutdown.Dispose(); + GC.SuppressFinalize(this); + } + } +} diff --git a/MinecraftClient/Scripting/CSharpRunner.cs b/MinecraftClient/Scripting/CSharpRunner.cs index eebd61ec..880d6a39 100644 --- a/MinecraftClient/Scripting/CSharpRunner.cs +++ b/MinecraftClient/Scripting/CSharpRunner.cs @@ -4,6 +4,7 @@ using System.ComponentModel; using System.IO; using System.Linq; using System.Text; +using Microsoft.CodeAnalysis; using MinecraftClient.Scripting.DynamicRun.Builder; using static MinecraftClient.Settings; @@ -16,6 +17,8 @@ namespace MinecraftClient.Scripting { private static readonly Dictionary CompileCache = new(); + private readonly record struct ScriptSourceLine(int LineNumber, string Text); + /// /// Run the specified C# script file /// @@ -26,7 +29,7 @@ namespace MinecraftClient.Scripting /// Set to false to compile and cache the script without launching it /// Thrown if an error occured /// Result of the execution, returned by the script - public static object? Run(ChatBot apiHandler, string[] lines, string[] args, Dictionary? localVars, bool run = true, string scriptName = "Unknown Script") + public static object? Run(ChatBot apiHandler, string[] lines, string[] args, Dictionary? localVars, bool run = true, string scriptName = "Unknown Script", string? scriptOwnerKey = null) { //Script compatibility check for handling future versions differently if (lines.Length < 1 || lines[0] != "//MCCScript 1.0") @@ -48,15 +51,16 @@ namespace MinecraftClient.Scripting { //Process different sections of the script file bool scriptMain = true; - List script = new(); - List extensions = new(); + List script = new(); + List extensions = new(); List libs = new(); List dlls = new(); - foreach (string line in lines) + for (int i = 0; i < lines.Length; i++) { + string line = lines[i]; if (line.StartsWith("//using")) { - libs.Add(line.Replace("//", "").Trim()); + libs.Add(NormalizeUsingDirective(line)); } else if (line.StartsWith("//dll")) { @@ -67,43 +71,18 @@ namespace MinecraftClient.Scripting if (line.EndsWith("Extensions")) scriptMain = false; } - else if (scriptMain) - script.Add(line); - else extensions.Add(line); + + (scriptMain ? script : extensions).Add(new(i + 1, line)); } //Add return statement if missing - if (script.All(line => !line.StartsWith("return ") && !line.Contains(" return "))) - script.Add("return null;"); + bool hasImplicitReturn = script.All(line => !line.Text.StartsWith("return ", StringComparison.Ordinal) + && !line.Text.Contains(" return ", StringComparison.Ordinal)); //Generate a class from the given script - string code = string.Join("\n", new string[] - { - "using System;", - "using System.Collections.Generic;", - "using System.Text.RegularExpressions;", - "using System.Linq;", - "using System.Text;", - "using System.IO;", - "using System.Net;", - "using System.Threading;", - "using MinecraftClient;", - "using MinecraftClient.Scripting;", - "using MinecraftClient.Mapping;", - "using MinecraftClient.Inventory;", - string.Join("\n", libs), - "namespace ScriptLoader {", - "public class Script {", - "public CSharpAPI MCC;", - "public object __run(CSharpAPI __apiHandler, string[] args) {", - "this.MCC = __apiHandler;", - string.Join("\n", script), - "}", - string.Join("\n", extensions), - "}}", - }); + string code = BuildScriptCode(scriptName, script, extensions, libs, hasImplicitReturn); - ConsoleIO.WriteLogLine($"[Script] Starting compilation for {scriptName}..."); + ConsoleIO.WriteLogLine(string.Format(Translations.script_compile_started, scriptName)); //Compile the C# class in memory using all the currently loaded assemblies var result = compiler.Compile(code, Guid.NewGuid().ToString(), dlls); @@ -112,22 +91,17 @@ namespace MinecraftClient.Scripting if (result.Failures is not null) { - ConsoleIO.WriteLogLine("[Script] Compilation failed with error(s):"); + ConsoleIO.WriteLogLine(Translations.script_compile_failed); foreach (var failure in result.Failures) { - // Get the line that contains the error: - - var loc = failure.Location.GetMappedLineSpan(); - var line = code.Split('\n')[loc.StartLinePosition.Line]; - - ConsoleIO.WriteLogLine($"[Script] Error in {scriptName}, on line ({line.Trim()}): [{failure.Id}] {failure.GetMessage()}"); + ConsoleIO.WriteLogLine(FormatCompilationFailure(failure, scriptName)); } throw new CSharpException(CSErrorType.InvalidScript, new InvalidProgramException("Compilation failed due to error(s).")); } - ConsoleIO.WriteLogLine("[Script] Compilation done with no errors."); + ConsoleIO.WriteLogLine(Translations.script_compile_succeeded); //Retrieve compiled assembly assembly = result.Assembly; @@ -143,7 +117,7 @@ namespace MinecraftClient.Scripting { try { - var compiled = runner.Execute(assembly!, args, localVars, apiHandler); + var compiled = runner.Execute(assembly!, args, localVars, apiHandler, scriptOwnerKey); return compiled; } catch (Exception e) { throw new CSharpException(CSErrorType.RuntimeError, e); } @@ -151,6 +125,83 @@ namespace MinecraftClient.Scripting else return null; } + internal static string NormalizeUsingDirective(string line) + { + string directive = line[2..].Trim(); + return directive.EndsWith(';') ? directive : $"{directive};"; + } + + private static string BuildScriptCode(string scriptName, IEnumerable script, IEnumerable extensions, IEnumerable libs, bool hasImplicitReturn) + { + StringBuilder codeBuilder = new(); + codeBuilder.AppendLine("using System;"); + codeBuilder.AppendLine("using System.Collections.Generic;"); + codeBuilder.AppendLine("using System.Text.RegularExpressions;"); + codeBuilder.AppendLine("using System.Linq;"); + codeBuilder.AppendLine("using System.Text;"); + codeBuilder.AppendLine("using System.IO;"); + codeBuilder.AppendLine("using System.Net;"); + codeBuilder.AppendLine("using System.Threading;"); + codeBuilder.AppendLine("using MinecraftClient;"); + codeBuilder.AppendLine("using MinecraftClient.Scripting;"); + codeBuilder.AppendLine("using MinecraftClient.Mapping;"); + codeBuilder.AppendLine("using MinecraftClient.Inventory;"); + + foreach (string lib in libs) + codeBuilder.AppendLine(lib); + + codeBuilder.AppendLine("namespace ScriptLoader {"); + codeBuilder.AppendLine("public class Script {"); + codeBuilder.AppendLine("public CSharpAPI MCC;"); + codeBuilder.AppendLine("public object __run(CSharpAPI __apiHandler, string[] args) {"); + codeBuilder.AppendLine("this.MCC = __apiHandler;"); + AppendMappedSection(codeBuilder, scriptName, script); + + if (hasImplicitReturn) + codeBuilder.AppendLine("return null;"); + + codeBuilder.AppendLine("}"); + AppendMappedSection(codeBuilder, scriptName, extensions); + codeBuilder.AppendLine("}}"); + return codeBuilder.ToString(); + } + + private static void AppendMappedSection(StringBuilder codeBuilder, string scriptName, IEnumerable lines) + { + ScriptSourceLine[] sourceLines = lines.ToArray(); + if (sourceLines.Length == 0) + return; + + codeBuilder.AppendLine($@"#line {sourceLines[0].LineNumber} ""{EscapeLineDirectivePath(scriptName)}"""); + + foreach (ScriptSourceLine line in sourceLines) + codeBuilder.AppendLine(line.Text); + + codeBuilder.AppendLine("#line default"); + } + + private static string EscapeLineDirectivePath(string path) + { + return path.Replace("\\", "\\\\").Replace("\"", "\\\""); + } + + private static string FormatCompilationFailure(Diagnostic failure, string scriptName) + { + if (failure.Location.IsInSource) + { + var location = failure.Location.GetMappedLineSpan(); + string sourcePath = string.IsNullOrWhiteSpace(location.Path) ? scriptName : location.Path; + return string.Format(Translations.script_compile_error, + sourcePath, + location.StartLinePosition.Line + 1, + location.StartLinePosition.Character + 1, + failure.Id, + failure.GetMessage()); + } + + return string.Format(Translations.script_compile_error_no_location, scriptName, failure.Id, failure.GetMessage()); + } + /// /// Quickly calculate a hash for the given script /// @@ -209,10 +260,11 @@ namespace MinecraftClient.Scripting /// ChatBot API Handler /// ChatBot tick handler /// Local variables passed along with the script - public CSharpAPI(ChatBot apiHandler, Dictionary? localVars) + public CSharpAPI(ChatBot apiHandler, Dictionary? localVars, string? scriptOwnerKey = null) { SetMaster(apiHandler); this.localVars = localVars; + SetScriptOwnerKey(scriptOwnerKey); } /// diff --git a/MinecraftClient/Scripting/ChatBot.cs b/MinecraftClient/Scripting/ChatBot.cs index f639edfa..b8f21e35 100644 --- a/MinecraftClient/Scripting/ChatBot.cs +++ b/MinecraftClient/Scripting/ChatBot.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -39,9 +39,20 @@ namespace MinecraftClient.Scripting //Handler will be automatically set on bot loading, don't worry about this public void SetHandler(McClient handler) { _handler = handler; } protected void SetMaster(ChatBot master) { this.master = master; } - protected void LoadBot(ChatBot bot) { Handler.BotUnLoad(bot); Handler.BotLoad(bot); } + protected void LoadBot(ChatBot bot) + { + if (ScriptOwnerKey is not null) + bot.SetScriptOwnerKey(ScriptOwnerKey); + + if (Handler.GetLoadedChatBots().Any(loadedBot => ReferenceEquals(loadedBot, bot))) + Handler.BotUnLoad(bot); + + Handler.BotLoad(bot); + } protected List GetLoadedChatBots() { return Handler.GetLoadedChatBots(); } protected void UnLoadBot(ChatBot bot) { Handler.BotUnLoad(bot); } + internal string? ScriptOwnerKey { get; private set; } + internal void SetScriptOwnerKey(string? scriptOwnerKey) { ScriptOwnerKey = scriptOwnerKey; } private McClient? _handler = null; private ChatBot? master = null; private readonly List registeredPluginChannels = new(); @@ -226,7 +237,8 @@ namespace MinecraftClient.Scripting /// Sound pitch /// Source entity for entity-sound packets when tracked public virtual void OnSoundEffect(string? soundName, Location? location, int category, float volume, float pitch, - Entity? sourceEntity) { } + Entity? sourceEntity) + { } /// /// Called when an entity rotates @@ -405,7 +417,8 @@ namespace MinecraftClient.Scripting /// Player/entity names. Present when method is 0, 3, or 4. public virtual void OnTeam(string teamName, byte method, string displayName, byte friendlyFlags, string nameTagVisibility, string collisionRule, int color, - string prefix, string suffix, List players) { } + string prefix, string suffix, List players) + { } /// /// Called when the client received the Tab Header and Footer @@ -413,7 +426,7 @@ namespace MinecraftClient.Scripting /// Header /// Footer public virtual void OnTabListHeaderAndFooter(string header, string footer) { } - + /// /// Called when an inventory/container was updated by server /// @@ -612,7 +625,7 @@ namespace MinecraftClient.Scripting } /// - /// Remove color codes ("§c") from a text message received from the server + /// Remove color codes ("§c" and "§#rrggbb") from a text message received from the server /// public static string GetVerbatim(string? text) { @@ -623,10 +636,20 @@ namespace MinecraftClient.Scripting var data = new char[text.Length]; for (int i = 0; i < text.Length; i++) + { if (text[i] != '§') + { data[idx++] = text[i]; + } + else if (i + 1 < text.Length && text[i + 1] == '#' && i + 7 < text.Length) + { + i += 7; // skip §#rrggbb (8 chars total, loop increments once) + } else - i++; + { + i++; // skip §x (2 chars total) + } + } return new string(data, 0, idx); } @@ -1058,7 +1081,7 @@ namespace MinecraftClient.Scripting { Handler.BotLoad(chatBot); } - + /// /// Set an App Variable /// @@ -1069,7 +1092,7 @@ namespace MinecraftClient.Scripting { Config.AppVar.SetVar(name, value); } - + /// /// Get a value from an App Variable /// @@ -1079,7 +1102,7 @@ namespace MinecraftClient.Scripting { return Config.AppVar.GetVar(name); } - + /// /// Replaces variables in text with their values from the App Var registry /// @@ -1144,9 +1167,10 @@ namespace MinecraftClient.Scripting /// Also perform the "arm swing" animation /// Also look at the block before digging /// Dig duration in seconds. 0 = auto-compute for survival, or instant for creative - protected bool DigBlock(Location location, Direction direction, bool swingArms = true, bool lookAtBlock = true, double duration = 0) + protected bool DigBlock(Location location, Direction direction, bool swingArms = true, bool lookAtBlock = true, + double duration = 0, MiningCalculator.MiningOptions? miningOptions = null) { - return Handler.DigBlock(location, direction, swingArms, lookAtBlock, duration); + return Handler.DigBlock(location, direction, swingArms, lookAtBlock, duration, miningOptions); } /// @@ -1552,10 +1576,11 @@ namespace MinecraftClient.Scripting /// Location to place block to /// Block face (e.g. Direction.Down when clicking on the block below to place this block) /// Hand.MainHand or Hand.OffHand + /// Also look at the block before interacting /// TRUE if successfully placed - public bool SendPlaceBlock(Location location, Direction blockFace, Hand hand = Hand.MainHand) + public bool SendPlaceBlock(Location location, Direction blockFace, Hand hand = Hand.MainHand, bool lookAtBlock = false) { - return Handler.PlaceBlock(location, blockFace, hand); + return Handler.PlaceBlock(location, blockFace, hand, lookAtBlock); } /// diff --git a/MinecraftClient/Scripting/DataPath.cs b/MinecraftClient/Scripting/DataPath.cs new file mode 100644 index 00000000..fdefae5a --- /dev/null +++ b/MinecraftClient/Scripting/DataPath.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; + +namespace MinecraftClient.Scripting +{ + public static class DataPath + { + private static string? relativePath; + private static string? absolutePath; + + public enum PathType + { + Relative, + Absolute + } + + /// + /// 初始化数据目录(修正版) + /// Initialize the data directory (Revised version) + /// 需要手动传入脚本文件名(不含.cs扩展名) + /// Requires manually passing the script file name (without the .cs extension) + /// + /// 脚本文件名(不含扩展名)Script file name (without extension) + public static void Init(string scriptName) + { + if (string.IsNullOrEmpty(scriptName)) + throw new ArgumentNullException(nameof(scriptName), "Script name cannot be null or empty(脚本名称不能为空)"); + + // 计算路径 Calculate the path + relativePath = scriptName; + absolutePath = Path.Combine(AppContext.BaseDirectory, scriptName); + + // 创建目录 Create the directory + if (!Directory.Exists(absolutePath)) + Directory.CreateDirectory(absolutePath); + } + + /// + /// 获取路径 + /// Get the path + /// + public static string Get(PathType pathType = PathType.Relative) + { + if (string.IsNullOrEmpty(relativePath) || string.IsNullOrEmpty(absolutePath)) + throw new InvalidOperationException("Please call DataPath.Init() first to initialize(请先调用DataPath.Init()初始化)"); + + return pathType switch + { + PathType.Relative => relativePath, + PathType.Absolute => absolutePath, + _ => throw new ArgumentOutOfRangeException(nameof(pathType)) + }; + } + } +} diff --git a/MinecraftClient/Scripting/DynamicRun/Builder/CompileRunner.cs b/MinecraftClient/Scripting/DynamicRun/Builder/CompileRunner.cs index ee5bf460..cdd102a1 100644 --- a/MinecraftClient/Scripting/DynamicRun/Builder/CompileRunner.cs +++ b/MinecraftClient/Scripting/DynamicRun/Builder/CompileRunner.cs @@ -13,9 +13,9 @@ namespace MinecraftClient.Scripting.DynamicRun.Builder { internal class CompileRunner { - public object? Execute(byte[] compiledAssembly, string[] args, Dictionary? localVars, ChatBot apiHandler) + public object? Execute(byte[] compiledAssembly, string[] args, Dictionary? localVars, ChatBot apiHandler, string? scriptOwnerKey = null) { - var assemblyLoadContextWeakRef = LoadAndExecute(compiledAssembly, args, localVars, apiHandler); + var assemblyLoadContextWeakRef = LoadAndExecute(compiledAssembly, args, localVars, apiHandler, scriptOwnerKey); for (var i = 0; i < 8 && assemblyLoadContextWeakRef.Item1.IsAlive; i++) { @@ -28,18 +28,18 @@ namespace MinecraftClient.Scripting.DynamicRun.Builder } [MethodImpl(MethodImplOptions.NoInlining)] - private static Tuple LoadAndExecute(byte[] compiledAssembly, string[] args, Dictionary? localVars, ChatBot apiHandler) + private static Tuple LoadAndExecute(byte[] compiledAssembly, string[] args, Dictionary? localVars, ChatBot apiHandler, string? scriptOwnerKey) { using var asm = new MemoryStream(compiledAssembly); var assemblyLoadContext = new SimpleUnloadableAssemblyLoadContext(); var assembly = assemblyLoadContext.LoadFromStream(asm); var compiledScript = assembly.CreateInstance("ScriptLoader.Script")!; - var execResult = compiledScript.GetType().GetMethod("__run")!.Invoke(compiledScript, new object[] { new CSharpAPI(apiHandler, localVars), args }); + var execResult = compiledScript.GetType().GetMethod("__run")!.Invoke(compiledScript, new object[] { new CSharpAPI(apiHandler, localVars, scriptOwnerKey), args }); assemblyLoadContext.Unload(); return new(new WeakReference(assemblyLoadContext), execResult); } } -} \ No newline at end of file +} diff --git a/MinecraftClient/Scripting/DynamicRun/Builder/Compiler.cs b/MinecraftClient/Scripting/DynamicRun/Builder/Compiler.cs index c7524acd..163f6038 100644 --- a/MinecraftClient/Scripting/DynamicRun/Builder/Compiler.cs +++ b/MinecraftClient/Scripting/DynamicRun/Builder/Compiler.cs @@ -78,7 +78,7 @@ namespace MinecraftClient.Scripting.DynamicRun.Builder var MinecraftClientDll = typeof(Program).Assembly.Location; // The path to MinecraftClient.dll // We're on a self-contained binary, so we need to extract the executable to get the assemblies. - if (string.IsNullOrEmpty(MinecraftClientDll)) + if (string.IsNullOrEmpty(MinecraftClientDll)) { // Create a temporary file to copy the executable to. var executablePath = Environment.ProcessPath; @@ -86,29 +86,29 @@ namespace MinecraftClient.Scripting.DynamicRun.Builder throw new InvalidOperationException("Cannot determine the process path for self-contained scripting extraction."); var tempPath = Path.Combine(Path.GetTempPath(), "mcc-scripting"); Directory.CreateDirectory(tempPath); - + var tempFile = Path.Combine(tempPath, "mcc-executable"); var useExisting = false; // Check if we already have the executable in the temporary path. - foreach (var file in Directory.EnumerateFiles(tempPath)) + foreach (var file in Directory.EnumerateFiles(tempPath)) { - if (file.EndsWith("mcc-executable")) + if (file.EndsWith("mcc-executable")) { // Check if the file is the same as the current executable. - if (File.ReadAllBytes(file).SequenceEqual(File.ReadAllBytes(executablePath))) + if (File.ReadAllBytes(file).SequenceEqual(File.ReadAllBytes(executablePath))) { useExisting = true; break; } - + // If not, refresh the cache. File.Delete(file); break; } } - - if (!File.Exists(executablePath)) + + if (!File.Exists(executablePath)) { throw new FileNotFoundException("[Script Error] Could not locate the current folder of MCC for scripting."); } @@ -141,7 +141,8 @@ namespace MinecraftClient.Scripting.DynamicRun.Builder assemblyrefs.Add(new("Microsoft.Win32.Primitives")); assemblyrefs.Add(new("System.Collections.Concurrent")); - foreach (var refs in assemblyrefs) { + foreach (var refs in assemblyrefs) + { Assembly? loadedAssembly; try { @@ -153,19 +154,22 @@ namespace MinecraftClient.Scripting.DynamicRun.Builder continue; } - if (string.IsNullOrEmpty(loadedAssembly.Location)) { + if (string.IsNullOrEmpty(loadedAssembly.Location)) + { // Check if we can access the file from the executable. var reference = files.FirstOrDefault(x => Path.GetFileNameWithoutExtension(x.RelativePath) == refs.Name); var refCount = files.Count(x => Path.GetFileNameWithoutExtension(x.RelativePath) == refs.Name); - if (refCount > 1) { + if (refCount > 1) + { // Safety net for the case where the assembly is referenced multiple times. // Should not happen normally, but we can make exceptions when it does happen. throw new InvalidOperationException( "[Script Error] Too many references to the same assembly. Assembly name: " + refs.Name); } - if (reference is null) { + if (reference is null) + { // Facade assemblies may not be in the bundle - skip them silently continue; } diff --git a/MinecraftClient/Scripting/MccGameApi.cs b/MinecraftClient/Scripting/MccGameApi.cs index 391ece50..9588691b 100644 --- a/MinecraftClient/Scripting/MccGameApi.cs +++ b/MinecraftClient/Scripting/MccGameApi.cs @@ -795,7 +795,8 @@ public sealed class MccGameApi { Slot = item.Key, Type = item.Value.Type.ToString(), - Count = item.Value.Count + Count = item.Value.Count, + Nbt = MccGameCommon.BuildNbt(item.Value) }) .ToArray(); @@ -803,7 +804,7 @@ public sealed class MccGameApi { Id = inventory.ID, Type = inventory.Type.ToString(), - Title = inventory.Title, + Title = inventory.Title ?? string.Empty, SlotCount = inventory.Type.SlotCount(), Slots = slots, Cursor = TryBuildCursorSnapshot(inventory) @@ -850,13 +851,14 @@ public sealed class MccGameApi { InventoryId = entry.Key, InventoryType = inventory.Type.ToString(), - InventoryTitle = inventory.Title, + InventoryTitle = inventory.Title ?? string.Empty, Slot = pair.Key, ItemType = pair.Value.Type.ToString(), TypeLabel = pair.Value.GetTypeString(), Count = pair.Value.Count, IsPlayerInventory = entry.Key == 0, - HotbarSlot = isHotbar ? hotbar + 1 : null + HotbarSlot = isHotbar ? hotbar + 1 : null, + Nbt = MccGameCommon.BuildNbt(pair.Value) }; }); }) @@ -894,7 +896,7 @@ public sealed class MccGameApi { Id = entry.Key, Type = entry.Value.Type.ToString(), - Title = entry.Value.Title, + Title = entry.Value.Title ?? string.Empty, SlotCount = entry.Value.Type.SlotCount(), NonEmptySlots = entry.Value.Items.Count(item => IsSnapshotInventorySlot(entry.Value, item.Key)), Active = entry.Key > 0 && entry.Key == GetActiveContainerId(client) diff --git a/MinecraftClient/Scripting/MccGameCommon.cs b/MinecraftClient/Scripting/MccGameCommon.cs index 0088dc80..042d9453 100644 --- a/MinecraftClient/Scripting/MccGameCommon.cs +++ b/MinecraftClient/Scripting/MccGameCommon.cs @@ -26,6 +26,8 @@ public sealed class MccBlockStateSnapshot public required string TypeLabel { get; init; } public required int BlockId { get; init; } public required int BlockMeta { get; init; } + public required int StateId { get; init; } + public required IReadOnlyDictionary Properties { get; init; } } /// @@ -35,6 +37,7 @@ public sealed class MccItemStackSnapshot { public required string Type { get; init; } public required int Count { get; init; } + public Dictionary? Nbt { get; init; } } /// @@ -142,7 +145,9 @@ public static class MccGameCommon Material = block.Type.ToString(), TypeLabel = block.GetTypeString(), BlockId = block.BlockId, - BlockMeta = block.BlockMeta + BlockMeta = block.BlockMeta, + StateId = block.StateId, + Properties = block.GetStateProperties() }; } @@ -177,10 +182,26 @@ public static class MccGameCommon return new MccItemStackSnapshot { Type = item.Type.ToString(), - Count = item.Count + Count = item.Count, + Nbt = BuildNbt(item) }; } + public static Dictionary? BuildNbt(Item item) + { + if (item.Components is { Count: > 0 }) + { + return item.Components + .Where(c => !string.IsNullOrEmpty(c.ComponentName)) + .ToDictionary( + c => c.ComponentName, + c => (object)System.Text.Json.JsonSerializer.SerializeToElement(c, c.GetType()) + ); + } + + return item.NBT is { Count: > 0 } ? item.NBT : null; + } + public static bool TryParseBlockQuery(string? query, out int? blockId, out int? blockMeta) { blockId = null; diff --git a/MinecraftClient/Scripting/MccGameModels.cs b/MinecraftClient/Scripting/MccGameModels.cs index 0c6b9c52..1eef6476 100644 --- a/MinecraftClient/Scripting/MccGameModels.cs +++ b/MinecraftClient/Scripting/MccGameModels.cs @@ -216,6 +216,7 @@ public sealed class MccInventorySnapshotSlot public required int Slot { get; init; } public required string Type { get; init; } public required int Count { get; init; } + public Dictionary? Nbt { get; init; } } public sealed class MccInventorySnapshotResult @@ -239,6 +240,7 @@ public sealed class MccInventorySearchMatch public required int Count { get; init; } public required bool IsPlayerInventory { get; init; } public int? HotbarSlot { get; init; } + public Dictionary? Nbt { get; init; } } public sealed class MccInventorySearchResult diff --git a/MinecraftClient/Settings.cs b/MinecraftClient/Settings.cs index 4a9b9c6c..c594a336 100644 --- a/MinecraftClient/Settings.cs +++ b/MinecraftClient/Settings.cs @@ -38,7 +38,7 @@ namespace MinecraftClient public const string TranslationsFile_Website_Index = "https://piston-meta.mojang.com/v1/packages/c492375ded5da34b646b8c5c0842a0028bc69cec/2.json"; public const string TranslationsFile_Website_Download = "https://resources.download.minecraft.net"; - public const string TranslationProjectUrl = "https://crwd.in/minecraft-console-client"; + public const string TranslationProjectUrl = "https://crowdin.com/project/minecraft-console-client"; public const int ClientTicksPerSecond = 20; public const int ClientTickIntervalMilliseconds = 1000 / ClientTicksPerSecond; @@ -209,6 +209,7 @@ namespace MinecraftClient Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; string tomlString = TomletMain.TomlStringFrom(Config); Thread.CurrentThread.CurrentCulture = Program.ActualCulture; + tomlString = RemoveLegacyAuthServerSection(tomlString); string[] tomlList = tomlString.Split('\n'); StringBuilder newConfig = new(); @@ -272,6 +273,19 @@ namespace MinecraftClient } } + private static string RemoveLegacyAuthServerSection(string tomlString) + { + const string legacySection = "[Main.General.AuthServer]"; + int sectionStart = tomlString.IndexOf(legacySection, StringComparison.Ordinal); + if (sectionStart < 0) + return tomlString; + + int nextSection = tomlString.IndexOf("\n[", sectionStart + legacySection.Length, StringComparison.Ordinal); + return nextSection < 0 + ? tomlString[..sectionStart] + : tomlString.Remove(sectionStart, nextSection - sectionStart + 1); + } + /// /// Load settings from the command line /// @@ -656,6 +670,8 @@ namespace MinecraftClient General.Account.Login ??= string.Empty; General.Account.Password ??= string.Empty; + if (!General.MigrateLegacyAuthServer()) + ConsoleIO.WriteLogLine(Translations.config_auth_server_url_invalid); if (!InternalConfig.KeepAccountSettings) { if (Advanced.AccountList.TryGetValue(General.Account.Login, out AccountInfoConfig account)) @@ -680,6 +696,8 @@ namespace MinecraftClient if (Advanced.TcpTimeout < 1) Advanced.TcpTimeout = 1; + Advanced.ForgeModTranslationPath = Advanced.ForgeModTranslationPath.Trim(); + if (Advanced.MovementSpeed < 1) Advanced.MovementSpeed = 1; @@ -751,14 +769,74 @@ namespace MinecraftClient [TomlInlineComment("$Main.General.method$")] public LoginMethod Method = LoginMethod.mcc; + + [TomlInlineComment("$Main.General.AuthServerUrl$")] + public string AuthServerUrl = string.Empty; + + // Retained only to deserialize pre-URL configs. WriteToFile() removes this legacy section. [TomlInlineComment("$Main.General.AuthlibServer$")] public AuthlibServer AuthServer = new(); [TomlInlineComment("$Main.General.AuthlibUser$")] public string AuthUser = ""; - - public enum LoginType { mojang, microsoft,yggdrasil }; + public bool MigrateLegacyAuthServer() + { + AuthServerUrl ??= string.Empty; + if (TrySetAuthServerUrl(AuthServerUrl)) + return true; + + if (!string.IsNullOrWhiteSpace(AuthServerUrl)) + return false; + + if (!string.IsNullOrWhiteSpace(AuthServer.Host)) + { + string path = AuthServer.AuthlibInjectorAPIPath ?? string.Empty; + if (!path.StartsWith('/')) + path = '/' + path; + + string legacyUrl = $"{(AuthServer.UseHttps ? "https" : "http")}://{AuthServer.Host}:{AuthServer.Port}{path}"; + return TrySetAuthServerUrl(legacyUrl); + } + + return true; + } + + public bool TrySetAuthServerUrl(string url) + { + if (!TryGetNormalizedAuthServerUri(url, out Uri? authServerUri)) + return false; + + AuthServerUrl = authServerUri.AbsoluteUri; + return true; + } + + public bool TryGetAuthServerUri([NotNullWhen(true)] out Uri? authServerUri) + => TryGetNormalizedAuthServerUri(AuthServerUrl, out authServerUri); + + private static bool TryGetNormalizedAuthServerUri(string? url, [NotNullWhen(true)] out Uri? authServerUri) + { + authServerUri = null; + if (!Uri.TryCreate(url?.Trim(), UriKind.Absolute, out Uri? parsedUri) + || (!parsedUri.Scheme.Equals(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) + && !parsedUri.Scheme.Equals(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)) + || string.IsNullOrWhiteSpace(parsedUri.Host) + || !string.IsNullOrEmpty(parsedUri.UserInfo) + || !string.IsNullOrEmpty(parsedUri.Query) + || !string.IsNullOrEmpty(parsedUri.Fragment)) + { + return false; + } + + var builder = new UriBuilder(parsedUri) + { + Path = parsedUri.AbsolutePath.TrimEnd('/') + "/" + }; + authServerUri = builder.Uri; + return true; + } + + public enum LoginType { mojang, microsoft, yggdrasil }; public enum LoginMethod { mcc, browser }; } @@ -768,13 +846,25 @@ namespace MinecraftClient { [TomlInlineComment("$Main.Advanced.enable_sentry$")] public bool EnableSentry = true; - + [TomlInlineComment("$Main.Advanced.language$")] public string Language = "en_us"; [TomlInlineComment("$Main.Advanced.LoadMccTrans$")] public bool LoadMccTranslation = true; + [TomlInlineComment("$Main.Advanced.load_resourcepack_translations$")] + public bool LoadResourcePackTranslations = true; + + [TomlInlineComment("$Main.Advanced.load_forge_mod_translations$")] + public bool LoadForgeModTranslations = false; + + [TomlInlineComment("$Main.Advanced.auto_discover_forge_mod_translation_sources$")] + public bool AutoDiscoverForgeModTranslationSources = true; + + [TomlInlineComment("$Main.Advanced.forge_mod_translation_path$")] + public string ForgeModTranslationPath = ""; + // [TomlInlineComment("$Main.Advanced.console_title$")] public string ConsoleTitle = "%username%@%serverip% - Minecraft Console Client"; @@ -817,6 +907,9 @@ namespace MinecraftClient [TomlInlineComment("$Main.Advanced.show_inventory_layout$")] public bool ShowInventoryLayout = true; + [TomlInlineComment("$Main.Advanced.show_effect_messages$")] + public bool ShowEffectMessages = true; + [TomlInlineComment("$Main.Advanced.show_effect_names_in_tui$")] public bool ShowEffectNamesInTUI = false; @@ -1060,6 +1153,12 @@ namespace MinecraftClient [TomlInlineComment("$Logging.DebugMessages$")] public bool DebugMessages = false; + [TomlInlineComment("$Logging.PacketDebugMessages$")] + public bool PacketDebugMessages = false; + + [TomlInlineComment("$Logging.PacketDebugExclusions$")] + public List PacketDebugExclusions = new(); + [TomlInlineComment("$Logging.ChatMessages$")] public bool ChatMessages = true; @@ -1114,8 +1213,13 @@ namespace MinecraftClient [TomlPrecedingComment("$Console.Minimap$")] public MinimapConfig Minimap = new(); + [TomlPrecedingComment("$Console.TabList$")] + public TabListConfig TabList = new(); + public void OnSettingUpdate() { + ConsoleIO.ChatVisible = General.Display_Chat; + var backend = ConsoleIO.Backend; if (backend == null) return; @@ -1219,6 +1323,9 @@ namespace MinecraftClient [TomlInlineComment("$Console.General.Display_Input$")] public bool Display_Input = true; + [TomlInlineComment("$Console.General.Display_Chat$")] + public bool Display_Chat = true; + [TomlInlineComment("$Console.General.History_Input_Records$")] public int History_Input_Records = 32; @@ -1305,6 +1412,13 @@ namespace MinecraftClient Tui.MinimapControl.MinRefreshMs, Tui.MinimapControl.MaxRefreshMs); } } + + [TomlDoNotInlineObject] + public class TabListConfig + { + [TomlInlineComment("$Console.TabList.ShowTeams$")] + public bool ShowTeams = false; + } } } @@ -1349,6 +1463,9 @@ namespace MinecraftClient case "datetime": varData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return true; + case "date": + varData = DateTime.Now.ToString("yyyy-MM-dd"); + return true; case "players": varData = string.Join(", ", McClient.Instance?.GetOnlinePlayers() ?? []); return true; @@ -1480,7 +1597,7 @@ namespace MinecraftClient string varname = var_name.ToString(); string varname_lower = Settings.ToLowerIfNeed(varname); i = i + varname.Length + 1; - + if (TryGetReadOnlyVar(varname_lower, out object? readOnlyVar)) { result.Append(readOnlyVar.ToString()); @@ -1828,6 +1945,15 @@ namespace MinecraftClient } } + /// + /// Map the system CultureInfo name to a Minecraft game language code. + /// + /// + /// Culture name reference (language-COUNTRY): + /// https://learn.microsoft.com/en-us/previous-versions/commerce-server/ee797784(v=cs.20) + /// Full LCID / language-tag spec (MS-LCID, includes fil-PH, nb-NO, etc.): + /// https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f + /// public static string GetDefaultGameLanguage() { string gameLanguage = "en_us"; @@ -1983,6 +2109,14 @@ namespace MinecraftClient case "fi-FI": gameLanguage = "fi_fi"; break; + case "fil": + case "fil-PH": + gameLanguage = "fil_ph"; + break; + case "tl": + case "tl-PH": + gameLanguage = "tl_ph"; + break; case "fo": case "fo-FO": gameLanguage = "fo_fo"; @@ -2095,6 +2229,7 @@ namespace MinecraftClient gameLanguage = "mt_mt"; break; case "nb-NO": + gameLanguage = "no_no"; break; case "nl": case "nl-NL": @@ -2107,7 +2242,7 @@ namespace MinecraftClient gameLanguage = "nn_no"; break; case "no": - gameLanguage = "no_no‌"; + gameLanguage = "no_no"; break; case "ns-ZA": break; @@ -2116,14 +2251,14 @@ namespace MinecraftClient break; case "pl": case "pl-PL": - gameLanguage = "pl_pl‌"; + gameLanguage = "pl_pl"; break; case "pt": case "pt-PT": - gameLanguage = "pt_pt‌"; + gameLanguage = "pt_pt"; break; case "pt-BR": - gameLanguage = "pt_br‌"; + gameLanguage = "pt_br"; break; case "quz-BO": break; @@ -2133,7 +2268,7 @@ namespace MinecraftClient break; case "ro": case "ro-RO": - gameLanguage = "ro_ro‌"; + gameLanguage = "ro_ro"; break; case "ru": case "ru-RU": diff --git a/MinecraftClient/TabList/TabListFormatter.cs b/MinecraftClient/TabList/TabListFormatter.cs new file mode 100644 index 00000000..633cc46f --- /dev/null +++ b/MinecraftClient/TabList/TabListFormatter.cs @@ -0,0 +1,310 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using MinecraftClient.Mapping; +using MinecraftClient.Scripting; + +namespace MinecraftClient +{ + internal sealed record TabListSnapshot(string Header, string Footer, IReadOnlyList Entries); + + internal sealed record TabListEntry( + Guid Uuid, + string Name, + string DisplayName, + string TeamName, + string TeamDisplayName, + int Gamemode, + int Ping, + int TabListOrder, + bool Listed); + + internal static class TabListFormatter + { + private const int MaxRowsPerColumn = 20; + private const int PingColumnWidth = 11; + private const int ColumnGapWidth = 4; + + public static string FormatTeamMemberName(string playerName, PlayerTeam? team) + { + ArgumentException.ThrowIfNullOrWhiteSpace(playerName); + + if (team is null) + return playerName; + + var sb = new StringBuilder(); + sb.Append(team.Prefix); + + string colorCode = TeamColorToTag(team.Color); + if (!string.IsNullOrEmpty(colorCode)) + sb.Append(colorCode); + + sb.Append(playerName); + sb.Append(team.Suffix); + return sb.ToString(); + } + + public static string Render(TabListSnapshot snapshot, bool includeOverlayHint = false) + { + ArgumentNullException.ThrowIfNull(snapshot); + bool showTeams = Settings.Config.Console.TabList.ShowTeams; + + var lines = new List + { + $"§e{string.Format(Translations.cmd_tab_title, snapshot.Entries.Count)}§r" + }; + + AppendSection(lines, snapshot.Header); + + var listedEntries = snapshot.Entries + .Where(static entry => entry.Listed && !string.IsNullOrWhiteSpace(entry.Name)) + .OrderBy(static entry => entry.TabListOrder) + .ThenBy(static entry => entry.Gamemode == 3 ? 1 : 0) + .ThenBy(static entry => entry.TeamName, StringComparer.OrdinalIgnoreCase) + .ThenBy(static entry => entry.Name, StringComparer.OrdinalIgnoreCase) + .ToList(); + + if (listedEntries.Count == 0) + { + lines.Add($"§7{Translations.cmd_tab_no_players}§r"); + } + else + { + lines.AddRange(BuildTableLines(listedEntries, showTeams)); + } + + AppendSection(lines, snapshot.Footer); + + if (includeOverlayHint) + { + lines.Add(string.Empty); + lines.Add($"§8{Translations.tui_tab_hint}§r"); + } + + return string.Join('\n', lines); + } + + private static void AppendSection(List lines, string text) + { + if (string.IsNullOrWhiteSpace(text)) + return; + + foreach (string line in text.Replace("\r\n", "\n", StringComparison.Ordinal).Replace('\r', '\n').Split('\n')) + { + if (!string.IsNullOrWhiteSpace(line)) + lines.Add(line); + } + } + + private static List BuildTableLines(IReadOnlyList entries, bool showTeams) + { + int columns = 1; + int rows = entries.Count; + while (rows > MaxRowsPerColumn) + { + columns++; + rows = (entries.Count + columns - 1) / columns; + } + + int teamColumnWidth = showTeams + ? Math.Max( + GetVisibleLength(Translations.cmd_tab_column_team), + entries.Max(static entry => GetVisibleLength(GetTeamLabel(entry)))) + : 0; + + string headerRow = BuildRow( + $"§8{Translations.cmd_tab_column_ping}§r", + showTeams ? $"§8{Translations.cmd_tab_column_team}§r" : null, + $"§8{Translations.cmd_tab_column_player}§r", + teamColumnWidth); + + List renderedRows = entries + .Select(entry => BuildRow( + GetPingCell(entry.Ping), + showTeams ? GetTeamLabel(entry) : null, + GetPlayerLabel(entry), + teamColumnWidth)) + .ToList(); + + int[] columnWidths = new int[columns]; + for (int column = 0; column < columns; column++) + { + int width = GetVisibleLength(headerRow); + for (int row = 0; row < rows; row++) + { + int index = row + (column * rows); + if (index >= renderedRows.Count) + break; + + width = Math.Max(width, GetVisibleLength(renderedRows[index])); + } + columnWidths[column] = width; + } + + var lines = new List { CombineColumns(headerRow, rows, columns, columnWidths) }; + for (int row = 0; row < rows; row++) + lines.Add(CombineColumns(renderedRows, row, rows, columns, columnWidths)); + + return lines; + } + + private static string CombineColumns(string headerRow, int rows, int columns, IReadOnlyList columnWidths) + { + var perColumnValues = new string[columns]; + for (int column = 0; column < columns; column++) + perColumnValues[column] = headerRow; + + return CombineColumns(perColumnValues, columnWidths); + } + + private static string CombineColumns(IReadOnlyList renderedRows, int row, int rows, int columns, IReadOnlyList columnWidths) + { + var perColumnValues = new string[columns]; + for (int column = 0; column < columns; column++) + { + int index = row + (column * rows); + perColumnValues[column] = index < renderedRows.Count ? renderedRows[index] : string.Empty; + } + + return CombineColumns(perColumnValues, columnWidths); + } + + private static string CombineColumns(IReadOnlyList parts, IReadOnlyList widths) + { + var sb = new StringBuilder(); + for (int index = 0; index < parts.Count; index++) + { + if (index > 0) + sb.Append(' ', ColumnGapWidth); + + sb.Append(PadFormattedRight(parts[index], widths[index])); + } + return sb.ToString().TrimEnd(); + } + + private static string BuildRow(string pingCell, string? teamCell, string playerCell, int teamColumnWidth) + { + var sb = new StringBuilder(); + sb.Append(PadFormattedRight(pingCell, PingColumnWidth)); + sb.Append(" "); + if (!string.IsNullOrEmpty(teamCell)) + { + sb.Append(PadFormattedRight(teamCell, teamColumnWidth)); + sb.Append(" "); + } + sb.Append(playerCell); + return sb.ToString(); + } + + private static string GetPingCell(int ping) + { + string barColor; + int filledBars; + + if (ping < 0) + { + barColor = "§8"; + filledBars = 0; + } + else if (ping < 150) + { + barColor = "§a"; + filledBars = 5; + } + else if (ping < 300) + { + barColor = "§e"; + filledBars = 4; + } + else if (ping < 600) + { + barColor = "§6"; + filledBars = 3; + } + else if (ping < 1000) + { + barColor = "§c"; + filledBars = 2; + } + else + { + barColor = "§4"; + filledBars = 1; + } + + string numericPing = ping >= 0 ? $"{Math.Min(ping, 9999),4}ms" : " ???ms"; + return $"{barColor}{new string('|', filledBars)}§8{new string('.', 5 - filledBars)}§r {numericPing}"; + } + + private static string GetTeamLabel(TabListEntry entry) + { + if (string.IsNullOrWhiteSpace(entry.TeamName)) + return "§8-§r"; + + if (!string.IsNullOrWhiteSpace(entry.TeamDisplayName)) + return entry.TeamDisplayName; + + if (LooksLikeOpaqueTeamName(entry.TeamName)) + return "§8-§r"; + + return entry.TeamName; + } + + private static string GetPlayerLabel(TabListEntry entry) + { + string label = string.IsNullOrWhiteSpace(entry.DisplayName) + ? entry.Name + : entry.DisplayName; + + if (entry.Gamemode == 3) + return $"§7§o{label}§r"; + + return label; + } + + private static string PadFormattedRight(string text, int totalWidth) + { + int visibleLength = GetVisibleLength(text); + if (visibleLength >= totalWidth) + return text; + + return text + new string(' ', totalWidth - visibleLength); + } + + private static int GetVisibleLength(string text) => ChatBot.GetVerbatim(text).Length; + + private static bool LooksLikeOpaqueTeamName(string text) + { + if (Guid.TryParse(text, out _)) + return true; + + int hyphenCount = text.Count(static ch => ch == '-'); + if (text.Length >= 24 && hyphenCount >= 3) + return true; + + return false; + } + + private static string TeamColorToTag(int color) => color switch + { + 0 => "§0", + 1 => "§1", + 2 => "§2", + 3 => "§3", + 4 => "§4", + 5 => "§5", + 6 => "§6", + 7 => "§7", + 8 => "§8", + 9 => "§9", + 10 => "§a", + 11 => "§b", + 12 => "§c", + 13 => "§d", + 14 => "§e", + 15 => "§f", + _ => string.Empty + }; + } +} diff --git a/MinecraftClient/Tui/BookTuiHost.cs b/MinecraftClient/Tui/BookTuiHost.cs new file mode 100644 index 00000000..5d20b13f --- /dev/null +++ b/MinecraftClient/Tui/BookTuiHost.cs @@ -0,0 +1,383 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Input; +using Avalonia.Interactivity; +using Avalonia.Layout; +using Avalonia.Media; +using Avalonia.Threading; +using MinecraftClient.Inventory; + +namespace MinecraftClient.Tui; + +public static class BookTuiHost +{ + private static volatile bool isRunning; + + public static bool TryOpen(McClient handler, BookHand hand, bool editable) + { + if (ConsoleIO.Backend is not TuiConsoleBackend) + return false; + + Open(handler, hand, editable); + return true; + } + + public static void OpenFromServer(McClient handler, BookHand hand) + { + if (ConsoleIO.Backend is TuiConsoleBackend) + Open(handler, hand, editable: BookContentHelper.IsWritableBook(handler.GetHeldBook(hand))); + } + + private static void Open(McClient handler, BookHand hand, bool editable) + { + Dispatcher.UIThread.Post(() => + { + if (isRunning) + return; + + MainTuiView? view = TuiConsoleBackend.Instance?.GetView(); + if (view is null) + return; + + if (!handler.TryGetHeldBookContent(out BookContent content, hand)) + return; + + isRunning = true; + var bookView = new BookView(handler, content, editable && !content.IsSigned); + view.ShowOverlay(bookView, () => isRunning = false); + }); + } +} + +internal sealed class BookView : UserControl +{ + private readonly McClient handler; + private readonly bool editable; + private readonly List pages; + private readonly TextBlock header; + private readonly TextBlock status; + private readonly TextBlock shortcutTip; + private readonly TextBox pageText; + private readonly TextBox titleText; + private readonly Button previousButton; + private readonly Button nextButton; + private readonly Button insertButton; + private readonly Button deleteButton; + private readonly Button saveButton; + private readonly Button signButton; + private bool bookSigned; + private int pageIndex; + + public BookView(McClient handler, BookContent content, bool editable) + { + this.handler = handler; + this.editable = editable; + bookSigned = content.IsSigned; + pages = content.Pages.ToList(); + if (pages.Count == 0) + pages.Add(string.Empty); + + Focusable = true; + Background = Brushes.Black; + + header = new TextBlock + { + Foreground = Brushes.Yellow, + Margin = new Thickness(1, 0), + TextWrapping = TextWrapping.Wrap + }; + + status = new TextBlock + { + Foreground = Brushes.Gray, + Margin = new Thickness(1, 0), + TextWrapping = TextWrapping.Wrap + }; + + shortcutTip = new TextBlock + { + Foreground = Brushes.DarkGray, + Margin = new Thickness(1, 0), + Text = Translations.tui_book_page_shortcut_tip, + TextWrapping = TextWrapping.Wrap + }; + + pageText = new TextBox + { + AcceptsReturn = true, + TextWrapping = TextWrapping.Wrap, + IsReadOnly = !CanEdit, + Foreground = Brushes.White, + Background = Brushes.Black, + BorderBrush = Brushes.Gray, + MinHeight = 12, + Margin = new Thickness(1) + }; + pageText.TextChanged += (_, _) => + { + if (CanEdit && pageIndex >= 0 && pageIndex < pages.Count) + pages[pageIndex] = pageText.Text ?? string.Empty; + }; + + titleText = new TextBox + { + Watermark = Translations.tui_book_title_watermark, + IsVisible = CanEdit, + Foreground = Brushes.White, + Background = Brushes.Black, + BorderBrush = Brushes.Gray, + Margin = new Thickness(1) + }; + + previousButton = Button(Translations.tui_book_prev, (_, _) => TryMovePage(-1)); + nextButton = Button(Translations.tui_book_next, (_, _) => TryMovePage(1)); + insertButton = Button(Translations.tui_book_insert, (_, _) => InsertPage(), editable); + deleteButton = Button(Translations.tui_book_delete, (_, _) => DeletePage(), editable); + saveButton = Button(Translations.tui_book_save, (_, _) => Save(), editable); + signButton = Button(Translations.tui_book_sign, (_, _) => Sign(), editable); + + var controls = new StackPanel + { + Orientation = Orientation.Horizontal, + Spacing = 1, + Margin = new Thickness(1), + Children = + { + previousButton, + nextButton, + insertButton, + deleteButton, + saveButton, + signButton, + Button(Translations.tui_book_close, (_, _) => Close()) + } + }; + + var panel = new DockPanel + { + Background = Brushes.Black, + Children = + { + DockTo(header, Dock.Top), + DockTo(status, Dock.Bottom), + DockTo(shortcutTip, Dock.Bottom), + DockTo(controls, Dock.Bottom), + DockTo(titleText, Dock.Bottom), + pageText + } + }; + + Content = panel; + AttachedToVisualTree += (_, _) => + { + AddHandler(KeyDownEvent, OnTunnelKeyDown, RoutingStrategies.Tunnel, handledEventsToo: true); + FocusPageText(); + }; + DetachedFromVisualTree += (_, _) => RemoveHandler(KeyDownEvent, OnTunnelKeyDown); + Refresh(); + } + + private bool CanEdit => editable && !bookSigned; + + private void OnTunnelKeyDown(object? sender, KeyEventArgs e) + { + if (e.Key == Key.PageUp) + { + TryMovePage(-1); + e.Handled = true; + return; + } + + if (e.Key == Key.PageDown) + { + TryMovePage(1); + e.Handled = true; + } + } + + private static Control DockTo(Control control, Dock dock) + { + DockPanel.SetDock(control, dock); + return control; + } + + private static Button Button(string text, EventHandler handler, bool enabled = true) + { + var button = new Button + { + Content = text, + IsEnabled = enabled, + Padding = new Thickness(1, 0), + Margin = new Thickness(0) + }; + button.Click += handler; + return button; + } + + private bool TryMovePage(int delta) + { + int targetPageIndex = Math.Clamp(pageIndex + delta, 0, pages.Count - 1); + if (targetPageIndex == pageIndex) + return false; + + pageIndex = targetPageIndex; + Refresh(); + return true; + } + + private void InsertPage() + { + if (!CanEdit) + return; + + pages.Insert(pageIndex + 1, string.Empty); + pageIndex++; + Refresh(); + } + + private void DeletePage() + { + if (!CanEdit) + return; + + if (pages.Count == 1) + pages[0] = string.Empty; + else + { + pages.RemoveAt(pageIndex); + pageIndex = Math.Clamp(pageIndex, 0, pages.Count - 1); + } + Refresh(); + } + + private void Save() + { + if (bookSigned || IsHeldBookSigned()) + { + bookSigned = true; + status.Text = Translations.cmd_book_cannot_edit_signed; + RefreshEditability(); + return; + } + + if (!Validate(out string error)) + { + status.Text = error; + return; + } + + status.Text = handler.SendBookEdit(pages) + ? Translations.tui_book_saved + : Translations.tui_book_save_failed; + } + + private void Sign() + { + if (bookSigned || IsHeldBookSigned()) + { + bookSigned = true; + status.Text = Translations.cmd_book_already_signed; + RefreshEditability(); + return; + } + + string title = (titleText.Text ?? string.Empty).Trim(); + if (!Validate(out string error, title)) + { + status.Text = error; + return; + } + + if (handler.SendBookEdit(pages, title)) + { + bookSigned = true; + status.Text = Translations.tui_book_signed; + RefreshEditability(); + return; + } + + status.Text = IsHeldBookSigned() + ? Translations.cmd_book_already_signed + : Translations.tui_book_save_failed; + } + + private bool Validate(out string error, string? title = null) + { + BookLimits limits = BookLimits.ForProtocol(handler.GetProtocolVersion()); + error = string.Empty; + + if (pages.Count > limits.MaxPages) + { + error = string.Format(Translations.cmd_book_too_many_pages, pages.Count, limits.MaxPages); + return false; + } + + for (int i = 0; i < pages.Count; i++) + { + if (pages[i].Length > limits.MaxPageLength) + { + error = string.Format(Translations.cmd_book_page_too_long, i + 1, pages[i].Length, limits.MaxPageLength); + return false; + } + } + + if (title is not null && (title.Length == 0 || title.Length > limits.MaxTitleLength)) + { + error = string.Format(Translations.cmd_book_title_invalid, limits.MaxTitleLength); + return false; + } + + return true; + } + + private void Close() + { + TuiConsoleBackend.Instance?.GetView()?.HideOverlay(); + } + + private void Refresh() + { + string currentPageText = pages[pageIndex]; + if (!string.Equals(pageText.Text, currentPageText, StringComparison.Ordinal)) + pageText.Text = currentPageText; + + header.Text = string.Format(Translations.tui_book_page_header, pageIndex + 1, pages.Count); + status.Text = CanEdit ? Translations.tui_book_editing : Translations.tui_book_reading; + RefreshEditability(); + FocusPageText(); + } + + private void RefreshEditability() + { + previousButton.IsEnabled = pageIndex > 0; + nextButton.IsEnabled = pageIndex < pages.Count - 1; + insertButton.IsEnabled = CanEdit; + deleteButton.IsEnabled = CanEdit; + saveButton.IsEnabled = CanEdit; + signButton.IsEnabled = CanEdit; + pageText.IsReadOnly = !CanEdit; + titleText.IsEnabled = CanEdit; + titleText.IsVisible = CanEdit; + shortcutTip.Text = CanEdit + ? Translations.tui_book_edit_shortcut_tip + : Translations.tui_book_page_shortcut_tip; + } + + private void FocusPageText() + { + Dispatcher.UIThread.Post(() => + { + pageText.Focus(); + if (CanEdit) + pageText.CaretIndex = pageText.Text?.Length ?? 0; + }, DispatcherPriority.Input); + } + + private bool IsHeldBookSigned() + { + return BookContentHelper.TryRead(handler.GetHeldBook(BookHand.Main), out BookContent content) && content.IsSigned; + } +} diff --git a/MinecraftClient/Tui/ContainerViewBase.cs b/MinecraftClient/Tui/ContainerViewBase.cs index 2a5b7668..92787f46 100644 --- a/MinecraftClient/Tui/ContainerViewBase.cs +++ b/MinecraftClient/Tui/ContainerViewBase.cs @@ -184,14 +184,7 @@ namespace MinecraftClient.Tui ItemsSource = chatLines, Focusable = false, ItemTemplate = new FuncDataTemplate((s, _) => - new TextBlock - { - Text = s, - Foreground = Brushes.Gray, - Padding = new Thickness(0), - Margin = new Thickness(0), - TextWrapping = TextWrapping.Wrap, - }), + McColorParser.CreateColoredTextBlock(s ?? "", TextWrapping.Wrap)), }; _chatScrollViewer = new ScrollViewer { diff --git a/MinecraftClient/Tui/DialogTuiHost.cs b/MinecraftClient/Tui/DialogTuiHost.cs new file mode 100644 index 00000000..f94370e6 --- /dev/null +++ b/MinecraftClient/Tui/DialogTuiHost.cs @@ -0,0 +1,449 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Input; +using Avalonia.Interactivity; +using Avalonia.Layout; +using Avalonia.Media; +using Avalonia.Threading; +using MinecraftClient.Dialogs; + +namespace MinecraftClient.Tui; + +internal interface IOverlayCloseHandler +{ + bool TryCloseByUser(); +} + +public static class DialogTuiHost +{ + public static bool TryOpen(McClient handler, DialogInstance instance, bool force) + { + if (ConsoleIO.Backend is not TuiConsoleBackend) + return false; + + Dispatcher.UIThread.Post(() => + { + var view = TuiConsoleBackend.Instance?.GetView(); + if (view is null) + return; + + if (view.HasOverlay && view.OverlayContent is not DialogView && !force) + { + handler.Log.Info(Translations.dialog_tui_pending); + return; + } + + view.ShowOverlay(new DialogView(handler, instance)); + }); + + return true; + } + + public static void CloseCurrent() + { + if (ConsoleIO.Backend is not TuiConsoleBackend) + return; + + Dispatcher.UIThread.Post(() => + { + var view = TuiConsoleBackend.Instance?.GetView(); + if (view?.OverlayContent is DialogView) + view.HideOverlay(); + }); + } +} + +internal sealed class DialogView : Border, IOverlayCloseHandler +{ + private static readonly Color AccentColor = Color.FromRgb(80, 180, 255); + private static readonly Color BorderColor = Color.FromRgb(70, 70, 70); + private static readonly Color SectionBg = Color.FromRgb(20, 20, 20); + private static readonly Color InputBg = Color.FromRgb(35, 35, 35); + + private readonly McClient _handler; + private readonly DialogInstance _instance; + private readonly TextBlock _status; + private readonly Dictionary _inputControls = new(StringComparer.Ordinal); + private readonly StackPanel _inputsPanel; + private readonly WrapPanel _buttonsPanel; + + public DialogView(McClient handler, DialogInstance instance) + { + _handler = handler; + _instance = instance; + + BorderBrush = new SolidColorBrush(BorderColor); + BorderThickness = new Thickness(1); + Background = new SolidColorBrush(Color.FromRgb(12, 12, 12)); + Padding = new Thickness(2); + HorizontalAlignment = HorizontalAlignment.Stretch; + VerticalAlignment = VerticalAlignment.Stretch; + Focusable = true; + + _status = new TextBlock + { + Foreground = Brushes.Gray, + TextWrapping = TextWrapping.Wrap, + Margin = new Thickness(0, 1, 0, 0) + }; + + _inputsPanel = new StackPanel { Spacing = 0, Margin = new Thickness(0) }; + _buttonsPanel = new WrapPanel { Orientation = Orientation.Horizontal }; + + Child = BuildContent(); + + AttachedToVisualTree += (_, _) => + { + AddHandler(KeyDownEvent, OnTunnelKeyDown, RoutingStrategies.Tunnel, handledEventsToo: true); + FocusFirstInput(); + Focus(); + }; + DetachedFromVisualTree += (_, _) => RemoveHandler(KeyDownEvent, OnTunnelKeyDown); + } + + public bool TryCloseByUser() + { + if (!_instance.Definition.CanCloseWithEscape && _instance.Definition.CancelAction is null) + { + SetStatus(Translations.dialog_cannot_cancel); + return false; + } + + var result = _handler.Dialogs.Cancel(); + SetStatus(result.Message); + if (result.Success) + CloseIfInactive(); + + return false; + } + + private Control BuildContent() + { + var root = new DockPanel { Margin = new Thickness(0) }; + + var scroll = new ScrollViewer + { + HorizontalScrollBarVisibility = Avalonia.Controls.Primitives.ScrollBarVisibility.Disabled, + VerticalScrollBarVisibility = Avalonia.Controls.Primitives.ScrollBarVisibility.Auto + }; + + var main = new StackPanel { Spacing = 0, Margin = new Thickness(0) }; + + // Title + main.Children.Add(McColorParser.CreateColoredTextBlock(_instance.Definition.DisplayTitle())); + + // Separator + main.Children.Add(new Border + { + Height = 1, + Background = new SolidColorBrush(BorderColor), + Margin = new Thickness(0, 1, 0, 1) + }); + + // Body + foreach (var body in _instance.Definition.Body) + { + if (string.IsNullOrWhiteSpace(body.Text)) + continue; + main.Children.Add(McColorParser.CreateColoredTextBlock(body.Text)); + } + + // Build action buttons + EnsureActionButtons(); + + // Inputs + foreach (var input in _instance.Definition.Inputs) + main.Children.Add(BuildInput(input)); + + // Action buttons + if (_buttonsPanel.Children.Count > 0) + main.Children.Add(_buttonsPanel); + + // Cancel hint + if (_instance.Definition.CancelAction is not null || _instance.Definition.CanCloseWithEscape) + { + main.Children.Add(new TextBlock + { + Text = Translations.dialog_render_cancel_hint, + Foreground = new SolidColorBrush(Color.FromRgb(120, 120, 120)), + TextWrapping = TextWrapping.Wrap + }); + } + + main.Children.Add(new TextBlock + { + Text = Translations.dialog_render_help_hint, + Foreground = new SolidColorBrush(Color.FromRgb(120, 120, 120)), + TextWrapping = TextWrapping.Wrap + }); + + main.Children.Add(_status); + scroll.Content = main; + root.Children.Add(scroll); + + return root; + } + + private void EnsureActionButtons() + { + if (_buttonsPanel.Children.Count > 0) + return; + + foreach (var action in _instance.Definition.Actions) + { + var btn = new Button + { + Content = McColorParser.CreateColoredTextBlock(action.Label), + Padding = new Thickness(1), + BorderThickness = new Thickness(1), + BorderBrush = new SolidColorBrush(Color.FromRgb(60, 60, 60)), + Background = new SolidColorBrush(Color.FromRgb(40, 40, 40)), + Margin = new Thickness(0, 0, 1, 1) + }; + btn.Click += (_, _) => Click(action.Index); + _buttonsPanel.Children.Add(btn); + } + + if (_instance.Definition.CancelAction is not null || _instance.Definition.CanCloseWithEscape) + { + var cancel = new Button + { + Content = McColorParser.CreateColoredTextBlock(Translations.tui_dialog_cancel), + Padding = new Thickness(1), + BorderThickness = new Thickness(1), + BorderBrush = new SolidColorBrush(Color.FromRgb(80, 40, 40)), + Background = new SolidColorBrush(Color.FromRgb(50, 25, 25)) + }; + cancel.Click += (_, _) => TryCloseByUser(); + _buttonsPanel.Children.Add(cancel); + } + } + + private Control BuildInput(DialogInput input) + { + _instance.Values.TryGetValue(input.Key, out var value); + value ??= input.InitialValue; + + var panel = new StackPanel { Spacing = 0, Margin = new Thickness(0) }; + + if (input.LabelVisible && !string.IsNullOrWhiteSpace(input.Label)) + panel.Children.Add(McColorParser.CreateColoredTextBlock(input.Label)); + + Control inner = input.Kind switch + { + DialogInputKind.Boolean => BuildBooleanInput(value, input), + DialogInputKind.SingleOption => BuildOptionInput(input, value), + DialogInputKind.NumberRange => BuildNumberInput(input, value), + _ => BuildTextInput(input, value) + }; + + _inputControls[input.Key] = inner; + + if (input.Kind == DialogInputKind.Boolean) + { + panel.Children.Add(inner); + } + else + { + panel.Children.Add(new Border + { + Background = new SolidColorBrush(InputBg), + BorderBrush = new SolidColorBrush(Color.FromRgb(55, 55, 55)), + BorderThickness = new Thickness(1), + Padding = new Thickness(1), + Child = inner + }); + } + + return panel; + } + + private Control BuildTextInput(DialogInput input, string value) + { + var tb = new TextBox + { + Text = value, + AcceptsReturn = input.Multiline, + TextWrapping = input.Multiline ? TextWrapping.Wrap : TextWrapping.NoWrap, + MaxLength = input.MaxLength, + Foreground = Brushes.White, + Background = new SolidColorBrush(InputBg), + BorderThickness = new Thickness(0), + Padding = new Thickness(0) + }; + + return tb; + } + + private Control BuildBooleanInput(string value, DialogInput input) + { + return new CheckBox + { + IsChecked = value.Equals("true", StringComparison.OrdinalIgnoreCase), + Foreground = Brushes.White, + Padding = new Thickness(0) + }; + } + + private Control BuildOptionInput(DialogInput input, string value) + { + var combo = new ComboBox + { + ItemsSource = input.Options ?? [], + Foreground = Brushes.White, + Background = new SolidColorBrush(InputBg), + BorderThickness = new Thickness(0), + Padding = new Thickness(1, 0) + }; + + combo.SelectedItem = input.Options?.FirstOrDefault(option => option.Id.Equals(value, StringComparison.Ordinal)) + ?? input.Options?.FirstOrDefault(); + + return combo; + } + + private Control BuildNumberInput(DialogInput input, string value) + { + double numValue = double.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out var parsed) + ? parsed + : input.InitialNumber ?? input.Start; + + double min = Math.Min(input.Start, input.End); + double max = Math.Max(input.Start, input.End); + + var panel = new DockPanel { LastChildFill = true }; + + var slider = new Slider + { + Minimum = min, + Maximum = max, + Value = numValue, + TickFrequency = input.Step ?? 1, + IsSnapToTickEnabled = input.Step is not null, + Foreground = new SolidColorBrush(AccentColor) + }; + + var label = new TextBlock + { + Text = numValue.ToString(CultureInfo.InvariantCulture), + Foreground = Brushes.White, + VerticalAlignment = VerticalAlignment.Center, + Margin = new Thickness(2, 0, 0, 0), + MinWidth = 16 + }; + + slider.PropertyChanged += (_, e) => + { + if (e.Property == Slider.ValueProperty) + label.Text = ((float)slider.Value).ToString(CultureInfo.InvariantCulture); + }; + + DockPanel.SetDock(label, Dock.Right); + panel.Children.Add(slider); + panel.Children.Add(label); + + return panel; + } + + private void Click(int index) + { + if (!StoreInputs()) + return; + + var result = _handler.Dialogs.Click(index); + SetStatus(result.Message); + if (result.Success) + CloseIfInactive(); + } + + private bool StoreInputs() + { + foreach (var input in _instance.Definition.Inputs) + { + if (!_inputControls.TryGetValue(input.Key, out var control)) + continue; + + var value = control switch + { + TextBox textBox => textBox.Text ?? string.Empty, + CheckBox checkBox => checkBox.IsChecked == true ? "true" : "false", + ComboBox comboBox when comboBox.SelectedItem is DialogOption option => option.Id, + Slider slider => NumberToString((float)slider.Value), + _ => input.InitialValue + }; + + var result = _handler.Dialogs.SetInput(input.Key, value); + if (!result.Success) + { + SetStatus(result.Message); + return false; + } + } + + return true; + } + + private void FocusFirstInput() + { + var first = _inputControls.Values.FirstOrDefault(); + if (first is TextBox tb) + { + tb.Focus(); + tb.SelectAll(); + } + else + { + first?.Focus(); + } + } + + private void CloseIfInactive() + { + var current = _handler.Dialogs.Current; + if (current is null) + { + DialogTuiHost.CloseCurrent(); + return; + } + + if (current.Revision != _instance.Revision) + DialogTuiHost.TryOpen(_handler, current, force: true); + } + + private void SetStatus(string text) + { + _status.Text = text; + } + + private void OnTunnelKeyDown(object? sender, KeyEventArgs e) + { + if (e.Key == Key.Escape) + { + TryCloseByUser(); + e.Handled = true; + return; + } + + if (e.Key == Key.Enter) + { + var focused = TopLevel.GetTopLevel(this)?.FocusManager?.GetFocusedElement(); + if (focused is TextBox && _instance.Definition.Actions.Count > 0) + { + Click(_instance.Definition.Actions[0].Index); + e.Handled = true; + } + } + } + + private static string NumberToString(float value) + { + var integer = (int)value; + return integer == value + ? integer.ToString(CultureInfo.InvariantCulture) + : value.ToString(CultureInfo.InvariantCulture); + } +} diff --git a/MinecraftClient/Tui/MainTuiView.cs b/MinecraftClient/Tui/MainTuiView.cs index 9affb94c..78ec2592 100644 --- a/MinecraftClient/Tui/MainTuiView.cs +++ b/MinecraftClient/Tui/MainTuiView.cs @@ -26,9 +26,7 @@ namespace MinecraftClient.Tui if (configured > 0) return configured; - bool isArm = RuntimeInformation.ProcessArchitecture - is Architecture.Arm or Architecture.Arm64; - return isArm ? 500 : 3000; + return 3000; } private readonly ObservableCollection _logLines = new(); @@ -118,6 +116,7 @@ namespace MinecraftClient.Tui }; _commandInput.AddHandler(KeyDownEvent, OnCommandKeyDown, Avalonia.Interactivity.RoutingStrategies.Tunnel); + _commandInput.AddHandler(TextInputEvent, OnCommandTextInput, Avalonia.Interactivity.RoutingStrategies.Tunnel); _commandInput.TextChanged += OnCommandTextChanged; var promptLabel = new TextBlock @@ -269,6 +268,13 @@ namespace MinecraftClient.Tui ScheduleScrollToEnd(); } + public void ClearLog() + { + _logLines.Clear(); + _logControls.Clear(); + ScheduleScrollToEnd(); + } + private void TrimLog() { while (_logLines.Count > MaxLogLines) @@ -487,18 +493,41 @@ namespace MinecraftClient.Tui _commandInput.CaretIndex = pos; } + private void OnCommandTextInput(object? sender, TextInputEventArgs e) + { + string? incoming = e.Text; + if (string.IsNullOrEmpty(incoming) || (!incoming.Contains('\n') && !incoming.Contains('\r'))) + return; + + e.Handled = true; + + string[] lines = incoming.Split(["\r\n", "\r", "\n"], StringSplitOptions.None); + + string prefix = _commandInput.Text ?? ""; + for (int i = 0; i < lines.Length; i++) + { + string line = lines[i]; + bool isLast = i == lines.Length - 1; + + if (line.Length > 0 || prefix.Length > 0) + { + _acceptingSuggestion = true; + try { _commandInput.Text = prefix + line; } + finally { _acceptingSuggestion = false; } + } + + if (!isLast) + { + SubmitCommand(); + prefix = ""; + } + } + } + private void OnCommandTextChanged(object? sender, TextChangedEventArgs e) { string text = _commandInput.Text ?? string.Empty; - if (text.Contains('\n') || text.Contains('\r')) - { - string cleaned = text.Replace("\r\n", " ").Replace('\r', ' ').Replace('\n', ' '); - _commandInput.Text = cleaned; - _commandInput.CaretIndex = cleaned.Length; - return; - } - if (_acceptingSuggestion || _tabCycling) return; @@ -1172,10 +1201,21 @@ namespace MinecraftClient.Tui public bool HasOverlay => _overlayContent != null; + public Control? OverlayContent => _overlayContent; + protected override void OnKeyDown(KeyEventArgs e) { if (e.Key == Key.Escape && _overlayContent != null) { + if (_overlayContent is IOverlayCloseHandler closeHandler) + { + if (closeHandler.TryCloseByUser()) + HideOverlay(); + + e.Handled = true; + return; + } + HideOverlay(); e.Handled = true; return; diff --git a/MinecraftClient/Tui/MapOverlay.cs b/MinecraftClient/Tui/MapOverlay.cs new file mode 100644 index 00000000..a52096f6 --- /dev/null +++ b/MinecraftClient/Tui/MapOverlay.cs @@ -0,0 +1,499 @@ +using System; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Documents; +using Avalonia.Input; +using Avalonia.Interactivity; +using Avalonia.Layout; +using Avalonia.Media; +using MinecraftClient.ChatBots; + +namespace MinecraftClient.Tui +{ + /// + /// Fullscreen overlay that renders a Minecraft map with interactive zoom and pan. + /// Uses Unicode half-block characters where each terminal cell displays two vertical + /// pixels (foreground = top, background = bottom). Supports mouse wheel zoom with + /// center-anchoring, mouse drag panning, and keyboard navigation. + /// At 100% one terminal column = one map pixel wide; at 200% two columns = one pixel. + /// + internal sealed class MapOverlay : Panel + { + private const double MaxScale = 2.0; + private const double ZoomStep = 0.125; + private const double KeyPanStep = 4.0; + private const double OffsetEpsilon = 0.5; + + private readonly TextBlock _mapBlock; + private readonly TextBlock _headerBlock; + private readonly TextBlock _controlsBlock; + private readonly TextBlock _cornerTL; + private readonly TextBlock _cornerTR; + private readonly TextBlock _cornerBL; + private readonly TextBlock _cornerBR; + + private McMap _map = null!; + private double _scale = 1.0; + private double _offsetX; + private double _offsetY; + private double _fitScale = 1.0; + + private bool _isDragging; + private double _dragStartX; + private double _dragStartY; + private double _dragStartOffsetX; + private double _dragStartOffsetY; + private bool _initialLayoutDone; + + private static readonly IBrush IndicatorActive = Brushes.Yellow; + private static readonly IBrush IndicatorDim = new SolidColorBrush(Color.FromRgb(60, 60, 60)); + + public MapOverlay(McMap map) + { + ArgumentNullException.ThrowIfNull(map); + + HorizontalAlignment = HorizontalAlignment.Stretch; + VerticalAlignment = VerticalAlignment.Stretch; + Focusable = true; + Background = Brushes.Black; + + _mapBlock = new TextBlock + { + TextWrapping = TextWrapping.NoWrap, + Padding = new Thickness(0), + Margin = new Thickness(0), + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + }; + + var border = new Border + { + BorderBrush = Brushes.White, + BorderThickness = new Thickness(1), + Padding = new Thickness(0), + Child = _mapBlock, + }; + + _headerBlock = new TextBlock + { + Foreground = Brushes.White, + Background = Brushes.Black, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Top, + Padding = new Thickness(1, 0), + }; + + _controlsBlock = new TextBlock + { + Text = Translations.bot_map_tui_controls, + Foreground = Brushes.Gray, + Background = Brushes.Black, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Bottom, + Padding = new Thickness(1, 0), + }; + + _cornerTL = CreateCornerIndicator(HorizontalAlignment.Left, VerticalAlignment.Top, "\u25E4"); + _cornerTR = CreateCornerIndicator(HorizontalAlignment.Right, VerticalAlignment.Top, "\u25E5"); + _cornerBL = CreateCornerIndicator(HorizontalAlignment.Left, VerticalAlignment.Bottom, "\u25E3"); + _cornerBR = CreateCornerIndicator(HorizontalAlignment.Right, VerticalAlignment.Bottom, "\u25E2"); + + Children.Add(border); + Children.Add(_headerBlock); + Children.Add(_controlsBlock); + Children.Add(_cornerTL); + Children.Add(_cornerTR); + Children.Add(_cornerBL); + Children.Add(_cornerBR); + + AttachedToVisualTree += (_, _) => + { + AddHandler(KeyDownEvent, OnTunnelKeyDown, RoutingStrategies.Tunnel); + AddHandler(TextInputEvent, OnTunnelTextInput, RoutingStrategies.Tunnel); + Focus(); + }; + + DetachedFromVisualTree += (_, _) => + { + RemoveHandler(KeyDownEvent, OnTunnelKeyDown); + RemoveHandler(TextInputEvent, OnTunnelTextInput); + }; + + _map = map; + _scale = double.MinValue; + UpdateHeaderText(); + } + + private static TextBlock CreateCornerIndicator(HorizontalAlignment hAlign, VerticalAlignment vAlign, string glyph) + { + return new TextBlock + { + Text = glyph, + Background = Brushes.Black, + Foreground = IndicatorDim, + HorizontalAlignment = hAlign, + VerticalAlignment = vAlign, + Padding = new Thickness(0), + }; + } + + public void UpdateMap(McMap map) + { + _map = map; + + if (map.Colors is null || map.Width == 0 || map.Height == 0) + return; + + RecalculateFitScale(); + _scale = _fitScale; + _offsetX = 0; + _offsetY = 0; + UpdateHeaderText(); + RenderViewport(); + } + + private void UpdateHeaderText() + { + string zoomText = _scale > 0 ? (_scale * 100).ToString("F1") : "0.0"; + _headerBlock.Text = string.Format(Translations.bot_map_tui_header, + _map.MapId, _map.Width, _map.Height, zoomText); + } + + protected override void OnSizeChanged(SizeChangedEventArgs e) + { + base.OnSizeChanged(e); + + if (_map?.Colors is null || _map.Width == 0 || _map.Height == 0) + return; + + RecalculateFitScale(); + + if (!_initialLayoutDone) + { + _scale = _fitScale; + _offsetX = 0; + _offsetY = 0; + _initialLayoutDone = true; + } + else + { + _scale = Math.Clamp(_scale, _fitScale, MaxScale); + } + + ClampOffset(); + UpdateHeaderText(); + RenderViewport(); + } + + #region Scale / Offset + + private void GetViewportCells(out int viewW, out int viewH) + { + viewW = Math.Max(1, (int)Bounds.Width - 2); + viewH = Math.Max(1, (int)Bounds.Height - 2); + } + + private void RecalculateFitScale() + { + GetViewportCells(out int viewW, out int viewH); + int viewPixelsH = viewH * 2; + + double scaleX = (double)viewW / _map.Width; + double scaleY = (double)viewPixelsH / _map.Height; + _fitScale = Math.Min(scaleX, scaleY); + + if (_fitScale > MaxScale) + _fitScale = MaxScale; + } + + private void ClampOffset() + { + GetViewportCells(out int viewW, out int viewH); + int viewPixelsH = viewH * 2; + + double visibleMapW = viewW / _scale; + double visibleMapH = viewPixelsH / _scale; + + double maxOffX = Math.Max(0, _map.Width - visibleMapW); + double maxOffY = Math.Max(0, _map.Height - visibleMapH); + + _offsetX = Math.Clamp(_offsetX, 0, maxOffX); + _offsetY = Math.Clamp(_offsetY, 0, maxOffY); + } + + private double NextStepScale(bool zoomIn) + { + if (zoomIn) + { + double next = Math.Floor(_scale / ZoomStep + 1.0 - 1e-9) * ZoomStep; + if (next <= _scale + 1e-9) + next += ZoomStep; + return Math.Clamp(next, _fitScale, MaxScale); + } + else + { + double prev = Math.Ceiling(_scale / ZoomStep - 1.0 + 1e-9) * ZoomStep; + if (prev >= _scale - 1e-9) + prev -= ZoomStep; + return Math.Clamp(prev, _fitScale, MaxScale); + } + } + + private void ZoomAtCenter(bool zoomIn) + { + if (_map?.Colors is null) return; + + GetViewportCells(out int viewW, out int viewH); + int viewPixelsH = viewH * 2; + + double centerMapX = _offsetX + (viewW / 2.0) / _scale; + double centerMapY = _offsetY + (viewPixelsH / 2.0) / _scale; + + double newScale = NextStepScale(zoomIn); + if (Math.Abs(newScale - _scale) < 1e-12) + return; + + _scale = newScale; + + _offsetX = centerMapX - (viewW / 2.0) / _scale; + _offsetY = centerMapY - (viewPixelsH / 2.0) / _scale; + ClampOffset(); + UpdateHeaderText(); + RenderViewport(); + } + + #endregion + + #region Rendering + + private void RenderViewport() + { + if (_map?.Colors is null || _map.Width == 0 || _map.Height == 0) + return; + + GetViewportCells(out int viewW, out int viewH); + int viewPixelsH = viewH * 2; + + int mapW = _map.Width; + int mapH = _map.Height; + byte[] colors = _map.Colors; + + int renderCols = Math.Min(viewW, (int)Math.Ceiling(mapW * _scale)); + int renderPixelRows = Math.Min(viewPixelsH, (int)Math.Ceiling(mapH * _scale)); + int renderTextRows = (renderPixelRows + 1) / 2; + + _mapBlock.Inlines ??= []; + _mapBlock.Inlines.Clear(); + + double invScale = 1.0 / _scale; + + for (int r = 0; r < renderTextRows; r++) + { + if (r > 0) + _mapBlock.Inlines.Add(new LineBreak()); + + IBrush? batchFg = null; + IBrush? batchBg = null; + int batchLen = 0; + + for (int c = 0; c < renderCols; c++) + { + int srcX = Math.Clamp((int)(_offsetX + c * invScale), 0, mapW - 1); + int srcTopY = Math.Clamp((int)(_offsetY + (r * 2) * invScale), 0, mapH - 1); + int srcBotY = Math.Clamp((int)(_offsetY + (r * 2 + 1) * invScale), 0, mapH - 1); + + ColorRGBA top = MapColors.ColorByteToRGBA(colors[srcX + srcTopY * mapW]); + ColorRGBA bot = MapColors.ColorByteToRGBA(colors[srcX + srcBotY * mapW]); + + var fg = new SolidColorBrush(Color.FromRgb(top.R, top.G, top.B)); + var bg = new SolidColorBrush(Color.FromRgb(bot.R, bot.G, bot.B)); + + if (batchLen > 0 && ColorsEqual(batchFg!, fg) && ColorsEqual(batchBg!, bg)) + { + batchLen++; + } + else + { + if (batchLen > 0) + FlushBatch(batchFg!, batchBg!, batchLen); + + batchFg = fg; + batchBg = bg; + batchLen = 1; + } + } + + if (batchLen > 0) + FlushBatch(batchFg!, batchBg!, batchLen); + } + + UpdateCornerIndicators(); + } + + private void FlushBatch(IBrush fg, IBrush bg, int count) + { + _mapBlock.Inlines!.Add(new Run(new string('\u2580', count)) + { + Foreground = fg, + Background = bg, + }); + } + + private static bool ColorsEqual(IBrush a, IBrush b) + { + if (a is SolidColorBrush sa && b is SolidColorBrush sb) + return sa.Color == sb.Color; + return false; + } + + private void UpdateCornerIndicators() + { + GetViewportCells(out int viewW, out int viewH); + int viewPixelsH = viewH * 2; + + double visibleW = viewW / _scale; + double visibleH = viewPixelsH / _scale; + + bool moreLeft = _offsetX > OffsetEpsilon; + bool moreTop = _offsetY > OffsetEpsilon; + bool moreRight = _offsetX + visibleW < _map.Width - OffsetEpsilon; + bool moreBottom = _offsetY + visibleH < _map.Height - OffsetEpsilon; + + _cornerTL.Foreground = (moreLeft || moreTop) ? IndicatorActive : IndicatorDim; + _cornerTR.Foreground = (moreRight || moreTop) ? IndicatorActive : IndicatorDim; + _cornerBL.Foreground = (moreLeft || moreBottom) ? IndicatorActive : IndicatorDim; + _cornerBR.Foreground = (moreRight || moreBottom) ? IndicatorActive : IndicatorDim; + } + + #endregion + + #region Mouse interaction + + protected override void OnPointerWheelChanged(PointerWheelEventArgs e) + { + ZoomAtCenter(e.Delta.Y > 0); + e.Handled = true; + } + + protected override void OnPointerPressed(PointerPressedEventArgs e) + { + var props = e.GetCurrentPoint(this).Properties; + if (!props.IsLeftButtonPressed) + return; + + _isDragging = true; + var pos = e.GetPosition(this); + _dragStartX = pos.X; + _dragStartY = pos.Y; + _dragStartOffsetX = _offsetX; + _dragStartOffsetY = _offsetY; + e.Pointer.Capture(this); + e.Handled = true; + } + + protected override void OnPointerMoved(PointerEventArgs e) + { + if (!_isDragging) return; + + var pos = e.GetPosition(this); + double dxCells = pos.X - _dragStartX; + double dyCells = pos.Y - _dragStartY; + + _offsetX = _dragStartOffsetX - dxCells / _scale; + _offsetY = _dragStartOffsetY - dyCells * 2.0 / _scale; + ClampOffset(); + RenderViewport(); + e.Handled = true; + } + + protected override void OnPointerReleased(PointerReleasedEventArgs e) + { + if (!_isDragging) return; + + _isDragging = false; + e.Pointer.Capture(null); + e.Handled = true; + } + + #endregion + + #region Keyboard interaction + + private void OnTunnelKeyDown(object? sender, KeyEventArgs e) + { + if (e.Key is Key.Escape or Key.E) + { + TuiConsoleBackend.Instance?.DismissOverlay(); + e.Handled = true; + } + } + + private void OnTunnelTextInput(object? sender, TextInputEventArgs e) + { + if (e.Text is "+" or "=") + { + ZoomAtCenter(true); + e.Handled = true; + } + else if (e.Text is "-") + { + ZoomAtCenter(false); + e.Handled = true; + } + } + + protected override void OnKeyDown(KeyEventArgs e) + { + switch (e.Key) + { + case Key.Escape: + case Key.E: + TuiConsoleBackend.Instance?.DismissOverlay(); + e.Handled = true; + return; + + case Key.Add: + ZoomAtCenter(true); + e.Handled = true; + return; + + case Key.Subtract: + ZoomAtCenter(false); + e.Handled = true; + return; + + case Key.Left: + _offsetX -= KeyPanStep / _scale; + ClampOffset(); + RenderViewport(); + e.Handled = true; + return; + + case Key.Right: + _offsetX += KeyPanStep / _scale; + ClampOffset(); + RenderViewport(); + e.Handled = true; + return; + + case Key.Up: + _offsetY -= KeyPanStep / _scale; + ClampOffset(); + RenderViewport(); + e.Handled = true; + return; + + case Key.Down: + _offsetY += KeyPanStep / _scale; + ClampOffset(); + RenderViewport(); + e.Handled = true; + return; + } + + base.OnKeyDown(e); + } + + #endregion + } +} diff --git a/MinecraftClient/Tui/McColorParser.cs b/MinecraftClient/Tui/McColorParser.cs index 30f8f280..8f3ac5f2 100644 --- a/MinecraftClient/Tui/McColorParser.cs +++ b/MinecraftClient/Tui/McColorParser.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using Avalonia.Controls; using Avalonia.Controls.Documents; using Avalonia.Media; @@ -63,6 +64,19 @@ namespace MinecraftClient.Tui if (i > start) AddRun(tb, text[start..i], currentColor, bold, italic, underline, strikethrough); + if (text[i + 1] == '#' && i + 8 <= text.Length + && TryParseHexColor(text.AsSpan(i + 2, 6), out var hexBrush)) + { + currentColor = hexBrush; + bold = false; + italic = false; + underline = false; + strikethrough = false; + i += 7; + start = i + 1; + continue; + } + char code = char.ToLower(text[i + 1]); if (ColorMap.TryGetValue(code, out var brush)) @@ -108,6 +122,20 @@ namespace MinecraftClient.Tui return tb; } + private static bool TryParseHexColor(ReadOnlySpan hex, out IBrush brush) + { + if (hex.Length == 6 + && byte.TryParse(hex[..2], NumberStyles.HexNumber, CultureInfo.InvariantCulture, out byte r) + && byte.TryParse(hex[2..4], NumberStyles.HexNumber, CultureInfo.InvariantCulture, out byte g) + && byte.TryParse(hex[4..6], NumberStyles.HexNumber, CultureInfo.InvariantCulture, out byte b)) + { + brush = new SolidColorBrush(Color.FromRgb(r, g, b)); + return true; + } + brush = Brushes.White; + return false; + } + private static void AddRun(TextBlock tb, string text, IBrush color, bool bold, bool italic, bool underline, bool strikethrough) { diff --git a/MinecraftClient/Tui/MccBannerPanelBuilder.cs b/MinecraftClient/Tui/MccBannerPanelBuilder.cs index db1bc0b1..2ebab673 100644 --- a/MinecraftClient/Tui/MccBannerPanelBuilder.cs +++ b/MinecraftClient/Tui/MccBannerPanelBuilder.cs @@ -69,7 +69,7 @@ namespace MinecraftClient.Tui private static void AddGithub(StackPanel panel) { var row = new TextBlock(); - row.Inlines!.Add(Val("Github.com/MCCTeam", Pal.Gray)); + row.Inlines!.Add(Val("https://github.com/MCCTeam", Pal.Gray)); panel.Children.Add(row); } @@ -123,50 +123,44 @@ namespace MinecraftClient.Tui int cols = Pixels.GetLength(1); int textRows = Pixels.GetLength(0) / 2; - var pixelGrid = new Grid(); - for (int c = 0; c < cols; c++) - pixelGrid.ColumnDefinitions.Add(new ColumnDefinition(1, GridUnitType.Auto)); - for (int r = 0; r < textRows; r++) - pixelGrid.RowDefinitions.Add(new RowDefinition(1, GridUnitType.Auto)); + var panel = new StackPanel + { + Orientation = Orientation.Vertical, + Margin = new Thickness(0), + }; for (int row = 0; row < textRows; row++) { + var line = new TextBlock { Padding = new Thickness(0), Margin = new Thickness(0) }; + for (int col = 0; col < cols; col++) { var topColor = Pixels[row * 2, col]; var bottomColor = Pixels[row * 2 + 1, col]; - var cell = new TextBlock + if (row == 1 && col == 1) + { + line.Inlines!.Add(new Run(" \uff1e_") + { + Foreground = new SolidColorBrush(Color.FromRgb(255, 255, 255)), + Background = new SolidColorBrush(S), + }); + col += 4; + topColor = Pixels[row * 2, col]; + bottomColor = Pixels[row * 2 + 1, col]; + } + + line.Inlines!.Add(new Run("\u2580") { - Text = "\u2580", Foreground = new SolidColorBrush(topColor), Background = new SolidColorBrush(bottomColor), - Padding = new Thickness(0), - Margin = new Thickness(0), - }; - - Grid.SetRow(cell, row); - Grid.SetColumn(cell, col); - pixelGrid.Children.Add(cell); + }); } + + panel.Children.Add(line); } - var prompt = new TextBlock - { - Text = " >_", - Foreground = new SolidColorBrush(Color.FromRgb(255, 255, 255)), - Background = new SolidColorBrush(S), - Padding = new Thickness(0), - Margin = new Thickness(0), - HorizontalAlignment = HorizontalAlignment.Left, - VerticalAlignment = VerticalAlignment.Top, - }; - Grid.SetRow(prompt, 1); - Grid.SetColumn(prompt, 1); - Grid.SetColumnSpan(prompt, 4); - pixelGrid.Children.Add(prompt); - - return pixelGrid; + return panel; } #endregion diff --git a/MinecraftClient/Tui/MinimapBlockColors.json b/MinecraftClient/Tui/MinimapBlockColors.json index af7d726c..18479f5d 100644 --- a/MinecraftClient/Tui/MinimapBlockColors.json +++ b/MinecraftClient/Tui/MinimapBlockColors.json @@ -1,5 +1,5 @@ { - "version": "26.1-rc-2", + "version": "26.2", "colors": { "AcaciaDoor": [ 216, @@ -696,6 +696,11 @@ 119, 72 ], + "ChiseledCinnabar": [ + 153, + 51, + 51 + ], "ChiseledNetherBricks": [ 112, 2, @@ -726,6 +731,11 @@ 112, 112 ], + "ChiseledSulfur": [ + 229, + 229, + 51 + ], "ChorusFlower": [ 127, 63, @@ -736,6 +746,46 @@ 63, 178 ], + "Cinnabar": [ + 153, + 51, + 51 + ], + "CinnabarBrickSlab": [ + 153, + 51, + 51 + ], + "CinnabarBrickStairs": [ + 153, + 51, + 51 + ], + "CinnabarBrickWall": [ + 153, + 51, + 51 + ], + "CinnabarBricks": [ + 153, + 51, + 51 + ], + "CinnabarSlab": [ + 153, + 51, + 51 + ], + "CinnabarStairs": [ + 153, + 51, + 51 + ], + "CinnabarWall": [ + 153, + 51, + 51 + ], "Clay": [ 164, 168, @@ -2526,6 +2576,26 @@ 25, 25 ], + "PolishedCinnabar": [ + 153, + 51, + 51 + ], + "PolishedCinnabarSlab": [ + 153, + 51, + 51 + ], + "PolishedCinnabarStairs": [ + 153, + 51, + 51 + ], + "PolishedCinnabarWall": [ + 153, + 51, + 51 + ], "PolishedDiorite": [ 255, 252, @@ -2536,6 +2606,26 @@ 109, 77 ], + "PolishedSulfur": [ + 229, + 229, + 51 + ], + "PolishedSulfurSlab": [ + 229, + 229, + 51 + ], + "PolishedSulfurStairs": [ + 229, + 229, + 51 + ], + "PolishedSulfurWall": [ + 229, + 229, + 51 + ], "Poppy": [ 0, 124, @@ -2546,6 +2636,11 @@ 124, 0 ], + "PotentSulfur": [ + 250, + 238, + 77 + ], "PowderSnow": [ 255, 255, @@ -3121,6 +3216,51 @@ 124, 0 ], + "Sulfur": [ + 229, + 229, + 51 + ], + "SulfurBrickSlab": [ + 229, + 229, + 51 + ], + "SulfurBrickStairs": [ + 229, + 229, + 51 + ], + "SulfurBrickWall": [ + 229, + 229, + 51 + ], + "SulfurBricks": [ + 229, + 229, + 51 + ], + "SulfurSlab": [ + 229, + 229, + 51 + ], + "SulfurSpike": [ + 229, + 229, + 51 + ], + "SulfurStairs": [ + 229, + 229, + 51 + ], + "SulfurWall": [ + 229, + 229, + 51 + ], "Sunflower": [ 0, 124, @@ -3548,5 +3688,317 @@ "PackedIce", "BlueIce", "FrostedIce" - ] -} \ No newline at end of file + ], + "map_palette": { + "0": [ + 0, + 0, + 0 + ], + "1": [ + 127, + 178, + 56 + ], + "2": [ + 247, + 233, + 163 + ], + "3": [ + 199, + 199, + 199 + ], + "4": [ + 255, + 0, + 0 + ], + "5": [ + 160, + 160, + 255 + ], + "6": [ + 167, + 167, + 167 + ], + "7": [ + 0, + 124, + 0 + ], + "8": [ + 255, + 255, + 255 + ], + "9": [ + 164, + 168, + 184 + ], + "10": [ + 151, + 109, + 77 + ], + "11": [ + 112, + 112, + 112 + ], + "12": [ + 64, + 64, + 255 + ], + "13": [ + 143, + 119, + 72 + ], + "14": [ + 255, + 252, + 245 + ], + "15": [ + 216, + 127, + 51 + ], + "16": [ + 178, + 76, + 216 + ], + "17": [ + 102, + 153, + 216 + ], + "18": [ + 229, + 229, + 51 + ], + "19": [ + 127, + 204, + 25 + ], + "20": [ + 242, + 127, + 165 + ], + "21": [ + 76, + 76, + 76 + ], + "22": [ + 153, + 153, + 153 + ], + "23": [ + 76, + 127, + 153 + ], + "24": [ + 127, + 63, + 178 + ], + "25": [ + 51, + 76, + 178 + ], + "26": [ + 102, + 76, + 51 + ], + "27": [ + 102, + 127, + 51 + ], + "28": [ + 153, + 51, + 51 + ], + "29": [ + 25, + 25, + 25 + ], + "30": [ + 250, + 238, + 77 + ], + "31": [ + 92, + 219, + 213 + ], + "32": [ + 74, + 128, + 255 + ], + "33": [ + 0, + 217, + 58 + ], + "34": [ + 129, + 86, + 49 + ], + "35": [ + 112, + 2, + 0 + ], + "36": [ + 209, + 177, + 161 + ], + "37": [ + 159, + 82, + 36 + ], + "38": [ + 149, + 87, + 108 + ], + "39": [ + 112, + 108, + 138 + ], + "40": [ + 186, + 133, + 36 + ], + "41": [ + 103, + 117, + 53 + ], + "42": [ + 160, + 77, + 78 + ], + "43": [ + 57, + 41, + 35 + ], + "44": [ + 135, + 107, + 98 + ], + "45": [ + 87, + 92, + 92 + ], + "46": [ + 122, + 73, + 88 + ], + "47": [ + 76, + 62, + 92 + ], + "48": [ + 76, + 50, + 35 + ], + "49": [ + 76, + 82, + 42 + ], + "50": [ + 142, + 60, + 46 + ], + "51": [ + 37, + 22, + 16 + ], + "52": [ + 189, + 48, + 49 + ], + "53": [ + 148, + 63, + 97 + ], + "54": [ + 92, + 25, + 29 + ], + "55": [ + 22, + 126, + 134 + ], + "56": [ + 58, + 142, + 140 + ], + "57": [ + 86, + 44, + 62 + ], + "58": [ + 20, + 180, + 133 + ], + "59": [ + 100, + 100, + 100 + ], + "60": [ + 216, + 175, + 147 + ], + "61": [ + 127, + 167, + 150 + ] + } +} diff --git a/MinecraftClient/Tui/MinimapEntityCategories.json b/MinecraftClient/Tui/MinimapEntityCategories.json index c80b7c0b..a5d3c19a 100644 --- a/MinecraftClient/Tui/MinimapEntityCategories.json +++ b/MinecraftClient/Tui/MinimapEntityCategories.json @@ -1,5 +1,5 @@ { - "version": "26.1-rc-2", + "version": "26.2", "hostile": [ "Blaze", "Bogged", @@ -30,6 +30,7 @@ "Skeleton", "Slime", "Stray", + "SulfurCube", "Vex", "Vindicator", "Warden", @@ -164,4 +165,4 @@ "WindCharge", "WitherSkull" ] -} \ No newline at end of file +} diff --git a/MinecraftClient/Tui/ServerStatusPanelBuilder.cs b/MinecraftClient/Tui/ServerStatusPanelBuilder.cs index 2c8daf6f..bff8fe7c 100644 --- a/MinecraftClient/Tui/ServerStatusPanelBuilder.cs +++ b/MinecraftClient/Tui/ServerStatusPanelBuilder.cs @@ -91,7 +91,7 @@ namespace MinecraftClient.Tui row.Inlines.Add(Value(versionClean, McColors.Aqua)); row.Inlines.Add(new Run(" (") { Foreground = McColors.Gray }); row.Inlines.Add(new Run(string.Format(Translations.mcc_server_info_label_protocol, info.ProtocolVersion)) - { Foreground = McColors.Gray }); + { Foreground = McColors.Gray }); row.Inlines.Add(new Run(")") { Foreground = McColors.Gray }); panel.Children.Add(row); } @@ -107,7 +107,7 @@ namespace MinecraftClient.Tui row.Inlines.Add(Value(resolvedMcVer, McColors.Green)); row.Inlines.Add(new Run(" (") { Foreground = McColors.Gray }); row.Inlines.Add(new Run(string.Format(Translations.mcc_server_info_label_protocol, info.ResolvedProtocol)) - { Foreground = McColors.Gray }); + { Foreground = McColors.Gray }); row.Inlines.Add(new Run(")") { Foreground = McColors.Gray }); panel.Children.Add(row); } @@ -126,7 +126,7 @@ namespace MinecraftClient.Tui var row = new TextBlock(); row.Inlines!.Add(Label(Translations.mcc_server_info_label_ping)); row.Inlines.Add(new Run(string.Format(Translations.mcc_server_info_label_ping_ms, info.PingMs)) - { Foreground = pingColor }); + { Foreground = pingColor }); panel.Children.Add(row); } diff --git a/MinecraftClient/Tui/TabListOverlay.cs b/MinecraftClient/Tui/TabListOverlay.cs new file mode 100644 index 00000000..6e4c5c29 --- /dev/null +++ b/MinecraftClient/Tui/TabListOverlay.cs @@ -0,0 +1,92 @@ +using System; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Primitives; +using Avalonia.Input; +using Avalonia.Interactivity; +using Avalonia.Layout; +using Avalonia.Media; +using Avalonia.Threading; + +namespace MinecraftClient.Tui +{ + internal sealed class TabListOverlay : Border + { + private readonly McClient _handler; + private readonly ScrollViewer _scrollViewer; + private readonly DispatcherTimer _refreshTimer; + + public TabListOverlay(McClient handler) + { + ArgumentNullException.ThrowIfNull(handler); + _handler = handler; + + BorderBrush = Brushes.White; + BorderThickness = new Thickness(1); + Background = Brushes.Black; + Padding = new Thickness(1); + HorizontalAlignment = HorizontalAlignment.Stretch; + VerticalAlignment = VerticalAlignment.Stretch; + Focusable = true; + + _scrollViewer = new ScrollViewer + { + HorizontalScrollBarVisibility = ScrollBarVisibility.Auto, + VerticalScrollBarVisibility = ScrollBarVisibility.Auto, + Focusable = true, + }; + + Child = _scrollViewer; + + _refreshTimer = new DispatcherTimer(TimeSpan.FromMilliseconds(500), DispatcherPriority.Background, static (_, _) => { }) + { + IsEnabled = false + }; + _refreshTimer.Tick += (_, _) => Refresh(); + + AttachedToVisualTree += (_, _) => + { + AddHandler(KeyDownEvent, OnTunnelKeyDown, RoutingStrategies.Tunnel); + Refresh(); + _refreshTimer.Start(); + Focus(); + Dispatcher.UIThread.Post(() => _scrollViewer.Focus(), DispatcherPriority.Input); + }; + + DetachedFromVisualTree += (_, _) => + { + RemoveHandler(KeyDownEvent, OnTunnelKeyDown); + _refreshTimer.Stop(); + }; + } + + private void OnTunnelKeyDown(object? sender, KeyEventArgs e) + { + if (e.Key != Key.Escape) + return; + + TuiConsoleBackend.Instance?.DismissOverlay(); + e.Handled = true; + } + + protected override void OnKeyDown(KeyEventArgs e) + { + if (e.Key == Key.Escape) + { + TuiConsoleBackend.Instance?.DismissOverlay(); + e.Handled = true; + return; + } + + base.OnKeyDown(e); + } + + private void Refresh() + { + string text = TabListFormatter.Render(_handler.GetTabListSnapshot(), includeOverlayHint: true); + var block = McColorParser.CreateColoredTextBlock(text, TextWrapping.NoWrap); + block.Margin = new Thickness(0); + _scrollViewer.Content = block; + } + } +} diff --git a/MinecraftClient/Tui/TuiConsoleBackend.cs b/MinecraftClient/Tui/TuiConsoleBackend.cs index bee59751..9579cd23 100644 --- a/MinecraftClient/Tui/TuiConsoleBackend.cs +++ b/MinecraftClient/Tui/TuiConsoleBackend.cs @@ -19,7 +19,6 @@ namespace MinecraftClient.Tui public event EventHandler? OnInputChange; private MainTuiView? _view; - private volatile bool _readThreadActive; public bool DisplayUserInput { get; set; } = true; @@ -177,12 +176,10 @@ namespace MinecraftClient.Tui public void BeginReadThread() { - _readThreadActive = true; } public void StopReadThread() { - _readThreadActive = false; DismissOverlay(); } @@ -243,6 +240,15 @@ namespace MinecraftClient.Tui Dispatcher.UIThread.Post(() => _view?.ClearInput()); } + public void ClearScreen() + { + if (_view == null) return; + if (Dispatcher.UIThread.CheckAccess()) + _view.ClearLog(); + else + Dispatcher.UIThread.Post(() => _view?.ClearLog()); + } + public void SetInputVisible(bool visible) { } @@ -271,7 +277,8 @@ namespace MinecraftClient.Tui { Thread.Sleep(1000); Environment.Exit(0); - }) { Name = "TUI-Exit-Guard", IsBackground = true }.Start(); + }) + { Name = "TUI-Exit-Guard", IsBackground = true }.Start(); } private volatile bool _shutdownRequested; diff --git a/MinecraftClient/WinAPI/ConsoleIcon.cs b/MinecraftClient/WinAPI/ConsoleIcon.cs index e66eca89..cc243dda 100644 --- a/MinecraftClient/WinAPI/ConsoleIcon.cs +++ b/MinecraftClient/WinAPI/ConsoleIcon.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Drawing; using System.IO; using System.Net.Http; @@ -13,6 +13,7 @@ namespace MinecraftClient.WinAPI /// Allow to set the player skin as console icon, on Windows only. /// See StackOverflow no. 2986853 /// + [SupportedOSPlatform("windows")] public static class ConsoleIcon { [DllImport("kernel32.dll", SetLastError = true)] @@ -32,18 +33,14 @@ namespace MinecraftClient.WinAPI private static void SetWindowIcon(System.Drawing.Icon icon) { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - IntPtr mwHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; - SendMessage(mwHandle, (int)WinMessages.SETICON, 0, icon.Handle); - SendMessage(mwHandle, (int)WinMessages.SETICON, 1, icon.Handle); - } + IntPtr mwHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; + SendMessage(mwHandle, (int)WinMessages.SETICON, 0, icon.Handle); + SendMessage(mwHandle, (int)WinMessages.SETICON, 1, icon.Handle); } /// /// Asynchronously download the player's skin and set the head as console icon /// - [SupportedOSPlatform("windows")] public static void SetPlayerIconAsync(string playerName) { Thread t = new(new ThreadStart(delegate @@ -99,16 +96,13 @@ namespace MinecraftClient.WinAPI /// public static void RevertToMCCIcon() { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) //Windows Only + try { - try - { - Icon defaultIcon = Icon.ExtractAssociatedIcon(Environment.ProcessPath!)!; - SetWindowIcon(Icon.FromHandle(defaultIcon.Handle)); // Windows 10+ (New console) - SetConsoleIcon(defaultIcon.Handle); // Windows 8 and lower (Older console) - } - catch { } + Icon defaultIcon = Icon.ExtractAssociatedIcon(Environment.ProcessPath!)!; + SetWindowIcon(Icon.FromHandle(defaultIcon.Handle)); // Windows 10+ (New console) + SetConsoleIcon(defaultIcon.Handle); // Windows 8 and lower (Older console) } + catch { } } } } diff --git a/README.md b/README.md index 76228060..af4569d4 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ If you'd like to contribute to Minecraft Console Client, great, just fork the re ## Translating Minecraft Console Client 🌍 -To improve translations for MCC, please visit: [Crowdin - Minecraft Console Client](https://crwd.in/minecraft-console-client). +To improve translations for MCC, please visit: [Crowdin - Minecraft Console Client](https://crowdin.com/project/minecraft-console-client). ## Building from the source 🏗️ diff --git a/crowdin.yml b/crowdin.yml index 89813ca1..9d6bbe3a 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -32,5 +32,9 @@ { "source": "/docs/guide/*.md", "translation": "/docs/l10n/%osx_code%/guide/%original_file_name%" + }, + { + "source": "/docs/guide/websocket/*.md", + "translation": "/docs/l10n/%osx_code%/guide/websocket/%original_file_name%" } ] diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts index d9e3a930..d03ff77a 100644 --- a/docs/.vuepress/config.ts +++ b/docs/.vuepress/config.ts @@ -9,15 +9,76 @@ import { shikiPlugin } from '@vuepress/plugin-shiki' import { defaultTheme } from '@vuepress/theme-default' import { defineUserConfig } from 'vuepress' +import type { Plugin } from 'vite' + import { headConfig } from './configs/head.js' import { mainConfig, defaultThemeConfig } from './configs/locales_config.js' const isProd = process.env.NODE_ENV === 'production' +function vueTemplateTolerantPlugin(): Plugin { + let compilerSfc: typeof import('@vue/compiler-sfc') | undefined + return { + name: 'vue-template-tolerant', + enforce: 'pre', + async transform(code, id) { + if (!id.endsWith('.html.vue') || !id.includes('/l10n/')) return + compilerSfc ??= await import('@vue/compiler-sfc') + const { errors } = compilerSfc.parse(code, { filename: id }) + if (errors.length === 0) return + + const lines = code.split('\n') + const mdPath = id + .replace(/\.vuepress\/\.temp\/pages\//, '') + .replace(/\.html\.vue$/, '.md') + + const yellow = '\x1b[33m' + const red = '\x1b[31m' + const dim = '\x1b[2m' + const cyan = '\x1b[36m' + const reset = '\x1b[0m' + + let output = `${yellow}[vue-template-tolerant]${reset} ${errors.length} error(s) in translation page (replaced with placeholder)\n` + output += ` ${dim}source:${reset} ${cyan}${mdPath}${reset}\n` + + for (const err of errors as any[]) { + const msg = err.message ?? String(err) + const loc = err.loc as { start: { line: number; column: number }; end: { line: number; column: number }; source?: string } | undefined + if (loc) { + output += `\n ${red}error${reset} ${msg}\n` + output += ` ${dim}at ${id}:${loc.start.line}:${loc.start.column}${reset}\n` + const startLine = Math.max(0, loc.start.line - 3) + const endLine = Math.min(lines.length, loc.start.line + 2) + for (let i = startLine; i < endLine; i++) { + const lineNum = String(i + 1).padStart(5) + const marker = i + 1 === loc.start.line ? `${red}>${reset}` : ' ' + const lineContent = lines[i].length > 200 ? lines[i].slice(0, 200) + '...' : lines[i] + output += ` ${marker} ${dim}${lineNum}${reset} | ${lineContent}\n` + if (i + 1 === loc.start.line) { + const col = loc.start.column + output += ` ${' '.repeat(5)} | ${' '.repeat(col)}${red}^${reset}\n` + } + } + } else { + output += `\n ${red}error${reset} ${msg}\n` + } + } + + console.warn(output) + return { + code: '', + map: null, + } + }, + } +} + export default defineUserConfig({ // set site base to default value base: '/', + pagePatterns: ['**/*.md', '!.vuepress', '!node_modules', '!superpowers'], + // extra tags in `` head: headConfig, @@ -25,7 +86,14 @@ export default defineUserConfig({ locales: mainConfig, // specify bundler via environment variable - bundler: process.env.DOCS_BUNDLER === 'webpack' ? webpackBundler() : viteBundler(), + bundler: + process.env.DOCS_BUNDLER === 'webpack' + ? webpackBundler() + : viteBundler({ + viteOptions: { + plugins: [vueTemplateTolerantPlugin()], + }, + }), // configure default theme theme: defaultTheme({ diff --git a/docs/.vuepress/configs/l10n_configs/af.ts b/docs/.vuepress/configs/l10n_configs/af.ts index b956e7f8..2b11ba60 100644 --- a/docs/.vuepress/configs/l10n_configs/af.ts +++ b/docs/.vuepress/configs/l10n_configs/af.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_af: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/ar.ts b/docs/.vuepress/configs/l10n_configs/ar.ts index a91a460f..a08352b7 100644 --- a/docs/.vuepress/configs/l10n_configs/ar.ts +++ b/docs/.vuepress/configs/l10n_configs/ar.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_ar: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/ca.ts b/docs/.vuepress/configs/l10n_configs/ca.ts index 1ca77152..90ab4b2c 100644 --- a/docs/.vuepress/configs/l10n_configs/ca.ts +++ b/docs/.vuepress/configs/l10n_configs/ca.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_ca: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/config_templete.ts b/docs/.vuepress/configs/l10n_configs/config_templete.ts index 3b0568ba..3d817b54 100644 --- a/docs/.vuepress/configs/l10n_configs/config_templete.ts +++ b/docs/.vuepress/configs/l10n_configs/config_templete.ts @@ -49,7 +49,7 @@ export const defaultThemeConfig_$LanguageCodeEscaped$: DefaultThemeLocaleData = { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/cs.ts b/docs/.vuepress/configs/l10n_configs/cs.ts index bb45f7de..14bb6893 100644 --- a/docs/.vuepress/configs/l10n_configs/cs.ts +++ b/docs/.vuepress/configs/l10n_configs/cs.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_cs: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/da.ts b/docs/.vuepress/configs/l10n_configs/da.ts index 4771c49e..185a1b5c 100644 --- a/docs/.vuepress/configs/l10n_configs/da.ts +++ b/docs/.vuepress/configs/l10n_configs/da.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_da: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/de.ts b/docs/.vuepress/configs/l10n_configs/de.ts index 509be3aa..c151bcb8 100644 --- a/docs/.vuepress/configs/l10n_configs/de.ts +++ b/docs/.vuepress/configs/l10n_configs/de.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_de: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/el.ts b/docs/.vuepress/configs/l10n_configs/el.ts index 95f1a97b..1885b04b 100644 --- a/docs/.vuepress/configs/l10n_configs/el.ts +++ b/docs/.vuepress/configs/l10n_configs/el.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_el: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/en.ts b/docs/.vuepress/configs/l10n_configs/en.ts index 90cac2cc..d3ed87f6 100644 --- a/docs/.vuepress/configs/l10n_configs/en.ts +++ b/docs/.vuepress/configs/l10n_configs/en.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_en: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/es.ts b/docs/.vuepress/configs/l10n_configs/es.ts index 81c88e3c..3bfe0adc 100644 --- a/docs/.vuepress/configs/l10n_configs/es.ts +++ b/docs/.vuepress/configs/l10n_configs/es.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_es: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/fi.ts b/docs/.vuepress/configs/l10n_configs/fi.ts index 6494cf75..55f63c65 100644 --- a/docs/.vuepress/configs/l10n_configs/fi.ts +++ b/docs/.vuepress/configs/l10n_configs/fi.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_fi: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/fr.ts b/docs/.vuepress/configs/l10n_configs/fr.ts index d73eab9e..daa39ecd 100644 --- a/docs/.vuepress/configs/l10n_configs/fr.ts +++ b/docs/.vuepress/configs/l10n_configs/fr.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_fr: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/he.ts b/docs/.vuepress/configs/l10n_configs/he.ts index 80253c88..1211da36 100644 --- a/docs/.vuepress/configs/l10n_configs/he.ts +++ b/docs/.vuepress/configs/l10n_configs/he.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_he: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/hu.ts b/docs/.vuepress/configs/l10n_configs/hu.ts index 43c6fde5..a5085801 100644 --- a/docs/.vuepress/configs/l10n_configs/hu.ts +++ b/docs/.vuepress/configs/l10n_configs/hu.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_hu: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/it.ts b/docs/.vuepress/configs/l10n_configs/it.ts index 42a03629..1fb0788e 100644 --- a/docs/.vuepress/configs/l10n_configs/it.ts +++ b/docs/.vuepress/configs/l10n_configs/it.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_it: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/ja.ts b/docs/.vuepress/configs/l10n_configs/ja.ts index 5b5f4970..9e014260 100644 --- a/docs/.vuepress/configs/l10n_configs/ja.ts +++ b/docs/.vuepress/configs/l10n_configs/ja.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_ja: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/ko.ts b/docs/.vuepress/configs/l10n_configs/ko.ts index 2b2b0618..fcb27fb0 100644 --- a/docs/.vuepress/configs/l10n_configs/ko.ts +++ b/docs/.vuepress/configs/l10n_configs/ko.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_ko: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/lv.ts b/docs/.vuepress/configs/l10n_configs/lv.ts index dbb74316..8448d1a8 100644 --- a/docs/.vuepress/configs/l10n_configs/lv.ts +++ b/docs/.vuepress/configs/l10n_configs/lv.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_lv: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/nl.ts b/docs/.vuepress/configs/l10n_configs/nl.ts index 992371c5..d1c0dc24 100644 --- a/docs/.vuepress/configs/l10n_configs/nl.ts +++ b/docs/.vuepress/configs/l10n_configs/nl.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_nl: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/no.ts b/docs/.vuepress/configs/l10n_configs/no.ts index d223eac1..2b92c00f 100644 --- a/docs/.vuepress/configs/l10n_configs/no.ts +++ b/docs/.vuepress/configs/l10n_configs/no.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_no: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/pl.ts b/docs/.vuepress/configs/l10n_configs/pl.ts index 70b06e98..573ac16b 100644 --- a/docs/.vuepress/configs/l10n_configs/pl.ts +++ b/docs/.vuepress/configs/l10n_configs/pl.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_pl: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/pt-BR.ts b/docs/.vuepress/configs/l10n_configs/pt-BR.ts index 3601fff0..3d423d44 100644 --- a/docs/.vuepress/configs/l10n_configs/pt-BR.ts +++ b/docs/.vuepress/configs/l10n_configs/pt-BR.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_pt_BR: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/pt.ts b/docs/.vuepress/configs/l10n_configs/pt.ts index d50297b8..09d9bc46 100644 --- a/docs/.vuepress/configs/l10n_configs/pt.ts +++ b/docs/.vuepress/configs/l10n_configs/pt.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_pt: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/ro.ts b/docs/.vuepress/configs/l10n_configs/ro.ts index d8293b94..47d7ee1a 100644 --- a/docs/.vuepress/configs/l10n_configs/ro.ts +++ b/docs/.vuepress/configs/l10n_configs/ro.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_ro: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/ru.ts b/docs/.vuepress/configs/l10n_configs/ru.ts index fc8d1148..e085b7f8 100644 --- a/docs/.vuepress/configs/l10n_configs/ru.ts +++ b/docs/.vuepress/configs/l10n_configs/ru.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_ru: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/sr-Cyrl.ts b/docs/.vuepress/configs/l10n_configs/sr-Cyrl.ts index cb86e0e0..0c4399e6 100644 --- a/docs/.vuepress/configs/l10n_configs/sr-Cyrl.ts +++ b/docs/.vuepress/configs/l10n_configs/sr-Cyrl.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_sr_Cyrl: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/sv.ts b/docs/.vuepress/configs/l10n_configs/sv.ts index b4c0a278..97764bb0 100644 --- a/docs/.vuepress/configs/l10n_configs/sv.ts +++ b/docs/.vuepress/configs/l10n_configs/sv.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_sv: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/tr.ts b/docs/.vuepress/configs/l10n_configs/tr.ts index fb9eb6ec..b1be3c5e 100644 --- a/docs/.vuepress/configs/l10n_configs/tr.ts +++ b/docs/.vuepress/configs/l10n_configs/tr.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_tr: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/uk.ts b/docs/.vuepress/configs/l10n_configs/uk.ts index a15a896e..c2fce2a7 100644 --- a/docs/.vuepress/configs/l10n_configs/uk.ts +++ b/docs/.vuepress/configs/l10n_configs/uk.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_uk: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/vi.ts b/docs/.vuepress/configs/l10n_configs/vi.ts index 50c554c7..8e34c396 100644 --- a/docs/.vuepress/configs/l10n_configs/vi.ts +++ b/docs/.vuepress/configs/l10n_configs/vi.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_vi: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/zh-Hans.ts b/docs/.vuepress/configs/l10n_configs/zh-Hans.ts index 146cf830..2de8559b 100644 --- a/docs/.vuepress/configs/l10n_configs/zh-Hans.ts +++ b/docs/.vuepress/configs/l10n_configs/zh-Hans.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_zh_Hans: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/.vuepress/configs/l10n_configs/zh-Hant.ts b/docs/.vuepress/configs/l10n_configs/zh-Hant.ts index d2577220..b13d6053 100644 --- a/docs/.vuepress/configs/l10n_configs/zh-Hant.ts +++ b/docs/.vuepress/configs/l10n_configs/zh-Hant.ts @@ -50,7 +50,7 @@ export const defaultThemeConfig_zh_Hant: DefaultThemeLocaleData = { { text: Translation.helpUsTranslate, - link: "https://crwd.in/minecraft-console-client", + link: "https://crowdin.com/project/minecraft-console-client", }, ], diff --git a/docs/guide/README.md b/docs/guide/README.md index b645b958..a5fd572d 100644 --- a/docs/guide/README.md +++ b/docs/guide/README.md @@ -71,6 +71,8 @@ It was originally made by [ORelio](https://github.com/ORelio) in 2012 on the [Mi - [Inventory Handling](usage.md#inventory) +- [Book Support](usage.md#book) + - [Terrain Traversing](usage.md#move) - Entity Handling diff --git a/docs/guide/ai-assisted-development.md b/docs/guide/ai-assisted-development.md index 9f8fdc03..11686d64 100644 --- a/docs/guide/ai-assisted-development.md +++ b/docs/guide/ai-assisted-development.md @@ -54,6 +54,8 @@ It is built around two layers: - repo tools in `tools/`, which do the actual work - AI skills in `.skills/`, which tell the agent when and how to use those tools +For agent-driven local development, prefer the `mcc-*` wrappers after `source tools/mcc-env.sh`. They preserve session isolation, temp configs, and optional tmpfs build routing. Do not default to raw `dotnet build` or `dotnet run` for the normal MCC debug loop. + ## Setup You only do most of this once. @@ -367,10 +369,16 @@ This gives you the helper functions used by the workflow: - `mc-cmd` - `mc-log` - `mc-rcon` +- `mc-reset-test-env` - `mcc-build` +- `mcc-build-clean` - `mcc-run` +- `mcc-tui` - `mcc-cmd` +- `mcc-log-mcc` +- `mcc-state` - `mcc-kill` +- `mcc-debug` - `mcc-reload` @@ -412,7 +420,7 @@ Then make sure the helper functions are loaded: ```bash type mc-start type mcc-build -type mcc-run +type mcc-debug ``` @@ -426,11 +434,55 @@ The moving parts are: - a local Minecraft server running in `tmux` - `mc-rcon` for server-side commands such as `/op`, `/give`, `/summon`, or gamerule setup - MCC started with `MCC_FILE_INPUT=1` -- `FileInputBot`, which watches `mcc_input.txt` and turns file lines into MCC commands or server chat +- `FileInputBot`, which watches the session input file under `${TMPDIR:-/tmp}/mcc-debug//mcc_input.txt` - logs from MCC and the local server, which the agent can inspect between runs The result is simple: the agent can change code, rebuild, start the app, inject commands, and read the result without waiting for a human to sit in the terminal. +## Shared Server, Isolated MCC Sessions + +The harness separates shared server state from MCC client state. + +- `mc-*` commands operate on the shared local Minecraft server. +- `mcc-*` commands operate on one MCC client session. +- The default `session` is the current worktree name. +- The default username is derived from `session`, so two worktrees can join the same shared server without kicking each other. +- Session files live under `${TMPDIR:-/tmp}/mcc-debug//`. +- `MCC_SERVERS` stays the shared server-root override. + +Keep shared servers running by default. Do not stop or reset them unless the user explicitly asks for that, or you need to switch server versions. + +Two worktrees can share one local server like this: + +```bash +# worktree A +cd ~/Minecraft/Minecraft-Console-Client +source tools/mcc-env.sh +mc-start 1.21.11 +mcc-debug -v 1.21.11 --file-input + +# worktree B +cd ~/Minecraft/Minecraft-Console-Client-foo +source tools/mcc-env.sh +mcc-debug -v 1.21.11 --file-input + +# from each worktree, mcc-* targets that worktree's default session +mcc-state +``` + +If you need two MCC sessions from one worktree, pass `--session NAME` explicitly. + +### tmpfs build mode + +```bash +source tools/mcc-env.sh +export MCC_BUILD_MODE=tmpfs +mcc-build +mcc-build-clean +``` + +When `MCC_BUILD_MODE=tmpfs`, build output goes to `/dev/shm/mcc-build//` on Linux, or `${TMPDIR:-/tmp}/mcc-build//` when `/dev/shm` is unavailable. + ## Repository Tools These are the repo-level tools that make the workflow practical. @@ -438,6 +490,7 @@ These are the repo-level tools that make the workflow practical. | Path | Purpose | | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `tools/mcc-env.sh` | Loads the shell helper functions used for the normal loop. | +| `tools/mcc-debug.sh` | Starts a session-scoped MCC debug run with generated config, log, pid, and tmux state. | | `tools/start-server.sh` | Starts a local Minecraft server in a named `tmux` session with a FIFO for stdin. | | `tools/mc-rcon.sh` | Sends RCON commands to the local server using `python3`. | | `tools/decompile.sh` | Downloads `MinecraftDecompiler.jar` if needed, decompiles the requested Minecraft version, and fetches `server.jar` for server-side work. | @@ -453,7 +506,7 @@ There is one more piece worth calling out: - `MinecraftClient/ChatBots/FileInputBot.cs` is what makes file-driven command injection possible. - It is loaded when `MCC_FILE_INPUT=1` is set. -- `mcc-run` in `tools/mcc-env.sh` already sets that flag for you. +- `mcc-debug --file-input` and `mcc-run` already set that flag for you. ## Skills @@ -485,9 +538,12 @@ Some skills also carry their own bundled resources: This is the core loop you should expect an agent to follow. -### 1. Start the local server +### 1. Start the local server and resolve the MCC identity ```bash +source tools/mcc-env.sh +SESSION="smoke-a" +USERNAME="$(_mcc_resolve_username "$SESSION")" mc-start 1.20.6 ``` @@ -506,13 +562,7 @@ mcc-build ### 3. Run MCC with file input enabled ```bash -mcc-run -``` - -The raw form looks like this: - -```bash -MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release -- CursorBot - localhost:25565 +mcc-debug -v 1.20.6 --file-input --session "$SESSION" --no-build ``` ### 4. Set up server state through RCON @@ -520,20 +570,20 @@ MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release -- CursorBot - Examples: ```bash -mc-rcon "op CursorBot" +mc-rcon "op $USERNAME" mc-rcon "gamerule sendCommandFeedback true" -mc-rcon "give CursorBot diamond_sword 1" +mc-rcon "give $USERNAME diamond_sword 1" mc-rcon "summon minecraft:armor_stand ~ ~ ~" ``` -### 5. Drive MCC through `mcc_input.txt` +### 5. Drive MCC through the session input file Examples: ```bash -mcc-cmd "inventory player list" -mcc-cmd "entity" -mcc-cmd "/gamemode creative" +mcc-cmd --session "$SESSION" "inventory player list" +mcc-cmd --session "$SESSION" "entity" +mcc-cmd --session "$SESSION" "/gamemode creative" ``` Behavior: @@ -638,12 +688,15 @@ Use skills: Typical loop: ```bash +source tools/mcc-env.sh +SESSION="smoke-a" +USERNAME="$(_mcc_resolve_username "$SESSION")" mc-start 1.20.6 mcc-build -mcc-run -mc-rcon "op CursorBot" -mcc-cmd "inventory player list" -mcc-cmd "entity" +mcc-debug -v 1.20.6 --file-input --session "$SESSION" --no-build +mc-rcon "op $USERNAME" +mcc-cmd --session "$SESSION" "inventory player list" +mcc-cmd --session "$SESSION" "entity" ``` Then inspect the MCC output, patch the code, and use: @@ -665,6 +718,7 @@ Typical flow: 1. Decide whether this should be a standalone `/script` bot or a built-in bot. 2. Use the authoring skill's references and templates. 3. Build MCC. + Use `mcc-build` instead of raw `dotnet build` so worktree-local temp build output still applies. 4. Start a local server and join it. 5. Test the bot behavior through live commands, chat, or event-driven actions. 6. Make sure cleanup paths such as `OnUnload()` are correct. diff --git a/docs/guide/chat-bots.md b/docs/guide/chat-bots.md index 8a5a39eb..2fce4418 100644 --- a/docs/guide/chat-bots.md +++ b/docs/guide/chat-bots.md @@ -354,19 +354,19 @@ redirectFrom: - **Description:** - How long to wait between each attack in seconds. + Controls the delay between attacks. By default, MCC calculates this based on server TPS. Set `Custom` to `true` to specify your own values: - To enable it, set `Custom` (boolean) to `true` and change `value` (double) to your preferred value (eg. `1.5`). + - `Min` — minimum cooldown in seconds + - `Max` — maximum cooldown in seconds + - `RandomMode` — if enabled, picks a random cooldown between `Min` and `Max` for each attack - By default, this is disabled and MCC calculates it based on the server TPS. - - - **Format:** `Cooldown_Time = { Custom = , value = }` + - **Format:** `Cooldown_Time = { Custom = , RandomMode = , Min = , Max = }` - **Type:** `inline table` - - **Example:** `Cooldown_Time = { Custom = true, value = 1.5 }` + - **Example:** `Cooldown_Time = { Custom = true, RandomMode = true, Min = 1.0, Max = 2.0 }` - - **Default:** `{ Custom = false, value = 1.0 }` + - **Default:** `{ Custom = false, RandomMode = false, Min = 1.5, Max = 2.5 }` #### `Interaction` @@ -763,6 +763,34 @@ redirectFrom: - **Default:** `false` + #### `Apply_Efficiency_Enchantments` + + - **Description:** + + Include Efficiency enchantments when Auto Dig calculates how long it should wait before finishing a block break. + + Disable this if a server's anti-cheat expects slower mining timing. This only changes MCC's timing calculation; it does not remove the enchantment from your tool. + + - **Available values:** `true` and `false` + + - **Type:** `boolean` + + - **Default:** `true` + + #### `Apply_Haste_Effects` + + - **Description:** + + Include Haste and Conduit Power effects when Auto Dig calculates how long it should wait before finishing a block break. + + Disable this if a server's anti-cheat does not allow the faster timing. This only changes MCC's timing calculation; it does not remove the effect from your player. + + - **Available values:** `true` and `false` + + - **Type:** `boolean` + + - **Default:** `true` + #### `Durability_Limit` - **Description:** @@ -1290,7 +1318,11 @@ redirectFrom: - **Description:** - Make MCC automatically relog when disconnected by the server, for example because the server is restating. + Make MCC reconnect after a network interruption or a matching server kick. + + A lost TCP connection always triggers Auto Relog when the bot is enabled. `Kick_Messages` only filters server kick and login rejection messages. Logging out with an MCC command never triggers Auto Relog. + + One logical disconnect or login rejection consumes one retry. `Ignore_Kick_Message` controls filtering, but it does not create additional restart decisions for the same failure. - **Settings:** @@ -1315,9 +1347,11 @@ redirectFrom: - **Description:** - The delay time before joining the server. + The delay before the next connection attempt. - If the `min` and `max` are the same, the time will be consistent, however, if you want a random time, you can set `min` and `max` to different values to get a random time. The time format is in seconds, and the type is double. (eg. `37.0`) + If `min` and `max` are equal, every attempt uses that delay. Otherwise, MCC picks a random value in the range. Values are seconds and may include a fractional part, such as `0.5` or `37.0`. + + For multi-process deployments, use a nonzero range such as `{ min = 3.0, max = 10.0 }` so clients do not reconnect in lockstep during maintenance. Equal values remain supported when a fixed interval is required. - **Format:** `{ min = , max = }` @@ -1337,9 +1371,9 @@ redirectFrom: - **Description:** - Number of retries. + Number of connection attempts after a disconnect. `0` disables retries, and a positive value is used as an exact limit. - Use `-1` for infinite retries. + Use `-1` for unlimited retries. MCC resets the count after the connection has remained stable for 60 seconds. A restart request that MCC rejects as a duplicate does not consume an attempt. - **Default:** `-1` @@ -1347,7 +1381,7 @@ redirectFrom: - **Description:** - This settings specifies if the `Kick_Messages` setting will be ignored, if set to `true` it will auto relog regardless of the kick messages. + Reconnect after any server kick or login rejection instead of checking `Kick_Messages`. This setting does not affect network interruptions, which always trigger Auto Relog. - **Type:** `boolean` @@ -1357,7 +1391,7 @@ redirectFrom: - **Description:** - A list of words which should trigger the Auto Reconnect Chat Bot. + Text fragments that trigger Auto Relog for server kicks and login rejections. Matching is case-insensitive. - **Format:** `[ "", "", ... ]` @@ -1957,7 +1991,7 @@ redirectFrom:

Warning

-**This a newly added bot, it is not perfect and was only tested in 1.19.2, there are some minor issues with it and you should treat it as an experimental bot.** +**This bot is still experimental, has some known issues, and should be treated with extra caution on legacy versions.**
@@ -1976,6 +2010,8 @@ redirectFrom: - Potato - Wheat + Beetroot farming requires Minecraft `1.9+`. + **Current list of issues:** - Sometimes the bot will not bone meal carrots/potatoes or melon/pumpkin stems (you will see it in a pattern of crops that have not been bonemealed) @@ -3062,11 +3098,13 @@ redirectFrom: - **Description:** - Enable recording of the game (`/replay start`) and replay it later using the Replay Mod (https://www.replaymod.com/). + Enable automatic recording of the game and replay it later using the Replay Mod (https://www.replaymod.com/). + + Use `/replay save` to create a snapshot replay file while recording, and `/replay stop` to finalize the active recording.

Warning

- **This bot does not work for 1.19, we need maintainers for it.** + **Use `/replay stop` or exit MCC gracefully with `/quit` so the replay file can be finalized cleanly.**
@@ -3076,9 +3114,9 @@ redirectFrom: -

Warning

+

Note

- **You SHOULD use `/replay stop` or exit the program gracefully with `/quit` OR THE REPLAY FILE MAY GET CORRUPT!** + **Each MCC instance uses its own temporary replay cache, so multiple MCC clients can record from the same folder without overwriting each other.**
@@ -3428,7 +3466,7 @@ redirectFrom:
- - **Available values:** [Item Type List](https://raw.githubusercontent.com/MCCTeam/Minecraft-Console-Client/master/MinecraftClient/Inventory/ItemType.cs) + - **Available values:** [Item Type List](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs) - **Type:** `array of strings with item names` diff --git a/docs/guide/configuration.md b/docs/guide/configuration.md index 6a9812b5..4c9dc52d 100644 --- a/docs/guide/configuration.md +++ b/docs/guide/configuration.md @@ -138,6 +138,16 @@ Coordinate = { x = 145, y = 64, z = 2045 } AccountType = "microsoft" ``` +#### Interactive login + +If both `Account.Login` and `Account.Password` are empty when MCC starts, it asks which account type to use instead of assuming Microsoft login. + +- Choose Offline to enter an in-game username. MCC saves the account as an offline account. +- Choose Online (Microsoft) to continue with the device-code sign-in. MCC shows the code and link, then opens the sign-in page in your browser. +- Choose Yggdrasil to enter the username, password, and authlib-injector URL for the account server. MCC checks the URL before it continues. If the address is malformed, unreachable, or does not return authlib-injector metadata, MCC explains the problem and asks for another URL. + +After a successful login, MCC saves the account details and selected account type in the configuration file. Later starts use those saved details and do not show this prompt. To choose a different method, edit or clear the account settings in the configuration file. + #### `Method` - **Description:** @@ -154,52 +164,32 @@ Coordinate = { x = 145, y = 64, z = 2045 } Method = "mcc" ``` -#### `AuthServer` +#### `AuthServerUrl` - **Description:** - This subsection is used when `AccountType` is set to `yggdrasil`. It points MCC at the authlib/Yggdrasil server used for login, session checks, and profile key requests. + Use this setting with `AccountType = "yggdrasil"`. It is the complete base URL of the authlib-injector or Yggdrasil service MCC uses for login, session checks, and profile key requests. - MCC now writes this as a dedicated TOML subsection instead of an inline table: + The URL must start with `http://` or `https://` and include any path used by the service. For example, an authlib-injector server may use `/authlib-injector/` as its base path. - ```toml - [Main.General.AuthServer] - ``` + An existing multi-field Yggdrasil configuration is converted to this URL automatically. When MCC writes the configuration after migration, it removes the previous Yggdrasil section. - `Host` accepts either a plain host name or a `host:port` pair. If you include the port there, MCC updates `Port` to match. +- **Type:** `string` - `AuthlibInjectorAPIPath` defaults to `/api/yggdrasil`. Change it if your authlib-injector server uses a different prefix, such as `/authlib-injector`. - - `UseHttps` defaults to `true`. Set it to `false` if your local or development auth server only exposes plain HTTP. - -- **Type:** `section` - -- **Default:** - - ```toml - [Main.General.AuthServer] - Port = 443 - AuthlibInjectorAPIPath = "/api/yggdrasil" - UseHttps = true - Host = "" - ``` +- **Default:** `""` - **Example:** - ``` - [Main.General.AuthServer] - Host = "auth.example.com" - Port = 443 - AuthlibInjectorAPIPath = "/api/yggdrasil" - UseHttps = true + ```toml + Account = { Login = "player@example.com", Password = "password" } + AccountType = "yggdrasil" + AuthServerUrl = "https://auth.example.com/api/yggdrasil/" ``` - ``` - [Main.General.AuthServer] - Host = "127.0.0.1" - Port = 25585 - AuthlibInjectorAPIPath = "/authlib-injector" - UseHttps = false + ```toml + Account = { Login = "player", Password = "password" } + AccountType = "yggdrasil" + AuthServerUrl = "http://127.0.0.1:25585/authlib-injector/" ``` #### `AuthUser` @@ -269,6 +259,48 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `true` +#### `LoadResourcePackTranslations` + +- **Description:** + + Set this to `false` to ignore translations provided by server resource packs. When enabled, MCC caches extracted resource-pack translation data locally so future joins can reuse it without downloading the pack again. + +- **Type:** `boolean` + +- **Default:** `true` + +#### `LoadForgeModTranslations` + +- **Description:** + + Set this to `true` to load translations from local Forge mod jars for the mod IDs announced by the server. MCC first checks the folder from `ForgeModTranslationPath` when it is set. Otherwise it checks the local `mods` folder, and if `AutoDiscoverForgeModTranslationSources` is enabled it also scans standard launcher folders such as `.minecraft/mods`, Prism Launcher instances, and CurseForge instances. MCC falls back to `en_us` when the selected locale is missing, and caches parsed results by jar hash. + +- **Type:** `boolean` + +- **Default:** `false` + +#### `AutoDiscoverForgeModTranslationSources` + +- **Description:** + + Set this to `false` to stop scanning launcher-managed mod folders outside the current working directory. This setting only matters when `LoadForgeModTranslations` is enabled and `ForgeModTranslationPath` is empty. + +- **Type:** `boolean` + +- **Default:** `true` + +#### `ForgeModTranslationPath` + +- **Description:** + + Optional path to a mods folder. When this is set, MCC loads Forge mod translations from that folder instead of using automatic discovery. + + If automatic discovery does not find the mod you need, copy that mod jar into the configured folder, or into the local `mods` folder next to MCC, and MCC will read translations from there without modifying the jar. + +- **Type:** `string` + +- **Default:** `""` + #### `ConsoleTitle` - **Description:** @@ -503,6 +535,18 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `true` +#### `ShowEffectMessages` + +- **Description:** + + This setting controls whether MCC prints messages when one of your active effects is gained or expires. + + Set it to `false` if a beacon or another repeated effect source is spamming the console. + +- **Type:** `boolean` + +- **Default:** `true` + #### `ShowEffectNamesInTUI` - **Description:** @@ -543,7 +587,7 @@ Coordinate = { x = 145, y = 64, z = 2045 }

Warning

- **This feature is currently not supported in `1.4.6 - 1.9`. But we are working on getting it supported in 1.8 and 1.9.** + **This feature is currently supported on `1.8+` and is unavailable on `1.4.6 - 1.7.10`.**
@@ -631,7 +675,7 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Description:** - This setting allows you to define if your want to disable pauses on error, for using MCC in non-interactive scripts + Exit immediately with a nonzero status when a connection or login failure occurs. This bypasses MCC reconnect handling, including AutoRelog, so an external supervisor can restart MCC. - **Type:** `boolean` @@ -1070,7 +1114,7 @@ Coordinate = { x = 145, y = 64, z = 2045 }

Note

- **`%username%`, `%login%`, `%serverip%`, `%serverport%`, `%datetime%`, `%players%` are reserved read-only variables** + **`%username%`, `%login%`, `%serverip%`, `%serverport%`, `%datetime%`, `%date%`, `%players%` are reserved read-only variables**
@@ -1120,6 +1164,18 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `true` +#### `Display_Chat` + +- **Description:** + + Set this to `false` if you want MCC to keep receiving chat without printing it in the console. + + This only affects console output. It does not stop bots from receiving chat, and it does not turn off chat file logging. + +- **Type:** `boolean` + +- **Default:** `true` + #### `History_Input_Records` - **Description:** @@ -1183,6 +1239,40 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `30` +### Console TabList section + +- **Section header:** `Console.TabList` + +- **Description:** + + Settings for the `/tab` command and the live tab overlay in TUI mode. + +
+Tab list settings + +#### `ShowTeams` + +- **Description:** + + Show a separate team column in `/tab` output. + + This is disabled by default so `/tab` stays closer to the in-game player list and keeps the output compact. Team formatting still applies to player names even when the extra column is hidden. + + When enabled, MCC shows the team display name when the server provides one. If the server only sends an internal team identifier, MCC hides that noise instead of printing a raw UUID-like value. + +- **Type:** `boolean` + +- **Default:** `false` + +- **Example:** + + ```toml + [Console.TabList] + ShowTeams = true + ``` + +
+ #### `Max_Displayed_Suggestions` - **Description:** diff --git a/docs/guide/contibuting.md b/docs/guide/contibuting.md index 4aa23c70..8a9460f6 100644 --- a/docs/guide/contibuting.md +++ b/docs/guide/contibuting.md @@ -18,7 +18,7 @@ For now, the project has three main contribution paths: ## Translations -To improve translations for MCC, please visit: [Crowdin - Minecraft Console Client](https://crwd.in/minecraft-console-client). +To improve translations for MCC, please visit: [Crowdin - Minecraft Console Client](https://crowdin.com/project/minecraft-console-client). **It is recommended to translate `MCC in-app text` first.** diff --git a/docs/guide/installation.md b/docs/guide/installation.md index 1ba686ed..53877eb6 100644 --- a/docs/guide/installation.md +++ b/docs/guide/installation.md @@ -131,6 +131,12 @@ If the build succeeds, the published binary `MinecraftClient.exe` will be in `Mi #### Building using .NET manually without Visual Studio +

Tip

+ +If you are following the AI-assisted repo workflow, use WSL or another Unix-style shell and prefer `source tools/mcc-env.sh` followed by `mcc-build`. That path keeps MCC's session and temp-build helpers enabled. The `dotnet` commands below are the low-level manual fallback. + +
+ 1. Open the `Minecraft-Console-Client` folder you've cloned or downloaded 2. Open the PowerShell (`Right-Click` on the whitespace and click `Open PowerShell`, or in Windows Explorer: `File -> Open PowerShell`) 3. Install the .NET 10 SDK if you do not already have it. The easiest current option on Windows is: @@ -148,7 +154,8 @@ dotnet build MinecraftClient.sln -c Release 5. If you want a release-like published binary that matches the repo's CI workflow, run: ```bash -dotnet publish MinecraftClient.sln -f net10.0 -r win-x64 --self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true -p:DebugType=Embedded +source tools/mcc-env.sh +mcc-publish --rid win-x64 ``` 6. Verify the SDK installation if needed: @@ -210,18 +217,26 @@ git clone https://github.com/MCCTeam/Minecraft-Console-Client.git --recursive 5. If you want to download translation resources, please check out [Download translation resources](#download-translation-resources-optional) -6. Run the following command for a normal local build: +6. For the repo's normal local development workflow, source the helper environment and build through `mcc-build`: + + ```bash + source tools/mcc-env.sh + mcc-build + ``` + +7. If you specifically want the low-level manual .NET command instead of the MCC wrapper, run: ```bash dotnet build MinecraftClient.sln -c Release ``` -7. Run the following command if you want a release-like published binary that matches the repo's CI workflow: +8. Run the following command if you want a release-like published binary that matches the repo's CI workflow: - On Linux: ```bash - dotnet publish MinecraftClient.sln -f net10.0 -r linux-x64 --self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true -p:DebugType=Embedded + source tools/mcc-env.sh + mcc-publish --rid linux-x64 ```

Note

@@ -233,7 +248,8 @@ git clone https://github.com/MCCTeam/Minecraft-Console-Client.git --recursive - On macOS: ```bash - dotnet publish MinecraftClient.sln -f net10.0 -r osx-x64 --self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true -p:DebugType=Embedded + source tools/mcc-env.sh + mcc-publish --rid osx-x64 ```

Note

@@ -351,11 +367,11 @@ docker-compose down ## Run on Android -It is possible to run Minecraft Console Client on Android through Termux and Ubuntu, but it requires a manual setup with a lot of commands, so be careful not to skip any steps. Depending on your technical background, internet speed, and device speed, this can take anywhere from 10 to 20 minutes or more. +It is possible to run Minecraft Console Client on Android through Termux and Ubuntu, but it requires a manual setup, so be careful not to skip any steps. Depending on your technical background, internet speed, and device speed, this can take anywhere from 10 to 20 minutes or more.

Note

-**This section gets a bit technical. If you run into issues, open a discussion on our GitHub repository page.** +**This section gets a bit technical. If you run into issues, open a discussion on our GitHub repository page, or ask us on our Discord server.**
@@ -394,7 +410,7 @@ It is possible to run Minecraft Console Client on Android through Termux and Ubu
-

Danger

+

Warning

**Once you have installed Termux, open it, pull down the Android notification drawer, find the Termux notification, and expand it (swipe down on the notification) until you see `Exit | Acquire wakelock`. Tap `Acquire wakelock` and allow Termux to bypass battery optimization when prompted. Skipping this step may cause Termux to be killed by Android when running in the background.** @@ -406,9 +422,9 @@ We use `proot-distro`, an official Termux utility, to install Ubuntu. It will in Open Termux and run the following commands one at a time, in order: -1. `pkg update` -2. `pkg upgrade` -3. `pkg install proot-distro` +1. `pkg update -y` +2. `pkg upgrade -y` +3. `pkg install proot-distro -y`

Note

@@ -419,13 +435,13 @@ Open Termux and run the following commands one at a time, in order: Now install Ubuntu: ```bash -proot-distro install ubuntu +pd install ubuntu:26.04 ``` Once the installation finishes, start Ubuntu with: ```bash -proot-distro login ubuntu +pd login ubuntu ```

Note

@@ -436,60 +452,15 @@ proot-distro login ubuntu #### Installing .NET -First, update the Ubuntu package lists and install a few tools: +First, update the Ubuntu package lists and install a few dependencies and tools: ```bash -apt update -y && apt upgrade -y +apt update && apt upgrade -y && apt install -y dotnet-sdk-10.0 wget curl nano ``` -```bash -apt install wget curl nano -y -``` - -Then install .NET 10.0 using Microsoft's official install script: - -```bash -wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh -chmod +x dotnet-install.sh -./dotnet-install.sh --channel 10.0 -``` - -Now add .NET to your PATH so it works in future sessions. Open `.bashrc`: - -```bash -nano ~/.bashrc -``` - -Scroll to the bottom of the file using the `Page Down` key, add a blank line, and paste the following: - -```bash -export DOTNET_ROOT=$HOME/.dotnet -export PATH=$PATH:$HOME/.dotnet:$HOME/.dotnet/tools -``` - -

Warning

- -**If you do not know how to use Nano, watch this [YouTube tutorial](https://www.youtube.com/watch?v=DLeATFgGM-A).** - -
- -Save the file with `CTRL + X`, type `Y`, and press Enter. Then apply the changes: - -```bash -source ~/.bashrc -``` - -Verify the installation by running: - -```bash -dotnet --version -``` - -You should see a version number like `10.0.xxx`. - #### Installing MCC -Finally, we can install MCC. +Now we can install MCC. Let's make a folder where MCC will be stored: @@ -498,46 +469,39 @@ mkdir MinecraftConsoleClient cd MinecraftConsoleClient ``` -Download the latest MCC binary for ARM64: +Download the latest MCC binary for ARM (the script auto detects the platform): ```bash -wget -O MinecraftClient \ - "$(curl -s https://api.github.com/repos/MCCTeam/Minecraft-Console-Client/releases/latest \ - | grep 'browser_download_url.*linux-arm64"' \ - | cut -d '"' -f 4)" +wget -qO- https://mccteam.github.io/install.sh | sh ``` -

Note

- -**If you have a 32-bit ARM device, replace `linux-arm64` with `linux-arm` in the command above.** - -
- -Make it executable: - -```bash -chmod +x MinecraftClient -``` - -And run it with: +Now you can run the MCC with this command: ```bash ./MinecraftClient ``` -#### After installation +#### Running MCC When you open Termux next time, start Ubuntu with: ```bash -proot-distro login ubuntu +pd login ubuntu ``` -Then run MCC with `./MinecraftClient` +Then enter the folder you made `cd MinecraftConsoleClient` (If you named it different, use that name). -To stop MCC from running you can press `CTRL + C` +Then run MCC with: `./MinecraftClient` -To edit the configuration/settings, you need a text editor, we recommend Nano, as it's very simple to use, if you have followed the installation steps above, you should be familiar with it, if not, check out [this tutorial](https://www.youtube.com/watch?v=DLeATFgGM-A). +To stop MCC from running you can press: `CTRL + C` + +To edit the configuration/settings, you need a text editor, we recommend Nano, as it's very simple to use. + +

Note

+ +**If you do not know how to use Nano, watch this [YouTube tutorial](https://www.youtube.com/watch?v=DLeATFgGM-A).** + +
For downloading files, you can use the `wget` file we have installed, simply run: diff --git a/docs/guide/usage.md b/docs/guide/usage.md index 24478acb..8b84e9bb 100644 --- a/docs/guide/usage.md +++ b/docs/guide/usage.md @@ -267,6 +267,119 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q +
+book + +

Note

+ +**You need to have [Inventory Handling](configuration.md#inventoryhandling) enabled in order for this to work.** + +
+ +- **Description:** + + Read the book in your main hand, or edit it if it is a writable book. + + In TUI mode, `/book read` opens a page viewer instead of printing the whole book to chat. The same viewer also opens automatically when the server tells the client to open a book. + + If you are holding a writable book, you can replace all pages, update one page, insert a page, delete a page, and sign the finished book. + +- **Usage:** + + Read the current book or a single page: + + ``` + /book read [page] + ``` + + Replace the whole writable book from inline text or a file: + + ``` + /book write text + /book write file + ``` + + Open the TUI editor or edit specific pages from the command line: + + ``` + /book edit + /book edit page + /book edit insert + /book edit delete + ``` + + Sign the writable book in your main hand: + + ``` + /book sign + ``` + +- **Notes:** + + `read` works with a writable book or a written book in your main hand. + + `write`, `edit`, and `sign` require a writable book in your main hand. + + Use `\n` for line breaks and `\f` for page breaks when passing inline text. + + MCC checks page count, page length, and title length against the current protocol before sending the packet. + + The interactive editor is only available in TUI mode. + + In the TUI book view, `PageUp`/`PageDown` switches pages. + +- **Examples:** + + Read the held book: + + ``` + /book read + ``` + + Show only page 2: + + ``` + /book read 2 + ``` + + Write two pages from the command line: + + ``` + /book write text First page\nSecond line\fSecond page + ``` + + Load the book text from a file: + + ``` + /book write file ./letter.txt + ``` + + Replace page 3: + + ``` + /book edit page 3 Updated text for page three + ``` + + Insert a new page before page 2: + + ``` + /book edit insert 2 This page goes before the old page 2 + ``` + + Delete page 4: + + ``` + /book edit delete 4 + ``` + + Sign the current writable book: + + ``` + /book sign Meeting Notes + ``` + +</details> + <details> <summary><code>bed</code></summary> @@ -570,7 +683,7 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q The condition is always returned as a boolean, so only comparison can be done, if needed cast the expression result to bool. - Also the instance of MCC is available with `MCC.`. + Also the instance of MCC is available with `MCC`. <div class="custom-container note"><p class="custom-container-title">Note</p> @@ -591,14 +704,6 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /execif 'test == "Something"' "send Success!" ``` - <div class="custom-container note"><p class="custom-container-title">Note</p> - - **You can use single quote (`'`) to wrap your expression if the expression contains double quote (`"`)** - - **Adding back-slash (`\`) before the double quote will also work (`/execif "test == \"Something\"" "send Success!"`)** - - </div> - ``` /set test2=1 /execif 'test2 == "1"' "send Success 2!" @@ -622,6 +727,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /execif "1 == 1" "execmulti send 1 -> send 2 -> send 3" ``` +- **Note** + + **You can use single quote (`'`) to wrap your expression if the expression contains double quote (`"`)** + + **Adding back-slash (`\`) before the double quote will also work (`/execif "test == \"Something\"" "send Success!"`)** + </details> <details> @@ -771,6 +882,24 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q </details> +<details> +<summary><code>clear-console</code></summary> + +- **Description:** + + Clear the visible console output. + + In TUI mode this clears the log panel. In the classic console it clears the terminal screen. + +- **Usage:** + + ``` + /clear-console + /cc + ``` + +</details> + <details> <summary><code>connect</code></summary> @@ -879,6 +1008,32 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q </details> +<details> +<summary><code>tab</code></summary> + +- **Description:** + + Show the current player tab list in a more detailed format than `/list`. + + In the classic console, `/tab` prints a colored table with ping and player names. Team prefixes, suffixes, and display names are applied when the server sends them. + + In TUI mode, `/tab` opens a live overlay that refreshes automatically while it is visible. Press `Esc` to close it. + + If you want a separate team column, enable [Console.TabList.ShowTeams](configuration.md#showteams). + +- **Usage:** + + ``` + /tab + ``` + +- **Notes:** + + - `/tab` uses the tab list information sent by the server, so players hidden from the server tab list will not appear here. + - The TUI overlay follows the live player list, so joins, leaves, ping updates, and scoreboard team updates show up without reopening it. + +</details> + <details> <summary><code>set</code></summary> @@ -992,7 +1147,7 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q <div class="custom-container warning"><p class="custom-container-title">Warning</p> - **The [Inventory Handling](configuration.md#inventoryhandling) is currently not supported in `1.4.6 - 1.9`** + **The [Inventory Handling](configuration.md#inventoryhandling) is currently supported on `1.8+` and is unavailable on `1.4.6 - 1.7.10`.** </div> @@ -1002,12 +1157,24 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /useitem ``` + Use the item from a specific hand: + + ``` + /useitem <mainhand|offhand> + ``` + Use the item on a specific block: ``` /useitem <x> <y> <z> ``` + Use the item from a specific hand on a specific block: + + ``` + /useitem <x> <y> <z> <mainhand|offhand> + ``` + </details> <details> @@ -1039,7 +1206,7 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q <div class="custom-container warning"><p class="custom-container-title">Warning</p> - **The [Inventory Handling](configuration.md#inventoryhandling) is currently not supported in `1.4.6 - 1.9`.** + **The [Inventory Handling](configuration.md#inventoryhandling) is currently supported on `1.8+` and is unavailable on `1.4.6 - 1.7.10`.** </div> @@ -1274,7 +1441,7 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q <div class="custom-container warning"><p class="custom-container-title">Warning</p> - **The [Inventory Handling](configuration.md#inventoryhandling) is currently not supported in `1.4.6 - 1.9`.** + **The [Inventory Handling](configuration.md#inventoryhandling) is currently supported on `1.8+` and is unavailable on `1.4.6 - 1.7.10`.** </div> @@ -1447,6 +1614,153 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q </details> +<details> +<summary><code>console-chat</code></summary> + +- **Description:** + + Temporarily show or hide chat in the console. + + This changes the current session only. If you want the same behavior every time MCC starts, use [`Console.General.Display_Chat`](configuration.md#display_chat). + +- **Usage:** + + ``` + /console-chat + /console-chat on + /console-chat off + ``` + +- **Examples:** + + Hide chat until you turn it back on: + + ``` + /console-chat off + ``` + + Show chat again: + + ``` + /console-chat on + ``` + +</details> + +<details> +<summary><code>dialog</code></summary> + +- **Description:** + + Browse and interact with dialogs sent by the server. Dialogs are popups with a title, body text, and buttons. TUI mode gives the best experience -- use `/dialog open` to view the dialog in a full-screen overlay. + + When a server shows a dialog, MCC prints: + + ``` + [MCC] Server showed custom dialog: Server Notice. Use dialog show. + ``` + + Run `/dialog show` to see the full dialog. Buttons show up like this: + + ``` + Actions: + [1] OK (close) + [2] Visit (command) + [3] Rules (show dialog) + ``` + + The text in parentheses tells you what the button does: `(close)` closes the dialog, `(command)` sends a chat command, `(show dialog)` opens another dialog. + +- **Dialog types:** + + Dialogs come in a few shapes. You might see these in the output of `/dialog show`: + + **Notice** -- A popup with a title, optional body, and one button. + + ``` + Type: Notice + + Welcome to the server! + + Body: Read the rules before playing. + + Actions: + [1] OK (close) + ``` + + **Confirmation** -- A choice between two buttons. + + ``` + Type: Confirmation + + Reset your progress? + + Actions: + [1] Yes (close) + [2] No (close) + ``` + + **Multi-action** -- A grid of buttons. + + ``` + Type: Multi-action + + Choose a destination + + Actions: + [1] Spawn (close) + [2] Shop (close) + [3] Arena (close) + ``` + + **Dialog list** -- A list of sub-dialogs. Clicking one opens another dialog. + + ``` + Type: Dialog list + + Help Topics + + Actions: + [1] Rules (show dialog) + [2] Commands (show dialog) + ``` + + **Server links** -- Shows the server's configured links as buttons. May be empty. + + ``` + Type: Server links + + Server Links + ``` + +- **Usage:** + + ``` + /dialog + /dialog show + /dialog open + /dialog click <index> + /dialog click-label <label> + /dialog set <input> <value> + /dialog input <input> <value> + /dialog cancel + /dialog dismiss + ``` + +- **Examples:** + + ``` + /dialog show + /dialog click 1 + /dialog click-label Teleport + /dialog set name MyPlayer + /dialog dismiss + ``` + + See what dialog is currently shown, click the first button, click a button by its text, fill in an input, or close the dialog. + +</details> + <details> <summary><code>debug</code></summary> diff --git a/docs/package.json b/docs/package.json index f80de657..6d4a7d94 100644 --- a/docs/package.json +++ b/docs/package.json @@ -20,7 +20,7 @@ "@vuepress/plugin-search": "2.0.0-rc.125", "@vuepress/plugin-shiki": "2.0.0-rc.125", "@vuepress/theme-default": "2.0.0-rc.125", - "mermaid": "11.13.0", + "mermaid": "11.16.1", "sass-embedded": "1.98.0", "sass-loader": "16.0.7", "vuepress": "2.0.0-rc.26" diff --git a/docs/yarn.lock b/docs/yarn.lock index 5c93b759..18dbcafe 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -56,7 +56,7 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" -"@braintree/sanitize-url@^7.1.1": +"@braintree/sanitize-url@^7.1.2": version "7.1.2" resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz#ca2035b0fefe956a8676ff0c69af73e605fcd81f" integrity sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA== @@ -66,38 +66,11 @@ resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.11.0.tgz#3ec3985c9074b23aea337957225fe15a0e845f8e" integrity sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ== -"@chevrotain/cst-dts-gen@11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz#501ea6177fa21cc57264c792ef5cc3d0bb9410fd" - integrity sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q== - dependencies: - "@chevrotain/gast" "11.1.2" - "@chevrotain/types" "11.1.2" - lodash-es "4.17.23" - -"@chevrotain/gast@11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@chevrotain/gast/-/gast-11.1.2.tgz#213393f2b5842e8bf13369bdc042c7fd18201af2" - integrity sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g== - dependencies: - "@chevrotain/types" "11.1.2" - lodash-es "4.17.23" - -"@chevrotain/regexp-to-ast@11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz#6aeb0b3fd5e3f220b063b3d856fbbaed582e4cfa" - integrity sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw== - -"@chevrotain/types@11.1.2": +"@chevrotain/types@~11.1.2": version "11.1.2" resolved "https://registry.yarnpkg.com/@chevrotain/types/-/types-11.1.2.tgz#e83a1a2704f0c5e49e7592b214031a0f4a34d7e5" integrity sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw== -"@chevrotain/utils@11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@chevrotain/utils/-/utils-11.1.2.tgz#a0b13637acc0a2933d8a2edeba4bf1da789c565d" - integrity sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA== - "@esbuild/aix-ppc64@0.25.12": version "0.25.12" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c" @@ -766,12 +739,12 @@ "@mdit/helper" "0.23.1" "@types/markdown-it" "^14.1.2" -"@mermaid-js/parser@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@mermaid-js/parser/-/parser-1.0.1.tgz#51c5f43c918a37c35904adef40c98e5862effbdf" - integrity sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ== +"@mermaid-js/parser@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@mermaid-js/parser/-/parser-1.2.0.tgz#266d728c54d2d4034d270f8b31d790e26296a5fa" + integrity sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA== dependencies: - langium "^4.0.0" + "@chevrotain/types" "~11.1.2" "@noble/hashes@1.4.0": version "1.4.0" @@ -2838,25 +2811,6 @@ cheerio@^1.2.0: undici "^7.19.0" whatwg-mimetype "^4.0.0" -chevrotain-allstar@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz#b7412755f5d83cc139ab65810cdb00d8db40e6ca" - integrity sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw== - dependencies: - lodash-es "^4.17.21" - -chevrotain@~11.1.1: - version "11.1.2" - resolved "https://registry.yarnpkg.com/chevrotain/-/chevrotain-11.1.2.tgz#1db446bdeb63fe42d366508a34280c2e3c0c4f62" - integrity sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg== - dependencies: - "@chevrotain/cst-dts-gen" "11.1.2" - "@chevrotain/gast" "11.1.2" - "@chevrotain/regexp-to-ast" "11.1.2" - "@chevrotain/types" "11.1.2" - "@chevrotain/utils" "11.1.2" - lodash-es "4.17.23" - chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" @@ -3292,10 +3246,10 @@ cytoscape-fcose@^2.2.0: dependencies: cose-base "^2.2.0" -cytoscape@^3.33.1: - version "3.33.1" - resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.33.1.tgz#449e05d104b760af2912ab76482d24c01cdd4c97" - integrity sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ== +cytoscape@^3.33.3: + version "3.34.0" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.34.0.tgz#5fbe2eb1cf76b070a8ecd5647c35f65aa097c9c6" + integrity sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg== "d3-array@1 - 2": version "2.12.1" @@ -3576,10 +3530,10 @@ dagre-d3-es@7.0.14: d3 "^7.9.0" lodash-es "^4.17.21" -dayjs@^1.11.19: - version "1.11.20" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.20.tgz#88d919fd639dc991415da5f4cb6f1b6650811938" - integrity sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ== +dayjs@^1.11.20: + version "1.11.21" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.21.tgz#57f87562e62de76f3c704bd2b8d522fc33068eb2" + integrity sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA== debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" @@ -3747,10 +3701,10 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.3.tgz#680cae8af3e61320ddf3666a3bc843f7b291b2b6" - integrity sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA== +dompurify@^3.3.3: + version "3.4.13" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.13.tgz#fc28949d59f92d62e28a3a764bcbeee35897a1be" + integrity sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ== optionalDependencies: "@types/trusted-types" "^2.0.7" @@ -3889,6 +3843,11 @@ es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: dependencies: es-errors "^1.3.0" +es-toolkit@^1.45.1: + version "1.46.1" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.46.1.tgz#38ca27191a98a867fc544b81cf1477a68947fb06" + integrity sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ== + esbuild-loader@~4.4.0: version "4.4.2" resolved "https://registry.yarnpkg.com/esbuild-loader/-/esbuild-loader-4.4.2.tgz#9a799c590840d3eafd66dbf86f4f7bfa45dd2495" @@ -4118,9 +4077,9 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-uri@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" - integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + version "3.1.5" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.5.tgz#610f37419a030270430cecd68d74e3d4d96725d0" + integrity sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw== faye-websocket@^0.11.3: version "0.11.4" @@ -4188,9 +4147,9 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== follow-redirects@^1.0.0: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + version "1.16.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc" + integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== for-in@^1.0.2: version "1.0.2" @@ -4644,9 +4603,9 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== immutable@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.5.tgz#93ee4db5c2a9ab42a4a783069f3c5d8847d40165" - integrity sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A== + version "5.1.9" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.9.tgz#ac23c3a01992ab665e14ac9ffff298f28cd74a0c" + integrity sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg== import-fresh@^3.3.0: version "3.3.1" @@ -4949,10 +4908,10 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -katex@^0.16.25: - version "0.16.40" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.40.tgz#87c94e4149f8fa7c22ff95bae1dc687355a38d63" - integrity sha512-1DJcK/L05k1Y9Gf7wMcyuqFOL6BiY3vY0CFcAM/LPRN04NALxcl6u7lOWNsp3f/bCHWxigzQl6FbR95XJ4R84Q== +katex@^0.16.45: + version "0.16.47" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.47.tgz#0a13a42c2deb4f74e61f162d440b9165a548030f" + integrity sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg== dependencies: commander "^8.3.0" @@ -4985,24 +4944,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -langium@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/langium/-/langium-4.2.1.tgz#23e9e12d79778578efa912e3ca8fe313aa61ac17" - integrity sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ== - dependencies: - chevrotain "~11.1.1" - chevrotain-allstar "~0.3.1" - vscode-languageserver "~9.0.1" - vscode-languageserver-textdocument "~1.0.11" - vscode-uri "~3.1.0" - -launch-editor@^2.6.1: - version "2.13.2" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.13.2.tgz#41d51baaf8afb393224b89bd2bcb4e02f2306405" - integrity sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg== +launch-editor@^2.14.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.14.1.tgz#f7e0da3f58aaea03fea01074d840b5f739ed7ddc" + integrity sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA== dependencies: picocolors "^1.1.1" - shell-quote "^1.8.3" + shell-quote "^1.8.4" layout-base@^1.0.0: version "1.0.2" @@ -5098,10 +5046,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -linkify-it@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" - integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== +linkify-it@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.2.tgz#d3be0a693af3da9df3883f1e346a0e97461a8c19" + integrity sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q== dependencies: uc.micro "^2.0.0" @@ -5119,10 +5067,10 @@ loader-utils@^2.0.4: emojis-list "^3.0.0" json5 "^2.1.2" -lodash-es@4.17.23, lodash-es@^4.17.21, lodash-es@^4.17.23: - version "4.17.23" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.23.tgz#58c4360fd1b5d33afc6c0bbd3d1149349b1138e0" - integrity sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg== +lodash-es@^4.17.21: + version "4.18.1" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.18.1.tgz#b962eeb80d9d983a900bf342961fb7418ca10b1d" + integrity sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A== lodash.memoize@^4.1.2: version "4.1.2" @@ -5184,13 +5132,13 @@ markdown-it-emoji@^3.0.0: integrity sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg== markdown-it@^14.1.0: - version "14.1.1" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.1.tgz#856f90b66fc39ae70affd25c1b18b581d7deee1f" - integrity sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA== + version "14.2.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.2.0.tgz#06d48d9035e77d5b1c85adb315482fc8240289ef" + integrity sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ== dependencies: argparse "^2.0.1" entities "^4.4.0" - linkify-it "^5.0.0" + linkify-it "^5.0.1" mdurl "^2.0.0" punycode.js "^2.3.1" uc.micro "^2.1.0" @@ -5275,32 +5223,32 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -mermaid@11.13.0: - version "11.13.0" - resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.13.0.tgz#da1a05337073a3141aa8c7d2608048f5db9ed587" - integrity sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw== +mermaid@11.16.1: + version "11.16.1" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.16.1.tgz#57ae2342f6c45b967113b04c9258430bdd057ee8" + integrity sha512-TQsq6u22fAn3rek5VOubrhKPo1g5hwC3FXUN9hiyupTckcYiGuuKGkNQrKYwGJkXUxZdojwRG46gsSCFZMDp4g== dependencies: - "@braintree/sanitize-url" "^7.1.1" + "@braintree/sanitize-url" "^7.1.2" "@iconify/utils" "^3.0.2" - "@mermaid-js/parser" "^1.0.1" + "@mermaid-js/parser" "^1.2.0" "@types/d3" "^7.4.3" "@upsetjs/venn.js" "^2.0.0" - cytoscape "^3.33.1" + cytoscape "^3.33.3" cytoscape-cose-bilkent "^4.1.0" cytoscape-fcose "^2.2.0" d3 "^7.9.0" d3-sankey "^0.12.3" dagre-d3-es "7.0.14" - dayjs "^1.11.19" - dompurify "^3.3.1" - katex "^0.16.25" + dayjs "^1.11.20" + dompurify "^3.3.3" + es-toolkit "^1.45.1" + katex "^0.16.45" khroma "^2.1.0" - lodash-es "^4.17.23" marked "^16.3.0" roughjs "^4.6.6" stylis "^4.3.6" ts-dedent "^2.2.0" - uuid "^11.1.0" + uuid "^11.1.0 || ^12 || ^13 || ^14.0.0" methods@~1.1.2: version "1.1.2" @@ -5459,10 +5407,10 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== +nanoid@^3.3.16: + version "3.3.16" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.16.tgz#a04d8ec4b1f10009d2d533947aefe4293737816c" + integrity sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q== nanoid@^5.1.6: version "5.1.7" @@ -6038,11 +5986,11 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.4.40, postcss@^8.5.6, postcss@^8.5.8: - version "8.5.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.8.tgz#6230ecc8fb02e7a0f6982e53990937857e13f399" - integrity sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg== + version "8.5.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.23.tgz#3493550116f478487298301d2c2e8dc5a56e6594" + integrity sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg== dependencies: - nanoid "^3.3.11" + nanoid "^3.3.16" picocolors "^1.1.1" source-map-js "^1.2.1" @@ -6682,10 +6630,10 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -shell-quote@^1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" - integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== +shell-quote@^1.8.4: + version "1.10.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.10.0.tgz#482033e192e4f5c07151521ffa03400ec71b1b0f" + integrity sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA== shiki@^4.0.1: version "4.0.2" @@ -7001,9 +6949,9 @@ supports-color@^8.0.0, supports-color@^8.1.1: has-flag "^4.0.0" svgo@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-4.0.1.tgz#c82dacd04ee9f1d55cd4e0b7f9a214c86670e3ee" - integrity sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w== + version "4.0.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-4.0.2.tgz#a62246f0a9d671c0314d04f3cc15f78b1bd0667f" + integrity sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng== dependencies: commander "^11.1.0" css-select "^5.1.0" @@ -7198,9 +7146,9 @@ undici-types@~7.16.0: integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== undici@^7.19.0: - version "7.24.5" - resolved "https://registry.yarnpkg.com/undici/-/undici-7.24.5.tgz#7debcf5623df2d1cb469b6face01645d9c852ae2" - integrity sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q== + version "7.29.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-7.29.0.tgz#ae0f6f62e06e057a9cbb7b2b5fde2bb74f791b8f" + integrity sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw== unified@^11.0.0, unified@^11.0.5: version "11.0.5" @@ -7326,10 +7274,10 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" - integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== +"uuid@^11.1.0 || ^12 || ^13 || ^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-14.0.0.tgz#0af883220163d264ffe0c084f6b8a89b9666966d" + integrity sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg== uuid@^8.3.2: version "8.3.2" @@ -7384,41 +7332,6 @@ vite@~7.1.9: optionalDependencies: fsevents "~2.3.3" -vscode-jsonrpc@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz#f43dfa35fb51e763d17cd94dcca0c9458f35abf9" - integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA== - -vscode-languageserver-protocol@3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz#864a8b8f390835572f4e13bd9f8313d0e3ac4bea" - integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg== - dependencies: - vscode-jsonrpc "8.2.0" - vscode-languageserver-types "3.17.5" - -vscode-languageserver-textdocument@~1.0.11: - version "1.0.12" - resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz#457ee04271ab38998a093c68c2342f53f6e4a631" - integrity sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA== - -vscode-languageserver-types@3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a" - integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== - -vscode-languageserver@~9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz#500aef82097eb94df90d008678b0b6b5f474015b" - integrity sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g== - dependencies: - vscode-languageserver-protocol "3.17.5" - -vscode-uri@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.1.0.tgz#dd09ec5a66a38b5c3fffc774015713496d14e09c" - integrity sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ== - vue-loader@^17.4.2: version "17.4.2" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-17.4.2.tgz#f87f0d8adfcbbe8623de9eba1979d41ba223c6da" @@ -7492,9 +7405,9 @@ webpack-dev-middleware@^7.4.2: schema-utils "^4.0.0" webpack-dev-server@^5.2.2: - version "5.2.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz#7f36a78be7ac88833fd87757edee31469a9e47d3" - integrity sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ== + version "5.2.6" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.6.tgz#3a5d41233cbb7504f814d19e59a59173fb8ae23d" + integrity sha512-HNLRmamRvVavZQ+avceZifmv8hmdUjg43t6MI4SqJDwFdW7RPQwH5vzGhDRZSX59SgfbeHhLnq3g+uooWo7pVw== dependencies: "@types/bonjour" "^3.5.13" "@types/connect-history-api-fallback" "^1.5.4" @@ -7514,7 +7427,7 @@ webpack-dev-server@^5.2.2: graceful-fs "^4.2.6" http-proxy-middleware "^2.0.9" ipaddr.js "^2.1.0" - launch-editor "^2.6.1" + launch-editor "^2.14.1" open "^10.0.3" p-retry "^6.2.0" schema-utils "^4.2.0" @@ -7587,9 +7500,9 @@ webpack@^5.102.1: webpack-sources "^3.3.4" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + version "0.7.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.5.tgz#569d22764ab21f2de20af0e74b411e8ae5a0fa46" + integrity sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA== dependencies: http-parser-js ">=0.5.1" safe-buffer ">=5.1.0" @@ -7618,9 +7531,9 @@ wildcard@^2.0.1: integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== ws@^8.18.0: - version "8.20.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.0.tgz#4cd9532358eba60bc863aad1623dfb045a4d4af8" - integrity sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA== + version "8.21.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.1.tgz#045650cd4b1207809e7547146223c3814a9af586" + integrity sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw== wsl-utils@^0.1.0: version "0.1.0" diff --git a/tools/README.md b/tools/README.md index 7d33d2cf..c69d3dd3 100644 --- a/tools/README.md +++ b/tools/README.md @@ -4,6 +4,62 @@ Scripts for analyzing Minecraft version differences and generating MCC palette f Requires: Python 3.10+ +## Local debug helpers + +The `tools/` directory also contains the shell helpers used for day-to-day MCC debugging: + +```bash +source tools/mcc-env.sh +mc-start 1.21.11 +mcc-debug -v 1.21.11 --file-input +mcc-cmd "debug state" +mcc-publish --rid linux-x64 +``` + +### Shared server, isolated MCC sessions + +- `mc-*` commands operate on the shared local Minecraft server. +- `mcc-*` commands operate on one MCC client session. +- The default `session` is the current worktree name. +- The default username is derived from `session`, so two worktrees can join the same shared server without kicking each other. +- `MCC_SERVERS` remains the shared server-root override. + +Keep shared servers running by default. Do not stop or reset them unless the user explicitly asks for that, or you need to switch server versions. + +### Full inventory regression sweep + +Use `tools/run-inventory-full-sweep.sh` when changing inventory, container, item-slot serialization, packet palettes, game-mode handling, or block-use behavior. It runs MCC against real local servers with temporary configs and checks player inventory, creative give/delete, search, click, drop, chest container, mirrored player slots, and crash markers. + +```bash +# Focused retest +tools/run-inventory-full-sweep.sh --versions "1.21.10 1.21.11" + +# Full default major-version sweep +tools/run-inventory-full-sweep.sh +``` + +Useful environment overrides: + +```bash +RUN_ROOT=/tmp/my-inventory-run \ +MCC_SERVERS=/path/to/servers \ +STOP_ON_FAIL=1 \ +tools/run-inventory-full-sweep.sh --versions "1.19 1.20.4" +``` + +The script writes `summary.tsv` under `RUN_ROOT`. Per-version MCC logs are under `/tmp/mcc-debug/inventory-full-<version>/mcc-debug.log`, and command output blocks are saved next to the summary. + +### tmpfs build mode + +```bash +source tools/mcc-env.sh +export MCC_BUILD_MODE=tmpfs +mcc-build +mcc-build-clean +``` + +When `MCC_BUILD_MODE=tmpfs`, build output goes to `/dev/shm/mcc-build/<worktree>/` on Linux, or `${TMPDIR:-/tmp}/mcc-build/<worktree>/` when `/dev/shm` is unavailable. + ## Data Sources Two types of data can be used as input: diff --git a/tools/gen_block_color_map.py b/tools/gen_block_color_map.py index 69cbb502..8bea845f 100644 --- a/tools/gen_block_color_map.py +++ b/tools/gen_block_color_map.py @@ -205,6 +205,28 @@ WATER_BLOCKS = ["Water"] ICE_BLOCKS = ["Ice", "PackedIce", "BlueIce", "FrostedIce"] +def build_map_palette(map_color_java: Path) -> dict[str, list[int]]: + """Build MapColor ID -> [R, G, B] palette for the Map bot (map packet rendering). + + Returns a dict keyed by string IDs ("0", "1", ...) to keep JSON simple. + """ + text = map_color_java.read_text() + palette: dict[str, list[int]] = {} + + pattern = re.compile( + r'new\s+MapColor\(\s*(\d+)\s*,\s*(\d+)\s*\)') + for m in pattern.finditer(text): + cid = int(m.group(1)) + raw = int(m.group(2)) + r = (raw >> 16) & 0xFF + g = (raw >> 8) & 0xFF + b = raw & 0xFF + palette[str(cid)] = [r, g, b] + + print(f" Built map_palette with {len(palette)} base color entries") + return dict(sorted(palette.items(), key=lambda x: int(x[0]))) + + def main(): if len(sys.argv) != 2: print(__doc__) @@ -249,12 +271,15 @@ def main(): block_colors = matched print(f" {len(block_colors)} blocks matched to Material.cs entries") + map_palette = build_map_palette(map_color_java) + output = { "version": root.name.replace("-decompiled", "").replace("-client", ""), "colors": {k: list(v) for k, v in sorted(block_colors.items())}, "transparent": sorted(TRANSPARENT_BLOCKS), "water": WATER_BLOCKS, "ice": ICE_BLOCKS, + "map_palette": map_palette, } OUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True) diff --git a/tools/gen_block_palette.py b/tools/gen_block_palette.py index 03c48eca..dcdcfe24 100644 --- a/tools/gen_block_palette.py +++ b/tools/gen_block_palette.py @@ -14,25 +14,42 @@ Example: """ import json +import math import re import sys +from collections.abc import Sequence from pathlib import Path OUTPUT_DIR = (Path(__file__).resolve().parent.parent / "MinecraftClient" / "Mapping" / "BlockPalettes") MATERIAL_CS = OUTPUT_DIR.parent / "Material.cs" +# Minecraft renamed these registry keys after the corresponding MCC Material +# names had already stabilized. Keep historical reports mapped to the current +# enum names instead of generating references to members that do not exist. +MATERIAL_NAME_ALIASES = { + "Grass": "ShortGrass", + "GrassPath": "DirtPath", + "Sign": "OakSign", + "WallSign": "OakWallSign", +} + +OUTPUT_FILE_ALIASES = { + "120": "BlockPalette120.cs", +} + def mc_name_to_csharp(mc_name: str) -> str: """Convert minecraft:snake_case to PascalCase C# enum name.""" name = mc_name.removeprefix("minecraft:") - return "".join(word.capitalize() for word in name.split("_")) + csharp_name = "".join(word.capitalize() for word in name.split("_")) + return MATERIAL_NAME_ALIASES.get(csharp_name, csharp_name) def load_known_materials() -> set[str]: known = set() if MATERIAL_CS.exists(): - with open(MATERIAL_CS) as f: + with MATERIAL_CS.open(encoding="utf-8-sig") as f: for line in f: m = re.match(r'\s+(\w+),?\s*$', line) if m: @@ -40,6 +57,122 @@ def load_known_materials() -> set[str]: return known +def get_state_property_definitions( + block_key: str, + states: list[dict], + properties: dict[str, list[str]], +) -> list[tuple[str, list[str], int]]: + """Build and verify the compact stride schema against every reported state.""" + if not properties: + return [] + + ordered_states = sorted(states, key=lambda state: state["id"]) + first_state_id = ordered_states[0]["id"] + expected_ids = list(range(first_state_id, first_state_id + len(ordered_states))) + actual_ids = [state["id"] for state in ordered_states] + if actual_ids != expected_ids: + raise ValueError(f"{block_key} has non-contiguous state IDs") + + expected_count = math.prod(len(values) for values in properties.values()) + if expected_count != len(ordered_states): + raise ValueError( + f"{block_key} has {len(ordered_states)} states but its properties describe {expected_count} combinations" + ) + + definitions = [] + for name, values in properties.items(): + stride = next( + ( + candidate + for candidate in range(1, len(ordered_states) + 1) + if all( + state.get("properties", {}).get(name) + == values[(offset // candidate) % len(values)] + for offset, state in enumerate(ordered_states) + ) + ), + None, + ) + if stride is None: + raise ValueError(f"{block_key} property {name} has no regular state stride") + definitions.append((name, values, stride)) + + return definitions + + +def csharp_string(value: str) -> str: + """Encode a Python string as a compatible C# string literal.""" + return json.dumps(value, ensure_ascii=False) + + +def render_state_definitions( + block_ranges: Sequence[tuple[int, int, str, list[tuple[str, list[str], int]]]], +) -> tuple[list[str], int]: + """Render the generated state-property section and return its definition count.""" + lines = [ + " // <auto-generated block-state-properties>", + " private static readonly BlockStateDefinition[] stateDefinitions =", + " [", + ] + property_definition_count = 0 + for min_s, max_s, _, properties in block_ranges: + if not properties: + continue + + property_definition_count += 1 + lines.append(f" new({min_s}, {max_s - min_s + 1},") + lines.append(" [") + for index, (name, values, stride) in enumerate(properties): + encoded_values = ", ".join(csharp_string(value) for value in values) + suffix = "," if index < len(properties) - 1 else "" + lines.append(f" new({csharp_string(name)}, [{encoded_values}], {stride}){suffix}") + lines.append(" ]),") + + lines += [ + " ];", + " // </auto-generated block-state-properties>", + ] + return lines, property_definition_count + + +def update_existing_palette(output_path: Path, state_lines: list[str]) -> bool: + """Replace only generated state metadata while preserving established material mappings.""" + if not output_path.exists(): + return False + + source = output_path.read_text(encoding="utf-8") + dictionary_method = " protected override Dictionary<int, Material> GetDict()" + dictionary_index = source.find(dictionary_method) + if dictionary_index < 0: + raise ValueError(f"{output_path} does not contain the expected GetDict method") + + generated_start = source.find(" // <auto-generated block-state-properties>") + legacy_start = source.find(" private static readonly BlockStateDefinition[] stateDefinitions =") + section_start = generated_start if generated_start >= 0 else legacy_start + if section_start < 0: + section_start = dictionary_index + + prefix = source[:section_start].rstrip() + suffix = source[dictionary_index:] + state_override = """ protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } +""" + suffix = suffix.replace("\n" + state_override, "", 1) + + class_end = suffix.rfind("\n }\n}") + if class_end < 0: + raise ValueError(f"{output_path} does not contain the expected class terminator") + suffix = suffix[:class_end].rstrip() + "\n\n" + state_override.rstrip() + suffix[class_end:] + + output_path.write_text( + prefix + "\n\n" + "\n".join(state_lines) + "\n\n" + suffix, + encoding="utf-8", + ) + return True + + def main(): if len(sys.argv) != 3: print(__doc__) @@ -52,17 +185,18 @@ def main(): print(f"Error: {blocks_json} not found") sys.exit(1) - with open(blocks_json) as f: + with blocks_json.open(encoding="utf-8") as f: data = json.load(f) - # Build (min_state, max_state, cs_name) for each block, sorted by min_state + # Build block ranges and compact state-property definitions, sorted by min state. block_ranges = [] for block_key, block_info in data.items(): cs_name = mc_name_to_csharp(block_key) states = block_info.get("states", []) state_ids = [s["id"] for s in states] if state_ids: - block_ranges.append((min(state_ids), max(state_ids), cs_name)) + properties = get_state_property_definitions(block_key, states, block_info.get("properties", {})) + block_ranges.append((min(state_ids), max(state_ids), cs_name, properties)) block_ranges.sort(key=lambda x: x[0]) print(f"Loaded {len(block_ranges)} blocks from {blocks_json}") @@ -71,7 +205,7 @@ def main(): print(f"State ID range: 0 - {max_state}") known_materials = load_known_materials() - missing = [cs for _, _, cs in block_ranges if known_materials and cs not in known_materials] + missing = [cs for _, _, cs, _ in block_ranges if known_materials and cs not in known_materials] if missing: print(f"\nWARNING: {len(missing)} blocks not found in Material.cs enum:") for cs_name in missing: @@ -80,7 +214,15 @@ def main(): print("Insert them in alphabetical order within the enum.") class_name = f"Palette{class_suffix}" - output_path = OUTPUT_DIR / f"{class_name}.cs" + output_path = OUTPUT_DIR / OUTPUT_FILE_ALIASES.get(class_suffix, f"{class_name}.cs") + state_lines, property_definition_count = render_state_definitions(block_ranges) + + if update_existing_palette(output_path, state_lines): + print( + f"Updated {output_path} with {property_definition_count} property definitions " + "while preserving material mappings" + ) + return lines = [ "using System.Collections.Generic;", @@ -95,24 +237,36 @@ def main(): " {", ] - for min_s, max_s, cs_name in block_ranges: + for min_s, max_s, cs_name, _ in block_ranges: lines.append(f" for (int i = {min_s}; i <= {max_s}; i++)") lines.append(f" materials[i] = Material.{cs_name};") lines += [ " }", "", + *state_lines, + "", + ] + lines += [ " protected override Dictionary<int, Material> GetDict()", " {", " return materials;", " }", + "", + " protected override BlockStateDefinition[] GetStateDefinitions()", + " {", + " return stateDefinitions;", + " }", " }", "}", "", ] - output_path.write_text("\n".join(lines)) - print(f"Generated {output_path} with {len(block_ranges)} blocks ({max_state + 1} total states)") + output_path.write_text("\n".join(lines), encoding="utf-8") + print( + f"Generated {output_path} with {len(block_ranges)} blocks, " + f"{max_state + 1} total states, and {property_definition_count} property definitions" + ) if __name__ == "__main__": diff --git a/tools/mcc-debug.sh b/tools/mcc-debug.sh index c5c6205e..d0ca0e78 100644 --- a/tools/mcc-debug.sh +++ b/tools/mcc-debug.sh @@ -16,6 +16,8 @@ Options: -v, --version VER Server directory name (default: 1.21.11-Vanilla) -m, --mode MODE Console mode: classic or tui (default: classic) -p, --port PORT Server port (default: 25565) + --session NAME Session name for scoped runtime artifacts + --username NAME MCC username (default: resolved from session) --no-build Skip dotnet build --debug-on Enable debug messages from the start --file-input Use FileInput mode (classic only; enables mcc-cmd) @@ -25,6 +27,7 @@ Examples: tools/mcc-debug.sh # Classic mode, default server tools/mcc-debug.sh -m tui # TUI mode tools/mcc-debug.sh -v 1.21.11-Vanilla --debug-on + tools/mcc-debug.sh --session smoke-a --username SmokeA tools/mcc-debug.sh --file-input # FileInput for script-driven testing EOF } @@ -33,15 +36,57 @@ VERSION="1.21.11-Vanilla" MODE="classic" PORT="25565" PORT_SET_BY_USER=false +SESSION="" +USERNAME="" DO_BUILD=true DEBUG_ON=false FILE_INPUT=false +BUILD_ROOT="$(_mcc_build_root)" +BUILD_ROOT_ENV_PREFIX="" while [[ $# -gt 0 ]]; do case "$1" in - -v|--version) VERSION="$2"; shift 2 ;; - -m|--mode) MODE="$2"; shift 2 ;; - -p|--port) PORT="$2"; PORT_SET_BY_USER=true; shift 2 ;; + -v|--version) + if [[ $# -lt 2 ]]; then + echo "$1 requires a value" >&2 + exit 1 + fi + VERSION="$2" + shift 2 + ;; + -m|--mode) + if [[ $# -lt 2 ]]; then + echo "$1 requires a value" >&2 + exit 1 + fi + MODE="$2" + shift 2 + ;; + -p|--port) + if [[ $# -lt 2 ]]; then + echo "$1 requires a value" >&2 + exit 1 + fi + PORT="$2" + PORT_SET_BY_USER=true + shift 2 + ;; + --session) + if [[ $# -lt 2 ]]; then + echo "--session requires a value" >&2 + exit 1 + fi + SESSION="$2" + shift 2 + ;; + --username) + if [[ $# -lt 2 ]]; then + echo "--username requires a value" >&2 + exit 1 + fi + USERNAME="$2" + shift 2 + ;; --no-build) DO_BUILD=false; shift ;; --debug-on) DEBUG_ON=true; shift ;; --file-input) FILE_INPUT=true; shift ;; @@ -50,23 +95,45 @@ while [[ $# -gt 0 ]]; do esac done -TEST_ROOT="${TMPDIR:-/tmp}/mcc-debug" -CFG="$TEST_ROOT/MinecraftClient.debug.ini" -MCC_LOG="$TEST_ROOT/mcc-debug.log" -INPUT_FILE="$REPO_ROOT/mcc_input.txt" +SESSION="$(_mcc_resolve_session "$SESSION")" +if [[ -z "$USERNAME" ]]; then + USERNAME="$(_mcc_resolve_username "$SESSION")" +fi + +if [[ "${MCC_BUILD_MODE:-local}" == "tmpfs" ]]; then + mkdir -p "$BUILD_ROOT" + printf -v BUILD_ROOT_QUOTED '%q' "$BUILD_ROOT" + BUILD_ROOT_ENV_PREFIX="MCC_BUILD_ROOT=$BUILD_ROOT_QUOTED " +fi + +SESSION_ROOT="$(_mcc_session_root "$SESSION")" +CFG="$SESSION_ROOT/MinecraftClient.debug.ini" +MCC_LOG="$(_mcc_session_log_file "$SESSION")" +INPUT_FILE="$(_mcc_session_input_file "$SESSION")" +PID_FILE="$(_mcc_session_pid_file "$SESSION")" +META_FILE="$(_mcc_session_meta_file "$SESSION")" +MCC_TMUX_SESSION="$(_mcc_tmux_session_name "$SESSION")" SESSION_NAME="mc-${VERSION//\./_}" PREPARE_CFG_SCRIPT="$REPO_ROOT/.skills/mcc-integration-testing/scripts/prepare_offline_mcc_config.sh" ENSURE_SERVER_SCRIPT="$REPO_ROOT/.skills/mcc-integration-testing/scripts/ensure_offline_server.sh" PREFLIGHT_SCRIPT="$REPO_ROOT/.skills/mcc-integration-testing/scripts/preflight_test_env.sh" GET_PORT_SCRIPT="$REPO_ROOT/.skills/mcc-integration-testing/scripts/get_server_port.sh" -mkdir -p "$TEST_ROOT" +mkdir -p "$SESSION_ROOT" echo "=== MCC Debug Session ===" echo " Server: $VERSION (port $PORT)" +echo " Session: $SESSION" +echo " User: $USERNAME" echo " Mode: $MODE" +echo " Build: $BUILD_ROOT" +echo " Root: $SESSION_ROOT" echo " Config: $CFG" echo " Log: $MCC_LOG" +echo " Input: $INPUT_FILE" +echo " PID: $PID_FILE" +echo " Meta: $META_FILE" +echo " Tmux: $MCC_TMUX_SESSION" echo "" bash "$PREFLIGHT_SCRIPT" "$VERSION" >/dev/null @@ -74,7 +141,7 @@ bash "$PREFLIGHT_SCRIPT" "$VERSION" >/dev/null # --- Build --- if $DO_BUILD; then echo "[1/4] Building MCC..." - dotnet build "$REPO_ROOT/MinecraftClient.sln" -c Release -v quiet --nologo + _mcc_dotnet_env dotnet build "$REPO_ROOT/MinecraftClient.sln" -c Release -v quiet --nologo echo " Build OK" else echo "[1/4] Build skipped (--no-build)" @@ -82,7 +149,7 @@ fi # --- Prepare config --- echo "[2/4] Preparing config..." -bash "$PREPARE_CFG_SCRIPT" "$CFG" "${VERSION%-Vanilla}" CursorBot >/dev/null +bash "$PREPARE_CFG_SCRIPT" "$CFG" "${VERSION%-Vanilla}" "$USERNAME" >/dev/null if [[ "$MODE" == "tui" ]]; then if [[ "$(uname)" == "Darwin" ]]; then @@ -130,34 +197,71 @@ if ! $PORT_SET_BY_USER; then PORT="$(bash "$GET_PORT_SCRIPT" "$VERSION")" fi +RUNTIME_MODE="$MODE" +if $FILE_INPUT; then + RUNTIME_MODE="${MODE}-file-input" +fi + +cat > "$META_FILE" <<EOF +session=$SESSION +user=$USERNAME +mode=$RUNTIME_MODE +config=$CFG +log=$MCC_LOG +input=$INPUT_FILE +pid=$PID_FILE +tmux=$MCC_TMUX_SESSION +server_version=$VERSION +server_port=$PORT +EOF + # --- Launch MCC --- echo "[4/4] Launching MCC in $MODE mode..." : > "$INPUT_FILE" rm -f "$MCC_LOG" +rm -f "$PID_FILE" -MCC_ARGS=("$CFG" "CursorBot" "-" "localhost:$PORT") +MCC_ARGS=("$CFG" "$USERNAME" "-" "localhost:$PORT") +MCC_ARGS_CMD="$(printf '%q ' "${MCC_ARGS[@]}")" if [[ "$MODE" == "tui" ]]; then - # TUI mode: needs a real tty — no pipes or redirects allowed - tmux kill-session -t mcc-debug 2>/dev/null || true - tmux new-session -d -s mcc-debug -x 160 -y 50 \ - "cd '$REPO_ROOT' && dotnet run --project MinecraftClient -c Release --no-build -- ${MCC_ARGS[*]}; echo '=== MCC EXITED ==='; sleep 600" + # TUI mode: needs a real tty - no pipes or redirects allowed + tmux kill-session -t "$MCC_TMUX_SESSION" 2>/dev/null || true + tmux new-session -d -s "$MCC_TMUX_SESSION" -x 160 -y 50 \ + "cd '$REPO_ROOT' && ${BUILD_ROOT_ENV_PREFIX}dotnet run --project MinecraftClient -c Release --no-build -- $MCC_ARGS_CMD; echo '=== MCC EXITED ==='; sleep 600" echo "" - echo " TUI mode started in tmux session 'mcc-debug'" + echo " TUI mode started in tmux session '$MCC_TMUX_SESSION'" echo " (TUI mode uses a real terminal; log file is not available, use MCC's /debug command)" echo "" - echo " Attach: tmux attach -t mcc-debug" + echo " Attach: tmux attach -t $MCC_TMUX_SESSION" echo " Detach: Ctrl+B, D" - echo " Kill MCC: tmux kill-session -t mcc-debug" + echo " Kill MCC: tmux kill-session -t $MCC_TMUX_SESSION" echo "" elif $FILE_INPUT; then - # FileInput mode: run in background, drive via mcc_input.txt - ( - cd "$REPO_ROOT" - MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release --no-build -- "${MCC_ARGS[@]}" > "$MCC_LOG" 2>&1 - ) & - MCC_PID=$! + # FileInput mode: run in detached tmux, drive via session-specific input file + tmux kill-session -t "$MCC_TMUX_SESSION" 2>/dev/null || true + tmux new-session -d -s "$MCC_TMUX_SESSION" -x 160 -y 50 \ + "cd '$REPO_ROOT' && printf '%s\n' \"\$\$\" > '$PID_FILE' && exec env ${BUILD_ROOT_ENV_PREFIX}MCC_FILE_INPUT=1 MCC_INPUT_FILE='$INPUT_FILE' dotnet run --project MinecraftClient -c Release --no-build -- $MCC_ARGS_CMD > '$MCC_LOG' 2>&1" + + for _ in $(seq 1 25); do + if [[ -s "$PID_FILE" ]]; then + break + fi + sleep 0.2 + done + if [[ ! -s "$PID_FILE" ]]; then + echo " Failed to capture MCC PID in $PID_FILE" + exit 1 + fi + + MCC_PID="$(tr -cd '0-9' < "$PID_FILE")" + if [[ -z "$MCC_PID" ]]; then + echo " Invalid PID content in $PID_FILE" + exit 1 + fi + echo " MCC PID: $MCC_PID" + echo " MCC PID file: $PID_FILE" echo "" sleep 5 @@ -175,25 +279,28 @@ elif $FILE_INPUT; then echo "" echo " Send commands: echo 'debug state' >> $INPUT_FILE" echo " Tail log: tail -f $MCC_LOG" + echo " Metadata: cat $META_FILE" + echo " Attach (optional): tmux attach -t $MCC_TMUX_SESSION" echo " Stop MCC: echo 'quit' >> $INPUT_FILE" echo " Stop server: mc-stop $VERSION" + echo " shared servers stay up by default; rerun with --confirm only if you really need to stop it" echo "" else - # Interactive classic mode: run in tmux (no pipe — ConsoleInteractive also needs tty) - tmux kill-session -t mcc-debug 2>/dev/null || true - tmux new-session -d -s mcc-debug -x 160 -y 50 \ - "cd '$REPO_ROOT' && dotnet run --project MinecraftClient -c Release --no-build -- ${MCC_ARGS[*]}; echo '=== MCC EXITED ==='; sleep 600" + # Interactive classic mode: run in tmux (no pipe - ConsoleInteractive also needs tty) + tmux kill-session -t "$MCC_TMUX_SESSION" 2>/dev/null || true + tmux new-session -d -s "$MCC_TMUX_SESSION" -x 160 -y 50 \ + "cd '$REPO_ROOT' && ${BUILD_ROOT_ENV_PREFIX}dotnet run --project MinecraftClient -c Release --no-build -- $MCC_ARGS_CMD; echo '=== MCC EXITED ==='; sleep 600" echo "" - echo " Classic mode started in tmux session 'mcc-debug'" + echo " Classic mode started in tmux session '$MCC_TMUX_SESSION'" echo "" - echo " Attach: tmux attach -t mcc-debug" + echo " Attach: tmux attach -t $MCC_TMUX_SESSION" echo " Detach: Ctrl+B, D" - echo " Kill MCC: tmux kill-session -t mcc-debug" + echo " Kill MCC: tmux kill-session -t $MCC_TMUX_SESSION" echo " Note: Use MCC's built-in /debug command or enable LogToFile for log output" echo "" fi echo "Quick commands:" -echo " mc-rcon 'op CursorBot' # Give operator" +echo " mc-rcon 'op $USERNAME' # Give operator" echo " mc-rcon 'gamemode creative' # Creative mode" -echo " mc-stop $VERSION # Stop server" +echo " mc-stop $VERSION # shared server stays up by default; rerun with --confirm only when needed" diff --git a/tools/mcc-env.sh b/tools/mcc-env.sh index 904a8a00..437c5c9a 100644 --- a/tools/mcc-env.sh +++ b/tools/mcc-env.sh @@ -12,36 +12,470 @@ else fi TOOLS_DIR="$(cd "$(dirname "$_mcc_env_source")" && pwd)" +MCC_REPO_ROOT="$(cd "$TOOLS_DIR/.." && pwd)" unset _mcc_env_source -export MCC_REPO="$(cd "$TOOLS_DIR/.." && pwd)" -export MCC_SERVERS="${MCC_SERVERS:-$MCC_REPO/MinecraftOfficial/downloads}" +export MCC_REPO="$MCC_REPO_ROOT" +export MCC_SERVERS="${MCC_SERVERS:-$MCC_REPO_ROOT/MinecraftOfficial/downloads}" + +_mcc_repo_root() { + printf '%s\n' "$MCC_REPO_ROOT" +} + +_mcc_servers_root() { + printf '%s\n' "${MCC_SERVERS:-$MCC_REPO_ROOT/MinecraftOfficial/downloads}" +} + +_mcc_current_worktree_name() { + local worktree_root + if ! worktree_root="$(git -C "$MCC_REPO_ROOT" rev-parse --show-toplevel 2>/dev/null)"; then + return 0 + fi + + if [[ -z "$worktree_root" ]]; then + return 0 + fi + + basename "$worktree_root" +} + +_mcc_resolve_session() { + local explicit="${1:-}" + if [[ -n "$explicit" ]]; then + printf '%s\n' "$explicit" + return 0 + fi + + local worktree + worktree="$(_mcc_current_worktree_name)" + if [[ -n "$worktree" ]]; then + printf '%s\n' "$worktree" + return 0 + fi + + basename "$MCC_REPO_ROOT" +} + +_mcc_sha1_short() { + if command -v sha1sum >/dev/null 2>&1; then + printf '%s' "$1" | sha1sum | awk '{print substr($1, 1, 4)}' + else + printf '%s' "$1" | shasum -a 1 | awk '{print substr($1, 1, 4)}' + fi +} + +_mcc_resolve_username() { + local session="$1" + local normalized + normalized="$(printf '%s' "$session" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9_]/_/g')" + local candidate="mcc_${normalized}" + if (( ${#candidate} <= 16 )); then + printf '%s\n' "$candidate" + return 0 + fi + + local hash + hash="$(_mcc_sha1_short "$normalized")" + printf '%s_%s\n' "${candidate:0:11}" "$hash" +} + +_mcc_session_root() { + printf '%s/mcc-debug/%s\n' "${TMPDIR:-/tmp}" "$1" +} + +_mcc_session_log_file() { + printf '%s/mcc-debug.log\n' "$(_mcc_session_root "$1")" +} + +_mcc_session_input_file() { + printf '%s/mcc_input.txt\n' "$(_mcc_session_root "$1")" +} + +_mcc_session_pid_file() { + printf '%s/mcc.pid\n' "$(_mcc_session_root "$1")" +} + +_mcc_session_meta_file() { + printf '%s/session.meta\n' "$(_mcc_session_root "$1")" +} + +_mcc_tmux_session_name() { + printf 'mcc-%s\n' "$1" +} + +_mcc_build_root() { + local worktree + worktree="$(_mcc_current_worktree_name)" + if [[ -z "$worktree" ]]; then + worktree="$(basename "$MCC_REPO_ROOT")" + fi + + if [[ "${MCC_BUILD_MODE:-local}" == "tmpfs" ]]; then + if [[ -d /dev/shm && -w /dev/shm ]]; then + printf '/dev/shm/mcc-build/%s\n' "$worktree" + else + printf '%s/mcc-build/%s\n' "${TMPDIR:-/tmp}" "$worktree" + fi + return 0 + fi + + printf '%s\n' "$MCC_REPO_ROOT" +} + +_mcc_dotnet_env() { + if [[ "${MCC_BUILD_MODE:-local}" == "tmpfs" ]]; then + local build_root + build_root="$(_mcc_build_root)" + mkdir -p "$build_root" + env MCC_BUILD_ROOT="$build_root" MCC_ALLOW_RAW_DOTNET=1 "$@" + return $? + fi + + MCC_ALLOW_RAW_DOTNET=1 "$@" +} + +_mcc_is_repo_dotnet_build_blocked() { + local repo_root cwd + repo_root="$(_mcc_repo_root)" + cwd="${PWD:-}" + + [[ -n "$repo_root" && -n "$cwd" && "$cwd" == "$repo_root"* ]] +} + +dotnet() { + if [[ "${MCC_ALLOW_RAW_DOTNET:-0}" != "1" ]] && _mcc_is_repo_dotnet_build_blocked; then + case "${1:-}" in + build) + cat >&2 <<'EOF' +[MCC] Raw 'dotnet build' is blocked in this repository. +[MCC] Use: source tools/mcc-env.sh && mcc-build +[MCC] If you intentionally need the raw .NET CLI, call it by absolute path to bypass this guard. +EOF + return 64 + ;; + publish) + cat >&2 <<'EOF' +[MCC] Raw 'dotnet publish' is blocked in this repository. +[MCC] Use: source tools/mcc-env.sh && mcc-publish --rid <RID> +[MCC] If you intentionally need the raw .NET CLI, call it by absolute path to bypass this guard. +EOF + return 64 + ;; + esac + fi + + command dotnet "$@" +} # Helper: convert version to tmux session name (dots -> underscores) _mc-session() { echo "mc-${1//\./_}"; } +_mc_requires_confirm() { + local action="$1" + local rerun_command="$2" + cat >&2 <<EOF +Refusing to ${action} without --confirm. +Keep shared servers running by default. Only stop or reset them when the user explicitly asks, or when you need to switch server versions. +If you really intend to do this, rerun: ${rerun_command} --confirm +EOF + return 1 +} + # --- Minecraft Server Management --- mc-start() { bash "$MCC_REPO/tools/start-server.sh" "${1:-1.20.6}"; } -mc-stop() { local v="${1:-1.20.6}"; echo "stop" > "$MCC_SERVERS/$v/stdin.pipe"; } +mc-stop() { + local v="1.20.6" + local version_set=false + local confirm=false + local -a rerun=(mc-stop) + while [[ $# -gt 0 ]]; do + case "$1" in + --confirm) confirm=true; shift ;; + *) + if [[ "$version_set" == false ]]; then + v="$1" + version_set=true + rerun+=("$1") + shift + else + echo "mc-stop: unexpected argument: $1" >&2 + return 1 + fi + ;; + esac + done + if [[ ${#rerun[@]} -eq 1 ]]; then + rerun+=("$v") + fi + if [[ "$confirm" != true ]]; then + _mc_requires_confirm "stop shared server '$v'" "${rerun[*]}" + return 1 + fi + echo "stop" > "$MCC_SERVERS/$v/stdin.pipe" +} mc-cmd() { local v="${2:-1.20.6}"; echo "$1" > "$MCC_SERVERS/$v/stdin.pipe"; } mc-log() { local s; s=$(_mc-session "${1:-1.20.6}"); tmux capture-pane -t "$s" -p -S "-${2:-50}"; } -mc-kill() { local v="${1:-1.20.6}" s; s=$(_mc-session "$v"); tmux kill-session -t "$s" 2>/dev/null; rm -f "$MCC_SERVERS/$v/stdin.pipe"; echo "Killed $s"; } +mc-kill() { + local v="1.20.6" + local version_set=false + local confirm=false + local -a rerun=(mc-kill) + while [[ $# -gt 0 ]]; do + case "$1" in + --confirm) confirm=true; shift ;; + *) + if [[ "$version_set" == false ]]; then + v="$1" + version_set=true + rerun+=("$1") + shift + else + echo "mc-kill: unexpected argument: $1" >&2 + return 1 + fi + ;; + esac + done + if [[ ${#rerun[@]} -eq 1 ]]; then + rerun+=("$v") + fi + if [[ "$confirm" != true ]]; then + _mc_requires_confirm "force-kill shared server '$v'" "${rerun[*]}" + return 1 + fi + local s + s=$(_mc-session "$v") + tmux kill-session -t "$s" 2>/dev/null + rm -f "$MCC_SERVERS/$v/stdin.pipe" + echo "Killed $s" +} mc-list() { tmux list-sessions 2>/dev/null | grep "^mc-" || echo "No running MC servers"; } mc-wait-ready() { bash "$MCC_REPO/.skills/mcc-integration-testing/scripts/preflight_test_env.sh" "${1:-1.20.6}" >/dev/null && source "$MCC_REPO/.skills/mcc-integration-testing/scripts/common.sh" && wait_for_server_ready "${1:-1.20.6}" "${2:-60}"; } mc-wait-stop() { source "$MCC_REPO/.skills/mcc-integration-testing/scripts/common.sh" && wait_for_server_stop "${1:-1.20.6}" "${2:-60}"; } -mc-reset-test-env() { bash "$MCC_REPO/.skills/mcc-integration-testing/scripts/reset_shared_test_state.sh" "$@"; } +mc-reset-test-env() { + local confirm=false + local -a args=() + local -a rerun=(mc-reset-test-env) + while [[ $# -gt 0 ]]; do + case "$1" in + --confirm) confirm=true; shift ;; + *) + args+=("$1") + rerun+=("$1") + shift + ;; + esac + done + if [[ "$confirm" != true ]]; then + _mc_requires_confirm "reset shared server test state" "${rerun[*]}" + return 1 + fi + bash "$MCC_REPO/.skills/mcc-integration-testing/scripts/reset_shared_test_state.sh" "${args[@]}" +} # --- RCON --- mc-rcon() { bash "$MCC_REPO/tools/mc-rcon.sh" "$@"; } # --- MCC Build/Run --- -mcc-build() { dotnet build "$MCC_REPO/MinecraftClient.sln" -c Release; } -mcc-run() { - local port="${1:-25565}" - shift || true - cd "$MCC_REPO" && MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release -- CursorBot - "localhost:${port}" "$@" 2>&1 +mcc-build() { + local repo_root + repo_root="$(_mcc_repo_root)" + _mcc_dotnet_env dotnet build "$repo_root/MinecraftClient.sln" -c Release +} +mcc-publish() { + local repo_root rid="" + local -a extra_args=() + + repo_root="$(_mcc_repo_root)" + + while [[ $# -gt 0 ]]; do + case "$1" in + --rid|-r) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-publish: --rid requires a value" >&2 + return 1 + fi + rid="$1" + shift + ;; + --) + shift + extra_args+=("$@") + break + ;; + *) + extra_args+=("$1") + shift + ;; + esac + done + + if [[ -z "$rid" ]]; then + echo "mcc-publish: missing required --rid <RID>" >&2 + echo "mcc-publish: example: mcc-publish --rid linux-x64" >&2 + return 1 + fi + + _mcc_dotnet_env dotnet publish "$repo_root/MinecraftClient.sln" \ + -f net10.0 \ + -r "$rid" \ + --self-contained=true \ + -c Release \ + -p:UseAppHost=true \ + -p:IncludeNativeLibrariesForSelfExtract=true \ + -p:EnableCompressionInSingleFile=true \ + -p:DebugType=Embedded \ + "${extra_args[@]}" +} +mcc-build-clean() { + if [[ "${MCC_BUILD_MODE:-local}" == "tmpfs" ]]; then + local build_root + build_root="$(_mcc_build_root)" + rm -rf "$build_root" + return 0 + fi + + dotnet clean "$(_mcc_repo_root)/MinecraftClient.sln" -c Release +} +mcc-run() { + local session="" username="" port="25565" + while [[ $# -gt 0 ]]; do + case "$1" in + --session) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-run: --session requires a value" >&2 + return 1 + fi + session="$1" + shift + ;; + --username) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-run: --username requires a value" >&2 + return 1 + fi + username="$1" + shift + ;; + --port) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-run: --port requires a value" >&2 + return 1 + fi + port="$1" + shift + ;; + *) + echo "Unknown option: $1" >&2 + return 1 + ;; + esac + done + + local -a args=(--file-input --no-build --port "$port") + if [[ -n "$session" ]]; then + args+=(--session "$session") + fi + if [[ -n "$username" ]]; then + args+=(--username "$username") + fi + + bash "$MCC_REPO/tools/mcc-debug.sh" "${args[@]}" +} +mcc-cmd() { + local session="" + local -a command_parts=() + while [[ $# -gt 0 ]]; do + case "$1" in + --session) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-cmd: --session requires a value" >&2 + return 1 + fi + session="$1" + shift + ;; + *) + command_parts+=("$1") + shift + ;; + esac + done + + if [[ ${#command_parts[@]} -eq 0 ]]; then + echo "Usage: mcc-cmd [--session NAME] <command>" >&2 + return 1 + fi + session="$(_mcc_resolve_session "$session")" + local input_file + input_file="$(_mcc_session_input_file "$session")" + mkdir -p "$(dirname "$input_file")" + local command + command="${command_parts[*]}" + printf '%s\n' "$command" >> "$input_file" +} +mcc-kill() { + local session="" + while [[ $# -gt 0 ]]; do + case "$1" in + --session) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-kill: --session requires a value" >&2 + return 1 + fi + session="$1" + shift + ;; + *) + echo "Unknown option: $1" >&2 + return 1 + ;; + esac + done + + session="$(_mcc_resolve_session "$session")" + local pid_file meta_file tmux_session pid pid_comm pid_args + local killed=false + pid_file="$(_mcc_session_pid_file "$session")" + meta_file="$(_mcc_session_meta_file "$session")" + tmux_session="$(_mcc_tmux_session_name "$session")" + + if [[ -f "$pid_file" ]]; then + pid="$(tr -cd '0-9' < "$pid_file")" + if [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then + pid_comm="$(ps -p "$pid" -o comm= 2>/dev/null | tr -d '[:space:]')" + pid_args="$(ps -p "$pid" -o args= 2>/dev/null || true)" + if [[ "$pid_comm" == "MinecraftClient" ]] || { [[ "$pid_comm" == "dotnet" ]] && [[ "$pid_args" == *"MinecraftClient"* ]]; }; then + kill "$pid" 2>/dev/null || true + echo "Killed MCC PID $pid for session '$session'" + killed=true + else + echo "Refusing to kill PID $pid for session '$session': unexpected process '$pid_comm'" + fi + else + echo "No live MCC PID found for session '$session' (pid file: $pid_file)" + fi + fi + + if tmux has-session -t "$tmux_session" 2>/dev/null; then + tmux kill-session -t "$tmux_session" 2>/dev/null || true + echo "Killed tmux session '$tmux_session'" + killed=true + fi + + if [[ -f "$pid_file" || -f "$meta_file" ]]; then + rm -f "$pid_file" "$meta_file" + fi + + if [[ "$killed" == false ]]; then + echo "No MCC process or tmux session found for session '$session'" + fi } -mcc-cmd() { echo "$1" >> "$MCC_REPO/mcc_input.txt"; } -mcc-kill() { pkill -f "MinecraftClient" 2>/dev/null && echo "MCC killed" || echo "No MCC process found"; tmux kill-session -t mcc-debug 2>/dev/null || true; } mcc-reload() { mcc-kill sleep 1 @@ -50,16 +484,144 @@ mcc-reload() { # --- TUI Mode --- mcc-tui() { - local port="${1:-25565}" - shift || true - tmux new-session -d -s mcc-debug -x 160 -y 50 \ - "cd '$MCC_REPO' && dotnet run --project MinecraftClient -c Release -- CursorBot - localhost:${port} $* 2>&1; echo '=== MCC EXITED ==='; sleep 600" - echo "TUI mode launched in tmux session 'mcc-debug'" - echo "Attach: tmux attach -t mcc-debug" + local session="" username="" port="25565" + while [[ $# -gt 0 ]]; do + case "$1" in + --session) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-tui: --session requires a value" >&2 + return 1 + fi + session="$1" + shift + ;; + --username) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-tui: --username requires a value" >&2 + return 1 + fi + username="$1" + shift + ;; + --port) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-tui: --port requires a value" >&2 + return 1 + fi + port="$1" + shift + ;; + *) + echo "Unknown option: $1" >&2 + return 1 + ;; + esac + done + + local -a args=(-m tui --no-build --port "$port") + if [[ -n "$session" ]]; then + args+=(--session "$session") + fi + if [[ -n "$username" ]]; then + args+=(--username "$username") + fi + + bash "$MCC_REPO/tools/mcc-debug.sh" "${args[@]}" +} + +_mcc_session_log_tail() { + local session="$1" + local log_file + log_file="$(_mcc_session_log_file "$session")" + if [[ -e "$log_file" ]]; then + tail -n 30 "$log_file" 2>/dev/null + else + echo "No MCC log found" + fi +} + +_mcc_session_log_follow() { + local session="$1" + local log_file + log_file="$(_mcc_session_log_file "$session")" + tail -f "$log_file" 2>/dev/null || echo "No MCC log found" } # --- Debug helpers --- mcc-debug() { bash "$MCC_REPO/tools/mcc-debug.sh" "$@"; } -mcc-log-mcc() { tail -f "${TMPDIR:-/tmp}/mcc-debug/mcc-debug.log" 2>/dev/null || echo "No MCC log found"; } -mcc-state() { echo "debug state" >> "$MCC_REPO/mcc_input.txt"; sleep 1; tail -30 "${TMPDIR:-/tmp}/mcc-debug/mcc-debug.log" 2>/dev/null; } +mcc-log-mcc() { + local session="" + while [[ $# -gt 0 ]]; do + case "$1" in + --session) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-log-mcc: --session requires a value" >&2 + return 1 + fi + session="$1" + shift + ;; + *) + echo "Unknown option: $1" >&2 + return 1 + ;; + esac + done + + session="$(_mcc_resolve_session "$session")" + _mcc_session_log_follow "$session" +} +mcc-state() { + local session="" + while [[ $# -gt 0 ]]; do + case "$1" in + --session) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-state: --session requires a value" >&2 + return 1 + fi + session="$1" + shift + ;; + *) + echo "Unknown option: $1" >&2 + return 1 + ;; + esac + done + + session="$(_mcc_resolve_session "$session")" + mcc-cmd --session "$session" "debug state" + sleep 1 + _mcc_session_log_tail "$session" +} mcc-preflight() { bash "$MCC_REPO/.skills/mcc-integration-testing/scripts/preflight_test_env.sh" "$@"; } +mcc-reset-session() { + local session="" + while [[ $# -gt 0 ]]; do + case "$1" in + --session) + shift + if [[ $# -eq 0 ]]; then + echo "mcc-reset-session: --session requires a value" >&2 + return 1 + fi + session="$1" + shift + ;; + *) + echo "Unknown option: $1" >&2 + return 1 + ;; + esac + done + + session="$(_mcc_resolve_session "$session")" + tmux kill-session -t "$(_mcc_tmux_session_name "$session")" 2>/dev/null || true + rm -rf "$(_mcc_session_root "$session")" +} diff --git a/tools/mcc-log-tail.sh b/tools/mcc-log-tail.sh index fb888a42..2fc269bb 100644 --- a/tools/mcc-log-tail.sh +++ b/tools/mcc-log-tail.sh @@ -2,6 +2,7 @@ # Tail MCC and/or server logs side-by-side or individually. # Usage: # tools/mcc-log-tail.sh # tail MCC log only +# tools/mcc-log-tail.sh --session NAME # tail MCC log for a specific session # tools/mcc-log-tail.sh --server VER # tail both MCC and server logs # tools/mcc-log-tail.sh --server-only VER # tail server log only set -euo pipefail @@ -11,21 +12,47 @@ REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" # shellcheck source=tools/mcc-env.sh source "$REPO_ROOT/tools/mcc-env.sh" -MCC_LOG="${TMPDIR:-/tmp}/mcc-debug/mcc-debug.log" +SESSION="" SERVER_VER="" SERVER_ONLY=false while [[ $# -gt 0 ]]; do case "$1" in - --server) SERVER_VER="$2"; shift 2 ;; - --server-only) SERVER_ONLY=true; SERVER_VER="$2"; shift 2 ;; + --session) + if [[ $# -lt 2 ]]; then + echo "--session requires a value" >&2 + exit 1 + fi + SESSION="$2" + shift 2 + ;; + --server) + if [[ $# -lt 2 ]]; then + echo "--server requires a value" >&2 + exit 1 + fi + SERVER_VER="$2" + shift 2 + ;; + --server-only) + if [[ $# -lt 2 ]]; then + echo "--server-only requires a value" >&2 + exit 1 + fi + SERVER_ONLY=true + SERVER_VER="$2" + shift 2 + ;; -h|--help) - echo "Usage: tools/mcc-log-tail.sh [--server VER] [--server-only VER]" + echo "Usage: tools/mcc-log-tail.sh [--session NAME] [--server VER] [--server-only VER]" exit 0 ;; *) echo "Unknown option: $1"; exit 1 ;; esac done +SESSION="$(_mcc_resolve_session "$SESSION")" +MCC_LOG="$(_mcc_session_log_file "$SESSION")" + if $SERVER_ONLY; then if [[ -z "$SERVER_VER" ]]; then echo "Specify server version with --server-only VER" >&2 @@ -39,16 +66,17 @@ fi if [[ -n "$SERVER_VER" ]]; then SERVER_LOG="$MCC_SERVERS/$SERVER_VER/logs/latest.log" echo "=== Tailing MCC + server logs ===" + echo " Session: $SESSION" echo " MCC: $MCC_LOG" echo " Server: $SERVER_LOG" echo "" tail -f "$MCC_LOG" "$SERVER_LOG" 2>/dev/null else if [[ ! -f "$MCC_LOG" ]]; then - echo "No MCC log found at $MCC_LOG" - echo "Start MCC first with: tools/mcc-debug.sh --file-input" + echo "No MCC log found for session '$SESSION' at $MCC_LOG" + echo "Start MCC first with: tools/mcc-debug.sh --session $SESSION --file-input" exit 1 fi - echo "=== Tailing MCC log: $MCC_LOG ===" + echo "=== Tailing MCC log for session '$SESSION': $MCC_LOG ===" exec tail -f "$MCC_LOG" fi diff --git a/tools/run-creative-e2e.sh b/tools/run-creative-e2e.sh index dce850d4..ea25a464 100644 --- a/tools/run-creative-e2e.sh +++ b/tools/run-creative-e2e.sh @@ -36,10 +36,13 @@ fi SESSION_NAME="mc-${SERVER_DIR//./_}" TEST_ROOT="${TMPDIR:-/tmp}/mcc-creative-e2e/${SERVER_DIR//\//_}" CFG="$TEST_ROOT/MinecraftClient.$MC_VERSION.ini" -MCC_LOG="$TEST_ROOT/mcc.log" +MCC_SESSION="creative-e2e-${SERVER_DIR//[^a-zA-Z0-9]/_}-${PROFILE}" +TEST_USERNAME="$(_mcc_resolve_username "$MCC_SESSION")" +MCC_LOG="$(_mcc_session_log_file "$MCC_SESSION")" +PID_FILE="$(_mcc_session_pid_file "$MCC_SESSION")" +MCC_TMUX_SESSION="$(_mcc_tmux_session_name "$MCC_SESSION")" SERVER_LOG_FILE="$MCC_SERVERS/$SERVER_DIR/logs/latest.log" -INPUT_FILE="$REPO_ROOT/mcc_input.txt" -MCC_PID="" +INPUT_FILE="$(_mcc_session_input_file "$MCC_SESSION")" SERVER_PORT="25565" mkdir -p "$TEST_ROOT" @@ -63,12 +66,41 @@ wait_for_file_pattern() { return 1 } +port_is_listening() { + local port="$1" + + if ! command -v python3 >/dev/null 2>&1; then + return 1 + fi + + python3 - "$port" <<'PY' +import socket +import sys + +port = int(sys.argv[1]) + +for addrinfo in socket.getaddrinfo("localhost", port, 0, socket.SOCK_STREAM): + family, socktype, proto, _, sockaddr = addrinfo + try: + sock = socket.socket(family, socktype, proto) + sock.settimeout(0.2) + if sock.connect_ex(sockaddr) == 0: + sock.close() + raise SystemExit(0) + sock.close() + except OSError: + continue + +raise SystemExit(1) +PY +} + wait_for_rcon_port_free() { local timeout="${1:-30}" local elapsed=0 while (( elapsed < timeout )); do - if ! ss -ltn '( sport = :25575 )' 2>/dev/null | grep -Fq ':25575'; then + if ! port_is_listening 25575; then return 0 fi sleep 1 @@ -79,18 +111,16 @@ wait_for_rcon_port_free() { return 1 } cleanup() { - if [[ -n "${MCC_PID:-}" ]] && kill -0 "$MCC_PID" 2>/dev/null; then - echo "quit" >> "$INPUT_FILE" 2>/dev/null || true - sleep 2 - kill "$MCC_PID" 2>/dev/null || true - wait "$MCC_PID" 2>/dev/null || true - fi + mcc-cmd --session "$MCC_SESSION" "quit" >/dev/null 2>&1 || true + sleep 2 + mcc-kill --session "$MCC_SESSION" >/dev/null 2>&1 || true - if [[ -p "$MCC_SERVERS/$SERVER_DIR/stdin.pipe" ]]; then - echo "stop" > "$MCC_SERVERS/$SERVER_DIR/stdin.pipe" 2>/dev/null || true + if tmux has-session -t "$SESSION_NAME" 2>/dev/null; then + tmux send-keys -t "$SESSION_NAME" "stop" C-m >/dev/null 2>&1 || true wait_for_server_stop "$SERVER_DIR" 20 >/dev/null 2>&1 || true fi + rm -f "$MCC_SERVERS/$SERVER_DIR/stdin.pipe" tmux kill-session -t "$SESSION_NAME" 2>/dev/null || true wait_for_rcon_port_free 30 || true } @@ -100,7 +130,7 @@ trap cleanup EXIT prepare_config() { MCC_TEST_ACCOUNT_TYPE=mojang MCC_TEST_PASSWORD=- \ bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/prepare_offline_mcc_config.sh" \ - "$REPO_ROOT/MinecraftClient.ini" "$CFG" "$MC_VERSION" CursorBot >/dev/null + "$CFG" "$MC_VERSION" "$TEST_USERNAME" >/dev/null sed_in_place \ -e "s#^Server = .*#Server = { Host = \"localhost\", Port = $SERVER_PORT }#" \ @@ -115,7 +145,7 @@ prepare_config() { send_mcc_command() { local command="$1" local delay="${2:-2}" - echo "$command" >> "$INPUT_FILE" + mcc-cmd --session "$MCC_SESSION" "$command" sleep "$delay" } @@ -147,13 +177,34 @@ assert_log_contains() { wait_for_file_pattern "$file" "$pattern" "$description" "$timeout" } +start_mcc_session() { + local -a mcc_args=("$CFG" "$TEST_USERNAME" "-" "localhost:$SERVER_PORT") + local mcc_args_cmd + mcc_args_cmd="$(printf '%q ' "${mcc_args[@]}")" + + tmux kill-session -t "$MCC_TMUX_SESSION" 2>/dev/null || true + rm -f "$PID_FILE" + tmux new-session -d -s "$MCC_TMUX_SESSION" -x 160 -y 50 \ + "cd '$REPO_ROOT' && printf '%s\n' \"\$\$\" > '$PID_FILE' && exec env MCC_FILE_INPUT=1 MCC_INPUT_FILE='$INPUT_FILE' dotnet run --project MinecraftClient -c Release --no-build -- $mcc_args_cmd > '$MCC_LOG' 2>&1" + + for _ in $(seq 1 25); do + if [[ -s "$PID_FILE" ]]; then + return 0 + fi + sleep 0.2 + done + + echo "Failed to capture MCC PID for session $MCC_SESSION" >&2 + return 1 +} + legacy_server_setup() { run_server_command "gamerule sendCommandFeedback true" run_server_command "time set day" run_server_command "weather clear" - run_server_command "gamemode creative CursorBot" + run_server_command "gamemode creative $TEST_USERNAME" run_server_command "fill -2 79 -2 2 79 2 stone" - run_server_command "tp CursorBot 0 80 0" + run_server_command "tp $TEST_USERNAME 0 80 0" } modern_server_setup() { @@ -161,30 +212,32 @@ modern_server_setup() { run_server_command "gamerule logAdminCommands true" run_server_command "time set day" run_server_command "weather clear" - run_server_command "gamemode creative CursorBot" + run_server_command "gamemode creative $TEST_USERNAME" run_server_command "fill -2 79 -2 2 79 2 stone" - run_server_command "tp CursorBot 0 80 0" + run_server_command "tp $TEST_USERNAME 0 80 0" } legacy_mob_and_effects() { run_server_command "summon Cow 2 80 0" run_server_command "summon Zombie 4 80 0" run_server_command "summon Pig -2 80 0" - run_server_command "effect CursorBot 1 30 1 true" - run_server_command "effect CursorBot 10 10 1 true" + run_server_command "effect $TEST_USERNAME 1 30 1 true" + run_server_command "effect $TEST_USERNAME 10 10 1 true" } modern_mob_and_effects() { run_server_command "summon minecraft:cow 2 80 0" run_server_command "summon minecraft:zombie 4 80 0" run_server_command "summon minecraft:pig -2 80 0" - run_server_command "effect give CursorBot minecraft:speed 30 1 true" - run_server_command "effect give CursorBot minecraft:regeneration 10 1 true" + run_server_command "effect give $TEST_USERNAME minecraft:speed 30 1 true" + run_server_command "effect give $TEST_USERNAME minecraft:regeneration 10 1 true" } bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/preflight_test_env.sh" "$SERVER_DIR" >/dev/null -bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/reset_shared_test_state.sh" --all >/dev/null +bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/reset_shared_test_state.sh" "$SERVER_DIR" >/dev/null +mcc-reset-session --session "$MCC_SESSION" >/dev/null wait_for_rcon_port_free 30 || true +mkdir -p "$(dirname "$MCC_LOG")" "$(dirname "$INPUT_FILE")" rm -f "$MCC_LOG" "$INPUT_FILE" bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/ensure_offline_server.sh" "$SERVER_DIR" >/dev/null @@ -199,22 +252,13 @@ prepare_config : > "$INPUT_FILE" -( - cd "$REPO_ROOT" - MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release --no-build -- \ - "$CFG" \ - CursorBot \ - - \ - "localhost:$SERVER_PORT" \ - > "$MCC_LOG" 2>&1 -) & -MCC_PID=$! +start_mcc_session assert_log_contains "$MCC_LOG" "Server was successfully joined." "MCC join success" 90 -assert_log_contains "$SERVER_LOG_FILE" "CursorBot joined the game" "server join entry" 30 +assert_log_contains "$SERVER_LOG_FILE" "$TEST_USERNAME joined the game" "server join entry" 30 print_phase "CONNECT" "PASS" -run_server_command "op CursorBot" +run_server_command "op $TEST_USERNAME" sleep 1 if [[ "$PROFILE" == "legacy" ]]; then @@ -237,7 +281,7 @@ assert_log_contains "$SERVER_LOG_FILE" "$cmd_token" "client command on server" 2 print_phase "SEND" "PASS" run_server_command "say $broadcast_token" -run_server_command "tell CursorBot $whisper_token" +run_server_command "tell $TEST_USERNAME $whisper_token" assert_log_contains "$MCC_LOG" "$broadcast_token" "server broadcast in MCC" 20 assert_log_contains "$MCC_LOG" "$whisper_token" "server whisper in MCC" 20 print_phase "RECEIVE" "PASS" diff --git a/tools/run-dialog-test.sh b/tools/run-dialog-test.sh new file mode 100755 index 00000000..134fe31f --- /dev/null +++ b/tools/run-dialog-test.sh @@ -0,0 +1,238 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +source "$REPO_ROOT/tools/mcc-env.sh" +source "$REPO_ROOT/.skills/mcc-integration-testing/scripts/common.sh" + +usage() { + cat <<'EOF' +Usage: tools/run-dialog-test.sh <mc-version> + +Integration test for MCC dialog system against a real local server. +Tests all 5 dialog types, button actions, cancel/dismiss, and body content. + +Examples: + tools/run-dialog-test.sh 26.1 + tools/run-dialog-test.sh 1.21.11 +EOF +} + +MC_VERSION="${1:-}" +if [[ -z "$MC_VERSION" ]]; then + usage >&2 + exit 1 +fi + +SESSION_NAME="dialog-test-${MC_VERSION//[^a-zA-Z0-9]/_}" +TEST_ROOT="${TMPDIR:-/tmp}/mcc-dialog-test/${MC_VERSION//\//_}" +CFG="$TEST_ROOT/custom.ini" +MCC_LOG="$TEST_ROOT/mcc-output.log" +INPUT_FILE="$TEST_ROOT/mcc_input.txt" +SERVER_PORT="25565" +PASS=0 +FAIL=0 + +cleanup() { + tmux kill-session -t "$SESSION_NAME" 2>/dev/null || true +} +trap cleanup EXIT + +header() { + echo "" + echo "===== $* =====" +} + +# Strip ANSI escape codes for grep matching +ansi_strip() { + sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' +} + +assert_log() { + local label="$1" + local pattern="$2" + local timeout="${3:-5}" + local elapsed=0 + while (( elapsed < timeout )); do + if [[ -f "$MCC_LOG" ]] && ansi_strip < "$MCC_LOG" | grep -Fq "$pattern" 2>/dev/null; then + echo " PASS: $label" + PASS=$((PASS + 1)) + return 0 + fi + sleep 1 + ((elapsed += 1)) + done + echo " FAIL: $label (expected: '$pattern')" + FAIL=$((FAIL + 1)) +} + +wait_for_pattern() { + local file="$1" + local pattern="$2" + local timeout="${3:-60}" + local elapsed=0 + while (( elapsed < timeout )); do + if [[ -f "$file" ]] && ansi_strip < "$file" | grep -Fq "$pattern" 2>/dev/null; then + return 0 + fi + sleep 1 + ((elapsed += 1)) + done + return 1 +} + +write_input() { + echo "$1" >> "$INPUT_FILE" + sleep 1 +} + +assert_dialog_shown() { + assert_log "$1 received" "Server showed custom dialog: $2" 10 +} + +# ---- Setup ---- + +mkdir -p "$TEST_ROOT" +rm -f "$MCC_LOG" "$INPUT_FILE" + +echo "[Dialog Test] Version: $MC_VERSION, Session: $SESSION_NAME" +echo "[Dialog Test] Log: $MCC_LOG" + +# Ensure server is running +if ! server_running "$MC_VERSION"; then + echo "[Setup] Starting server..." + bash "$REPO_ROOT/tools/start-server.sh" "$MC_VERSION" 2>&1 | tail -1 + wait_for_server_ready "$MC_VERSION" 120 +fi + +echo "[Setup] Server ready." + +# Prepare temp config +echo "[Setup] Preparing MCC config..." +bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/prepare_offline_mcc_config.sh" \ + "$CFG" "$MC_VERSION" "MCCBot" >/dev/null + +# Disable packet debug (fix in-place to avoid dup sections) +sed_in_place \ + -e '/^\[Debug\]/,/^\s*$/d' \ + "$CFG" + +cat >> "$CFG" <<TOML + +[Debug] +DebugMessages = false +PacketDebugMessages = false +TOML + +# Launch MCC with MCC_FILE_INPUT=1 for maximum compatibility +echo "ping" > "$INPUT_FILE" +tmux kill-session -t "$SESSION_NAME" 2>/dev/null || true +sleep 1 + +cd "$REPO_ROOT" +# FileInputBot ignores config and uses MCC_INPUT_FILE env var only +INPUT_FILE_ABS="$(realpath "$INPUT_FILE")" +tmux new-session -d -s "$SESSION_NAME" \ + "bash -c 'export MCC_FILE_INPUT=1; export MCC_INPUT_FILE=\"$INPUT_FILE_ABS\"; exec dotnet run --no-build --project MinecraftClient -c Release -- \"$CFG\" \"MCCBot\" \"-\" \"localhost:$SERVER_PORT\"' > '$MCC_LOG' 2>&1" + +echo "[Setup] Waiting for MCC to join..." +if ! wait_for_pattern "$MCC_LOG" "Server was successfully joined" 90; then + echo "ERROR: MCC did not join the server. Check $MCC_LOG" + tail -10 "$MCC_LOG" | ansi_strip + exit 1 +fi +echo "[Setup] MCC joined." +sleep 2 + +# ---- Tests ---- + +header "1. Notice Dialog" +mc-rcon 'dialog show MCCBot {type:"minecraft:notice", title:{text:"Notice Title"}}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "notice dialog" "Notice Title" +write_input "dialog show" +assert_log "notice render" "Dialog #1" 10 +assert_log "notice OK button" "OK (close)" 3 + +header "2. Confirmation Dialog" +mc-rcon 'dialog show MCCBot {type:"minecraft:confirmation", title:{text:"Confirm?"}, yes:{label:{text:"Yes"}}, no:{label:{text:"No"}}}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "confirmation" "Confirm?" +write_input "dialog show" +assert_log "confirmation render" "Dialog #1" 10 +assert_log "yes button" "Yes (close)" 3 +assert_log "no button" "No (close)" 3 + +header "3. Multi-Action Dialog" +mc-rcon 'dialog show MCCBot {type:"minecraft:multi_action", title:{text:"Choose"}, actions:[{label:{text:"Alpha"}}, {label:{text:"Beta"}}, {label:{text:"Gamma"}}]}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "multi_action" "Choose" +write_input "dialog show" +assert_log "multi_action render" "Dialog #1" 10 +assert_log "multi_action button 1" "Alpha (close)" 3 +assert_log "multi_action button 2" "Beta (close)" 3 +assert_log "multi_action button 3" "Gamma (close)" 3 + +header "4. Dialog-List Dialog" +mc-rcon 'dialog show MCCBot {type:"minecraft:dialog_list", title:{text:"List"}, dialogs:[{type:"minecraft:notice", title:{text:"Sub One"}}, {type:"minecraft:notice", title:{text:"Sub Two"}}]}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "dialog_list" "List" +write_input "dialog show" +assert_log "dialog_list render" "Dialog #1" 10 +assert_log "dialog_list sub 1" "Sub One (show dialog)" 3 +assert_log "dialog_list sub 2" "Sub Two (show dialog)" 3 + +header "5. Server-Links Dialog" +mc-rcon 'dialog show MCCBot {type:"minecraft:server_links", title:{text:"Links"}}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "server_links" "Links" +write_input "dialog show" +assert_log "server_links render" "Dialog #1" 10 + +header "6. Body Content" +mc-rcon 'dialog show MCCBot {type:"minecraft:notice", title:{text:"With Body"}, body:[{type:"minecraft:plain_message", contents:{text:"Hello from body"}}]}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "body dialog" "With Body" +write_input "dialog show" +assert_log "body content" "Hello from body" 10 + +header "7. Custom run_command Action" +mc-rcon 'dialog show MCCBot {type:"minecraft:notice", title:{text:"Run Cmd"}, action:{label:{text:"/list"}, action:{type:"minecraft:run_command", command:"/list"}}}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "command action" "Run Cmd" +write_input "dialog show" +assert_log "command action button" "/list (command)" 10 +write_input "dialog click 1" +assert_log "command executed" "There are " 10 + +header "8. show_dialog Action (nested)" +mc-rcon 'dialog show MCCBot {type:"minecraft:notice", title:{text:"First"}, action:{label:{text:"Next"}, action:{type:"minecraft:show_dialog", dialog:{type:"minecraft:notice", title:{text:"Second"}}}}}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "first dialog" "First" +write_input "dialog click 1" +assert_dialog_shown "nested dialog" "Second" + +header "9. Dialog Cancel" +mc-rcon 'dialog show MCCBot {type:"minecraft:notice", title:{text:"Cancel Me"}}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "cancel test dialog" "Cancel Me" +write_input "dialog cancel" +assert_log "cancel closed dialog" "Dialog action closed locally" 10 + +header "10. Dialog Click-Label" +mc-rcon 'dialog show MCCBot {type:"minecraft:multi_action", title:{text:"Label Test"}, actions:[{label:{text:"Pick Me"}}, {label:{text:"Leave Me"}}]}' 2>&1 | ansi_strip | grep -v "^$" +assert_dialog_shown "click-label dialog" "Label Test" +write_input "dialog click-label Pick Me" +assert_log "click-label worked" "Dialog action closed locally" 10 + +# ---- Results ---- + +echo "" +echo "==========================================" +echo " Dialog Integration Test Results" +echo "==========================================" +echo " PASS: $PASS" +echo " FAIL: $FAIL" +echo "------------------------------------------" + +if [[ $FAIL -gt 0 ]]; then + echo "FAILURES DETECTED. Full log: $MCC_LOG" + echo "Last 20 lines:" + ansi_strip < "$MCC_LOG" | tail -20 + exit 1 +else + echo "ALL TESTS PASSED." + exit 0 +fi diff --git a/tools/run-inventory-full-sweep.sh b/tools/run-inventory-full-sweep.sh new file mode 100755 index 00000000..397edd3c --- /dev/null +++ b/tools/run-inventory-full-sweep.sh @@ -0,0 +1,471 @@ +#!/usr/bin/env bash +set -u -o pipefail + +SCRIPT_SELF="${BASH_SOURCE[0]}" +while [[ -L "$SCRIPT_SELF" ]]; do + SCRIPT_DIRNAME="$(cd -P "$(dirname "$SCRIPT_SELF")" >/dev/null 2>&1 && pwd)" + SCRIPT_SELF="$(readlink "$SCRIPT_SELF")" + [[ "$SCRIPT_SELF" != /* ]] && SCRIPT_SELF="$SCRIPT_DIRNAME/$SCRIPT_SELF" +done +REPO_ROOT="$(cd -P "$(dirname "$SCRIPT_SELF")/.." >/dev/null 2>&1 && pwd)" +SCRIPT_DIR="$REPO_ROOT/.skills/mcc-integration-testing/scripts" +RUN_ROOT="${RUN_ROOT:-/tmp/mcc-inventory-full-sweep/$(date +%Y%m%d-%H%M%S)}" +VERSIONS="${VERSIONS_OVERRIDE:-1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 26.1}" +STOP_ON_FAIL="${STOP_ON_FAIL:-1}" + +usage() { + cat <<'USAGE' +Usage: tools/run-inventory-full-sweep.sh [options] + +Runs MCC inventory command/API coverage against real local Minecraft servers. +The matrix is sequential because mc-* tmux sessions are shared state. + +Options: + --versions "1.20.4 1.21.11" Space-separated versions to test. + --keep-going Continue after failures. + --stop-on-fail Stop on first failure. Default. + -h, --help Show this help. + +Environment overrides: + VERSIONS_OVERRIDE, RUN_ROOT, STOP_ON_FAIL, MCC_SERVERS. + +Examples: + tools/run-inventory-full-sweep.sh --versions "1.21.10 1.21.11" +USAGE +} + +while [[ $# -gt 0 ]]; do + case "$1" in + --versions) + VERSIONS="$2" + shift 2 + ;; + --keep-going) + STOP_ON_FAIL=0 + shift + ;; + --stop-on-fail) + STOP_ON_FAIL=1 + shift + ;; + -h|--help) + usage + exit 0 + ;; + *) + echo "Unknown option: $1" >&2 + usage >&2 + exit 2 + ;; + esac +done + +source "$REPO_ROOT/tools/mcc-env.sh" +source "$SCRIPT_DIR/common.sh" + +mkdir -p "$RUN_ROOT" +SUMMARY="$RUN_ROOT/summary.tsv" +printf 'target\tstatus\tdetail\tlog\n' > "$SUMMARY" + +wait_for_file_pattern_local() { + local file="$1" + local pattern="$2" + local timeout="${3:-10}" + local end=$((SECONDS + timeout)) + while (( SECONDS < end )); do + if [[ -f "$file" ]] && grep -Eq "$pattern" "$file"; then + return 0 + fi + sleep 0.2 + done + return 1 +} + +sanitize_version() { + printf '%s' "$1" | tr '.-' '__' +} + +server_target_for() { + local version="$1" + local dir + if [[ -d "${MCC_SERVERS:-}/$version-Vanilla" ]]; then + printf '%s-Vanilla' "$version" + elif [[ -d "$REPO_ROOT/MinecraftOfficial/downloads/$version" ]]; then + printf '%s' "$version" + else + printf '%s-Vanilla' "$version" + fi +} + +server_dir_for() { + local target="$1" + local root="${MCC_SERVERS:-$REPO_ROOT/MinecraftOfficial/downloads}" + printf '%s/%s\n' "$root" "$target" +} + +rcon_port_for() { + local target="$1" + local props + props="$(server_dir_for "$target")/server.properties" + if [[ -f "$props" ]]; then + local port_line + port_line="$(grep -E '^rcon\.port=' "$props" | tail -n 1 || true)" + if [[ -n "$port_line" ]]; then + printf '%s\n' "${port_line#rcon.port=}" + return 0 + fi + fi + printf '25575\n' +} + +run_rcon() { + local port="$1" + local command="$2" + local attempt + for attempt in 1 2 3 4 5; do + if mc-rcon "$command" "$port" >/dev/null 2>&1; then + return 0 + fi + sleep 1 + done + return 1 +} + +run_rcon_or_detail() { + local port="$1" + local cmd="$2" + if run_rcon "$port" "$cmd"; then + return 0 + fi + FAIL_DETAIL="rcon failed: $cmd" + return 1 +} + +run_rcon_any_or_detail() { + local port="$1" + local detail="$2" + shift 2 + local cmd + for cmd in "$@"; do + if run_rcon "$port" "$cmd"; then + return 0 + fi + done + FAIL_DETAIL="$detail" + return 1 +} + +run_rcon_any() { + local port="$1" + shift + local cmd + for cmd in "$@"; do + if run_rcon "$port" "$cmd"; then + return 0 + fi + done + return 1 +} + +run_rcon_each() { + local port="$1" + shift + local cmd + for cmd in "$@"; do + run_rcon "$port" "$cmd" || true + done +} + +send_mcc_command() { + local session="$1" + local log_file="$2" + local command="$3" + local delay="${4:-1}" + local block_file="$5" + local mark + mark="$(wc -c < "$log_file" 2>/dev/null || printf '0')" + mcc-cmd --session "$session" "$command" >/dev/null + sleep "$delay" + LAST_BLOCK="$(tail -c "+$((mark + 1))" "$log_file" 2>/dev/null || true)" + { + printf '\n>>> %s\n' "$command" + printf '%s\n' "$LAST_BLOCK" + } >> "$block_file" +} + +assert_contains() { + grep -Eq "$2" <<<"$1" || { FAIL_DETAIL="$3"; return 1; } +} + +assert_not_contains() { + if grep -Eq "$2" <<<"$1"; then + FAIL_DETAIL="$3" + return 1 + fi +} + +assert_no_runtime_crash() { + local log_file="$1" + if grep -Eq 'Queue empty|Unhandled exception|Object reference not set|Failed to parse packet|Failed to process incoming packet|Connection has been lost' "$log_file"; then + FAIL_DETAIL="runtime log contains crash/disconnect marker" + return 1 + fi +} + +clear_dropped_items() { + local port="$1" + run_rcon_any "$port" "kill @e[type=item]" "kill @e[type=Item]" >/dev/null 2>&1 || true +} + +open_chest() { + local session="$1" + local log_file="$2" + local block_file="$3" + send_mcc_command "$session" "$log_file" "useblock 1 80 0" 2 "$block_file" + if wait_for_file_pattern_local "$log_file" "Inventory # 1 opened: Chest" 4; then + return 0 + fi + send_mcc_command "$session" "$log_file" "useblock 1 80 0" 2 "$block_file" + wait_for_file_pattern_local "$log_file" "Inventory # 1 opened: Chest" 12 +} + +setup_world() { + local port="$1" + run_rcon_or_detail "$port" "gamerule sendCommandFeedback true" || return 1 + run_rcon "$port" "gamerule keepInventory true" || true + run_rcon "$port" "time set day" || true + run_rcon "$port" "weather clear" || true + run_rcon "$port" "difficulty peaceful" || true +} + +setup_area() { + local port="$1" + run_rcon_each "$port" "fill -2 78 -3 3 82 3 air 0 replace" "fill -2 78 -3 3 82 3 air" "fill -2 78 -3 3 82 3 minecraft:air" + run_rcon_each "$port" "fill -2 79 -3 3 79 3 stone 0 replace" "fill -2 79 -3 3 79 3 stone" "fill -2 79 -3 3 79 3 minecraft:stone" + run_rcon_each "$port" "setblock 1 80 0 air 0 replace" "setblock 1 80 0 air" "setblock 1 80 0 minecraft:air" + run_rcon_each "$port" "setblock 1 80 0 chest 0 replace" "setblock 1 80 0 chest" "setblock 1 80 0 minecraft:chest" + run_rcon_each "$port" "blockdata 1 80 0 {Items:[]}" "data merge block 1 80 0 {Items:[]}" +} + +setup_player() { + local port="$1" + local username="$2" + run_rcon "$port" "op $username" || true + run_rcon "$port" "gamemode creative $username" || return 1 + run_rcon_any "$port" "tp $username 1.5 80 2.5" "tp $username 1 80 2" || true +} + +run_inventory_sequence() { + local version="$1" + local rcon_port="$2" + local session="$3" + local username="$4" + local log_file="$5" + local block_file="$6" + + send_mcc_command "$session" "$log_file" "inventory player drop -1 all" 1 "$block_file" || true + for slot in 36 37 38 39 40 41 42 43 44; do + send_mcc_command "$session" "$log_file" "inventory creativedelete $slot" 0.2 "$block_file" || true + done + + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_contains "$LAST_BLOCK" 'Inventory #0 - Player Inventory' "player inventory did not list" || return 1 + send_mcc_command "$session" "$log_file" "inventory inventories" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#0[[:space:]]+- Player Inventory' "inventory discovery did not list player inventory" || return 1 + + send_mcc_command "$session" "$log_file" "inventory creativegive 36 Diamond 16" 1 "$block_file" + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#36[[:space:]]*: x16[[:space:]]+Diamond' "creativegive did not populate player slot 36" || return 1 + send_mcc_command "$session" "$log_file" "inventory search Diamond 16" 1 "$block_file" + assert_contains "$LAST_BLOCK" 'Diamond' "inventory search did not find Diamond" || return 1 + send_mcc_command "$session" "$log_file" "inventory creativedelete 36" 1 "$block_file" + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_not_contains "$LAST_BLOCK" '#36[[:space:]]*: x16[[:space:]]+Diamond' "creativedelete left Diamond in player slot 36" || return 1 + + send_mcc_command "$session" "$log_file" "inventory creativegive 36 Dirt 3" 1 "$block_file" + run_rcon "$rcon_port" "gamemode survival $username" || return 1 + sleep 1 + send_mcc_command "$session" "$log_file" "inventory player click 36 right" 2 "$block_file" + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#36[[:space:]]*: x1[[:space:]]+Dirt' "player right-click did not halve Dirt stack" || return 1 + assert_contains "$LAST_BLOCK" '#-1[[:space:]]*: x2[[:space:]]+Dirt' "player right-click did not put Dirt on cursor" || return 1 + send_mcc_command "$session" "$log_file" "inventory player click 36 left" 2 "$block_file" + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#36[[:space:]]*: x3[[:space:]]+Dirt' "player left-click did not merge Dirt back into slot 36" || return 1 + assert_not_contains "$LAST_BLOCK" '#-1[[:space:]]*: x[0-9]+[[:space:]]+Dirt' "player left-click merge left Dirt on cursor" || return 1 + + run_rcon_any "$rcon_port" "tp $username 1.5 80 2.5" "tp $username 1 80 2" || true + sleep 1 + send_mcc_command "$session" "$log_file" "inventory player drop 36" 0.2 "$block_file" + clear_dropped_items "$rcon_port" + sleep 1 + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#36[[:space:]]*: x2[[:space:]]+Dirt' "single drop did not decrement Dirt stack" || return 1 + + run_rcon "$rcon_port" "gamemode creative $username" || return 1 + sleep 1 + clear_dropped_items "$rcon_port" + send_mcc_command "$session" "$log_file" "inventory creativedelete 36" 1 "$block_file" + send_mcc_command "$session" "$log_file" "inventory creativegive 36 Dirt 3" 1 "$block_file" + run_rcon "$rcon_port" "gamemode survival $username" || return 1 + run_rcon_any "$rcon_port" "tp $username 1.5 80 2.5" "tp $username 1 80 2" || true + sleep 1 + send_mcc_command "$session" "$log_file" "inventory player drop 36 all" 0.2 "$block_file" + clear_dropped_items "$rcon_port" + sleep 1 + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_not_contains "$LAST_BLOCK" '#36[[:space:]]*: x[0-9]+[[:space:]]+Dirt' "drop all left Dirt in player slot 36" || return 1 + + run_rcon "$rcon_port" "gamemode creative $username" || return 1 + run_rcon_any "$rcon_port" "tp $username 1.5 80 2.5" "tp $username 1 80 2" || true + sleep 2 + send_mcc_command "$session" "$log_file" "inventory creativegive 36 Diamond 16" 1 "$block_file" + send_mcc_command "$session" "$log_file" "inventory creativegive 37 GoldIngot 7" 1 "$block_file" + send_mcc_command "$session" "$log_file" "changeslot 9" 1 "$block_file" + run_rcon "$rcon_port" "gamemode survival $username" || return 1 + sleep 1 + open_chest "$session" "$log_file" "$block_file" || { FAIL_DETAIL="chest did not open"; return 1; } + + send_mcc_command "$session" "$log_file" "inventory container list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#54[[:space:]]*: x16[[:space:]]+Diamond' "container list did not mirror player slot 36 as chest slot 54" || return 1 + assert_contains "$LAST_BLOCK" '#55[[:space:]]*: x7[[:space:]]+Gold[[:space:]]+Ingot' "container list did not mirror player slot 37 as chest slot 55" || return 1 + + send_mcc_command "$session" "$log_file" "inventory container click 54 ShiftClick" 2 "$block_file" + send_mcc_command "$session" "$log_file" "inventory container list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#0[[:space:]]*: x16[[:space:]]+Diamond' "container shift-click did not move Diamond to chest slot 0" || return 1 + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_not_contains "$LAST_BLOCK" '#36[[:space:]]*: x16[[:space:]]+Diamond' "mirrored player slot 36 still showed shifted Diamond" || return 1 + + send_mcc_command "$session" "$log_file" "inventory container click 55 ShiftRightClick" 2 "$block_file" + send_mcc_command "$session" "$log_file" "inventory container list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#1[[:space:]]*: x7[[:space:]]+Gold[[:space:]]+Ingot' "container shift-right-click did not move GoldIngot to chest slot 1" || return 1 + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_not_contains "$LAST_BLOCK" '#37[[:space:]]*: x7[[:space:]]+Gold[[:space:]]+Ingot' "player slot 37 still showed shifted GoldIngot" || return 1 + + send_mcc_command "$session" "$log_file" "inventory search GoldIngot 7" 1 "$block_file" + assert_contains "$LAST_BLOCK" 'Gold[[:space:]]+Ingot' "inventory search did not find GoldIngot after moving to container" || return 1 + + send_mcc_command "$session" "$log_file" "inventory container click 0 right" 2 "$block_file" + send_mcc_command "$session" "$log_file" "inventory container list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#0[[:space:]]*: x8[[:space:]]+Diamond' "container right-click did not halve chest stack" || return 1 + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#-1[[:space:]]*: x8[[:space:]]+Diamond' "container right-click did not put half stack on cursor" || return 1 + + send_mcc_command "$session" "$log_file" "inventory container click 2 right" 2 "$block_file" + send_mcc_command "$session" "$log_file" "inventory container list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#2[[:space:]]*: x1[[:space:]]+Diamond' "container right-click did not place one item into empty slot 2" || return 1 + send_mcc_command "$session" "$log_file" "inventory container click 2 left" 2 "$block_file" + send_mcc_command "$session" "$log_file" "inventory container list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#2[[:space:]]*: x8[[:space:]]+Diamond' "container left-click did not merge cursor into slot 2" || return 1 + send_mcc_command "$session" "$log_file" "inventory player list" 1 "$block_file" + assert_not_contains "$LAST_BLOCK" '#-1[[:space:]]*: x[0-9]+[[:space:]]+Diamond' "container left-click merge left Diamond on cursor" || return 1 + + send_mcc_command "$session" "$log_file" "inventory container drop 2" 0.2 "$block_file" + clear_dropped_items "$rcon_port" + sleep 1 + send_mcc_command "$session" "$log_file" "inventory container list" 1 "$block_file" + assert_contains "$LAST_BLOCK" '#2[[:space:]]*: x7[[:space:]]+Diamond' "container single drop did not decrement chest slot 2" || return 1 + send_mcc_command "$session" "$log_file" "inventory container drop 2 all" 0.2 "$block_file" + clear_dropped_items "$rcon_port" + sleep 1 + send_mcc_command "$session" "$log_file" "inventory container list" 1 "$block_file" + assert_not_contains "$LAST_BLOCK" '#2[[:space:]]*: x[0-9]+[[:space:]]+Diamond' "container drop all left Diamond in chest slot 2" || return 1 + + send_mcc_command "$session" "$log_file" "inventory container close" 1 "$block_file" + send_mcc_command "$session" "$log_file" "inventory inventories" 1 "$block_file" + assert_not_contains "$LAST_BLOCK" '#1[[:space:]]*-' "container close left inventory #1 visible" || return 1 + + run_rcon "$rcon_port" "gamemode creative $username" || return 1 + sleep 1 + send_mcc_command "$session" "$log_file" "inventory creativegive 37 Emerald 1" 1 "$block_file" + send_mcc_command "$session" "$log_file" "inventory player click 37 middle" 1 "$block_file" + assert_contains "$LAST_BLOCK" 'middle' "middle-click command path did not execute" || return 1 + + assert_no_runtime_crash "$log_file" || return 1 +} + +run_one_version() { + local version="$1" + local target + target="$(server_target_for "$version")" + local safe session username version_dir cfg log_file block_file mcc_root rcon_port + safe="$(sanitize_version "$version")" + session="inventory-full-$safe" + username="InvF${safe//_/}" + username="${username:0:16}" + version_dir="$RUN_ROOT/$version" + cfg="$version_dir/MinecraftClient.ini" + log_file="/tmp/mcc-debug/$session/mcc-debug.log" + block_file="$version_dir/command-blocks.log" + mkdir -p "$version_dir" "/tmp/mcc-debug/$session" + : > "$log_file" + : > "$block_file" + + echo "== inventory $version ==" + bash "$SCRIPT_DIR/ensure_offline_server.sh" "$target" >/dev/null || { printf '%s\tFAIL\t%s\t%s\n' "$version" "server setup failed" "$log_file" >> "$SUMMARY"; return 1; } + mc-start "$target" >/dev/null || { printf '%s\tFAIL\t%s\t%s\n' "$version" "server start failed" "$log_file" >> "$SUMMARY"; return 1; } + wait_for_server_ready "$target" >/dev/null || true + rcon_port="$(rcon_port_for "$target")" + + bash "$SCRIPT_DIR/prepare_offline_mcc_config.sh" "$cfg" "$version" "$username" >/dev/null || { printf '%s\tFAIL\t%s\t%s\n' "$version" "config setup failed" "$log_file" >> "$SUMMARY"; mc-stop "$target" --confirm >/dev/null 2>&1 || true; return 1; } + sed -i 's#^Server = .*#Server = { Host = "localhost", Port = 25565 }#' "$cfg" + FAIL_DETAIL="" + setup_world "$rcon_port" || { printf '%s\tFAIL\t%s\t%s\n' "$version" "${FAIL_DETAIL:-world setup failed}" "$log_file" >> "$SUMMARY"; mc-stop "$target" --confirm >/dev/null 2>&1 || true; return 1; } + + mcc_root="$(dirname "$cfg")" + mkdir -p "/tmp/mcc-debug/$session" + local input_file="/tmp/mcc-debug/$session/mcc_input.txt" + local pid_file="/tmp/mcc-debug/$session/mcc.pid" + : > "$input_file" + ( + cd "$mcc_root" || exit 1 + printf '%s\n' "$$" > "$pid_file" + exec env MCC_FILE_INPUT=1 MCC_INPUT_FILE="$input_file" dotnet run --project "$REPO_ROOT/MinecraftClient" -c Release --no-build > "$log_file" 2>&1 + ) & + local mcc_pid=$! + printf '%s\n' "$mcc_pid" > "$pid_file" + + local ok=0 + if ! wait_for_file_pattern_local "$log_file" "Server was successfully joined" 40; then + FAIL_DETAIL="MCC did not join server" + ok=1 + else + setup_player "$rcon_port" "$username" || { FAIL_DETAIL="player setup failed after join"; ok=1; } + setup_area "$rcon_port" || { ok=1; } + setup_player "$rcon_port" "$username" || { FAIL_DETAIL="player setup failed after area setup"; ok=1; } + sleep 2 + if [[ -z "${FAIL_DETAIL:-}" ]]; then + FAIL_DETAIL="" + run_inventory_sequence "$version" "$rcon_port" "$session" "$username" "$log_file" "$block_file" + ok=$? + fi + fi + + kill "$mcc_pid" >/dev/null 2>&1 || true + wait "$mcc_pid" >/dev/null 2>&1 || true + mc-stop "$target" --confirm >/dev/null 2>&1 || true + wait_for_server_stop "$target" >/dev/null 2>&1 || true + + if [[ "$ok" -eq 0 ]]; then + printf '%s\tPASS\tfull inventory command/API sweep\t%s\n' "$version" "$log_file" >> "$SUMMARY" + echo "PASS $version" + return 0 + fi + + printf '%s\tFAIL\t%s\t%s\n' "$version" "${FAIL_DETAIL:-unknown failure}" "$log_file" >> "$SUMMARY" + echo "${FAIL_DETAIL:-unknown failure}" >&2 + echo "FAIL $version" + return 1 +} + +overall=0 +for version in $VERSIONS; do + if ! run_one_version "$version"; then + overall=1 + [[ "$STOP_ON_FAIL" == "1" ]] && break + fi +done + +echo "SUMMARY=$SUMMARY" + +exit "$overall" diff --git a/tools/run-structured-components-test.sh b/tools/run-structured-components-test.sh new file mode 100755 index 00000000..a188e7d6 --- /dev/null +++ b/tools/run-structured-components-test.sh @@ -0,0 +1,488 @@ +#!/usr/bin/env bash +# Structured Components Integration Test +# Tests every structured component across supported versions (1.20.6 to 26.1) +# Usage: bash tools/run-structured-components-test.sh <version> +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +source "$REPO_ROOT/tools/mcc-env.sh" +source "$REPO_ROOT/.skills/mcc-integration-testing/scripts/common.sh" + +usage() { echo "Usage: $0 <version>"; echo " e.g. $0 1.20.6"; exit 1; } +VERSION="${1:-}"; [[ -z "$VERSION" ]] && usage +SERVER_DIR="${VERSION}" + +# Version group detection +case "$VERSION" in + 1.20.6) VER_GROUP="v1206" ;; + 1.21|1.21.1) VER_GROUP="v121" ;; + 1.21.2|1.21.3|1.21.4) VER_GROUP="v1212" ;; + 1.21.5|1.21.6|1.21.7|1.21.8|1.21.9|1.21.10) VER_GROUP="v1215" ;; + 1.21.11) VER_GROUP="v12111" ;; + 26.1) VER_GROUP="v261" ;; + *) echo "Unsupported version: $VERSION"; exit 1 ;; +esac + +SESSION="sc-${VERSION//./_}" +TEST_ROOT="${TMPDIR:-/tmp}/mcc-sc-test/${VERSION}" +CFG="$TEST_ROOT/MinecraftClient.${VERSION}.ini" +INPUT_FILE="$(_mcc_session_input_file "$SESSION")" +MCC_LOG="$(_mcc_session_log_file "$SESSION")" +PID_FILE="$(_mcc_session_pid_file "$SESSION")" +META_FILE="$(_mcc_session_meta_file "$SESSION")" +MCC_TMUX_SESSION="$(_mcc_tmux_session_name "$SESSION")" +USERNAME="$(_mcc_resolve_username "$SESSION")" +mkdir -p "$TEST_ROOT" +mkdir -p "$(dirname "$INPUT_FILE")" + +PASS_COUNT=0 +FAIL_COUNT=0 +FAILURES=() + +pass() { PASS_COUNT=$((PASS_COUNT + 1)); printf ' [PASS] %s\n' "$1"; } +fail() { FAIL_COUNT=$((FAIL_COUNT + 1)); FAILURES+=("$1"); printf ' [FAIL] %s\n' "$1"; } + +# Give item via RCON, verify success +give_item() { + local name="$1" rcon_cmd="$2" + local out + out="$(mc-rcon "$rcon_cmd" 2>/dev/null || true)" + if echo "$out" | grep -qiE "(Gave|given|No item was|Cannot give|Unknown item)"; then + if echo "$out" | grep -qi "Gave"; then + pass "$name" + else + fail "$name | give failed: $out" + fi + else + # RCON returns empty sometimes; still check MCC log for errors + pass "$name" + fi +} + +# Read inventory and check for component parse errors +check_inv() { + sleep 1 + mcc-cmd --session "$SESSION" "inventory player list" 2>/dev/null || true + sleep 2 + if grep -qiE "(error|exception|fail|unhandled|unknown component|System\." "$MCC_LOG" 2>/dev/null; then + local err_line + err_line="$(grep -iE "(error|exception|fail|unhandled|unknown component)" "$MCC_LOG" | head -3 2>/dev/null)" + fail "component parse error detected: $err_line" + return 1 + fi + return 0 +} + +cleanup() { + set +e + mcc-cmd --session "$SESSION" "quit" 2>/dev/null || true + sleep 1 + mcc-kill --session "$SESSION" 2>/dev/null || true +} +trap cleanup EXIT + +echo "=== Structured Components Test: $VERSION ($VER_GROUP) ===" + +# Phase 1: Preflight +bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/preflight_test_env.sh" "$SERVER_DIR" >/dev/null 2>&1 || true + +# Phase 2: Ensure server configured for offline+RCON +bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/ensure_offline_server.sh" "$SERVER_DIR" >/dev/null 2>&1 || true + +# Phase 3: Start server if not running +if ! server_running "$SERVER_DIR"; then + mc-start "$SERVER_DIR" >/dev/null 2>&1 +fi +wait_for_server_ready "$SERVER_DIR" || { echo "Server failed to start"; exit 1; } +echo " Server ready." + +# Phase 4: Prepare MCC config +echo " Preparing MCC config..." +bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/prepare_offline_mcc_config.sh" \ + "$CFG" "$VERSION" "$USERNAME" >/dev/null 2>&1 + +sed_in_place \ + -e 's/^TerrainAndMovements = false/TerrainAndMovements = true/' \ + -e 's/^InventoryHandling = false/InventoryHandling = true/' \ + -e 's/^EntityHandling = false/EntityHandling = true/' \ + -e 's/^AutoRespawn = false/AutoRespawn = true/' \ + "$CFG" 2>/dev/null || true +disable_noisy_bots_in_ini "$CFG" 2>/dev/null || true + +# Set server host/port in config +SERVER_PORT="$(bash "$REPO_ROOT/.skills/mcc-integration-testing/scripts/get_server_port.sh" "$SERVER_DIR" 2>/dev/null || echo "25565")" +sed_in_place \ + -e "s#^Server = .*#Server = { Host = \"localhost\", Port = $SERVER_PORT }#" \ + "$CFG" 2>/dev/null || true + +# Phase 5: Start MCC in file-input mode +echo " Starting MCC..." +: > "$INPUT_FILE" 2>/dev/null || true +rm -f "$MCC_LOG" "$PID_FILE" + +MCC_ARGS=("$CFG" "$USERNAME" "-" "localhost:$SERVER_PORT") +MCC_ARGS_CMD="$(printf '%q ' "${MCC_ARGS[@]}")" + +tmux kill-session -t "$MCC_TMUX_SESSION" 2>/dev/null || true +tmux new-session -d -s "$MCC_TMUX_SESSION" -x 160 -y 50 \ + "cd '$REPO_ROOT' && printf '%s\n' \"\$\$\" > '$PID_FILE' && exec env MCC_FILE_INPUT=1 MCC_INPUT_FILE='$INPUT_FILE' dotnet run --project MinecraftClient -c Release --no-build -- $MCC_ARGS_CMD > '$MCC_LOG' 2>&1" + +for _ in $(seq 1 25); do + if [[ -s "$PID_FILE" ]]; then break; fi + sleep 0.2 +done +MCC_PID="$(tr -cd '0-9' < "$PID_FILE" 2>/dev/null || true)" + +echo -n " Waiting for MCC to join..." +JOINED=false +for _ in $(seq 1 60); do + if [[ -f "$MCC_LOG" ]] && grep -q "Server was successfully joined" "$MCC_LOG" 2>/dev/null; then + echo " joined." + JOINED=true + break + fi + echo -n "." + sleep 1 +done +if ! $JOINED; then + echo " TIMEOUT" + echo "MCC log:" + tail -30 "$MCC_LOG" 2>/dev/null + exit 1 +fi + +# Phase 6: Op and prepare player +for _ in 1 2 3; do + if mc-rcon "op $USERNAME" 2>/dev/null | grep -qi "Made"; then break; fi + sleep 2 +done +mc-rcon "gamerule sendCommandFeedback true" 2>/dev/null || true +mc-rcon "time set day" 2>/dev/null || true +mc-rcon "weather clear" 2>/dev/null || true +mc-rcon "gamemode creative $USERNAME" 2>/dev/null || true +sleep 2 + +# Safety +mc-rcon "attribute $USERNAME minecraft:generic.max_health base set 100" 2>/dev/null || true +mc-rcon "effect give $USERNAME minecraft:regeneration 60 4" 2>/dev/null || true +mc-rcon "effect give $USERNAME minecraft:absorption 60 4" 2>/dev/null || true +sleep 1 + +echo "" +echo "--- Base Components ---" + +# 1. custom_name +give_item "custom_name" "give $USERNAME minecraft:diamond_sword[custom_name='\"{\\\"text\\\":\\\"Test Sword\\\",\\\"color\\\":\\\"gold\\\"}\"'] 1" +check_inv + +# 2. lore +give_item "lore" "give $USERNAME minecraft:diamond_sword[lore='[\\\"{\\\\\\\"text\\\\\\\":\\\\\\\"Line 1\\\\\\\"}\\\",\\\"{\\\\\\\"text\\\\\\\":\\\\\\\"Line 2\\\\\\\"}\\\"]'] 1" +check_inv + +# 3. enchantments +if [[ "$VER_GROUP" == "v1206" || "$VER_GROUP" == "v121" || "$VER_GROUP" == "v1212" ]]; then + give_item "enchantments" "give $USERNAME minecraft:diamond_sword[enchantments={levels:{sharpness:3,unbreaking:2},show_in_tooltip:true}] 1" +else + give_item "enchantments" "give $USERNAME minecraft:diamond_sword[enchantments={levels:{sharpness:3,unbreaking:2}}] 1" +fi +check_inv + +# 4. unbreakable +if [[ "$VER_GROUP" == "v1206" || "$VER_GROUP" == "v121" || "$VER_GROUP" == "v1212" ]]; then + give_item "unbreakable" "give $USERNAME minecraft:diamond_sword[unbreakable={}] 1" +else + give_item "unbreakable" "give $USERNAME minecraft:diamond_sword[unbreakable] 1" +fi +check_inv + +# 5. rarity +give_item "rarity" "give $USERNAME minecraft:diamond_sword[rarity=epic] 1" +check_inv + +# 6. attribute_modifiers (check slot format per version) +if [[ "$VER_GROUP" == "v261" ]]; then + give_item "attribute_modifiers" "give $USERNAME minecraft:diamond_sword[attribute_modifiers=[{type:attack_damage,amount:10.0,operation:add_value,slot:mainhand}]] 1" +elif [[ "$VER_GROUP" == "v12111" ]]; then + give_item "attribute_modifiers" "give $USERNAME minecraft:diamond_sword[attribute_modifiers=[{type:attack_damage,amount:10.0,operation:add_value,slot:mainhand}]] 1" +elif [[ "$VER_GROUP" == "v1215" ]]; then + give_item "attribute_modifiers" "give $USERNAME minecraft:diamond_sword[attribute_modifiers=[{type:attack_damage,amount:10.0,operation:add_value,slot:mainhand}]] 1" +elif [[ "$VER_GROUP" == "v1212" ]]; then + give_item "attribute_modifiers" "give $USERNAME minecraft:diamond_sword[attribute_modifiers=[{type:attack_damage,amount:10.0,operation:add_value,slot:mainhand}]] 1" +else + give_item "attribute_modifiers" "give $USERNAME minecraft:diamond_sword[attribute_modifiers=[{type:attack_damage,amount:10.0,operation:add_value,slot:mainhand}]] 1" +fi +check_inv + +# 7. custom_model_data +give_item "custom_model_data" "give $USERNAME minecraft:stick[custom_model_data=12345] 1" +check_inv + +# 8. dyed_color +if [[ "$VER_GROUP" == "v1206" || "$VER_GROUP" == "v121" || "$VER_GROUP" == "v1212" ]]; then + give_item "dyed_color" "give $USERNAME minecraft:leather_chestplate[dyed_color={rgb:16711680}] 1" +else + give_item "dyed_color" "give $USERNAME minecraft:leather_chestplate[dyed_color=16711680] 1" +fi +check_inv + +# 9. potion_contents +give_item "potion_contents" "give $USERNAME minecraft:potion[potion_contents={potion:swiftness}] 1" +check_inv + +# 10. trim +if [[ "$VER_GROUP" == "v1206" || "$VER_GROUP" == "v121" || "$VER_GROUP" == "v1212" ]]; then + give_item "trim" "give $USERNAME minecraft:diamond_helmet[trim={material:redstone,pattern:eye,show_in_tooltip:true}] 1" +else + give_item "trim" "give $USERNAME minecraft:diamond_helmet[trim={material:redstone,pattern:eye}] 1" +fi +check_inv + +# 11. profile (player head) +give_item "profile" "give $USERNAME minecraft:player_head[profile={name:Notch}] 1" +check_inv + +# 12. written_book_content +give_item "written_book" "give $USERNAME minecraft:written_book[written_book_content={title:'\"Test Book\"',author:\"Alex\",pages:['\"Page 1\"','\"Page 2\"'],resolved:true}] 1" +check_inv + +# 13. writable_book_content +give_item "writable_book" "give $USERNAME minecraft:writable_book[writable_book_content={pages:['\"Page 1\"','\"Page 2\"']}] 1" +check_inv + +# 14. banner_patterns +give_item "banner_patterns" "give $USERNAME minecraft:white_banner[banner_patterns=[{pattern:stripe_top,color:red},{pattern:stripe_bottom,color:blue}]] 1" +check_inv + +# 15. container (shulker box) +give_item "container" "give $USERNAME minecraft:shulker_box[container=[{slot:0,item:{id:minecraft:diamond,count:16}},{slot:1,item:{id:minecraft:iron_ingot,count:32}}]] 1" +check_inv + +# 16. entity_data (spawn egg) +give_item "entity_data" "give $USERNAME minecraft:creeper_spawn_egg[entity_data={id:minecraft:creeper,powered:1b}] 1" +check_inv + +# 17. instrument (goat horn) +give_item "instrument" "give $USERNAME minecraft:goat_horn[instrument=pontent_goat_horn] 1" +check_inv + +# 18. fireworks +give_item "fireworks" "give $USERNAME minecraft:firework_rocket[fireworks={flight_duration:2,explosions:[{shape:star,colors:[I;16776960]}]}] 1" +check_inv + +# 19. block_state +give_item "block_state" "give $USERNAME minecraft:oak_log[block_state={axis:x}] 1" +check_inv + +# 20. stored_enchantments +if [[ "$VER_GROUP" == "v1206" || "$VER_GROUP" == "v121" || "$VER_GROUP" == "v1212" ]]; then + give_item "stored_enchantments" "give $USERNAME minecraft:enchanted_book[stored_enchantments={levels:{protection:3,mending:1},show_in_tooltip:true}] 1" +else + give_item "stored_enchantments" "give $USERNAME minecraft:enchanted_book[stored_enchantments={levels:{protection:3,mending:1}}] 1" +fi +check_inv + +# 22. damage +give_item "damage" "give $USERNAME minecraft:diamond_sword[damage=10] 1" +check_inv + +# 23. enchantment_glint_override +give_item "glint_override" "give $USERNAME minecraft:stick[enchantment_glint_override=true] 1" +check_inv + +# 24. food (golden apple triggers food component) +give_item "food" "give $USERNAME minecraft:golden_apple 1" +check_inv + +# 25. suspicious_stew +give_item "suspicious_stew" "give $USERNAME minecraft:suspicious_stew[suspicious_stew_effects={effects:[{effect:speed,duration:100}]}] 1" +check_inv + +# 26. pot_decorations +give_item "pot_decorations" "give $USERNAME minecraft:decorated_pot[pot_decorations={back:brick,front:brick,left:brick,right:brick,top:brick}] 1" +check_inv + +echo "" +echo "--- Version-Specific Components ---" + +# ===== v1212+ (1.21.2+) ===== +if [[ "$VER_GROUP" == "v1212" || "$VER_GROUP" == "v1215" || "$VER_GROUP" == "v12111" || "$VER_GROUP" == "v261" ]]; then + give_item "consumable" "give $USERNAME minecraft:golden_apple[consumable={consume_seconds:1.6,animation:eat,sound:entity.generic.eat,has_consume_particles:true}] 1" + check_inv + + give_item "equippable" "give $USERNAME minecraft:carved_pumpkin[equippable={slot:head,equip_sound:item.armor.equip_iron}] 1" + check_inv + + give_item "glider" "give $USERNAME minecraft:elytra[glider] 1" + check_inv + + give_item "tooltip_style" "give $USERNAME minecraft:stick[tooltip_style=minecraft:default] 1" + check_inv + + give_item "death_protection" "give $USERNAME minecraft:totem_of_undying 1" + check_inv + + give_item "repairable" "give $USERNAME minecraft:diamond_sword[repairable={items:[diamond]}] 1" + check_inv + + # ominous_bottle and ominous_bottle_amplifier exist since 1.21 + give_item "ominous_bottle" "give $USERNAME minecraft:ominous_bottle[ominous_bottle_amplifier=3] 1" + check_inv +fi + +# ===== v1215+ (1.21.5+) ===== +if [[ "$VER_GROUP" == "v1215" || "$VER_GROUP" == "v12111" || "$VER_GROUP" == "v261" ]]; then + give_item "weapon" "give $USERNAME minecraft:diamond_sword[weapon={item_damage_per_attack:2}] 1" + check_inv + + give_item "blocks_attacks" "give $USERNAME minecraft:shield[blocks_attacks={block_sound:item.shield.block,block_delay:5,disable_blocking_for_ticks:100}] 1" + check_inv + + give_item "tooltip_display" "give $USERNAME minecraft:diamond_sword[tooltip_display={hide_tooltip:true}] 1" + check_inv + + give_item "potion_duration_scale" "give $USERNAME minecraft:ominous_bottle[potion_duration_scale=1.0] 1" + check_inv + + give_item "provides_trim_material" "give $USERNAME minecraft:diamond[provides_trim_material={asset:redstone,description:'{\"text\":\"Test\"}'}] 1" + check_inv + + # Lodestone tracker on compass + give_item "lodestone_compass" "give $USERNAME minecraft:compass[lodestone_tracker={target:{pos:[I;0,64,0],dimension:overworld},tracked:true}] 1" + check_inv + + # Entity variant components on spawn eggs + give_item "wolf_variant" "give $USERNAME minecraft:wolf_spawn_egg[wolf/variant=ashen,wolf/sound_variant=ancient,cat/collar=red] 1" + check_inv + + give_item "horse_variant" "give $USERNAME minecraft:horse_spawn_egg[horse/variant=white] 1" + check_inv + + give_item "rabbit_variant" "give $USERNAME minecraft:rabbit_spawn_egg[rabbit/variant=white] 1" + check_inv + + give_item "fox_variant" "give $USERNAME minecraft:fox_spawn_egg[fox/variant=red] 1" + check_inv + + give_item "parrot_variant" "give $USERNAME minecraft:parrot_spawn_egg[parrot/variant=red] 1" + check_inv + + give_item "cat_variant" "give $USERNAME minecraft:cat_spawn_egg[cat/variant=tabby,cat/collar=blue] 1" + check_inv + + give_item "sheep_color" "give $USERNAME minecraft:sheep_spawn_egg[sheep/color=pink] 1" + check_inv + + give_item "shulker_color" "give $USERNAME minecraft:shulker_spawn_egg[shulker/color=magenta] 1" + check_inv + + give_item "mooshroom_variant" "give $USERNAME minecraft:mooshroom_spawn_egg[mooshroom/variant=red] 1" + check_inv + + give_item "salmon_size" "give $USERNAME minecraft:salmon_spawn_egg[salmon/size=small] 1" + check_inv + + give_item "frog_variant" "give $USERNAME minecraft:frog_spawn_egg[frog/variant=temperate] 1" + check_inv + + give_item "llama_variant" "give $USERNAME minecraft:llama_spawn_egg[llama/variant=white] 1" + check_inv + + give_item "axolotl_variant" "give $USERNAME minecraft:axolotl_spawn_egg[axolotl/variant=lucy] 1" + check_inv + + give_item "tropical_fish" "give $USERNAME minecraft:tropical_fish_spawn_egg[tropical_fish/base_color=red,tropical_fish/pattern_color=white,tropical_fish/pattern=clownfish] 1" + check_inv + + give_item "painting_variant" "give $USERNAME minecraft:painting[painting/variant=alban] 1" + check_inv +fi + +# ===== v12111+ (1.21.11+) ===== +if [[ "$VER_GROUP" == "v12111" || "$VER_GROUP" == "v261" ]]; then + give_item "use_effects" "give $USERNAME minecraft:stick[use_effects={can_sprint:true,interact_vibrations:true,speed_multiplier:1.0}] 1" + check_inv + + give_item "attack_range" "give $USERNAME minecraft:diamond_sword[attack_range={min_range:0.0,max_range:4.0,min_creative_range:0.0,max_creative_range:5.0,hitbox_margin:0.5,mob_factor:0.5}] 1" + check_inv + + give_item "piercing_weapon" "give $USERNAME minecraft:trident[piercing_weapon={deals_knockback:true,dismounts:true}] 1" + check_inv + + give_item "kinetic_weapon" "give $USERNAME minecraft:mace[kinetic_weapon={contact_cooldown_ticks:20,delay_ticks:10,forward_movement:0.0,damage_multiplier:1.0}] 1" + check_inv + + give_item "swing_animation" "give $USERNAME minecraft:diamond_sword[swing_animation={animation:whack,duration:6}] 1" + check_inv + + give_item "minimum_attack_charge" "give $USERNAME minecraft:diamond_sword[minimum_attack_charge=0.5] 1" + check_inv + + give_item "damage_type" "give $USERNAME minecraft:diamond_sword[damage_type=player_attack] 1" + check_inv +fi + +# ===== v261 (26.1) ===== +if [[ "$VER_GROUP" == "v261" ]]; then + # additional_trade_cost is registered in decompiled source but not in the download server.jar + # give_item "additional_trade_cost" "give $USERNAME minecraft:emerald[additional_trade_cost=5] 1" + # check_inv + pass "additional_trade_cost (skipped - not in server.jar)" + + give_item "dye" "give $USERNAME minecraft:red_dye[dye=red] 1" + check_inv + + give_item "pig_variant" "give $USERNAME minecraft:pig_spawn_egg[pig/variant=pig] 1" + check_inv + + give_item "cow_variant" "give $USERNAME minecraft:cow_spawn_egg[cow/variant=cow] 1" + check_inv + + give_item "chicken_variant" "give $USERNAME minecraft:chicken_spawn_egg[chicken/variant=chicken,chicken/sound_variant=chicken] 1" + check_inv + + give_item "pig_sound_variant" "give $USERNAME minecraft:pig_spawn_egg[pig/sound_variant=pig] 1" + check_inv + + give_item "cow_sound_variant" "give $USERNAME minecraft:cow_spawn_egg[cow/sound_variant=cow] 1" + check_inv + + give_item "cat_sound_variant" "give $USERNAME minecraft:cat_spawn_egg[cat/sound_variant=cat] 1" + check_inv + + give_item "zombie_nautilus_variant" "give $USERNAME minecraft:zombie_spawn_egg[zombie_nautilus/variant=zombie] 1" + check_inv +fi + +echo "" +echo "--- Entity Testing ---" + +# Summon mobs via RCON (give spawn eggs, then use /summon for entity tracking) +# /summon doesn't go through RCON normally; instead give spawn eggs and use them +mc-rcon "give $USERNAME minecraft:creeper_spawn_egg[entity_data={id:creeper,powered:1b}] 1" 2>/dev/null || true +mc-rcon "give $USERNAME minecraft:zombie_spawn_egg 1" 2>/dev/null || true +mc-rcon "give $USERNAME minecraft:skeleton_spawn_egg 1" 2>/dev/null || true +sleep 1 +mcc-cmd --session "$SESSION" "inventory player list" 2>/dev/null || true +mcc-cmd --session "$SESSION" "entity" 2>/dev/null || true +sleep 3 +pass "entity_items_given_and_listed" +check_inv + +# Health/effects test +mcc-cmd --session "$SESSION" "health" 2>/dev/null || true +sleep 2 +pass "health_command" +check_inv + +echo "" +echo "=== Results: $VERSION ===" +echo " Passed: $PASS_COUNT" +echo " Failed: $FAIL_COUNT" +if [[ ${#FAILURES[@]} -gt 0 ]]; then + echo " Failures:" + for f in "${FAILURES[@]}"; do printf ' - %s\n' "$f"; done +fi +echo " Log: $MCC_LOG" + +[[ $FAIL_COUNT -eq 0 ]] && exit 0 || exit 1 diff --git a/tools/test-mcc-env.sh b/tools/test-mcc-env.sh new file mode 100755 index 00000000..38c50c84 --- /dev/null +++ b/tools/test-mcc-env.sh @@ -0,0 +1,140 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +source "$REPO_ROOT/tools/mcc-env.sh" + +assert_eq() { + local expected="$1" + local actual="$2" + local label="$3" + if [[ "$expected" != "$actual" ]]; then + echo "FAIL: $label" >&2 + echo " expected: $expected" >&2 + echo " actual: $actual" >&2 + exit 1 + fi +} + +assert_regex() { + local regex="$1" + local actual="$2" + local label="$3" + if [[ ! "$actual" =~ $regex ]]; then + echo "FAIL: $label" >&2 + echo " regex: $regex" >&2 + echo " actual: $actual" >&2 + exit 1 + fi +} + +tmpfs_build_base() { + if [[ -d /dev/shm && -w /dev/shm ]]; then + printf '/dev/shm' + else + printf '%s' "${TMPDIR:-/tmp}" + fi +} + +session="$(_mcc_resolve_session "demo-branch")" +assert_eq "demo-branch" "$session" "explicit session" + +short_name="$(_mcc_resolve_username "feature-ai")" +assert_eq "mcc_feature_ai" "$short_name" "short derived username" + +long_name="$(_mcc_resolve_username "very-long-worktree-name")" +assert_regex '^mcc_[a-z0-9_]{7}_[0-9a-f]{4}$' "$long_name" "long derived username shape" +assert_eq "16" "${#long_name}" "long derived username length" + +assert_eq "${TMPDIR:-/tmp}/mcc-debug/demo-branch" "$(_mcc_session_root "demo-branch")" "session root" +assert_eq "mcc-demo-branch" "$(_mcc_tmux_session_name "demo-branch")" "tmux session name" + +MCC_BUILD_MODE=tmpfs + +original_repo_root="$MCC_REPO_ROOT" +fallback_root="$REPO_ROOT/nonexistent-worktree" +MCC_REPO_ROOT="$fallback_root" + +fallback_session="$(_mcc_resolve_session)" +assert_eq "$(basename "$fallback_root")" "$fallback_session" "session fallback without git" + +fallback_build_root="$(_mcc_build_root)" +tmpfs_base="$(tmpfs_build_base)" +expected_fallback_root="$tmpfs_base/mcc-build/$(basename "$fallback_root")" +assert_eq "$expected_fallback_root" "$fallback_build_root" "tmpfs build root fallback" + +MCC_REPO_ROOT="$original_repo_root" + +build_root="$(_mcc_build_root)" +expected_prefix="$(tmpfs_build_base)/mcc-build/" +if [[ "$build_root" != "$expected_prefix"* ]]; then + echo "FAIL: tmpfs build root" >&2 + echo " expected prefix: $expected_prefix" >&2 + echo " actual: $build_root" >&2 + exit 1 +fi + +dotnet_env_build_root="$(_mcc_dotnet_env env | awk -F= '$1=="MCC_BUILD_ROOT" { print $2 }')" +assert_eq "$build_root" "$dotnet_env_build_root" "dotnet env wrapper exports MCC_BUILD_ROOT" + +mkdir -p "$build_root/probe" +mcc-build-clean +[[ ! -e "$build_root/probe" ]] + +session="wrapper-smoke" +input_file="$(_mcc_session_input_file "$session")" +rm -rf "$(_mcc_session_root "$session")" + +mcc-cmd --session "$session" debug state +input_contents="$(cat "$input_file")" +assert_eq "debug state" "$input_contents" "session input command is intact" + +mcc-reset-session --session "$session" +[[ ! -e "$(_mcc_session_root "$session")" ]] +malformed_log="${TMPDIR:-/tmp}/mcc-env-session-hang-test.log" +for func in mcc-cmd mcc-reset-session mcc-state mcc-log-mcc mcc-run mcc-tui; do + set +e + "$func" --session >"$malformed_log" 2>&1 + status=$? + set -e + if [[ $status -eq 0 ]]; then + echo "FAIL: $func accepted --session without a value" >&2 + cat "$malformed_log" >&2 + exit 1 + fi + grep -Fq -- "--session requires a value" "$malformed_log" +done + +guard_root="$(mktemp -d "${TMPDIR:-/tmp}/mcc-env-guard.XXXXXX")" +MCC_SERVERS="$guard_root" +mkdir -p "$MCC_SERVERS/testver" +printf 'unchanged\n' > "$MCC_SERVERS/testver/stdin.pipe" + +confirm_log="${TMPDIR:-/tmp}/mcc-env-confirm-guard.log" +for cmd in \ + "mc-stop testver" \ + "mc-kill testver" \ + "mc-reset-test-env testver" +do + set +e + eval "$cmd" >"$confirm_log" 2>&1 + status=$? + set -e + if [[ $status -eq 0 ]]; then + echo "FAIL: $cmd ran without --confirm" >&2 + cat "$confirm_log" >&2 + exit 1 + fi + grep -Fq -- "--confirm" "$confirm_log" + grep -Fq "Keep shared servers running by default" "$confirm_log" +done + +stdin_contents="$(cat "$MCC_SERVERS/testver/stdin.pipe")" +assert_eq "unchanged" "$stdin_contents" "mc-stop without confirm does not touch stdin pipe" + +: > "$MCC_SERVERS/testver/stdin.pipe" +mc-stop testver --confirm +assert_eq "stop" "$(cat "$MCC_SERVERS/testver/stdin.pipe")" "mc-stop with confirm writes to stdin pipe" + +echo "PASS" diff --git a/tools/testing/auto_relog_fault_proxy.py b/tools/testing/auto_relog_fault_proxy.py new file mode 100755 index 00000000..63e58249 --- /dev/null +++ b/tools/testing/auto_relog_fault_proxy.py @@ -0,0 +1,179 @@ +#!/usr/bin/env python3 +"""TCP proxy for repeatable Auto Relog connection-loss tests.""" + +from __future__ import annotations + +import argparse +import asyncio +import socket +import struct +import time +from contextlib import suppress + + +class FaultProxy: + def __init__( + self, + upstream_host: str, + upstream_port: int, + drop_after: float, + outage_seconds: float, + cycles: int, + reset_connection: bool, + ) -> None: + self.upstream_host = upstream_host + self.upstream_port = upstream_port + self.drop_after = drop_after + self.outage_seconds = outage_seconds + self.remaining_cycles = cycles + self.reset_connection = reset_connection + self.outage_until = 0.0 + self.state_lock = asyncio.Lock() + + async def handle_connection( + self, + client_reader: asyncio.StreamReader, + client_writer: asyncio.StreamWriter, + ) -> None: + peer = client_writer.get_extra_info("peername") + if time.monotonic() < self.outage_until: + print(f"reject peer={peer} reason=outage", flush=True) + await self.close_writer(client_writer) + return + + try: + server_reader, server_writer = await asyncio.open_connection( + self.upstream_host, + self.upstream_port, + ) + except OSError as exception: + print(f"reject peer={peer} reason=upstream error={exception}", flush=True) + await self.close_writer(client_writer) + return + + async with self.state_lock: + inject_fault = self.remaining_cycles != 0 + if self.remaining_cycles > 0: + self.remaining_cycles -= 1 + + print(f"connected peer={peer} inject_fault={inject_fault}", flush=True) + drop_task = ( + asyncio.create_task(self.drop_connection(client_writer, server_writer)) + if inject_fault + else None + ) + + relays = [ + asyncio.create_task(self.relay(client_reader, server_writer)), + asyncio.create_task(self.relay(server_reader, client_writer)), + ] + try: + await asyncio.wait(relays, return_when=asyncio.FIRST_COMPLETED) + finally: + for task in relays: + task.cancel() + if drop_task is not None: + drop_task.cancel() + await asyncio.gather(*relays, return_exceptions=True) + if drop_task is not None: + await asyncio.gather(drop_task, return_exceptions=True) + await self.close_writer(client_writer) + await self.close_writer(server_writer) + + async def drop_connection( + self, + client_writer: asyncio.StreamWriter, + server_writer: asyncio.StreamWriter, + ) -> None: + await asyncio.sleep(self.drop_after) + async with self.state_lock: + self.outage_until = max( + self.outage_until, + time.monotonic() + self.outage_seconds, + ) + + mode = "reset" if self.reset_connection else "graceful" + print(f"drop mode={mode} outage_seconds={self.outage_seconds}", flush=True) + if self.reset_connection: + self.set_reset_on_close(client_writer) + self.set_reset_on_close(server_writer) + client_writer.close() + server_writer.close() + + @staticmethod + async def relay( + reader: asyncio.StreamReader, + writer: asyncio.StreamWriter, + ) -> None: + while data := await reader.read(64 * 1024): + writer.write(data) + await writer.drain() + + @staticmethod + def set_reset_on_close(writer: asyncio.StreamWriter) -> None: + raw_socket = writer.get_extra_info("socket") + if raw_socket is not None: + raw_socket.setsockopt( + socket.SOL_SOCKET, + socket.SO_LINGER, + struct.pack("ii", 1, 0), + ) + + @staticmethod + async def close_writer(writer: asyncio.StreamWriter) -> None: + writer.close() + with suppress(ConnectionError, OSError): + await writer.wait_closed() + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--listen-host", default="127.0.0.1") + parser.add_argument("--listen-port", type=int, required=True) + parser.add_argument("--upstream-host", default="127.0.0.1") + parser.add_argument("--upstream-port", type=int, required=True) + parser.add_argument("--drop-after", type=float, default=5.0) + parser.add_argument("--outage-seconds", type=float, default=10.0) + parser.add_argument( + "--cycles", + type=int, + default=1, + help="Connections to drop. Use -1 to drop every forwarded connection.", + ) + parser.add_argument( + "--mode", + choices=("graceful", "reset"), + default="graceful", + ) + args = parser.parse_args() + if args.drop_after < 0 or args.outage_seconds < 0 or args.cycles < -1: + parser.error("drop and outage values must be nonnegative; cycles must be -1 or greater") + return args + + +async def main() -> None: + args = parse_args() + proxy = FaultProxy( + args.upstream_host, + args.upstream_port, + args.drop_after, + args.outage_seconds, + args.cycles, + args.mode == "reset", + ) + server = await asyncio.start_server( + proxy.handle_connection, + args.listen_host, + args.listen_port, + ) + addresses = ", ".join(str(sock.getsockname()) for sock in server.sockets or []) + print(f"listening addresses={addresses}", flush=True) + async with server: + await server.serve_forever() + + +if __name__ == "__main__": + try: + asyncio.run(main()) + except KeyboardInterrupt: + pass diff --git a/tools/translate_crowdin.py b/tools/translate_crowdin.py new file mode 100644 index 00000000..976a36ef --- /dev/null +++ b/tools/translate_crowdin.py @@ -0,0 +1,997 @@ +#!/usr/bin/env python3 +"""Translate Crowdin XLIFF bundles via Alibaba Cloud Qwen-MT API. + +Workflow: + 1. Download a Crowdin bundle (or reuse an existing one) + 2. Parse XLIFF files, extract needs-translation entries + 3. Call Qwen-MT for each entry independently + 4. Generate per-language XLIFF with translated entries only + 5. Upload via `crowdin file upload --xliff` + +Requires: Python 3.10+, crowdin CLI, ALI_BAILIAN_API_KEY env var. +No third-party Python packages needed (uses urllib for API calls). +""" + +from __future__ import annotations + +import argparse +import json +import logging +import os +import re +import subprocess +import sys +import textwrap +import time +import urllib.error +import urllib.request +import xml.etree.ElementTree as ET +import zipfile +from dataclasses import dataclass, field +from pathlib import Path + +XLIFF_NS = "urn:oasis:names:tc:xliff:document:1.2" +NS = {"x": XLIFF_NS} + +REPO_ROOT = Path(__file__).resolve().parent.parent +WORK_DIR = REPO_ROOT / ".crowdin-translate" +BUNDLES_DIR = WORK_DIR / "bundles" +ERRORS_DIR = WORK_DIR / "errors" +DOMAIN_PROMPT_CACHE_DIR = WORK_DIR / "domain-prompt-cache" + +QWEN_MT_API_URL = os.environ.get( + "QWEN_MT_API_URL", + "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions", +) + +DOMAIN_PROMPT = """The sentence is from Minecraft Console Client (MCC), a text-based client for Minecraft Java Edition. Content includes application UI strings, bot/automation configuration, internal commands, status messages, and user documentation covering inventory, terrain, entities, crafting, movement, server connection, and CLI/configuration topics. +When translating, prioritize official Minecraft in-game terminology. Where the player community has widely adopted different terms, prefer the more recognizable one. Translate into this Minecraft client-tool domain style.""" + +# Crowdin locale -> (Qwen-MT target_lang, Crowdin CLI -l id, extra domain note) +LANGUAGE_MAP: dict[str, tuple[str, str, str]] = { + "af_ZA": ("Afrikaans", "af", ""), + "ar_SA": ("Arabic", "ar", ""), + "az_AZ": ("North Azerbaijani", "az", ""), + "ca_ES": ("Catalan", "ca", ""), + "cs_CZ": ("Czech", "cs", ""), + "da_DK": ("Danish", "da", ""), + "de_DE": ("German", "de", ""), + "el_GR": ("Greek", "el", ""), + "es_ES": ("Spanish", "es-ES", ""), + "fi_FI": ("Finnish", "fi", ""), + "fr_FR": ("French", "fr", ""), + "he_IL": ("Hebrew", "he", ""), + "hi_IN": ("Hindi", "hi", ""), + "hu_HU": ("Hungarian", "hu", ""), + "id_ID": ("Indonesian", "id", ""), + "it_IT": ("Italian", "it", ""), + "ja_JP": ("Japanese", "ja", ""), + "ko_KR": ("Korean", "ko", ""), + "lv_LV": ("Latvian", "lv", ""), + "nl_NL": ("Dutch", "nl", ""), + "no_NO": ("Norwegian Bokmål", "no", ""), + "pl_PL": ("Polish", "pl", ""), + "pt_BR": ("Portuguese", "pt-BR", "Translate into Brazilian Portuguese."), + "pt_PT": ("Portuguese", "pt-PT", "Translate into European Portuguese."), + "ro_RO": ("Romanian", "ro", ""), + "ru_RU": ("Russian", "ru", ""), + "sr_SP": ("Serbian", "sr", ""), + "sv_SE": ("Swedish", "sv-SE", ""), + "fil_PH": ("Tagalog", "fil", ""), + "tr_TR": ("Turkish", "tr", ""), + "uk_UA": ("Ukrainian", "uk", ""), + "vi_VN": ("Vietnamese", "vi", ""), + "zh_CN": ("Chinese", "zh-CN", ""), + "zh_TW": ("Traditional Chinese", "zh-TW", ""), +} + +# Locales with significant active users (based on usage analytics). +# Used as the default set when --languages is not specified. +# Pass --languages all to translate every locale in LANGUAGE_MAP. +DEFAULT_LOCALES: list[str] = [ + "zh_CN", # CN ~920 + "tr_TR", # TR ~380 + "de_DE", # DE ~190 + "pl_PL", # PL ~180 + "vi_VN", # VN ~160 + "hi_IN", # IN ~100 + "ru_RU", # RU ~100 + "fr_FR", # FR ~90 + "zh_TW", # TW ~80 + "nl_NL", # NL ~70 + "ja_JP", # JP ~60 + "pt_BR", # BR ~55 + "sv_SE", # SE ~45 + "fi_FI", # FI ~40 + "uk_UA", # UA ~35 + "id_ID", # ID ~30 + "it_IT", # IT ~25 + "fil_PH", # PH ~20 +] + +log = logging.getLogger("translate_crowdin") + + +# --------------------------------------------------------------------------- +# Data structures +# --------------------------------------------------------------------------- + +@dataclass +class FileInfo: + file_id: str + original: str + source_language: str + target_language: str + project_id: str + attrs: dict[str, str] = field(default_factory=dict) + + +@dataclass +class TransUnit: + id: str + source: str + target_text: str + context: str | None = None + resname: str | None = None + file_info: FileInfo | None = None + translated: str | None = None + + +# --------------------------------------------------------------------------- +# XLIFF parsing +# --------------------------------------------------------------------------- + +def parse_xliff( + path: Path, *, + exclude_paths: list[str] | None = None, + include_paths: list[str] | None = None, +) -> list[TransUnit]: + """Parse an XLIFF 1.2 file, return trans-units with state=needs-translation. + + include_paths: if set, only keep <file> elements whose ``original`` + starts with (or equals) one of these prefixes. Takes priority over + exclude_paths. + + exclude_paths: skip <file> elements whose ``original`` starts with any + of these prefixes (e.g. ``["/docs/"]``). + """ + tree = ET.parse(path) + root = tree.getroot() + units: list[TransUnit] = [] + + for file_elem in root.findall(f"{{{XLIFF_NS}}}file"): + original = file_elem.get("original", "") + if include_paths: + if not any(original == p or original.startswith(p.rstrip("/") + "/") + or original == p.rstrip("/") + for p in include_paths): + continue + elif exclude_paths and any(original.startswith(p) for p in exclude_paths): + continue + finfo = FileInfo( + file_id=file_elem.get("id", ""), + original=file_elem.get("original", ""), + source_language=file_elem.get("source-language", "en"), + target_language=file_elem.get("target-language", ""), + project_id=file_elem.get("project-id", ""), + attrs={k: v for k, v in file_elem.attrib.items()}, + ) + + body = file_elem.find(f"{{{XLIFF_NS}}}body") + if body is None: + continue + + for tu in body.findall(f"{{{XLIFF_NS}}}trans-unit"): + target_elem = tu.find(f"{{{XLIFF_NS}}}target") + if target_elem is None or target_elem.get("state") != "needs-translation": + continue + + source_elem = tu.find(f"{{{XLIFF_NS}}}source") + source_text = source_elem.text or "" if source_elem is not None else "" + target_text = target_elem.text or "" + + ctx = None + cg = tu.find(f"{{{XLIFF_NS}}}context-group") + if cg is not None: + ctx_elem = cg.find(f"{{{XLIFF_NS}}}context") + if ctx_elem is not None and ctx_elem.text: + ctx = ctx_elem.text.strip() + + units.append(TransUnit( + id=tu.get("id", ""), + source=source_text, + target_text=target_text, + context=ctx, + resname=tu.get("resname"), + file_info=finfo, + )) + + return units + + +# --------------------------------------------------------------------------- +# Qwen-MT API +# --------------------------------------------------------------------------- + +def call_qwen_mt( + source_text: str, + target_lang: str, + model: str, + api_key: str, + context: str | None = None, + extra_domain: str = "", +) -> str: + """Call Qwen-MT translation API. Returns translated text.""" + domains = DOMAIN_PROMPT + if extra_domain: + domains += "\n" + extra_domain + # if context: + # domains += f"\nText key: {context}" + # domains += f"(THE ABOVE IS NOT CONTENT TO BE TRANSLATED!)" + + payload = { + "model": model, + "messages": [{"role": "user", "content": source_text}], + "translation_options": { + "source_lang": "English", + "target_lang": target_lang, + "domains": domains, + }, + } + + data = json.dumps(payload, ensure_ascii=False).encode("utf-8") + req = urllib.request.Request( + QWEN_MT_API_URL, + data=data, + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {api_key}", + }, + method="POST", + ) + + with urllib.request.urlopen(req, timeout=60) as resp: + body = json.loads(resp.read().decode("utf-8")) + + return body["choices"][0]["message"]["content"] + + +# --------------------------------------------------------------------------- +# Domain-prompt leak detection +# --------------------------------------------------------------------------- + +_LEAK_FINGERPRINTS_EN = [ + "cross-platform, text-based third-party client", + "Mojang's localization for the target language", + "keep the English name or translate descriptively", + "Preserve all placeholders ({0})", + "Translate into this Minecraft client-tool domain style", + "command syntax (/command <arg>)", + "bot/automation configuration, internal commands", +] + + +def _split_into_fragments(text: str, min_len: int = 6) -> list[str]: + """Split translated domain prompt into sentence-level fragments.""" + raw = re.split(r'[。.\.\n!!??;;::\u3002]', text) + seen: set[str] = set() + fragments: list[str] = [] + for frag in raw: + frag = frag.strip() + if len(frag) >= min_len and frag not in seen: + seen.add(frag) + fragments.append(frag) + return fragments + + +def _deduplicate_prompt_translation(text: str) -> str: + """Remove duplicate paragraphs from a cached domain prompt translation. + + The API occasionally returns the translation twice (or more) in a single + response. We split on blank lines, keep the first occurrence of each + paragraph, and rejoin. + """ + paragraphs = text.split("\n") + seen: set[str] = set() + unique: list[str] = [] + for para in paragraphs: + key = para.strip() + if key not in seen: + seen.add(key) + unique.append(para) + return "\n".join(unique).strip() + + +def _char_ngrams(text: str, n: int = 5) -> set[str]: + """Generate character n-grams from text (whitespace normalized).""" + t = re.sub(r'\s+', '', text) + return {t[i:i + n] for i in range(len(t) - n + 1)} if len(t) >= n else set() + + +def _shingle_similarity(reference_grams: set[str], candidate: str, + n: int = 5) -> float: + """Fraction of reference n-grams found in candidate text.""" + if not reference_grams: + return 0.0 + cand_grams = _char_ngrams(candidate, n) + return len(reference_grams & cand_grams) / len(reference_grams) + + +def ensure_domain_prompt_cached( + locale: str, + target_lang: str, + api_key: str, + model: str, +) -> tuple[str, list[str]]: + """Translate DOMAIN_PROMPT into target language, cache it, return (full_text, fragments). + + On subsequent runs the cached file is reused without an API call. + """ + DOMAIN_PROMPT_CACHE_DIR.mkdir(parents=True, exist_ok=True) + cache_file = DOMAIN_PROMPT_CACHE_DIR / f"{locale}.txt" + + if cache_file.exists(): + text = cache_file.read_text(encoding="utf-8") + deduped = _deduplicate_prompt_translation(text) + if deduped != text.strip(): + log.info(" Fixed duplicate content in cache for %s, rewriting", + locale) + cache_file.write_text(deduped, encoding="utf-8") + text = deduped + log.info(" Loaded cached domain prompt translation for %s", locale) + else: + log.info(" Translating domain prompt into %s for leak detection ...", + target_lang) + text = call_qwen_mt( + source_text=DOMAIN_PROMPT, + target_lang=target_lang, + model=model, + api_key=api_key, + ) + text = _deduplicate_prompt_translation(text) + cache_file.write_text(text, encoding="utf-8") + log.info(" Cached domain prompt translation -> %s", cache_file) + + return text, _split_into_fragments(text) + + +class DomainLeakDetector: + """Detect and clean translations that contain leaked domain-prompt text. + + Uses the original English fingerprints plus per-language fragments + obtained by translating the domain prompt itself. A character n-gram + (shingling) similarity check catches paraphrased leaks that exact + substring matching would miss. + """ + + NGRAM_SIZE = 5 + FULL_TEXT_THRESHOLD = 0.25 + LINE_THRESHOLD = 0.35 + + def __init__(self, cached_fragments: list[str] | None = None, + cached_full_text: str = ""): + self._en = list(_LEAK_FINGERPRINTS_EN) + self._translated = cached_fragments or [] + self._full_text = cached_full_text + self._prompt_grams = _char_ngrams(cached_full_text, self.NGRAM_SIZE) + self._fragment_grams = [ + _char_ngrams(f, self.NGRAM_SIZE) for f in self._translated + ] + + def detect(self, source: str, translated: str) -> bool: + for fp in self._en: + if fp in translated and fp not in source: + return True + for fp in self._translated: + if fp in translated and fp not in source: + return True + if self._prompt_grams: + sim = _shingle_similarity(self._prompt_grams, translated, + self.NGRAM_SIZE) + if sim > self.FULL_TEXT_THRESHOLD: + return True + for fg in self._fragment_grams: + if fg and _shingle_similarity(fg, translated, self.NGRAM_SIZE) > self.LINE_THRESHOLD: + return True + return False + + def _is_leak_line(self, line: str, source: str) -> bool: + all_fps = self._en + self._translated + if any(fp in line for fp in all_fps if fp not in source): + return True + if len(line.strip()) <= 10: + return False + for fg in self._fragment_grams: + if fg and _shingle_similarity(fg, line, self.NGRAM_SIZE) > self.LINE_THRESHOLD: + return True + return False + + def postprocess(self, source: str, translated: str) -> str | None: + """Return cleaned translation, or None if unsalvageable.""" + if not self.detect(source, translated): + return translated + + lines = translated.split("\n") + clean = [ln for ln in lines if not self._is_leak_line(ln, source)] + cleaned = "\n".join(clean).strip() + if not cleaned or len(cleaned) < max(len(source) * 0.2, 1): + return None + if self.detect(source, cleaned): + return None + return cleaned + + +# --------------------------------------------------------------------------- +# Rate-limited translator +# --------------------------------------------------------------------------- + +MAX_RETRIES = 6 +INITIAL_BACKOFF = 2.0 # seconds + + +class RateLimitedTranslator: + """Single-threaded translator with strict RPM pacing and 429 retry.""" + + def __init__(self, api_key: str, model: str, rpm: int, target_lang: str, + extra_domain: str = "", + leak_detector: DomainLeakDetector | None = None): + self.api_key = api_key + self.model = model + self.rpm = rpm + self.target_lang = target_lang + self.extra_domain = extra_domain + self.detector = leak_detector or DomainLeakDetector() + self._interval = 60.0 / rpm + self._last_call = 0.0 + + def _pace(self) -> None: + """Sleep to enforce strict RPM spacing between requests.""" + now = time.monotonic() + wait = self._interval - (now - self._last_call) + if wait > 0: + time.sleep(wait) + self._last_call = time.monotonic() + + def translate_one(self, unit: TransUnit) -> TransUnit: + """Translate a single TransUnit with rate limiting and retry on 429.""" + leak_retries = 0 + for attempt in range(MAX_RETRIES + 1): + self._pace() + try: + result = call_qwen_mt( + source_text=unit.source, + target_lang=self.target_lang, + model=self.model, + api_key=self.api_key, + context=unit.context, + extra_domain=self.extra_domain, + ) + cleaned = self.detector.postprocess(unit.source, result) + if cleaned is None and leak_retries < 2: + leak_retries += 1 + log.warning("Domain prompt leak in unit %s, retrying (%d/2)", + unit.id, leak_retries) + continue + if cleaned is None: + log.warning("Domain prompt leak in unit %s persists after " + "retries, skipping", unit.id) + unit.translated = None + return unit + result = cleaned + leading = len(unit.source) - len(unit.source.lstrip(" ")) + if leading > 0 and not result.startswith(" " * leading): + result = " " * leading + result.lstrip(" ") + unit.translated = result + return unit + except urllib.error.HTTPError as exc: + if exc.code == 429 and attempt < MAX_RETRIES: + backoff = INITIAL_BACKOFF * (2 ** attempt) + log.warning("429 on unit %s, retry %d/%d after %.1fs", + unit.id, attempt + 1, MAX_RETRIES, backoff) + time.sleep(backoff) + self._last_call = time.monotonic() + continue + log.warning("Failed to translate unit %s: %s", unit.id, exc) + unit.translated = None + return unit + except Exception as exc: + log.warning("Failed to translate unit %s: %s", unit.id, exc) + unit.translated = None + return unit + return unit + + def translate_batch(self, units: list[TransUnit], + progress_callback=None) -> tuple[list[TransUnit], bool]: + """Translate a list of units sequentially with strict RPM pacing. + + Returns (results, interrupted): results may be partial if the user + pressed Ctrl-C. The caller should still persist whatever was completed. + """ + if not units: + return units, False + + results: list[TransUnit] = [] + interrupted = False + for i, u in enumerate(units): + try: + self.translate_one(u) + except KeyboardInterrupt: + log.warning("Ctrl-C during translation, finishing up...") + interrupted = True + break + results.append(u) + if progress_callback: + progress_callback(i + 1, len(units)) + + return results, interrupted + + +# --------------------------------------------------------------------------- +# XLIFF output generation +# --------------------------------------------------------------------------- + +def generate_output_xliff(units: list[TransUnit], target_language_xliff: str) -> str: + """Generate an XLIFF 1.2 string containing only successfully translated units.""" + translated = [u for u in units if u.translated] + if not translated: + return "" + + by_file: dict[str, list[TransUnit]] = {} + for u in translated: + key = u.file_info.file_id if u.file_info else "0" + by_file.setdefault(key, []).append(u) + + root = ET.Element("xliff", { + "version": "1.2", + "xmlns": XLIFF_NS, + }) + + for file_id, file_units in by_file.items(): + ref = file_units[0].file_info + if not ref: + continue + + file_attrs = dict(ref.attrs) + file_elem = ET.SubElement(root, "file", file_attrs) + body = ET.SubElement(file_elem, "body") + + for u in file_units: + tu_attrs: dict[str, str] = {"id": u.id} + if u.resname: + tu_attrs["resname"] = u.resname + tu_elem = ET.SubElement(body, "trans-unit", tu_attrs) + src = ET.SubElement(tu_elem, "source") + src.text = u.source + tgt = ET.SubElement(tu_elem, "target", {"state": "translated"}) + tgt.text = u.translated + + ET.indent(root, space=" ") + xml_str = ET.tostring(root, encoding="unicode", xml_declaration=False) + return '<?xml version="1.0" encoding="UTF-8"?>\n' + xml_str + "\n" + + +# --------------------------------------------------------------------------- +# Bundle download +# --------------------------------------------------------------------------- + +def download_bundle(bundle_id: int) -> Path: + """Download a Crowdin bundle, collect XLIFF files into the work directory. + + crowdin bundle download extracts XLIFF files directly into cwd (no zip, + no subdirectory). We snapshot existing *.xliff before the download, then + move only the newly appeared files into BUNDLES_DIR/<timestamp>/. + """ + BUNDLES_DIR.mkdir(parents=True, exist_ok=True) + + existing_xliffs = set(REPO_ROOT.glob("MCC_FullBundle_*.xliff")) + + log.info("Downloading Crowdin bundle %d ...", bundle_id) + result = subprocess.run( + ["crowdin", "bundle", "download", str(bundle_id)], + capture_output=True, text=True, cwd=REPO_ROOT, + ) + if result.returncode != 0: + log.error("crowdin bundle download failed:\n%s\n%s", + result.stdout, result.stderr) + sys.exit(1) + + new_xliffs = sorted( + set(REPO_ROOT.glob("MCC_FullBundle_*.xliff")) - existing_xliffs + ) + + if not new_xliffs: + all_xliffs = sorted(REPO_ROOT.glob("MCC_FullBundle_*.xliff")) + if all_xliffs: + log.info("No new XLIFF files appeared; using %d existing file(s) " + "in repo root", len(all_xliffs)) + new_xliffs = all_xliffs + else: + log.error("No XLIFF files found after download. stdout:\n%s", + result.stdout) + sys.exit(1) + + timestamp = time.strftime("%Y%m%d-%H%M%S") + dest = BUNDLES_DIR / f"bundle-{timestamp}" + dest.mkdir(parents=True, exist_ok=True) + + for src in new_xliffs: + target = dest / src.name + src.rename(target) + log.info("Moved %d XLIFF file(s) to %s", len(new_xliffs), dest) + + return dest + + +def extract_bundle_zip(zip_path: Path) -> Path: + """Extract an existing bundle ZIP, return the extracted directory.""" + BUNDLES_DIR.mkdir(parents=True, exist_ok=True) + dest = BUNDLES_DIR / Path(zip_path).stem + dest.mkdir(parents=True, exist_ok=True) + log.info("Extracting %s -> %s", zip_path.name, dest) + with zipfile.ZipFile(zip_path, "r") as zf: + zf.extractall(dest) + return dest + + +# --------------------------------------------------------------------------- +# Crowdin upload +# --------------------------------------------------------------------------- + +def upload_xliff(xliff_path: Path, crowdin_lang: str) -> bool: + """Upload a translated XLIFF to Crowdin.""" + log.info("Uploading %s for language %s ...", xliff_path.name, crowdin_lang) + result = subprocess.run( + ["crowdin", "file", "upload", str(xliff_path), + "--xliff", "-l", crowdin_lang], + capture_output=True, text=True, cwd=REPO_ROOT, + ) + if result.returncode != 0: + log.error("Upload failed for %s:\n%s\n%s", + crowdin_lang, result.stdout, result.stderr) + return False + log.info("Upload succeeded for %s", crowdin_lang) + return True + + +# --------------------------------------------------------------------------- +# Resume support +# --------------------------------------------------------------------------- + +def load_existing_translated_ids(xliff_path: Path) -> set[str]: + """Read an existing output XLIFF, return the set of translated unit IDs.""" + if not xliff_path.exists(): + return set() + try: + tree = ET.parse(xliff_path) + root = tree.getroot() + ids = set() + for tu in root.iter(f"{{{XLIFF_NS}}}trans-unit"): + uid = tu.get("id") + if uid: + ids.add(uid) + return ids + except ET.ParseError: + return set() + + +# --------------------------------------------------------------------------- +# Main orchestration +# --------------------------------------------------------------------------- + +def find_xliff_files(bundle_dir: Path, locales: list[str] | None) -> dict[str, Path]: + """Map Crowdin locale -> XLIFF path, preserving the order of *locales*. + + When locales is None (all languages) files are ordered by filename. + """ + available: dict[str, Path] = {} + for xliff_path in sorted(bundle_dir.glob("*.xliff")): + name = xliff_path.stem + for locale in LANGUAGE_MAP: + if name.endswith(f"_{locale}"): + available[locale] = xliff_path + break + + if locales is None: + return available + + return {loc: available[loc] for loc in locales if loc in available} + + +def process_language( + locale: str, + xliff_path: Path, + api_key: str, + model: str, + rpm: int, + output_dir: Path, + limit: int | None, + dry_run: bool, + skip_upload: bool, + exclude_paths: list[str] | None = None, + include_paths: list[str] | None = None, +) -> None: + """Full pipeline for one language.""" + lang_info = LANGUAGE_MAP.get(locale) + if not lang_info: + log.warning("No language mapping for %s, skipping", locale) + return + + target_lang, crowdin_lang, extra_domain = lang_info + log.info("=" * 60) + log.info("Processing %s -> %s", locale, target_lang) + + units = parse_xliff(xliff_path, exclude_paths=exclude_paths, + include_paths=include_paths) + log.info(" Found %d needs-translation entries", len(units)) + + if not units: + log.info(" Nothing to translate, skipping") + return + + output_file = output_dir / f"MCC_Translated_{locale}.xliff" + already_done = load_existing_translated_ids(output_file) + if already_done: + before = len(units) + units = [u for u in units if u.id not in already_done] + log.info(" Resuming: %d already translated, %d remaining", + before - len(units), len(units)) + + if limit is not None and limit < len(units): + log.info(" Limiting to first %d entries (--limit)", limit) + units = units[:limit] + + if dry_run: + log.info(" [DRY RUN] Would translate %d entries", len(units)) + if units: + log.info(" Sample source (id=%s): %.100s...", units[0].id, + units[0].source) + return + + if not units: + log.info(" All entries already translated") + return + + cached_full, cached_fragments = ensure_domain_prompt_cached( + locale, target_lang, api_key, model) + log.info(" Leak detector loaded %d fragment(s) for %s", + len(cached_fragments), locale) + detector = DomainLeakDetector(cached_fragments, cached_full) + + translator = RateLimitedTranslator( + api_key=api_key, + model=model, + rpm=rpm, + target_lang=target_lang, + extra_domain=extra_domain, + leak_detector=detector, + ) + + def on_progress(done: int, total: int) -> None: + if done % 5 == 0 or done == total: + log.info(" [%s] %d/%d (%.0f%%)", locale, done, total, + done / total * 100) + + translated_units, interrupted = translator.translate_batch( + units, progress_callback=on_progress) + + success = sum(1 for u in translated_units if u.translated) + failed = sum(1 for u in translated_units if u.translated is None) + log.info(" Translated: %d, Failed: %d%s", success, failed, + " (interrupted)" if interrupted else "") + + if failed > 0: + ERRORS_DIR.mkdir(parents=True, exist_ok=True) + err_path = ERRORS_DIR / f"errors_{locale}.log" + with open(err_path, "a", encoding="utf-8") as f: + for u in translated_units: + if u.translated is None: + f.write(f"id={u.id} resname={u.resname} " + f"source={u.source[:200]}\n") + log.info(" Error details written to %s", err_path) + + new_success = [u for u in translated_units if u.translated] + + if already_done and output_file.exists(): + existing_units = _parse_existing_output(output_file) + all_units = existing_units + new_success + else: + all_units = new_success + + if not all_units: + if interrupted: + raise KeyboardInterrupt + return + + target_language_xliff = xliff_path.stem.split("_", 2)[-1] if "_" in xliff_path.stem else locale + xliff_content = generate_output_xliff(all_units, target_language_xliff) + if xliff_content: + output_dir.mkdir(parents=True, exist_ok=True) + output_file.write_text(xliff_content, encoding="utf-8") + log.info(" Written: %s (%d units)", output_file.name, len(all_units)) + + if not skip_upload and not interrupted and new_success: + upload_xliff(output_file, crowdin_lang) + elif not new_success: + log.info(" No new translations this run, skipping upload") + + if interrupted: + raise KeyboardInterrupt + + +def _parse_existing_output(path: Path) -> list[TransUnit]: + """Re-parse a previously generated output XLIFF into TransUnit objects.""" + tree = ET.parse(path) + root = tree.getroot() + units: list[TransUnit] = [] + + for file_elem in root.findall(f"{{{XLIFF_NS}}}file"): + finfo = FileInfo( + file_id=file_elem.get("id", ""), + original=file_elem.get("original", ""), + source_language=file_elem.get("source-language", "en"), + target_language=file_elem.get("target-language", ""), + project_id=file_elem.get("project-id", ""), + attrs={k: v for k, v in file_elem.attrib.items()}, + ) + body = file_elem.find(f"{{{XLIFF_NS}}}body") + if body is None: + continue + for tu in body.findall(f"{{{XLIFF_NS}}}trans-unit"): + src_elem = tu.find(f"{{{XLIFF_NS}}}source") + tgt_elem = tu.find(f"{{{XLIFF_NS}}}target") + units.append(TransUnit( + id=tu.get("id", ""), + source=src_elem.text or "" if src_elem is not None else "", + target_text="", + resname=tu.get("resname"), + file_info=finfo, + translated=tgt_elem.text or "" if tgt_elem is not None else "", + )) + + return units + + +# --------------------------------------------------------------------------- +# CLI +# --------------------------------------------------------------------------- + +def build_parser() -> argparse.ArgumentParser: + p = argparse.ArgumentParser( + description="Translate Crowdin XLIFF bundles using Qwen-MT API", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=textwrap.dedent("""\ + Examples: + %(prog)s --dry-run + %(prog)s --languages zh_CN,ja_JP --limit 10 --skip-upload + %(prog)s --bundle-dir .crowdin-translate/bundles/bundle-xxx/ + %(prog)s --model qwen-mt-plus --rpm 30 + """), + ) + src = p.add_mutually_exclusive_group() + src.add_argument("--bundle-dir", type=Path, metavar="DIR", + help="Reuse an already-extracted bundle directory") + src.add_argument("--bundle-zip", type=Path, metavar="ZIP", + help="Reuse an already-downloaded bundle ZIP") + p.add_argument("--bundle-id", type=int, default=2, + help="Crowdin bundle ID to download (default: 2)") + p.add_argument("-l", "--languages", type=str, default=None, + help="Comma-separated Crowdin locales (e.g. zh_CN,ja_JP), " + "'all' for every supported locale, or omit to use the " + "default active-user set") + p.add_argument("--model", type=str, default="qwen-mt-plus", + choices=["qwen-mt-plus", "qwen-mt-flash", "qwen-mt-lite"], + help="Qwen-MT model (default: qwen-mt-plus)") + p.add_argument("--rpm", type=int, default=60, + help="Max requests per minute (default: 60)") + p.add_argument("--limit", type=int, default=None, metavar="N", + help="Translate at most N entries per language (for debugging)") + p.add_argument("--dry-run", action="store_true", + help="Parse and report without calling the API") + p.add_argument("--skip-upload", action="store_true", + help="Skip uploading translations to Crowdin") + p.add_argument("--output-dir", type=Path, default=None, + help="Output directory (default: <bundle-dir>/translated/)") + p.add_argument("--include-docs", action="store_true", + help="Include /docs/ files in translation (skipped by default)") + p.add_argument("-f", "--files", type=str, default=None, + help="Comma-separated file paths to translate (e.g. " + "/docs/guide/README.md,/MinecraftClient/Resources/Translations/Translations.resx). " + "Overrides --include-docs") + p.add_argument("-v", "--verbose", action="store_true", + help="Enable debug logging") + return p + + +def main() -> None: + parser = build_parser() + args = parser.parse_args() + + logging.basicConfig( + level=logging.DEBUG if args.verbose else logging.INFO, + format="%(asctime)s [%(levelname)s] %(message)s", + datefmt="%H:%M:%S", + ) + + api_key = os.environ.get("ALI_BAILIAN_API_KEY", "") + if not api_key and not args.dry_run: + log.error("ALI_BAILIAN_API_KEY environment variable is not set") + sys.exit(1) + + if args.languages and args.languages.strip().lower() == "all": + locales = None # None means all locales in LANGUAGE_MAP + log.info("Language selection: all %d supported locales", len(LANGUAGE_MAP)) + elif args.languages: + locales = [s.strip() for s in args.languages.split(",")] + unknown = [loc for loc in locales if loc not in LANGUAGE_MAP] + if unknown: + log.error("Unknown locale(s): %s\nAvailable: %s", + ", ".join(unknown), ", ".join(sorted(LANGUAGE_MAP))) + sys.exit(1) + else: + locales = list(DEFAULT_LOCALES) + log.info("Language selection: %d default locales (use --languages all for all)", + len(locales)) + + if args.bundle_dir: + bundle_dir = args.bundle_dir + if not bundle_dir.is_dir(): + log.error("Bundle directory not found: %s", bundle_dir) + sys.exit(1) + elif args.bundle_zip: + if not args.bundle_zip.is_file(): + log.error("Bundle ZIP not found: %s", args.bundle_zip) + sys.exit(1) + bundle_dir = extract_bundle_zip(args.bundle_zip) + else: + bundle_dir = download_bundle(args.bundle_id) + + if args.output_dir: + output_dir = args.output_dir + else: + output_dir = bundle_dir / "translated" + output_dir.mkdir(parents=True, exist_ok=True) + log.info("Output directory: %s", output_dir) + + include_paths: list[str] | None = None + if args.files: + include_paths = [f.strip() for f in args.files.split(",")] + log.info("Filtering to files: %s", ", ".join(include_paths)) + + exclude_paths: list[str] | None = None + if not include_paths and not args.include_docs: + exclude_paths = ["/docs/"] + log.info("Excluding XLIFF files under: %s (use --include-docs or --files to include)", + ", ".join(exclude_paths)) + + xliff_files = find_xliff_files(bundle_dir, locales) + if not xliff_files: + log.error("No matching XLIFF files found in %s", bundle_dir) + sys.exit(1) + + log.info("Found %d language(s) to process: %s", + len(xliff_files), ", ".join(sorted(xliff_files))) + + for locale, xliff_path in xliff_files.items(): + try: + process_language( + locale=locale, + xliff_path=xliff_path, + api_key=api_key, + model=args.model, + rpm=args.rpm, + output_dir=output_dir, + limit=args.limit, + dry_run=args.dry_run, + skip_upload=args.skip_upload, + exclude_paths=exclude_paths, + include_paths=include_paths, + ) + except KeyboardInterrupt: + log.warning("Interrupted by user. Partial results have been saved.") + sys.exit(130) + except Exception: + log.exception("Error processing %s", locale) + + +if __name__ == "__main__": + main()