diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..c2335e4 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,12 @@ +{ + "permissions": { + "allow": [ + "Read(//opt/UnitySrc/Projects/ProjectExodus/**)", + "Bash(git checkout:*)", + "Bash(git reset:*)", + "Bash(git add:*)", + "Bash(git commit -m ':*)", + "Bash(git branch:*)" + ] + } +} diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 82a8fa6..358299f 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -35,6 +35,7 @@ jobs: uses: actions/setup-dotnet@v4 with: dotnet-version: | + 6.0.x 8.0.x 10.0.x @@ -73,19 +74,29 @@ jobs: dotnet build --no-restore -c Release test/CDT.Tests/CDT.Tests.csproj # Windows: test CDT.Tests only (CDT.Comparison.Benchmarks excluded from CI build) + # CoverletOutput must end with / so Coverlet names files per-TFM inside the dir - name: Test if: runner.os == 'Windows' - run: dotnet test --no-build -c Release --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=${{ github.workspace }}/coverage/coverage.cobertura.xml test/CDT.Tests/CDT.Tests.csproj + run: dotnet test --no-build -c Release --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=${{ github.workspace }}/coverage/ test/CDT.Tests/CDT.Tests.csproj # Linux: test only CDT.Tests (CDT.Viz has no tests; benchmark is not a test project) - name: Test if: runner.os == 'Linux' - run: dotnet test --no-build -c Release --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=${{ github.workspace }}/coverage/coverage.cobertura.xml test/CDT.Tests/CDT.Tests.csproj + run: dotnet test --no-build -c Release --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=${{ github.workspace }}/coverage/ test/CDT.Tests/CDT.Tests.csproj + + - name: Inspect coverage output (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: Get-ChildItem "${{ github.workspace }}/coverage" -Force -ErrorAction SilentlyContinue + + - name: Inspect coverage output (Linux) + if: runner.os == 'Linux' + run: ls -la ${{ github.workspace }}/coverage || true - name: Generate coverage report uses: danielpalme/ReportGenerator-GitHub-Action@5 with: - reports: ${{ github.workspace }}/coverage/coverage.cobertura.xml + reports: ${{ github.workspace }}/coverage/*.xml targetdir: coveragereport reporttypes: MarkdownSummaryGithub diff --git a/PLAN-DOTNET-COMPAT.md b/PLAN-DOTNET-COMPAT.md new file mode 100644 index 0000000..679becd --- /dev/null +++ b/PLAN-DOTNET-COMPAT.md @@ -0,0 +1,84 @@ +# .NET Compatibility Analysis + +## Question +Can the integer predicate layer (`Int128`, `UInt128`) run on .NET Standard 2.1 or .NET 5? + +## Short Answer +No — and it matters. Unity does not ship the .NET 8 BCL until Unity 6.8, which is approximately a year away. `System.Int128` and `System.UInt128` are unavailable on the current Unity runtime. A polyfill is required. + +## What Requires .NET 7+ + +`Int128` and `UInt128` were introduced in .NET 7. Every usage in CDT.Core depends on them: + +| Type | Used in | Count | +|------|---------|-------| +| `System.Int128` | `PredicatesInt.cs` — all intermediates and return type of `Orient2dRaw` | ~30 | +| `System.Int128` | `KdTree.cs` — squared-distance storage and comparisons | ~8 | +| `System.Int128` | `Int256.cs` — signature of `Multiply`, `FromInt128` | ~6 | +| `System.UInt128` | `Int256.cs` — internal to `MultiplyUnsigned128` only | ~12 | + +Everything else in CDT.Core is compatible with .NET Standard 2.1+: +- `ReadOnlySpan`, `ReadOnlyMemory` — .NET Standard 2.1+ +- `HashSet`, `Dictionary` — any target +- `MethodImpl(AggressiveInlining)` — any target +- `System.Runtime.Intrinsics` — only in `PredicatesAdaptive.cs`, which is deleted in Batch 4 + +## The Polyfill (Required) + +### Int128 polyfill + +A minimal `Int128` polyfill covering only the operations actually used in CDT.Core: + +**Operators required** (from audit of `PredicatesInt.cs`, `KdTree.cs`, `Int256.cs`): +- Arithmetic: `+`, `-`, `*`, unary `-` +- Comparison: `<`, `>`, `<=`, `>=`, `==`, `!=`, `CompareTo` +- Constants: `Zero`, `MaxValue`, `MinValue` +- Casts: implicit from `long`, explicit to `ulong`, explicit to `long` +- Bitwise: `>>` (right shift, arithmetic), used in `Int256.FromInt128` + +Estimated size: ~180 lines. Two `ulong` fields (`_lo`, `_hi`), two's complement throughout. + +### UInt128 polyfill + +`UInt128` is used only inside `Int256.MultiplyUnsigned128`. The alternative — **rewrite `MultiplyUnsigned128` to avoid `UInt128`** — is simpler: + +Replace the four `UInt128` partial products with explicit `ulong` 32-bit splitting: +- Split each `ulong` half of each operand into two 32-bit words +- Accumulate 16 partial products of `ulong × ulong` (each fits in `ulong`) +- Propagate carries through four result limbs + +This is the standard schoolbook 4×4 approach, ~40 lines, zero managed types, Burst-compatible. No `UInt128` polyfill required. + +### Naming + +Place the polyfill in `src/CDT.Core/Predicates/Int128Polyfill.cs`, namespace `CDT.Predicates`, gated behind: + +```csharp +#if !NET7_0_OR_GREATER +internal readonly struct Int128 { ... } +#endif +``` + +The fields `_lo` and `_hi` are `internal` so `Int256.FromInt128` can read them directly without a shift operator. + +This means the polyfill is dead code on .NET 7+ and gets stripped by the compiler. No runtime cost on Unity 6.8+. + +### What the polyfill does NOT need + +The BCL `Int128` has `ToString`, `Parse`, `IFormattable`, `ISpanParsable`, `IBinaryInteger`, and a pile of other interfaces. The CDT.Core polyfill needs none of this. Only implement what the audit above lists. Every extra method is a liability. + +## Decision + +Implement the `Int128` polyfill (180 lines) and rewrite `MultiplyUnsigned128` to avoid `UInt128`. Gate the polyfill behind `#if !NET7_0_OR_GREATER`. This unblocks CDT.Core on the current Unity runtime while being zero-cost on Unity 6.8+ when it ships BCL support. + +Target `net8.0`/`net10.0` for the standalone test/benchmark build (already configured). Add `net5.0` to `` in `CDT.Core.csproj` for the Unity package build. The `#if !NET7_0_OR_GREATER` gate fires on `net5.0` and is silent on `net8.0`+. + +## Burst Caveat + +`System.Int128` (BCL or polyfill) is not on Burst's approved type list. If Burst compilation of the integer predicate hot path is ever required: + +1. Write a `BurstInt128` struct (two `ulong` fields, only the operations Burst needs) at that point. +2. Gate it behind `#if BURST` or a separate Burst-specific code path. +3. This is deferred work — Burst support is aspirational, not committed. + +`Int256` is already a custom `unmanaged` struct with no `Int128` in its internal representation (four `ulong` limbs). Once `MultiplyUnsigned128` is rewritten to avoid `UInt128` (see above), `Int256` itself will be Burst-compatible. Only the public `Multiply(Int128, Int128)` entry point references `Int128`. diff --git a/PLAN.md b/PLAN.md new file mode 100644 index 0000000..be6149d --- /dev/null +++ b/PLAN.md @@ -0,0 +1,394 @@ +# Plan: CDT.NET Deterministic Integer Conversion (Batches 3–4) + +## Status + +| Batch | Status | +|-------|--------| +| Batch 1 — Int256, V2i, Box2i | ✅ COMPLETE | +| Batch 2 — PredicatesInt, KdTree (concrete) | ✅ COMPLETE | +| Prereq — Int128 polyfill + Int256.MultiplyUnsigned128 rewrite | ✅ COMPLETE | +| Prereq — Int256.DivideToInt64 | ✅ COMPLETE | +| Batch 3 — CdtUtils + Triangulation | ✅ COMPLETE | +| Batch 4 — Delete dead code | ✅ COMPLETE | + +## TL;DR + +Remove all generic floating-point (``) from `CdtUtils.cs`, `Triangulation.cs`, and `TopologyVerifier.cs`. Replace with concrete `V2i`/`long` types, route predicates through `PredicatesInt`, implement integer `IntersectionPosition` with Int256 intermediates and grid-snapping, replace the cos(30°) super-triangle with integer bounding geometry, and convert the test infrastructure. Then delete `PredicatesAdaptive.cs`, `PredicatesExact.cs`, and all dead float imports. + +--- + +## Prerequisite: Int128 Polyfill *(must land before Phase 3A)* + +Unity does not ship the .NET 8 BCL until Unity 6.8 (~1 year away). `System.Int128` and `System.UInt128` are unavailable on the current Unity runtime. See `PLAN-DOTNET-COMPAT.md` for the full analysis. + +### TODO — `src/CDT.Core/Predicates/Int128Polyfill.cs` *(new file)* + +- [ ] Add `net5.0` to `` in `src/CDT.Core/CDT.Core.csproj` (Unity target). Verify the project compiles clean under all TFMs before proceeding. + +- [ ] Implement `internal readonly struct Int128` gated behind `#if !NET7_0_OR_GREATER` + - Two `internal` `ulong` fields: `_lo` (bits 0–63), `_hi` (bits 64–127), two's complement + - Operators: `+`, `-`, `*`, unary `-` + - Comparison: `<`, `>`, `<=`, `>=`, `==`, `!=`, `CompareTo(Int128)` + - Constants: `Zero`, `MaxValue`, `MinValue` + - Casts: implicit from `long`; explicit to `ulong`; explicit to `long` *(explicit to `long` is not used by current code but is required by `DivideToInt64` once implemented — include it)* + - No `>>` operator — not needed. `Int256.FromInt128` must be rewritten (see below) to read `_lo`/`_hi` directly instead of using `(UInt128)value >> 64` + - No `ToString`, no `IFormattable`, no BCL interfaces — only what the audit requires + +### TODO — `src/CDT.Core/Predicates/Int256.cs` + +- [ ] Rewrite `FromInt128` to read polyfill fields directly, eliminating the `UInt128` dependency: + ```csharp + // Before: ulong m1 = (ulong)((UInt128)value >> 64); + // After: + ulong lo = value._lo; + ulong m1 = value._hi; + ``` + On .NET 7+ where `Int128` is the BCL type, use `(ulong)(value >> 64)` instead — gate with `#if NET7_0_OR_GREATER`. + +- [ ] Rewrite `MultiplyUnsigned128` to avoid `UInt128`: use explicit 32-bit word splitting (4×4 schoolbook, 16 `ulong` partial products). This makes `Int256` fully Burst-compatible and eliminates the need for a `UInt128` polyfill. + +### TODO — `test/CDT.Tests/Int128PolyfillTests.cs` *(new file)* + +- [ ] `Add_Positive` — e.g. `3 + 5 = 8` +- [ ] `Add_WithCarry` — overflow across the `_lo`/`_hi` boundary +- [ ] `Subtract_Positive` +- [ ] `Subtract_Underflow` +- [ ] `Multiply_SmallValues` +- [ ] `Multiply_LargeValues` — cross-check against BCL `System.Int128` on .NET 8 (tests run on all TFMs; on .NET 8 both paths are exercised via `#if`) +- [ ] `Negate_Positive` and `Negate_Negative` +- [ ] `Comparison_AllSixOperators` +- [ ] `Cast_FromLong_RoundTrip` +- [ ] `Cast_ToUlong_Truncates` +- [ ] `Cast_ToLong_RoundTrip` + +--- + +## Prerequisite: Int256.DivideToInt64 *(must land before Phase 3A)* + +`IntersectionPosition` requires dividing an `Int256` numerator by an `Int128` denominator to recover a `long` coordinate. This operation does not exist in `Int256.cs`. + +### Bit-width analysis + +``` +acd, bcd : Int128, magnitude ≤ 2¹⁰⁹ (Orient2dRaw outputs with |coord| ≤ 2⁵³) +denom : Int128, magnitude ≤ 2¹¹⁰ (acd − bcd) +delta : long, magnitude ≤ 2⁵⁴ (coordinate difference) +num : Int256, magnitude ≤ 2¹⁶³ (Int256.Multiply(acd, (Int128)delta)) +quotient : long, magnitude ≤ 2⁵³ (it is a snapped coordinate — guaranteed) +``` + +Because `|quotient| ≤ 2⁵³`, the top 128 bits of `|numerator|` are strictly less than `|denominator|`. Knuth algorithm D degenerates to a single-"digit" quotient. ~50 lines, no allocation, stays `unmanaged`. No `BigInteger`. + +### TODO — `src/CDT.Core/Predicates/Int256.cs` + +- [ ] Add `public static long DivideToInt64(Int256 numerator, Int128 denominator)` + + **Algorithm — round-half-away-from-zero:** + 1. Extract signs; work with unsigned magnitudes `absNum` (Int256) and `absDenom` (Int128) + 2. Compute truncated quotient `q = absNum / absDenom` via single-word Knuth D (quotient fits in `ulong` by the bit-width constraint above) + 3. Compute remainder `r = absNum − q × absDenom`; since `r < absDenom ≤ 2¹¹⁰`, `r` fits in `Int128` + 4. If `2 × r ≥ absDenom`: `q += 1` (safe: `2r < 2¹¹¹` fits in `Int128`) + 5. Apply combined sign: if `num` and `denominator` differ in sign, negate `q` + + Document the rounding convention in the XML doc comment. Precondition: `denominator != 0` and result fits in `long` (Debug.Assert, no-op in release). + +### TODO — `test/CDT.Tests/Int256Tests.cs` + +- [ ] `DivideToInt64_BothPositive` — e.g. `15 / 4 = 4` (rounds toward nearest) +- [ ] `DivideToInt64_NumeratorNegative` — e.g. `−15 / 4 = −4` +- [ ] `DivideToInt64_DenominatorNegative` — e.g. `15 / −4 = −4` +- [ ] `DivideToInt64_BothNegative` — e.g. `−15 / −4 = 4` +- [ ] `DivideToInt64_ExactDivision` — no rounding case, e.g. `12 / 4 = 3` +- [ ] `DivideToInt64_NumeratorZero` — always returns `0` +- [ ] `DivideToInt64_DenominatorOne` — quotient equals numerator cast to long +- [ ] `DivideToInt64_DenominatorMinusOne` — quotient equals negated numerator +- [ ] `DivideToInt64_RoundingHalfUp` — tie-break case, e.g. `5 / 2 = 3` (half-away-from-zero) +- [ ] `DivideToInt64_LargeValues` — numerator ~2¹⁶³, denominator ~2¹¹⁰, quotient ~2⁵³ — cross-check against `System.Numerics.BigInteger` +- [ ] `DivideToInt64_KnownIntersection` — construct two non-degenerate segments with a known integer intersection point; verify `IntersectionPosition` (once wired in Phase 3A) returns exactly that point + +--- + +## Phase 3A — CdtUtils.cs *(do first; Triangulation depends on it)* + +### Step 1: De-genericize predicate wrappers + +- `Orient2D(V2d, V2d, V2d)` → `Orient2D(V2i, V2i, V2i)` returning `int` (+1/0/−1) via `PredicatesInt.Orient2dInt` +- `IsInCircumcircle(V2d, V2d, V2d, V2d)` → `IsInCircumcircle(V2i, V2i, V2i, V2i)` returning `bool` via `PredicatesInt.InCircleInt` +- Add `Orient2DRaw(V2i, V2i, V2i)` → `Int128` (needed by `IntersectionPosition`) + +### Step 2: Replace distance methods + +- `DistanceSquared` → `DistanceSquared(V2i a, V2i b)` returning `Int128` + (dx and dy are `long`; products fit in `Int128`) +- **Delete** `Distance()` entirely — no sqrt in integer world +- Remove `IRootFunctions` constraint from everything + +### Step 3: ClassifyOrientation / LocatePointLine / LocatePointTriangle + +Integer predicates are exact so the default tolerance is zero. The existing `_minDistToConstraintEdge` mechanism is replaced by `_snapTolerance: long` — an absolute threshold on `|Orient2dRaw(p, v1, v2)|`. + +**Semantics of `_snapTolerance`:** `Orient2dRaw` returns `length(v1v2) × perpendicular_distance(p, line(v1,v2))` in coordinate-units². Specifically, for a point at perpendicular distance `d` from an edge of length `L`, `|Orient2dRaw| = L × d`. A threshold `snapTolerance` therefore snaps any point within `d ≤ snapTolerance / L` coordinate units of the edge. This is an **absolute area-units value**, not a dimensionless ratio. + +**Migration from the old API:** The old `minDistToConstraintEdge = f` produced `distTol = f × Length(edge)`, and the check was `|Orient2d| ≤ f × L`. Since `|Orient2d| = L × d`, this snapped points within `d ≤ f` coordinate units. To replicate: `snapTolerance = round(f × typical_edge_length_in_integer_units)`. Document this clearly in the constructor XML comment so callers are not confused by the unit change. + +- `ClassifyOrientation(int sign)` — exact: negative → right, zero → on, positive → left. No tolerance parameter for the default path. +- `LocatePointLine(V2i p, V2i v1, V2i v2, long areaSnapTolerance = 0)` → `PtLineLocation` +- `LocatePointTriangle(V2i p, V2i v1, V2i v2, V2i v3)` → `PtTriLocation` + +### Step 4: IntersectionPosition (integer, Int256 intermediates) + +The float algorithm carried a "pick the axis with the larger span" heuristic to reduce catastrophic cancellation. In exact integer arithmetic both parameterizations produce the same rational value, so **drop the heuristic**. Always parameterise along the a–b segment: + +1. `acd = Orient2DRaw(a, c, d)` and `bcd = Orient2DRaw(b, c, d)` as `Int128` +2. `denom = acd - bcd` (Int128) +3. `numX = Int256.Multiply(acd, (Int128)(b.X − a.X))` → `Int256` +4. `numY = Int256.Multiply(acd, (Int128)(b.Y − a.Y))` → `Int256` +5. `x = a.X + Int256.DivideToInt64(numX, denom)` (round-half-away-from-zero) +6. `y = a.Y + Int256.DivideToInt64(numY, denom)` +7. Return `new V2i(x, y)` — at most ±1 unit of quantisation error per coordinate + +### Step 5: FindDuplicates / RemoveDuplicates + +Mechanical type swap. Already uses exact equality (tuple key) so logic is unchanged: + +- `FindDuplicates(IReadOnlyList>)` → `FindDuplicates(IReadOnlyList)` +- `RemoveDuplicates` → `RemoveDuplicates(List, ...)` +- `RemoveDuplicatesAndRemapEdges` → `RemoveDuplicatesAndRemapEdges(List, List)` + +**Files**: `src/CDT.Core/CdtUtils.cs` +**Key references**: `PredicatesInt.Orient2dInt`, `PredicatesInt.Orient2dRaw`, `PredicatesInt.InCircleInt`, `Int256.Multiply` + +--- + +## Phase 3B — Triangulation.cs *(depends on 3A)* + +### Step 6: Remove generic parameter + +- `Triangulation where T : unmanaged, IFloatingPoint, IMinMaxValue, IRootFunctions` → `Triangulation` (no generics) +- All `V2d` → `V2i` +- All `Box2d` → `Box2i` +- `KdTree?` → `KdTree?` (concrete integer KdTree) +- Remove `_two` cached field (use literal `2L`) +- `ReadOnlyMemory>` Vertices property → `ReadOnlyMemory` + +### Step 7: Super-triangle construction (integer, no floating-point trig) + +**As-built implementation** (differs from the axis-aligned spec below — see note): + +```csharp +long r = Math.Max(Math.Max(w, h), 1L) * 2L; // generous radius +long R = 2L * r; +long shiftX = R * 866L / 1000L + 1L; // cos30 ≈ 866/1000, +1 guarantees containment + +var v0 = new V2i(cx - shiftX, cy - r); +var v1 = new V2i(cx + shiftX, cy - r); +var v2 = new V2i(cx, cy + R); +``` + +This mirrors the floating-point CDT C++ super-triangle more closely, producing identical combinatorial topology for matching inputs. The original spec below was written before the ground-truth tests were locked to the cos30 output; changing to the axis-aligned form would require regenerating all expected files. + +**Original axis-aligned spec (preserved for reference):** + +``` +pad = max(w, h) + 1 +v0 = (minX − pad, minY − 1) +v1 = (maxX + pad, minY − 1) +v2 = ((minX + maxX) / 2, maxY + pad) +``` + +**Overflow proof (as-built):** With `|coord| ≤ MaxCoordinate = 2^53`, `w, h ≤ 2^54`, `r ≤ 2^55`, `R ≤ 2^56`, `shiftX ≤ 2^56`. Super-triangle vertex coordinates are bounded by `2^53 + 2^56 < 2^57`, well within `long.MaxValue ≈ 2^63`. A `Debug.Assert` at construction time verifies this. + +**Containment:** For any input point inside the bounding box, all three orientation tests are strictly positive by the generous margin (`r ≥ max(w,h)` with `R = 2r`). + +Remove the `cos30` constant. + +### Step 8: Replace `_minDistToConstraintEdge` with `_snapTolerance: long` + +| | Before | After | +|--|--------|-------| +| Field type | `T _minDistToConstraintEdge` | `long _snapTolerance` | +| Usage (lines 875, 1028) | `distTol = _minDistToConstraintEdge × Distance(a, b)` | eliminates `Distance` call entirely | +| Usage (lines 909, 1056) | `LocatePointLine(p, v1, v2, distTol)` | `LocatePointLine(p, v1, v2, _snapTolerance)` | +| Constructor | `T minDistToConstraintEdge` param | `long snapTolerance = 0` param | + +The constructor XML doc comment **must** explain the unit change (see Step 3 for the conversion formula). Callers passing zero get the same zero-tolerance behaviour as before. Default is zero. + +### Step 9: Wire integer predicates throughout + +| Location | Change | +|----------|--------| +| Lines 830, 1208 — `IsInCircumcircle` | → integer version (Step 1) | +| Lines 1232, 1238 — `Orient2D` | → integer version (Step 1) | +| Lines 992, 1109 — `IntersectionPosition` | → integer version (Step 4) | +| Lines 875, 1028 — `Distance(a, b)` | eliminate; replaced by `_snapTolerance` | +| Line 1154 — midpoint | `new V2i(a.X + (b.X − a.X) / 2, a.Y + (b.Y − a.Y) / 2)` (overflow-safe) | +| Line 1557 — KdTree construction | `new KdTree(...)` (concrete long version) | +| Lines 1559, 1565 — KdTree Insert | `V2i` signature | +| Lines 436, 445, 556 — KdTree Nearest | `long qx, long qy` signature | + +### Step 10: Public API update + +- `InsertVertices(IReadOnlyList>)` → `InsertVertices(IReadOnlyList)` +- All read-only properties: `V2d` → `V2i` +- `InsertEdges`, `ConformToEdges` — unchanged (Edge is not generic) + +**Coordinate range validation:** Add an input guard in `InsertVertices`: +```csharp +foreach (var v in vertices) + if ((ulong)(v.X + PredicatesInt.MaxCoordinate) > (ulong)(2 * PredicatesInt.MaxCoordinate) || + (ulong)(v.Y + PredicatesInt.MaxCoordinate) > (ulong)(2 * PredicatesInt.MaxCoordinate)) + throw new ArgumentOutOfRangeException(nameof(vertices), + $"Vertex ({v.X},{v.Y}) exceeds MaxCoordinate = {PredicatesInt.MaxCoordinate}. " + + "Integer predicates produce incorrect results outside this range."); +``` +Fail loudly. Silent wrong answers are not acceptable. + +**Files**: `src/CDT.Core/Triangulation.cs` + +--- + +## Phase 3C — TopologyVerifier.cs *(parallel with 3B)* + +### Step 11: De-genericize TopologyVerifier + +- `VerifyTopology()` → `VerifyTopology()` operating on `V2i[]` and `Triangle[]` +- Remove all `IFloatingPoint`, `IMinMaxValue`, `IRootFunctions` constraints +- No predicate calls inside — only topology checks. Purely mechanical type swap. + +**Files**: `src/CDT.Core/TopologyVerifier.cs` + +--- + +## Phase 3D — Test Infrastructure *(parallel with 3B/3C once 3A compiles)* + +### Step 12: Integer test input files + +Write a one-time converter: read float inputs → multiply by a scale factor → round to `long` → write integer input files into a new `inputs_int/` directory (or overwrite `inputs/`). Many existing inputs already use integer-valued coordinates. + +**Recommended scale factor**: ×1,000,000 (preserves ~6 decimal digits of precision from original float data). + +**Constraint:** `max(|original_coordinate|) × scale_factor ≤ MaxCoordinate = 2^53 ≈ 9.0 × 10^15`. With scale = 10^6 this permits original coordinates up to ~9.0 × 10^9. The converter must assert this bound for every converted vertex and abort with a clear error if violated. + +### Step 13: TestInputReader for V2i + +Add `ReadInputInt(string path)` → `(List, List)` parsing long coordinates. Alternatively extend the existing reader to branch on type. + +### Step 14: Verify and regenerate ground-truth expected outputs + +Do **not** simply run the new integer code, accept its output, and call that ground truth. That deletes the tests. + +**Correct protocol:** +1. Convert float inputs to integer via Step 12 converter. +2. Run both the **old float** triangulation (on original inputs) and the **new integer** triangulation (on converted inputs) for every test case. +3. Compare topologies — vertex connectivity and neighbour indices should be **identical** for all non-degenerate inputs. Topology is combinatorial; it is unaffected by coordinate scaling. +4. For any test case where the topologies differ: investigate. Classify as either (a) a legitimate rounding artifact at a near-degenerate configuration, or (b) a bug in the integer implementation. Only (a) cases may be accepted as new expected output — and only after manual geometric verification. +5. Add a separate correctness check: for every vertex inserted by `IntersectionPosition`, verify `Orient2dInt(v, edge_v0, edge_v1) == 0` — it must lie exactly on the constraint edge. + +Expect the topologies to match on all existing test inputs, since none were deliberately designed to be degenerate for float arithmetic. + +### Step 15: Update test classes + +| Before | After | +|--------|-------| +| `TriangulationTestsBase` + `_Double` / `_Float` subclasses | `TriangulationTests` (concrete, no generics) | +| `GroundTruthTestsBase` + `_Double` / `_Float` subclasses | `GroundTruthTests` (concrete) | +| `ReadmeExamplesTests` (`Triangulation`) | `Triangulation` with `V2i` coordinates | +| `TopologyVerifier` calls with type arguments | Remove type arguments | +| `PredicatesTests` | Keep until Batch 4 | + +**Files**: +- `test/CDT.Tests/GroundTruthTests.cs` +- `test/CDT.Tests/TriangulationTests.cs` +- `test/CDT.Tests/ReadmeExamplesTests.cs` +- `test/CDT.Tests/inputs/*` — convert to integer +- `test/CDT.Tests/expected/*` — regenerate + +--- + +## Phase 4 — Delete Dead Code *(after all Batch 3 tests green)* + +### Step 16: Delete float predicate files and their tests + +Delete all three in the same commit — the project does not compile between them: + +- Delete `src/CDT.Core/Predicates/PredicatesAdaptive.cs` +- Delete `src/CDT.Core/Predicates/PredicatesExact.cs` +- Delete `test/CDT.Tests/PredicatesTests.cs` *(moved here from Step 19 — must be concurrent with above)* + +### Step 17: Remove dead generic types from Types.cs + +- Delete `V2d` struct +- Delete `Box2d` struct +- Remove `IFloatingPoint`, `IMinMaxValue`, `IRootFunctions` from any remaining `using` statements + +### Step 18: Remove dead generic KdTree + +- Delete the generic `KdTree` class from `KdTree.cs` (keep only the concrete `KdTree` for `long`) + +### Step 19: Remove remaining float test class variants + +- Remove any remaining `_Double` / `_Float` test class variants +- `PredicatesTests.cs` was already deleted in Step 16 + +### Step 20: Final verification + +``` +dotnet build src/CDT.Core # zero warnings +dotnet test test/CDT.Tests # all green +``` + +Grep CDT.Core for the following — all must return zero hits: + +``` +float|double|IFloatingPoint|IRootFunctions|System\.Runtime\.Intrinsics +``` + +**Files deleted**: +- `src/CDT.Core/Predicates/PredicatesAdaptive.cs` +- `src/CDT.Core/Predicates/PredicatesExact.cs` +- `test/CDT.Tests/PredicatesTests.cs` + +**Files modified**: +- `src/CDT.Core/Types.cs` (remove `V2d`, `Box2d`) +- `src/CDT.Core/KdTree.cs` (remove generic `KdTree`) + +--- + +## Dependency Graph (phases) + +``` +3A: CdtUtils.cs + │ + ├─────────────────────────────────────┐ + │ │ +3B: Triangulation.cs 3C: TopologyVerifier.cs + │ │ + └──────────────┬──────────────────────┘ + │ + 3D: Tests compile + │ + 3D: Tests green + │ + Phase 4: Delete dead code +``` + +--- + +## Key Decisions + +1. **Snap tolerance semantics**: `_snapTolerance: long` is an area-units threshold (units of `Orient2dRaw`), not a distance. This avoids sqrt entirely. Users set it based on their coordinate scale. +2. **IntersectionPosition snapping**: The rational result is rounded to nearest `long` via sign-aware integer division. At most ±1 unit of quantisation error. +3. **Super-triangle**: Axis-aligned oversized triangle — no trig, no floats. Slightly less symmetric than equilateral but functionally equivalent for the algorithm. +4. **Test data**: Convert existing float inputs to scaled integers; preserves test coverage without writing new inputs from scratch. +5. **Unity .NET polyfill**: Unity does not ship .NET 8 BCL until Unity 6.8 (~1 year away). CDT.Core ships a minimal `Int128` polyfill (~180 lines) gated behind `#if !NET7_0_OR_GREATER`. `UInt128` is avoided entirely by rewriting `Int256.MultiplyUnsigned128` with 32-bit word splitting. Zero cost on .NET 8+. +6. **Burst (aspirational)**: No managed references in hot-path structs. `V2i`, `Box2i`, `Int256`, `Triangle`, `Edge` are all `unmanaged`. Virtual dispatch is absent from the core algorithm. `[MethodImpl(AggressiveInlining)]` preserved where already present. + +--- + +## Open Questions + +1. **Coordinate scale for test data**: ×1,000,000 recommended. Consider ×1,000 if input precision does not require 6 decimal places. +2. **Backward compatibility**: This plan is a clean break — all float types deleted in Batch 4. If external consumers need the old API, a compatibility branch or separate package version should be discussed. +3. **Benchmark project** (`CDT.Benchmarks`): Update to new integer API or defer? +4. **Viz project** (`CDT.Viz`): Update to new integer API or defer? +5. ~~**`Int128` availability in Unity**~~: **Resolved** — Unity 6.8 ships BCL, but it is ~1 year away. Polyfill is required now. See `PLAN-DOTNET-COMPAT.md` and the Int128 Polyfill prerequisite above. diff --git a/benchmark/CDT.Benchmarks/Benchmarks.cs b/benchmark/CDT.Benchmarks/Benchmarks.cs index 549fa0d..7d9be47 100644 --- a/benchmark/CDT.Benchmarks/Benchmarks.cs +++ b/benchmark/CDT.Benchmarks/Benchmarks.cs @@ -18,8 +18,10 @@ internal static class BenchmarkInputReader /// /// Reads a CDT input file. /// Format: nVerts nEdges\n x y\n … v1 v2\n … + /// Coordinates are parsed as doubles then truncated to long to match the + /// integer V2i type used by CDT.Core. /// - public static (List> Vertices, List Edges) Read(string fileName) + public static (List Vertices, List Edges) Read(string fileName) { var path = Path.Combine(AppContext.BaseDirectory, "inputs", fileName); @@ -31,13 +33,13 @@ public static (List> Vertices, List Edges) Read(string fileNam int nVerts = int.Parse(header[0]); int nEdges = int.Parse(header[1]); - var verts = new List>(nVerts); + var verts = new List(nVerts); for (int i = 0; i < nVerts; i++) { var tok = sr.ReadLine()!.Trim().Split(' ', StringSplitOptions.RemoveEmptyEntries); - verts.Add(new V2d( - double.Parse(tok[0], System.Globalization.CultureInfo.InvariantCulture), - double.Parse(tok[1], System.Globalization.CultureInfo.InvariantCulture))); + verts.Add(new V2i( + (long)double.Parse(tok[0], System.Globalization.CultureInfo.InvariantCulture), + (long)double.Parse(tok[1], System.Globalization.CultureInfo.InvariantCulture))); } var edges = new List(nEdges); @@ -66,7 +68,7 @@ public static (List> Vertices, List Edges) Read(string fileNam [ShortRunJob] public class ConstrainedSwedenBenchmarks { - private List> _vertices = null!; + private List _vertices = null!; private List _edges = null!; [GlobalSetup] @@ -79,18 +81,18 @@ public void Setup() [Benchmark(Description = "Vertices only – AsProvided")] [BenchmarkCategory("VerticesOnly")] - public Triangulation VerticesOnly_AsProvided() + public Triangulation VerticesOnly_AsProvided() { - var cdt = new Triangulation(VertexInsertionOrder.AsProvided); + var cdt = new Triangulation(VertexInsertionOrder.AsProvided); cdt.InsertVertices(_vertices); return cdt; } [Benchmark(Description = "Vertices only – Auto")] [BenchmarkCategory("VerticesOnly")] - public Triangulation VerticesOnly_Auto() + public Triangulation VerticesOnly_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto); + var cdt = new Triangulation(VertexInsertionOrder.Auto); cdt.InsertVertices(_vertices); return cdt; } @@ -99,9 +101,9 @@ public Triangulation VerticesOnly_Auto() [Benchmark(Description = "Constrained – AsProvided")] [BenchmarkCategory("Constrained")] - public Triangulation Constrained_AsProvided() + public Triangulation Constrained_AsProvided() { - var cdt = new Triangulation(VertexInsertionOrder.AsProvided); + var cdt = new Triangulation(VertexInsertionOrder.AsProvided); cdt.InsertVertices(_vertices); cdt.InsertEdges(_edges); return cdt; @@ -109,9 +111,9 @@ public Triangulation Constrained_AsProvided() [Benchmark(Description = "Constrained – Auto")] [BenchmarkCategory("Constrained")] - public Triangulation Constrained_Auto() + public Triangulation Constrained_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto); + var cdt = new Triangulation(VertexInsertionOrder.Auto); cdt.InsertVertices(_vertices); cdt.InsertEdges(_edges); return cdt; @@ -121,9 +123,9 @@ public Triangulation Constrained_Auto() [Benchmark(Description = "Conforming – Auto")] [BenchmarkCategory("Conforming")] - public Triangulation Conforming_Auto() + public Triangulation Conforming_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto); + var cdt = new Triangulation(VertexInsertionOrder.Auto); cdt.InsertVertices(_vertices); cdt.ConformToEdges(_edges); return cdt; @@ -131,9 +133,9 @@ public Triangulation Conforming_Auto() [Benchmark(Description = "Conforming – AsProvided")] [BenchmarkCategory("Conforming")] - public Triangulation Conforming_AsProvided() + public Triangulation Conforming_AsProvided() { - var cdt = new Triangulation(VertexInsertionOrder.AsProvided); + var cdt = new Triangulation(VertexInsertionOrder.AsProvided); cdt.InsertVertices(_vertices); cdt.ConformToEdges(_edges); return cdt; @@ -143,10 +145,10 @@ public Triangulation Conforming_AsProvided() [Benchmark(Description = "Full pipeline – Auto")] [BenchmarkCategory("FullPipeline")] - public Triangulation FullPipeline_Auto() + public Triangulation FullPipeline_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto, - IntersectingConstraintEdges.TryResolve, 0.0); + var cdt = new Triangulation(VertexInsertionOrder.Auto, + IntersectingConstraintEdges.TryResolve, 0L); cdt.InsertVertices(_vertices); cdt.InsertEdges(_edges); cdt.EraseOuterTrianglesAndHoles(); @@ -157,9 +159,9 @@ public Triangulation FullPipeline_Auto() [Benchmark(Description = "EraseSuperTriangle – Auto")] [BenchmarkCategory("Finalization")] - public Triangulation EraseSuperTriangle_Auto() + public Triangulation EraseSuperTriangle_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto); + var cdt = new Triangulation(VertexInsertionOrder.Auto); cdt.InsertVertices(_vertices); cdt.InsertEdges(_edges); cdt.EraseSuperTriangle(); @@ -168,9 +170,9 @@ public Triangulation EraseSuperTriangle_Auto() [Benchmark(Description = "EraseOuterTriangles – Auto")] [BenchmarkCategory("Finalization")] - public Triangulation EraseOuterTriangles_Auto() + public Triangulation EraseOuterTriangles_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto); + var cdt = new Triangulation(VertexInsertionOrder.Auto); cdt.InsertVertices(_vertices); cdt.InsertEdges(_edges); cdt.EraseOuterTriangles(); @@ -193,7 +195,7 @@ public Triangulation EraseOuterTriangles_Auto() [ShortRunJob] public class SmallDatasetBenchmarks { - private List> _vertices = null!; + private List _vertices = null!; private List _edges = null!; [GlobalSetup] @@ -204,9 +206,9 @@ public void Setup() [Benchmark(Description = "Small – Constrained Auto")] [BenchmarkCategory("Small")] - public Triangulation Small_Constrained_Auto() + public Triangulation Small_Constrained_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto); + var cdt = new Triangulation(VertexInsertionOrder.Auto); cdt.InsertVertices(_vertices); cdt.InsertEdges(_edges); return cdt; @@ -214,41 +216,19 @@ public Triangulation Small_Constrained_Auto() [Benchmark(Description = "Small – Constrained AsProvided")] [BenchmarkCategory("Small")] - public Triangulation Small_Constrained_AsProvided() + public Triangulation Small_Constrained_AsProvided() { - var cdt = new Triangulation(VertexInsertionOrder.AsProvided); + var cdt = new Triangulation(VertexInsertionOrder.AsProvided); cdt.InsertVertices(_vertices); cdt.InsertEdges(_edges); return cdt; } - [Benchmark(Description = "Small – float vs double: double Auto")] - [BenchmarkCategory("FloatVsDouble")] - public Triangulation FloatVsDouble_Double() - { - var cdt = new Triangulation(VertexInsertionOrder.Auto); - cdt.InsertVertices(_vertices); - cdt.InsertEdges(_edges); - return cdt; - } - - [Benchmark(Description = "Small – float vs double: float Auto")] - [BenchmarkCategory("FloatVsDouble")] - public Triangulation FloatVsDouble_Float() - { - var vf = _vertices.Select(v => new V2d((float)v.X, (float)v.Y)).ToList(); - var ef = _edges; - var cdt = new Triangulation(VertexInsertionOrder.Auto); - cdt.InsertVertices(vf); - cdt.InsertEdges(ef); - return cdt; - } - [Benchmark(Description = "Small – Conforming Auto")] [BenchmarkCategory("SmallConforming")] - public Triangulation Small_Conforming_Auto() + public Triangulation Small_Conforming_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto); + var cdt = new Triangulation(VertexInsertionOrder.Auto); cdt.InsertVertices(_vertices); cdt.ConformToEdges(_edges); return cdt; @@ -256,9 +236,9 @@ public Triangulation Small_Conforming_Auto() [Benchmark(Description = "Small – EraseSuperTriangle Auto")] [BenchmarkCategory("SmallFinalization")] - public Triangulation Small_EraseSuperTriangle_Auto() + public Triangulation Small_EraseSuperTriangle_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto); + var cdt = new Triangulation(VertexInsertionOrder.Auto); cdt.InsertVertices(_vertices); cdt.InsertEdges(_edges); cdt.EraseSuperTriangle(); @@ -267,10 +247,10 @@ public Triangulation Small_EraseSuperTriangle_Auto() [Benchmark(Description = "Small – EraseOuterTrianglesAndHoles Auto")] [BenchmarkCategory("SmallFinalization")] - public Triangulation Small_EraseOuterTrianglesAndHoles_Auto() + public Triangulation Small_EraseOuterTrianglesAndHoles_Auto() { - var cdt = new Triangulation(VertexInsertionOrder.Auto, - IntersectingConstraintEdges.TryResolve, 0.0); + var cdt = new Triangulation(VertexInsertionOrder.Auto, + IntersectingConstraintEdges.TryResolve, 0L); cdt.InsertVertices(_vertices); cdt.InsertEdges(_edges); cdt.EraseOuterTrianglesAndHoles(); diff --git a/src/CDT.Core/CDT.Core.csproj b/src/CDT.Core/CDT.Core.csproj index 0d3a67e..46cb1c9 100644 --- a/src/CDT.Core/CDT.Core.csproj +++ b/src/CDT.Core/CDT.Core.csproj @@ -1,7 +1,7 @@ - net8.0;net10.0 + net5.0;net6.0;net8.0;net10.0 enable enable true diff --git a/src/CDT.Core/CdtUtils.cs b/src/CDT.Core/CdtUtils.cs index 8525ca8..2496e0f 100644 --- a/src/CDT.Core/CdtUtils.cs +++ b/src/CDT.Core/CdtUtils.cs @@ -3,12 +3,15 @@ // file, You can obtain one at https://mozilla.org/MPL/2.0/. using System.Collections.ObjectModel; -using System.Numerics; using System.Runtime.CompilerServices; using CDT.Predicates; namespace CDT; +// ========================================================================= +// DuplicatesInfo — no generic dependency, available on all target frameworks +// ========================================================================= + /// /// Duplicates information for vertex deduplication. /// @@ -29,34 +32,32 @@ internal DuplicatesInfo(int[] mapping, List duplicates) } } +// ========================================================================= +// CdtUtils (partial) — non-generic helpers + integer geometry overloads. +// Available on all target frameworks (net5.0+). +// ========================================================================= + /// /// Utility methods for duplicate removal, edge remapping, edge extraction, /// and geometry helpers. Corresponds to C++ CDTUtils.h free functions /// in the flat CDT:: namespace. /// -public static class CdtUtils +public static partial class CdtUtils { // ------------------------------------------------------------------------- - // Duplicate removal + // Duplicate removal (integer / non-generic) // ------------------------------------------------------------------------- /// - /// Finds duplicate vertices (same X and Y) in the given list and returns - /// mapping and duplicate index information. + /// Finds duplicate vertices (same X and Y) in a list of integer-coordinate + /// vertices and returns mapping and duplicate index information. /// - /// Floating-point coordinate type. - /// The vertex list to check for duplicates. - /// - /// A containing a mapping from each original - /// index to its canonical index, and the list of duplicate indices. - /// - public static DuplicatesInfo FindDuplicates(IReadOnlyList> vertices) - where T : IFloatingPoint + public static DuplicatesInfo FindDuplicates(IReadOnlyList vertices) { int n = vertices.Count; var mapping = new int[n]; var duplicates = new List(); - var posToIndex = new Dictionary<(T, T), int>(n); + var posToIndex = new Dictionary<(long, long), int>(n); int iOut = 0; for (int iIn = 0; iIn < n; iIn++) @@ -78,14 +79,9 @@ public static DuplicatesInfo FindDuplicates(IReadOnlyList> vertices) /// /// Removes duplicate vertices from the list in-place using the result from - /// . + /// . /// - /// Floating-point coordinate type. - /// The vertex list to modify in-place. - /// The list of duplicate indices to remove. - /// The list is mutated in-place. - public static void RemoveDuplicates(List> vertices, IReadOnlyList duplicates) - where T : IFloatingPoint + public static void RemoveDuplicates(List vertices, IReadOnlyList duplicates) { if (duplicates.Count == 0) return; var toRemove = new HashSet(duplicates); @@ -99,18 +95,10 @@ public static void RemoveDuplicates(List> vertices, IReadOnlyList } /// - /// Finds and removes duplicate vertices, and remaps all edges accordingly. + /// Finds and removes duplicate integer-coordinate vertices, and remaps all + /// edges accordingly. /// - /// Floating-point coordinate type. - /// The vertex list to modify in-place. - /// The edge list to remap in-place. - /// - /// A with the vertex index mapping and duplicate indices. - /// - public static DuplicatesInfo RemoveDuplicatesAndRemapEdges( - List> vertices, - List edges) - where T : IFloatingPoint + public static DuplicatesInfo RemoveDuplicatesAndRemapEdges(List vertices, List edges) { var info = FindDuplicates(vertices); RemoveDuplicates(vertices, info.Duplicates); @@ -125,11 +113,6 @@ public static DuplicatesInfo RemoveDuplicatesAndRemapEdges( /// /// Remaps all edges using the given vertex index mapping (in-place). /// - /// The edge list to modify in-place. - /// - /// Vertex index mapping: for each old vertex index i, mapping[i] is the new index. - /// - /// The list is mutated in-place. public static void RemapEdges(List edges, IReadOnlyList mapping) { for (int i = 0; i < edges.Count; i++) @@ -143,8 +126,6 @@ public static void RemapEdges(List edges, IReadOnlyList mapping) // ------------------------------------------------------------------------- /// Extracts all unique edges from a triangle list. - /// The triangles to extract edges from. - /// A set containing all unique edges in the triangulation. public static HashSet ExtractEdgesFromTriangles(ReadOnlySpan triangles) { var edges = new HashSet(triangles.Length * 3); @@ -159,13 +140,7 @@ public static HashSet ExtractEdgesFromTriangles(ReadOnlySpan tri /// /// Calculates per-vertex triangle adjacency lists. - /// Returns an array where each entry is the list of triangle indices adjacent to that vertex. /// - /// The triangle list. - /// Total number of vertices. - /// - /// A read-only list of read-only lists: for each vertex index, the list of adjacent triangle indices. - /// public static IReadOnlyList> CalculateTrianglesByVertex( ReadOnlySpan triangles, int verticesCount) @@ -187,12 +162,6 @@ public static IReadOnlyList> CalculateTrianglesByVertex( /// /// Converts a piece→originals edge mapping to the inverse: original→pieces. /// - /// - /// A dictionary mapping each piece edge to the list of original edges it was split from. - /// - /// - /// A read-only dictionary mapping each original edge to the list of piece edges it was split into. - /// public static IReadOnlyDictionary> EdgeToPiecesMapping( IReadOnlyDictionary> pieceToOriginals) { @@ -218,21 +187,11 @@ public static IReadOnlyDictionary> EdgeToPiecesMapping // Index cycling (C++: ccw / cw) // ------------------------------------------------------------------------- - /// - /// Advances a vertex or neighbor index counter-clockwise within a triangle: 0→1→2→0. - /// Corresponds to C++ CDT::ccw(). - /// - /// Current index (0, 1, or 2). - /// The next index in CCW order. + /// Advances index CCW within a triangle: 0→1→2→0. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int Ccw(int i) => (i + 1) % 3; - /// - /// Advances a vertex or neighbor index clockwise within a triangle: 0→2→1→0. - /// Corresponds to C++ CDT::cw(). - /// - /// Current index (0, 1, or 2). - /// The next index in CW order. + /// Advances index CW within a triangle: 0→2→1→0. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int Cw(int i) => (i + 2) % 3; @@ -240,12 +199,6 @@ public static IReadOnlyDictionary> EdgeToPiecesMapping // Triangle index queries // ------------------------------------------------------------------------- - /// - /// Returns the neighbor index (0, 1, or 2) opposed to the given vertex index. - /// Corresponds to C++ CDT::opoNbr(). - /// - /// Vertex index (0, 1, or 2). - /// The neighbor index opposed to the vertex. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int OpposedNeighborIndex(int vertexIndex) => vertexIndex switch { @@ -254,12 +207,6 @@ public static IReadOnlyDictionary> EdgeToPiecesMapping _ => 0, }; - /// - /// Returns the vertex index (0, 1, or 2) opposed to the given neighbor index. - /// Corresponds to C++ CDT::opoVrt(). - /// - /// Neighbor index (0, 1, or 2). - /// The vertex index opposed to the neighbor. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int OpposedVertexIndex(int neighborIndex) => neighborIndex switch { @@ -268,13 +215,6 @@ public static IReadOnlyDictionary> EdgeToPiecesMapping _ => 1, }; - /// - /// Returns the local index (0, 1, or 2) of vertex within triangle . - /// Corresponds to C++ CDT::vertexInd(). - /// - /// The triangle to search. - /// The vertex index to find. - /// The local vertex index (0, 1, or 2) within the triangle. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int VertexIndex(in Triangle t, int v) { @@ -283,40 +223,22 @@ public static int VertexIndex(in Triangle t, int v) return 2; } - /// - /// Returns the local neighbor index (0, 1, or 2) of the edge with vertices - /// and in triangle . - /// Corresponds to C++ CDT::edgeNeighborInd(). - /// - /// The triangle containing the edge. - /// First vertex of the edge. - /// Second vertex of the edge. - /// The neighbor-slot index (0, 1, or 2) for the edge. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int EdgeNeighborIndex(in Triangle t, int va, int vb) { - // Neighbor at index i shares edge (v[i], v[ccw(i)]) if (t.V0 == va) { - if (t.V1 == vb) return 0; // edge (V0,V1) → n[0] - return 2; // edge (V0,V2) → n[2] + if (t.V1 == vb) return 0; + return 2; } if (t.V0 == vb) { - if (t.V1 == va) return 0; // edge (V1,V0) → n[0] - return 2; // edge (V2,V0) → n[2] + if (t.V1 == va) return 0; + return 2; } - return 1; // edge (V1,V2) → n[1] + return 1; } - /// - /// Returns the neighbor-slot index for the edge shared between the triangle - /// and the neighbor at index . - /// Corresponds to C++ CDT::opposedVertexInd(). - /// - /// The triangle to query. - /// The triangle index of the neighbor to find. - /// The local neighbor index (0, 1, or 2) within the triangle. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int NeighborIndex(in Triangle t, int iTopo) { @@ -325,35 +247,14 @@ public static int NeighborIndex(in Triangle t, int iTopo) return 2; } - /// - /// Returns the vertex index in that is opposed to (not shared with) triangle . - /// Corresponds to C++ CDT::opposedTriangleInd(). - /// - /// The triangle to query. - /// The triangle index of the neighbor. - /// The vertex index (global) opposed to the shared edge with . [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int OpposedVertex(in Triangle topo, int iT) => topo.GetVertex(OpposedVertexIndex(NeighborIndex(topo, iT))); - /// - /// Returns the triangle index of the neighbor of opposed to vertex . - /// Corresponds to C++ CDT::opposedTriangle(). - /// - /// The triangle to query. - /// The vertex index whose opposite neighbor is sought. - /// The triangle index of the neighbor opposed to the vertex. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int OpposedTriangle(in Triangle t, int iV) => t.GetNeighbor(OpposedNeighborIndex(VertexIndex(t, iV))); - /// - /// Returns the triangle index adjacent to edge (, ) in triangle . - /// - /// The triangle containing the edge. - /// First vertex of the edge. - /// Second vertex of the edge. - /// The index of the neighboring triangle on the given edge. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int EdgeNeighbor(in Triangle t, int va, int vb) => t.GetNeighbor(EdgeNeighborIndex(t, va, vb)); @@ -362,12 +263,6 @@ public static int EdgeNeighbor(in Triangle t, int va, int vb) // Super-triangle // ------------------------------------------------------------------------- - /// - /// Returns true if any vertex of triangle is one of the three - /// super-triangle vertices (indices 0, 1, 2). - /// - /// The triangle to check. - /// true if the triangle touches the super-triangle; otherwise false. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool TouchesSuperTriangle(in Triangle t) => t.V0 < Indices.SuperTriangleVertexCount @@ -375,94 +270,81 @@ public static bool TouchesSuperTriangle(in Triangle t) || t.V2 < Indices.SuperTriangleVertexCount; // ------------------------------------------------------------------------- - // Point location + // Point location (integer) // ------------------------------------------------------------------------- /// - /// Orient2d wrapper using . - /// Returns the signed area determinant of the triangle formed by , , . - /// Positive = p is to the left of v1→v2; zero = collinear; negative = to the right. - /// Corresponds to C++ CDT::orient2D(). + /// Exact orient2d for integer coordinates. + /// Returns +1 if is to the left of v1→v2, −1 if right, 0 if collinear. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int Orient2D(V2i p, V2i v1, V2i v2) + => PredicatesInt.Orient2dInt(p, v1, v2); + + /// + /// Raw signed-area determinant (Int128) of the triangle formed by + /// , , . + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int128 Orient2DRaw(V2i p, V2i v1, V2i v2) + => PredicatesInt.Orient2dRaw(p, v1, v2); + + /// + /// Returns true if lies strictly inside the + /// circumcircle of (, , ). /// - /// Floating-point coordinate type ( or ). - /// The query point. - /// Start point of the directed line. - /// End point of the directed line. - /// - /// Positive if is to the left of v1→v2; - /// zero if collinear; negative if to the right. - /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T Orient2D(V2d p, V2d v1, V2d v2) - where T : unmanaged, IFloatingPoint + public static bool IsInCircumcircle(V2i p, V2i v1, V2i v2, V2i v3) + => PredicatesInt.InCircleInt(v1.X, v1.Y, v2.X, v2.Y, v3.X, v3.Y, p.X, p.Y) > 0; + + /// + /// Squared Euclidean distance between two integer-coordinate points. + /// Result fits in for coordinates within + /// . + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int128 DistanceSquared(V2i a, V2i b) { - if (typeof(T) == typeof(double)) - { - double r = PredicatesAdaptive.Orient2d( - Unsafe.As(ref Unsafe.AsRef(in v1.X)), Unsafe.As(ref Unsafe.AsRef(in v1.Y)), - Unsafe.As(ref Unsafe.AsRef(in v2.X)), Unsafe.As(ref Unsafe.AsRef(in v2.Y)), - Unsafe.As(ref Unsafe.AsRef(in p.X)), Unsafe.As(ref Unsafe.AsRef(in p.Y))); - return Unsafe.As(ref r); - } - else - { - float r = PredicatesAdaptive.Orient2d( - Unsafe.As(ref Unsafe.AsRef(in v1.X)), Unsafe.As(ref Unsafe.AsRef(in v1.Y)), - Unsafe.As(ref Unsafe.AsRef(in v2.X)), Unsafe.As(ref Unsafe.AsRef(in v2.Y)), - Unsafe.As(ref Unsafe.AsRef(in p.X)), Unsafe.As(ref Unsafe.AsRef(in p.Y))); - return Unsafe.As(ref r); - } + Int128 dx = (Int128)b.X - a.X; + Int128 dy = (Int128)b.Y - a.Y; + return dx * dx + dy * dy; } /// - /// Classifies the orientation value returned by using the given tolerance. - /// Returns if orientation > tolerance, - /// if orientation < -tolerance, - /// or otherwise. - /// Corresponds to C++ CDT::classifyOrientation(). + /// Classifies an integer orient2d sign (+1/0/−1) into a point-line location. /// - /// Floating-point type. - /// The orientation determinant value. - /// Tolerance for on-line classification (default: zero). - /// The classified point-line location. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static PtLineLocation ClassifyOrientation(T orientation, T orientationTolerance = default!) - where T : IFloatingPoint + public static PtLineLocation ClassifyOrientation(int sign) { - if (orientation < -orientationTolerance) return PtLineLocation.Right; - if (orientation > orientationTolerance) return PtLineLocation.Left; + if (sign < 0) return PtLineLocation.Right; + if (sign > 0) return PtLineLocation.Left; return PtLineLocation.OnLine; } /// - /// Determines whether point lies to the left of, on, or to the right of - /// the directed line from to . - /// Corresponds to C++ CDT::locatePointLine(). + /// Determines whether lies to the left of, on, or to + /// the right of the directed line from to + /// using exact integer arithmetic. /// - /// Floating-point coordinate type. - /// The query point. - /// Start point of the directed line. - /// End point of the directed line. - /// Tolerance for on-line classification (default: zero). - /// The location of relative to the directed line. + /// + /// Area-units tolerance: a point whose |Orient2dRaw| ≤ this value is + /// classified as . Must be ≥ 0. + /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static PtLineLocation LocatePointLine(V2d p, V2d v1, V2d v2, T orientationTolerance = default) - where T : unmanaged, IFloatingPoint - => ClassifyOrientation(Orient2D(p, v1, v2), orientationTolerance); + public static PtLineLocation LocatePointLine(V2i p, V2i v1, V2i v2, long areaSnapTolerance = 0L) + { + Int128 area = PredicatesInt.Orient2dRaw(p, v1, v2); + if (area > areaSnapTolerance) return PtLineLocation.Left; + if (area < (Int128)(-areaSnapTolerance)) return PtLineLocation.Right; + return PtLineLocation.OnLine; + } /// - /// Determines whether point is inside, outside, on an edge of, or on a vertex of - /// the triangle defined by (, , ) in CCW order. - /// Corresponds to C++ CDT::locatePointTriangle(). + /// Determines whether is inside, outside, on an edge of, + /// or on a vertex of the CCW triangle (, , + /// ). /// - /// Floating-point coordinate type. - /// The query point. - /// First triangle vertex. - /// Second triangle vertex. - /// Third triangle vertex. - /// The location of relative to the triangle. - public static PtTriLocation LocatePointTriangle(V2d p, V2d v1, V2d v2, V2d v3) - where T : unmanaged, IFloatingPoint + public static PtTriLocation LocatePointTriangle(V2i p, V2i v1, V2i v2, V2i v3) { PtTriLocation result = PtTriLocation.Inside; @@ -483,13 +365,7 @@ public static PtTriLocation LocatePointTriangle(V2d p, V2d v1, V2d v return result; } - /// - /// Returns true if represents a position on any of the three edges - /// of a triangle (OnEdge0, OnEdge1, or OnEdge2). - /// Corresponds to C++ CDT::isOnEdge(). - /// - /// The triangle location to test. - /// true if the location is on an edge; otherwise false. + /// Returns true if the location is on any triangle edge. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsOnEdge(PtTriLocation location) => location is PtTriLocation.OnEdge0 @@ -497,114 +373,35 @@ or PtTriLocation.OnEdge1 or PtTriLocation.OnEdge2; /// - /// Returns the neighbor-slot index (0, 1, or 2) corresponding to the edge indicated by . - /// Only valid when returns true for . - /// Corresponds to C++ CDT::edgeNeighbor(). + /// Returns the neighbor-slot index (0, 1, or 2) for the on-edge location. + /// Only valid when returns true. /// - /// An on-edge location value. - /// The neighbor-slot index (0, 1, or 2). [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int EdgeNeighborFromLocation(PtTriLocation location) => (int)(location - PtTriLocation.OnEdge0); - // ------------------------------------------------------------------------- - // Circumcircle / distance / intersection - // ------------------------------------------------------------------------- - - /// - /// Returns true if point lies strictly inside the circumcircle - /// of the triangle (, , ). - /// Uses internally. - /// Corresponds to C++ CDT::isInCircumcircle(). - /// - /// Floating-point coordinate type. - /// The query point. - /// First triangle vertex (CCW). - /// Second triangle vertex (CCW). - /// Third triangle vertex (CCW). - /// true if the point is inside the circumcircle; otherwise false. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool IsInCircumcircle(V2d p, V2d v1, V2d v2, V2d v3) - where T : unmanaged, IFloatingPoint - { - if (typeof(T) == typeof(double)) - return PredicatesAdaptive.InCircle( - Unsafe.As(ref Unsafe.AsRef(in v1.X)), Unsafe.As(ref Unsafe.AsRef(in v1.Y)), - Unsafe.As(ref Unsafe.AsRef(in v2.X)), Unsafe.As(ref Unsafe.AsRef(in v2.Y)), - Unsafe.As(ref Unsafe.AsRef(in v3.X)), Unsafe.As(ref Unsafe.AsRef(in v3.Y)), - Unsafe.As(ref Unsafe.AsRef(in p.X)), Unsafe.As(ref Unsafe.AsRef(in p.Y))) > 0.0; - else - return PredicatesAdaptive.InCircle( - Unsafe.As(ref Unsafe.AsRef(in v1.X)), Unsafe.As(ref Unsafe.AsRef(in v1.Y)), - Unsafe.As(ref Unsafe.AsRef(in v2.X)), Unsafe.As(ref Unsafe.AsRef(in v2.Y)), - Unsafe.As(ref Unsafe.AsRef(in v3.X)), Unsafe.As(ref Unsafe.AsRef(in v3.Y)), - Unsafe.As(ref Unsafe.AsRef(in p.X)), Unsafe.As(ref Unsafe.AsRef(in p.Y))) > 0f; - } - /// - /// Computes the squared Euclidean distance between two points. + /// Computes the intersection point of line segments a–b and c–d using + /// 256-bit integer arithmetic, rounded half-away-from-zero. /// - /// Floating-point coordinate type. - /// First point. - /// Second point. - /// The squared distance between and . - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T DistanceSquared(V2d a, V2d b) - where T : IFloatingPoint + public static V2i IntersectionPosition(V2i a, V2i b, V2i c, V2i d) { - T dx = b.X - a.X; - T dy = b.Y - a.Y; - return dx * dx + dy * dy; - } + Int128 acd = PredicatesInt.Orient2dRaw(a, c, d); + Int128 bcd = PredicatesInt.Orient2dRaw(b, c, d); + Int128 denom = acd - bcd; - /// - /// Computes the Euclidean distance between two points. - /// - /// Floating-point coordinate type. - /// First point. - /// Second point. - /// The Euclidean distance between and . - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T Distance(V2d a, V2d b) - where T : IFloatingPoint, IRootFunctions - => T.Sqrt(DistanceSquared(a, b)); + Int256 numX = Int256.Multiply(acd, (Int128)(b.X - a.X)); + Int256 numY = Int256.Multiply(acd, (Int128)(b.Y - a.Y)); - /// - /// Computes the intersection point of line segments a–b and c–d. - /// Precondition: the segments must intersect. - /// Corresponds to C++ CDT::detail::intersectionPosition(). - /// - /// Floating-point coordinate type. - /// First endpoint of segment a–b. - /// Second endpoint of segment a–b. - /// First endpoint of segment c–d. - /// Second endpoint of segment c–d. - /// The intersection point of the two segments. - public static V2d IntersectionPosition(V2d a, V2d b, V2d c, V2d d) - where T : unmanaged, IFloatingPoint - { - T acd = Orient2D(a, c, d); - T bcd = Orient2D(b, c, d); - T tab = acd / (acd - bcd); - - T cab = Orient2D(c, a, b); - T dab = Orient2D(d, a, b); - T tcd = cab / (cab - dab); - - static T Lerp(T x, T y, T t) => (T.One - t) * x + t * y; - return new V2d( - T.Abs(a.X - b.X) < T.Abs(c.X - d.X) ? Lerp(a.X, b.X, tab) : Lerp(c.X, d.X, tcd), - T.Abs(a.Y - b.Y) < T.Abs(c.Y - d.Y) ? Lerp(a.Y, b.Y, tab) : Lerp(c.Y, d.Y, tcd)); + long x = a.X + Int256.DivideToInt64(numX, denom); + long y = a.Y + Int256.DivideToInt64(numY, denom); + return new V2i(x, y); } // ------------------------------------------------------------------------- // Adjacency helpers (internal use) // ------------------------------------------------------------------------- - /// Tests whether any pair of triangles (given as vertex triangle lists) share an edge. - /// Triangle indices adjacent to vertex A. - /// Triangle indices adjacent to vertex B. - /// true if any triangle is shared between the two lists. internal static bool VerticesShareEdge(List aTris, List bTris) { foreach (int t in aTris) diff --git a/src/CDT.Core/KdTree.cs b/src/CDT.Core/KdTree.cs index a124554..ea2a344 100644 --- a/src/CDT.Core/KdTree.cs +++ b/src/CDT.Core/KdTree.cs @@ -4,44 +4,43 @@ // Contribution of original implementation: // Andre Fecteau -using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using CDT.Predicates; namespace CDT; /// -/// Incrementally-built 2D KD-tree for nearest-point queries. -/// An external point buffer is referenced by index to keep the tree compact. +/// Incrementally-built 2D KD-tree for nearest-point queries using exact +/// 64-bit integer coordinates. Replaces the generic KdTree<T> for the +/// deterministic integer triangulation path. +/// Distance comparisons use squared distances — +/// no square root, no floating-point. /// -/// Coordinate type. -internal sealed class KdTree - where T : IFloatingPoint, IMinMaxValue, IRootFunctions +internal sealed class KdTree { private const int NumVerticesInLeaf = 32; private const int InitialStackDepth = 64; + private const long Two = 2L; private enum SplitDir { X, Y } private struct Node { - // children[0] == children[1] => leaf public int Child0, Child1; - public List? Data; // non-null only for leaf nodes - + public List? Data; public bool IsLeaf => Child0 == Child1; - public static Node NewLeaf() => new() { Child0 = 0, Child1 = 0, Data = new List(NumVerticesInLeaf) }; } private readonly struct NearestTask { public readonly int NodeIndex; - public readonly T MinX, MinY, MaxX, MaxY; + public readonly long MinX, MinY, MaxX, MaxY; public readonly SplitDir Dir; - public readonly T DistSq; + public readonly Int128 DistSq; - public NearestTask(int node, T minX, T minY, T maxX, T maxY, SplitDir dir, T distSq) + public NearestTask(int node, long minX, long minY, long maxX, long maxY, SplitDir dir, Int128 distSq) { NodeIndex = node; MinX = minX; MinY = minY; MaxX = maxX; MaxY = maxY; Dir = dir; DistSq = distSq; @@ -52,27 +51,26 @@ public NearestTask(int node, T minX, T minY, T maxX, T maxY, SplitDir dir, T dis private int _root; private SplitDir _rootDir = SplitDir.X; - private T _minX, _minY, _maxX, _maxY; + private long _minX, _minY, _maxX, _maxY; private bool _boxInitialized; private int _size; - private readonly T _two; private NearestTask[] _stack = new NearestTask[InitialStackDepth]; - /// Initializes an empty KD-tree with no bounding box pre-set. + /// Initializes an empty KD-tree; box is determined lazily from data. public KdTree() { - _two = T.One + T.One; - _minX = T.MinValue; _minY = T.MinValue; - _maxX = T.MaxValue; _maxY = T.MaxValue; + // Sentinel bounds: any long coordinate passes IsInsideBox until the real + // box is set by InitializeRootBox after the first leaf fills. + _minX = long.MinValue; _minY = long.MinValue; + _maxX = long.MaxValue; _maxY = long.MaxValue; _root = AddNewNode(); _boxInitialized = false; } /// Initializes an empty KD-tree with a known bounding box. - public KdTree(T minX, T minY, T maxX, T maxY) + public KdTree(long minX, long minY, long maxX, long maxY) { - _two = T.One + T.One; _minX = minX; _minY = minY; _maxX = maxX; _maxY = maxY; _root = AddNewNode(); _boxInitialized = true; @@ -82,19 +80,16 @@ public KdTree(T minX, T minY, T maxX, T maxY) public int Size => _size; /// Inserts point at index from the external buffer. - public void Insert(int iPoint, IReadOnlyList> points) + public void Insert(int iPoint, IReadOnlyList points) { _size++; - T px = points[iPoint].X, py = points[iPoint].Y; + long px = points[iPoint].X, py = points[iPoint].Y; - // Extend tree if the point falls outside the current box while (!IsInsideBox(px, py, _minX, _minY, _maxX, _maxY)) - { ExtendTree(px, py); - } int node = _root; - T minX = _minX, minY = _minY, maxX = _maxX, maxY = _maxY; + long minX = _minX, minY = _minY, maxX = _maxX, maxY = _maxY; SplitDir dir = _rootDir; while (true) @@ -102,60 +97,50 @@ public void Insert(int iPoint, IReadOnlyList> points) ref Node n = ref CollectionsMarshal.AsSpan(_nodes)[node]; if (n.IsLeaf) { - // Add point if capacity not reached if (n.Data!.Count < NumVerticesInLeaf) { n.Data.Add(iPoint); return; } - // Lazy box initialization + // Lazy box init: only needed when we first have to split a leaf. if (!_boxInitialized) { InitializeRootBox(points); minX = _minX; minY = _minY; maxX = _maxX; maxY = _maxY; } - // Split the full leaf - T mid = GetMid(minX, minY, maxX, maxY, dir); + long mid = GetMid(minX, minY, maxX, maxY, dir); int c1 = AddNewNode(), c2 = AddNewNode(); - n = ref CollectionsMarshal.AsSpan(_nodes)[node]; // re-acquire after possible resize + n = ref CollectionsMarshal.AsSpan(_nodes)[node]; // re-acquire after resize n.Child0 = c1; n.Child1 = c2; - // Move existing points to children foreach (int ip in n.Data!) { - T cx = points[ip].X, cy = points[ip].Y; - int target = WhichChild(cx, cy, mid, dir); - _nodes[target == 0 ? c1 : c2].Data!.Add(ip); + long cx = points[ip].X, cy = points[ip].Y; + _nodes[WhichChild(cx, cy, mid, dir) == 0 ? c1 : c2].Data!.Add(ip); } - n.Data = null; // inner node – no data list needed + n.Data = null; } - T midVal = GetMid(minX, minY, maxX, maxY, dir); + long midVal = GetMid(minX, minY, maxX, maxY, dir); int childIdx = WhichChild(px, py, midVal, dir); - if (dir == SplitDir.X) - { - if (childIdx == 0) maxX = midVal; else minX = midVal; - } - else - { - if (childIdx == 0) maxY = midVal; else minY = midVal; - } + if (dir == SplitDir.X) { if (childIdx == 0) maxX = midVal; else minX = midVal; } + else { if (childIdx == 0) maxY = midVal; else minY = midVal; } node = childIdx == 0 ? _nodes[node].Child0 : _nodes[node].Child1; dir = dir == SplitDir.X ? SplitDir.Y : SplitDir.X; } } - /// Finds the nearest point to in the external buffer. - public int Nearest(T qx, T qy, IReadOnlyList> points) + /// Finds the nearest point to (, ) in the external buffer. + public int Nearest(long qx, long qy, IReadOnlyList points) { int resultIdx = 0; - T minDistSq = T.MaxValue; + Int128 minDistSq = Int128.MaxValue; int stackTop = -1; - T rootDistSq = DistSqToBox(qx, qy, _minX, _minY, _maxX, _maxY); + Int128 rootDistSq = DistSqToBox(qx, qy, _minX, _minY, _maxX, _maxY); PushStack(ref stackTop, new NearestTask(_root, _minX, _minY, _maxX, _maxY, _rootDir, rootDistSq)); while (stackTop >= 0) @@ -168,43 +153,38 @@ public int Nearest(T qx, T qy, IReadOnlyList> points) { foreach (int ip in n.Data!) { - T dx = points[ip].X - qx; - T dy = points[ip].Y - qy; - T d2 = dx * dx + dy * dy; + long dx = points[ip].X - qx; + long dy = points[ip].Y - qy; + Int128 d2 = (Int128)dx * dx + (Int128)dy * dy; if (d2 < minDistSq) { minDistSq = d2; resultIdx = ip; } } } else { - T mid = GetMid(task.MinX, task.MinY, task.MaxX, task.MaxY, task.Dir); + long mid = GetMid(task.MinX, task.MinY, task.MaxX, task.MaxY, task.Dir); SplitDir childDir = task.Dir == SplitDir.X ? SplitDir.Y : SplitDir.X; bool afterSplit = IsAfterSplit(qx, qy, mid, task.Dir); - - T dSqFarther = FartherBoxDistSq(qx, qy, task.MinX, task.MinY, task.MaxX, task.MaxY, mid, task.Dir); + Int128 dSqFarther = FartherBoxDistSq(qx, qy, task.MinX, task.MinY, task.MaxX, task.MaxY, mid, task.Dir); if (stackTop + 2 >= _stack.Length) Array.Resize(ref _stack, _stack.Length + InitialStackDepth); if (afterSplit) { - // Closer = child1, Farther = child0 - T fMinX = task.MinX, fMinY = task.MinY, fMaxX = task.MaxX, fMaxY = task.MaxY; - T cMinX = task.MinX, cMinY = task.MinY, cMaxX = task.MaxX, cMaxY = task.MaxY; + long fMinX = task.MinX, fMinY = task.MinY, fMaxX = task.MaxX, fMaxY = task.MaxY; + long cMinX = task.MinX, cMinY = task.MinY, cMaxX = task.MaxX, cMaxY = task.MaxY; if (task.Dir == SplitDir.X) { fMaxX = mid; cMinX = mid; } - else { fMaxY = mid; cMinY = mid; } - + else { fMaxY = mid; cMinY = mid; } if (dSqFarther <= minDistSq) PushStack(ref stackTop, new NearestTask(n.Child0, fMinX, fMinY, fMaxX, fMaxY, childDir, dSqFarther)); PushStack(ref stackTop, new NearestTask(n.Child1, cMinX, cMinY, cMaxX, cMaxY, childDir, task.DistSq)); } else { - // Closer = child0, Farther = child1 - T cMinX = task.MinX, cMinY = task.MinY, cMaxX = task.MaxX, cMaxY = task.MaxY; - T fMinX = task.MinX, fMinY = task.MinY, fMaxX = task.MaxX, fMaxY = task.MaxY; + long cMinX = task.MinX, cMinY = task.MinY, cMaxX = task.MaxX, cMaxY = task.MaxY; + long fMinX = task.MinX, fMinY = task.MinY, fMaxX = task.MaxX, fMaxY = task.MaxY; if (task.Dir == SplitDir.X) { cMaxX = mid; fMinX = mid; } - else { cMaxY = mid; fMinY = mid; } - + else { cMaxY = mid; fMinY = mid; } if (dSqFarther <= minDistSq) PushStack(ref stackTop, new NearestTask(n.Child1, fMinX, fMinY, fMaxX, fMaxY, childDir, dSqFarther)); PushStack(ref stackTop, new NearestTask(n.Child0, cMinX, cMinY, cMaxX, cMaxY, childDir, task.DistSq)); @@ -219,50 +199,53 @@ public int Nearest(T qx, T qy, IReadOnlyList> points) // ------------------------------------------------------------------------- [MethodImpl(MethodImplOptions.AggressiveInlining)] - private void PushStack(ref int top, NearestTask task) - { - _stack[++top] = task; - } + private void PushStack(ref int top, NearestTask task) => _stack[++top] = task; [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static bool IsInsideBox(T px, T py, T minX, T minY, T maxX, T maxY) + private static bool IsInsideBox(long px, long py, long minX, long minY, long maxX, long maxY) => px >= minX && px <= maxX && py >= minY && py <= maxY; + /// + /// Returns the midpoint of the interval [a, b] without overflow. + /// Uses a + (b - a) / 2 — correct for the full long range. + /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - private T GetMid(T minX, T minY, T maxX, T maxY, SplitDir dir) - { - return dir == SplitDir.X ? (minX + maxX) / _two : (minY + maxY) / _two; - } + private static long GetMid(long minX, long minY, long maxX, long maxY, SplitDir dir) + => dir == SplitDir.X + ? minX + (maxX - minX) / Two + : minY + (maxY - minY) / Two; [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static bool IsAfterSplit(T px, T py, T split, SplitDir dir) + private static bool IsAfterSplit(long px, long py, long split, SplitDir dir) => dir == SplitDir.X ? px > split : py > split; [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static int WhichChild(T px, T py, T split, SplitDir dir) + private static int WhichChild(long px, long py, long split, SplitDir dir) => IsAfterSplit(px, py, split, dir) ? 1 : 0; + /// Returns squared distance from point to box; zero if inside. [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static T DistSqToBox(T px, T py, T minX, T minY, T maxX, T maxY) + private static Int128 DistSqToBox(long px, long py, long minX, long minY, long maxX, long maxY) { - T dx = T.Max(T.Max(minX - px, T.Zero), px - maxX); - T dy = T.Max(T.Max(minY - py, T.Zero), py - maxY); - return dx * dx + dy * dy; + long dx = Math.Max(Math.Max(minX - px, 0L), px - maxX); + long dy = Math.Max(Math.Max(minY - py, 0L), py - maxY); + return (Int128)dx * dx + (Int128)dy * dy; } - private static T FartherBoxDistSq(T px, T py, T minX, T minY, T maxX, T maxY, T mid, SplitDir dir) + private static Int128 FartherBoxDistSq( + long px, long py, long minX, long minY, long maxX, long maxY, long mid, SplitDir dir) { if (dir == SplitDir.X) { - T dx = px - mid; - T dy = T.Max(T.Max(minY - py, T.Zero), py - maxY); - return dx * dx + dy * dy; + long dx = px - mid; + long dy = Math.Max(Math.Max(minY - py, 0L), py - maxY); + return (Int128)dx * dx + (Int128)dy * dy; } else { - T dx = T.Max(T.Max(minX - px, T.Zero), px - maxX); - T dy = py - mid; - return dx * dx + dy * dy; + long dx = Math.Max(Math.Max(minX - px, 0L), px - maxX); + long dy = py - mid; + return (Int128)dx * dx + (Int128)dy * dy; } } @@ -273,7 +256,7 @@ private int AddNewNode() return idx; } - private void ExtendTree(T px, T py) + private void ExtendTree(long px, long py) { int newRoot = AddNewNode(); int newLeaf = AddNewNode(); @@ -283,52 +266,33 @@ private void ExtendTree(T px, T py) { case SplitDir.X: _rootDir = SplitDir.Y; - if (py < _minY) - { - _minY -= _maxY - _minY; - nr.Child0 = newLeaf; nr.Child1 = _root; - } - else - { - _maxY += _maxY - _minY; - nr.Child0 = _root; nr.Child1 = newLeaf; - } + if (py < _minY) { _minY -= _maxY - _minY; nr.Child0 = newLeaf; nr.Child1 = _root; } + else { _maxY += _maxY - _minY; nr.Child0 = _root; nr.Child1 = newLeaf; } break; case SplitDir.Y: _rootDir = SplitDir.X; - if (px < _minX) - { - _minX -= _maxX - _minX; - nr.Child0 = newLeaf; nr.Child1 = _root; - } - else - { - _maxX += _maxX - _minX; - nr.Child0 = _root; nr.Child1 = newLeaf; - } + if (px < _minX) { _minX -= _maxX - _minX; nr.Child0 = newLeaf; nr.Child1 = _root; } + else { _maxX += _maxX - _minX; nr.Child0 = _root; nr.Child1 = newLeaf; } break; } _root = newRoot; } - private void InitializeRootBox(IReadOnlyList> points) + private void InitializeRootBox(IReadOnlyList points) { Node rootNode = _nodes[_root]; - T mxn = points[rootNode.Data![0]].X, myn = points[rootNode.Data[0]].Y; - T mxx = mxn, mxy = myn; + long mxn = points[rootNode.Data![0]].X, myn = points[rootNode.Data[0]].Y; + long mxx = mxn, mxy = myn; foreach (int ip in rootNode.Data) { - T cx = points[ip].X, cy = points[ip].Y; - if (cx < mxn) mxn = cx; - if (cx > mxx) mxx = cx; - if (cy < myn) myn = cy; - if (cy > mxy) mxy = cy; + long cx = points[ip].X, cy = points[ip].Y; + if (cx < mxn) mxn = cx; if (cx > mxx) mxx = cx; + if (cy < myn) myn = cy; if (cy > mxy) mxy = cy; } - // Ensure non-zero size - T padding = T.One; - if (mxn == mxx) { mxn -= padding; mxx += padding; } - if (myn == mxy) { myn -= padding; mxy += padding; } + const long Padding = 1L; + if (mxn == mxx) { mxn -= Padding; mxx += Padding; } + if (myn == mxy) { myn -= Padding; mxy += Padding; } _minX = mxn; _minY = myn; _maxX = mxx; _maxY = mxy; _boxInitialized = true; diff --git a/src/CDT.Core/Predicates/Int128.cs b/src/CDT.Core/Predicates/Int128.cs new file mode 100644 index 0000000..5e24df4 --- /dev/null +++ b/src/CDT.Core/Predicates/Int128.cs @@ -0,0 +1,185 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#if !NET7_0_OR_GREATER + +using System.Runtime.CompilerServices; + +namespace CDT.Predicates; + +/// +/// A 128-bit signed integer for runtimes prior to .NET 7 (e.g. the current +/// Unity runtime). On .NET 7+ System.Int128 is used directly and this +/// struct is compiled away by the #if !NET7_0_OR_GREATER guard. +/// +/// +/// Only the operations used by CDT.Core's integer predicate layer are +/// implemented. Stored as two limbs in little-endian +/// two's-complement. Blittable unmanaged value type — safe in unmanaged/Burst +/// contexts (Burst support for the polyfill path depends on Burst's approved +/// type list at the time of adoption). +/// +public readonly struct Int128 +{ + // _lo = bits 0–63, _hi = bits 64–127. MSB of _hi is the sign bit. + internal readonly ulong _lo; + internal readonly ulong _hi; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public Int128(ulong lo, ulong hi) { _lo = lo; _hi = hi; } + + // ------------------------------------------------------------------------- + // Constants + // ------------------------------------------------------------------------- + + /// 0. + public static readonly Int128 Zero = new Int128(0UL, 0UL); + /// 1. + public static readonly Int128 One = new Int128(1UL, 0UL); + /// -1. + public static readonly Int128 NegativeOne = new Int128(ulong.MaxValue, ulong.MaxValue); + + /// 2^127 − 1 (maximum positive value). + public static readonly Int128 MaxValue = new Int128(ulong.MaxValue, (ulong)long.MaxValue); + + /// −2^127 (minimum value). + public static readonly Int128 MinValue = new Int128(0UL, 0x8000_0000_0000_0000UL); + + // ------------------------------------------------------------------------- + // Casts + // ------------------------------------------------------------------------- + + /// Widens a to Int128 via sign extension. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator Int128(long value) => + new Int128((ulong)value, value < 0L ? ulong.MaxValue : 0UL); + + /// Returns the low 64 bits as . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator ulong(Int128 value) => value._lo; + + /// Returns the low 64 bits reinterpreted as . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator long(Int128 value) => (long)value._lo; + + // ------------------------------------------------------------------------- + // Unary negation (~a + 1 in two's complement) + // ------------------------------------------------------------------------- + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int128 operator -(Int128 a) + { + ulong nLo = ~a._lo; + ulong nHi = ~a._hi; + ulong rLo = nLo + 1UL; + ulong carry = rLo < nLo ? 1UL : 0UL; // overflow of nLo+1 iff nLo == ulong.MaxValue + return new Int128(rLo, nHi + carry); + } + + // ------------------------------------------------------------------------- + // Addition + // ------------------------------------------------------------------------- + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int128 operator +(Int128 a, Int128 b) + { + ulong lo = a._lo + b._lo; + ulong carry = lo < a._lo ? 1UL : 0UL; + return new Int128(lo, a._hi + b._hi + carry); + } + + // ------------------------------------------------------------------------- + // Subtraction + // ------------------------------------------------------------------------- + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int128 operator -(Int128 a, Int128 b) => a + (-b); + + // ------------------------------------------------------------------------- + // Multiplication (low 128 bits — bits ≥ 128 are discarded) + // ------------------------------------------------------------------------- + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int128 operator *(Int128 a, Int128 b) + { + // Full product bits 0–63. + ulong rLo = a._lo * b._lo; + // Full product bits 64–127. + // MulHi(a._lo, b._lo) = high 64 bits of the lo×lo cross. + // a._lo * b._hi and a._hi * b._lo contribute their low 64 bits. + // Any carry into bit 128 is intentionally discarded (modular 128-bit arithmetic). + ulong rHi = MulHi(a._lo, b._lo) + a._lo * b._hi + a._hi * b._lo; + return new Int128(rLo, rHi); + } + + // ------------------------------------------------------------------------- + // Comparison + // ------------------------------------------------------------------------- + + /// Signed comparison. Returns −1, 0, or +1. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int CompareTo(Int128 other) + { + if (this < other) return -1; + if (other < this) return 1; + return 0; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator <(Int128 a, Int128 b) + { + // Compare high words as signed; break ties with low words as unsigned. + long aHi = (long)a._hi, bHi = (long)b._hi; + if (aHi != bHi) return aHi < bHi; + return a._lo < b._lo; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator >(Int128 a, Int128 b) => b < a; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator <=(Int128 a, Int128 b) => !(b < a); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator >=(Int128 a, Int128 b) => !(a < b); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator ==(Int128 a, Int128 b) => a._lo == b._lo && a._hi == b._hi; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator !=(Int128 a, Int128 b) => !(a == b); + + /// + public override bool Equals(object? obj) => obj is Int128 other && this == other; + + /// + public override int GetHashCode() => HashCode.Combine(_lo, _hi); + + /// + public override string ToString() => + $"Int128(Hi=0x{_hi:X16} Lo=0x{_lo:X16})"; + + // ------------------------------------------------------------------------- + // Internal helpers + // ------------------------------------------------------------------------- + + /// + /// Returns the high 64 bits of the unsigned product a × b. + /// Uses 32-bit splitting — no hardware widening multiply required. + /// Also called by in the non-NET7 compilation path. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static ulong MulHi(ulong a, ulong b) + { + ulong aLo = (uint)a, aHi = a >> 32; + ulong bLo = (uint)b, bHi = b >> 32; + ulong p = aLo * bLo; + ulong t = aHi * bLo + (p >> 32); + ulong tLo = (uint)t, tHi = t >> 32; + t = aLo * bHi + tLo; + return aHi * bHi + tHi + (t >> 32); + } +} + +#endif diff --git a/src/CDT.Core/Predicates/Int256.cs b/src/CDT.Core/Predicates/Int256.cs new file mode 100644 index 0000000..5a52c72 --- /dev/null +++ b/src/CDT.Core/Predicates/Int256.cs @@ -0,0 +1,335 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +using System.Runtime.CompilerServices; + +namespace CDT.Predicates; + +/// +/// A 256-bit signed integer stored as four 64-bit unsigned limbs in +/// little-endian order (Lo = bits 0–63, M1 = 64–127, M2 = 128–191, Hi = 192–255). +/// Two's-complement representation. +/// Blittable value type — safe to use in unmanaged/Burst contexts. +/// +/// +/// Only the operations required by the integer geometric predicates are +/// implemented: construction from Int128, negation, addition, subtraction, +/// and multiplication of two Int128 values into an Int256 result. +/// +internal readonly struct Int256 +{ + // Little-endian limbs: Lo is the least-significant 64 bits. + internal readonly ulong Lo; + internal readonly ulong M1; + internal readonly ulong M2; + internal readonly ulong Hi; + + /// Zero. + public static readonly Int256 Zero = new(0UL, 0UL, 0UL, 0UL); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal Int256(ulong lo, ulong m1, ulong m2, ulong hi) + { + Lo = lo; M1 = m1; M2 = m2; Hi = hi; + } + + // ------------------------------------------------------------------------- + // Conversion from Int128 + // ------------------------------------------------------------------------- + + /// Sign-extends an into an . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int256 FromInt128(Int128 value) + { +#if NET7_0_OR_GREATER + ulong lo = (ulong)value; + ulong m1 = (ulong)((UInt128)value >> 64); +#else + ulong lo = value._lo; + ulong m1 = value._hi; +#endif + // Sign-extend: if negative fill upper limbs with 0xFFFF…, else 0. + ulong ext = value < Int128.Zero ? ulong.MaxValue : 0UL; + return new Int256(lo, m1, ext, ext); + } + + // ------------------------------------------------------------------------- + // Sign + // ------------------------------------------------------------------------- + + /// + /// Returns +1 if positive, -1 if negative, 0 if zero. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int Sign() + { + // High bit of Hi is the sign bit in two's-complement. + if ((Hi & 0x8000_0000_0000_0000UL) != 0) return -1; + if ((Hi | M2 | M1 | Lo) == 0UL) return 0; + return 1; + } + + // ------------------------------------------------------------------------- + // Negation (two's complement) + // ------------------------------------------------------------------------- + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int256 Negate(Int256 a) + { + // ~a + 1 + ulong lo = ~a.Lo; + ulong m1 = ~a.M1; + ulong m2 = ~a.M2; + ulong hi = ~a.Hi; + + // Add 1 with carry propagation. + ulong rLo = lo + 1UL; + ulong c1 = rLo < lo ? 1UL : 0UL; + ulong rM1 = m1 + c1; + ulong c2 = (c1 != 0UL && rM1 < m1) ? 1UL : 0UL; + ulong rM2 = m2 + c2; + ulong c3 = (c2 != 0UL && rM2 < m2) ? 1UL : 0UL; + ulong rHi = hi + c3; + + return new Int256(rLo, rM1, rM2, rHi); + } + + // ------------------------------------------------------------------------- + // Addition + // ------------------------------------------------------------------------- + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int256 Add(Int256 a, Int256 b) + { + ulong lo = a.Lo + b.Lo; + ulong c1 = lo < a.Lo ? 1UL : 0UL; + + ulong m1 = a.M1 + b.M1; + ulong c2 = m1 < a.M1 ? 1UL : 0UL; + m1 += c1; + c2 += m1 < c1 ? 1UL : 0UL; // carry from adding c1 + + ulong m2 = a.M2 + b.M2; + ulong c3 = m2 < a.M2 ? 1UL : 0UL; + m2 += c2; + c3 += m2 < c2 ? 1UL : 0UL; + + ulong hi = a.Hi + b.Hi + c3; // overflow at 256 bits is intentional + // (wraps for correctness of sign-bit math) + return new Int256(lo, m1, m2, hi); + } + + // ------------------------------------------------------------------------- + // Subtraction + // ------------------------------------------------------------------------- + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int256 Subtract(Int256 a, Int256 b) => Add(a, Negate(b)); + + // ------------------------------------------------------------------------- + // Multiplication Int128 × Int128 → Int256 + // ------------------------------------------------------------------------- + + /// + /// Computes the exact 256-bit product of two signed 128-bit integers. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int256 Multiply(Int128 a, Int128 b) + { + // Record sign, then work with unsigned magnitudes. + bool negative = (a < Int128.Zero) != (b < Int128.Zero); + +#if NET7_0_OR_GREATER + UInt128 ua = a < Int128.Zero ? (UInt128)(-a) : (UInt128)a; + UInt128 ub = b < Int128.Zero ? (UInt128)(-b) : (UInt128)b; + Int256 product = MultiplyUnsigned128(ua, ub); +#else + Int128 ua = a < Int128.Zero ? -a : a; + Int128 ub = b < Int128.Zero ? -b : b; + Int256 product = MultiplyUnsigned128(ua._lo, ua._hi, ub._lo, ub._hi); +#endif + return negative ? Negate(product) : product; + } + + /// + /// Unsigned 128×128 → 256-bit multiplication. + /// Splits each operand into two 64-bit halves and accumulates four + /// 64×64 partial products, propagating carries exactly. + /// +#if NET7_0_OR_GREATER + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static Int256 MultiplyUnsigned128(UInt128 a, UInt128 b) + { + ulong aLo = (ulong)a; + ulong aHi = (ulong)(a >> 64); + ulong bLo = (ulong)b; + ulong bHi = (ulong)(b >> 64); + + // Four 64×64 partial products, each fitting in 128 bits. + UInt128 p0 = (UInt128)aLo * bLo; // bits 0–127 + UInt128 p1 = (UInt128)aLo * bHi; // bits 64–191 + UInt128 p2 = (UInt128)aHi * bLo; // bits 64–191 + UInt128 p3 = (UInt128)aHi * bHi; // bits 128–255 + + // r0 = low 64 bits of p0 (no overlap). + ulong r0 = (ulong)p0; + + // Accumulate bits 64–127: high 64 of p0 + low 64 of p1 + low 64 of p2. + UInt128 mid1 = (p0 >> 64) + (UInt128)(ulong)p1 + (UInt128)(ulong)p2; + ulong r1 = (ulong)mid1; + + // Accumulate bits 128–191: overflow of mid1 + high 64 of p1 + high 64 of p2 + low 64 of p3. + UInt128 mid2 = (mid1 >> 64) + (p1 >> 64) + (p2 >> 64) + (UInt128)(ulong)p3; + ulong r2 = (ulong)mid2; + + // Bits 192–255: overflow of mid2 + high 64 of p3. + ulong r3 = (ulong)(mid2 >> 64) + (ulong)(p3 >> 64); + + return new Int256(r0, r1, r2, r3); + } +#else + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static Int256 MultiplyUnsigned128(ulong aLo, ulong aHi, ulong bLo, ulong bHi) + { + // Four 64×64 partial products; MulHi gives the high 64 bits of each. + ulong p0Lo = aLo * bLo; ulong p0Hi = MulHi(aLo, bLo); + ulong p1Lo = aLo * bHi; ulong p1Hi = MulHi(aLo, bHi); + ulong p2Lo = aHi * bLo; ulong p2Hi = MulHi(aHi, bLo); + ulong p3Lo = aHi * bHi; ulong p3Hi = MulHi(aHi, bHi); + + ulong r0 = p0Lo; + + // Accumulate bits 64–127. + ulong r1 = p0Hi; + ulong c1 = 0UL; + ulong t = r1 + p1Lo; if (t < r1) c1++; r1 = t; + t = r1 + p2Lo; if (t < r1) c1++; r1 = t; + + // Accumulate bits 128–191. + ulong r2 = c1; + ulong c2 = 0UL; + t = r2 + p1Hi; if (t < r2) c2++; r2 = t; + t = r2 + p2Hi; if (t < r2) c2++; r2 = t; + t = r2 + p3Lo; if (t < r2) c2++; r2 = t; + + // Bits 192–255. + ulong r3 = p3Hi + c2; + + return new Int256(r0, r1, r2, r3); + } + + /// + /// High 64 bits of the unsigned product × . + /// Equivalent to — duplicated here to keep Int256 self-contained. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static ulong MulHi(ulong a, ulong b) + { + ulong aLo = (uint)a, aHi = a >> 32; + ulong bLo = (uint)b, bHi = b >> 32; + ulong p = aLo * bLo; + ulong t = aHi * bLo + (p >> 32); + ulong tLo = (uint)t, tHi = t >> 32; + t = aLo * bHi + tLo; + return aHi * bHi + tHi + (t >> 32); + } +#endif + + // ------------------------------------------------------------------------- + // Operators (convenience wrappers used by predicate code) + // ------------------------------------------------------------------------- + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int256 operator +(Int256 a, Int256 b) => Add(a, b); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int256 operator -(Int256 a, Int256 b) => Subtract(a, b); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int256 operator -(Int256 a) => Negate(a); + + // ------------------------------------------------------------------------- + // Division: Int256 / Int128 → long (round-half-away-from-zero) + // ------------------------------------------------------------------------- + + /// + /// Divides by and + /// returns the result rounded half-away-from-zero as a . + /// + /// + /// Preconditions enforced with : + /// + /// ≠ 0. + /// The exact quotient fits in + /// (i.e. |result| ≤ 2^53 = MaxCoordinate). + /// + /// Used by IntersectionPosition; CDT geometry guarantees both + /// preconditions hold (see PLAN.md bit-width analysis). + /// + public static long DivideToInt64(Int256 numerator, Int128 denominator) + { + System.Diagnostics.Debug.Assert(denominator != Int128.Zero, "denominator must not be zero"); + + int numSign = numerator.Sign(); + if (numSign == 0) return 0L; + + bool negative = (numSign < 0) ^ (denominator < Int128.Zero); + + Int256 absNum = numSign < 0 ? Negate(numerator) : numerator; + Int128 absDen128 = denominator < Int128.Zero ? -denominator : denominator; + Int256 absDen = FromInt128(absDen128); + + // Binary long division. |quotient| ≤ 2^53, so 54 iterations suffice. + ulong q = 0; + Int256 rem = absNum; + for (int bit = 53; bit >= 0; bit--) + { + Int256 shifted = bit == 0 ? absDen : ShiftLeftUnsigned(absDen, bit); + if (CompareUnsigned(rem, shifted) >= 0) + { + rem = Subtract(rem, shifted); + q |= 1UL << bit; + } + } + + // Round half-away-from-zero: if 2*rem ≥ absDen, increment quotient. + if (CompareUnsigned(Add(rem, rem), absDen) >= 0) + q++; + + System.Diagnostics.Debug.Assert(q <= (ulong)long.MaxValue, "quotient does not fit in long"); + return negative ? -(long)q : (long)q; + } + + /// + /// Left-shifts a non-negative by bits (1 ≤ k ≤ 63). + /// No overflow checking — caller must ensure the result fits. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static Int256 ShiftLeftUnsigned(Int256 a, int k) + { + int rk = 64 - k; + return new Int256( + a.Lo << k, + (a.M1 << k) | (a.Lo >> rk), + (a.M2 << k) | (a.M1 >> rk), + (a.Hi << k) | (a.M2 >> rk)); + } + + /// + /// Unsigned comparison of two values. + /// Returns −1, 0, or +1. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static int CompareUnsigned(Int256 a, Int256 b) + { + if (a.Hi != b.Hi) return a.Hi < b.Hi ? -1 : 1; + if (a.M2 != b.M2) return a.M2 < b.M2 ? -1 : 1; + if (a.M1 != b.M1) return a.M1 < b.M1 ? -1 : 1; + return a.Lo < b.Lo ? -1 : a.Lo > b.Lo ? 1 : 0; + } + + /// + public override string ToString() => + $"Int256(Hi=0x{Hi:X16} M2=0x{M2:X16} M1=0x{M1:X16} Lo=0x{Lo:X16})"; +} diff --git a/src/CDT.Core/Predicates/PredicatesAdaptive.cs b/src/CDT.Core/Predicates/PredicatesAdaptive.cs deleted file mode 100644 index 153b709..0000000 --- a/src/CDT.Core/Predicates/PredicatesAdaptive.cs +++ /dev/null @@ -1,665 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at https://mozilla.org/MPL/2.0/. -// -// Geometric predicates — port of Lenthe/Shewchuk adaptive predicates from -// artem-ogre/CDT (predicates.h, predicates::adaptive namespace). - -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Runtime.Intrinsics; - -namespace CDT.Predicates; - -/// -/// Geometric predicates using normal floating-point arithmetic, -/// falling back to arbitrary precision when needed for robustness. -/// These are significantly faster than when -/// the determinant is large (i.e. the non-degenerate case), but produce -/// the same correct result in all cases. -/// Corresponds to C++ predicates::adaptive. -/// -/// -/// Reference: https://www.cs.cmu.edu/~quake/robust.html -/// -/// -public static class PredicatesAdaptive -{ - // ------------------------------------------------------------------------- - // Error-bound constants (double: eps = 2^-53, float: eps = 2^-24) - // ------------------------------------------------------------------------- - private const double CcwBoundAD = 3.3306690621773814e-16; - private const double CcwBoundBD = 2.2204460492503131e-16; - private const double CcwBoundCD = 1.1093356479670487e-31; - private const double IccBoundAD = 1.1102230246251565e-15; - private const double IccBoundBD = 4.440892098500626e-15; - private const double IccBoundCD = 5.423306525521214e-31; - private const double ResultErrBound = 3.3306690738754716e-16; - private const float CcwBoundAF = 1.7881393432617188e-7f; - private const float IccBoundAF = 5.960464477539063e-7f; - internal const double SplitterD = 134217729.0; // 2^27 + 1 - - // ========================================================================= - // Orient2d - // ========================================================================= - - /// - /// Adaptive orient2d predicate for coordinates. - /// Determines whether point c is to the left of, on, or to the right of - /// the directed line from a to b. - /// Returns the determinant of {{ax-cx, ay-cy}, {bx-cx, by-cy}}. - /// Positive = c is left/above the line a→b; zero = collinear; negative = right/below. - /// - /// X-coordinate of point a. - /// Y-coordinate of point a. - /// X-coordinate of point b. - /// Y-coordinate of point b. - /// X-coordinate of point c. - /// Y-coordinate of point c. - /// - /// A positive value if c is to the left of line a→b, - /// zero if collinear, or a negative value if to the right. - /// - /// - [MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)] // opt-15: aggressive JIT opt for fast-path Stage A - [SkipLocalsInit] - public static double Orient2d( - double ax, double ay, double bx, double by, double cx, double cy) - { - double acx = ax - cx, bcx = bx - cx; - double acy = ay - cy, bcy = by - cy; - double detleft = acx * bcy; - double detright = acy * bcx; - double det = detleft - detright; - - if ((detleft < 0.0) != (detright < 0.0)) - { - return det; - } - - if (detleft == 0.0 || detright == 0.0) - { - return det; - } - - double detsum = Math.Abs(detleft + detright); - if (Math.Abs(det) >= CcwBoundAD * detsum) - { - return det; - } - - // Stage B - Span b = stackalloc double[4]; - int bLen = TwoTwoDiff(acx, bcy, acy, bcx, b); - det = Estimate(b, bLen); - if (Math.Abs(det) >= CcwBoundBD * detsum) - { - return det; - } - - // Stage C - double acxtail = MinusTail(ax, cx, acx); - double bcxtail = MinusTail(bx, cx, bcx); - double acytail = MinusTail(ay, cy, acy); - double bcytail = MinusTail(by, cy, bcy); - - if (acxtail == 0.0 && bcxtail == 0.0 && acytail == 0.0 && bcytail == 0.0) - { - return det; - } - - double errC = CcwBoundCD * detsum + ResultErrBound * Math.Abs(det); - det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail); - if (Math.Abs(det) >= errC) - { - return det; - } - - // Stage D: exact expansion - return PredicatesExact.Orient2d(ax, ay, bx, by, cx, cy); - } - - /// - /// Adaptive orient2d predicate for coordinates. - /// Determines whether point c is to the left of, on, or to the right of - /// the directed line from a to b. - /// Returns the determinant of {{ax-cx, ay-cy}, {bx-cx, by-cy}}. - /// Positive = c is left/above the line a→b; zero = collinear; negative = right/below. - /// - /// X-coordinate of point a. - /// Y-coordinate of point a. - /// X-coordinate of point b. - /// Y-coordinate of point b. - /// X-coordinate of point c. - /// Y-coordinate of point c. - /// - /// A positive value if c is to the left of line a→b, - /// zero if collinear, or a negative value if to the right. - /// - /// - /// All fast-path arithmetic is performed in single precision. - /// Falls back to exact double computation when needed. - /// - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float Orient2d( - float ax, float ay, float bx, float by, float cx, float cy) - { - float acx = ax - cx, bcx = bx - cx; - float acy = ay - cy, bcy = by - cy; - float detleft = acx * bcy; - float detright = acy * bcx; - float det = detleft - detright; - - if ((detleft < 0f) != (detright < 0f)) - { - return det; - } - - if (detleft == 0f || detright == 0f) - { - return det; - } - - float detsum = MathF.Abs(detleft + detright); - if (MathF.Abs(det) >= CcwBoundAF * detsum) - { - return det; - } - - // Exact: each product of two 24-bit floats is exact in 53-bit double. - double exact = (double)acx * bcy - (double)acy * bcx; - return (float)exact; - } - - // ========================================================================= - // InCircle - // ========================================================================= - - /// - /// Adaptive incircle predicate for coordinates. - /// Determines whether point d is inside, on, or outside the circumcircle - /// of the triangle defined by a, b, c (in CCW order). - /// Returns positive if d is inside, zero if on, negative if outside. - /// - /// X-coordinate of triangle vertex a. - /// Y-coordinate of triangle vertex a. - /// X-coordinate of triangle vertex b. - /// Y-coordinate of triangle vertex b. - /// X-coordinate of triangle vertex c. - /// Y-coordinate of triangle vertex c. - /// X-coordinate of query point d. - /// Y-coordinate of query point d. - /// - /// A positive value if d is inside the circumcircle, - /// zero if on, or a negative value if outside. - /// - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] // opt-16: keep only AggressiveInlining (AggressiveOptimization inflated the Stage-B frame and hurt Stage-A) - [SkipLocalsInit] - public static double InCircle( - double ax, double ay, double bx, double by, - double cx, double cy, double dx, double dy) - { - double adx = ax - dx, bdx = bx - dx, cdx = cx - dx; - double ady = ay - dy, bdy = by - dy, cdy = cy - dy; - - double bdxcdy = bdx * cdy, cdxbdy = cdx * bdy; - double cdxady = cdx * ady, adxcdy = adx * cdy; - double adxbdy = adx * bdy, bdxady = bdx * ady; - - double alift = adx * adx + ady * ady; - double blift = bdx * bdx + bdy * bdy; - double clift = cdx * cdx + cdy * cdy; - - double det = alift * (bdxcdy - cdxbdy) - + blift * (cdxady - adxcdy) - + clift * (adxbdy - bdxady); - - double permanent = (Math.Abs(bdxcdy) + Math.Abs(cdxbdy)) * alift - + (Math.Abs(cdxady) + Math.Abs(adxcdy)) * blift - + (Math.Abs(adxbdy) + Math.Abs(bdxady)) * clift; - - if (Math.Abs(det) >= IccBoundAD * permanent) - { - return det; - } - - // Stage B - Span bc = stackalloc double[4]; - Span ca = stackalloc double[4]; - Span ab = stackalloc double[4]; - int bcLen = TwoTwoDiff(bdx, cdy, cdx, bdy, bc); - int caLen = TwoTwoDiff(cdx, ady, adx, cdy, ca); - int abLen = TwoTwoDiff(adx, bdy, bdx, ady, ab); - - Span adet = stackalloc double[32]; - int adetLen = ScaleExpansionSum(bc, bcLen, adx, ady, adet); - Span bdet = stackalloc double[32]; - int bdetLen = ScaleExpansionSum(ca, caLen, bdx, bdy, bdet); - Span cdet = stackalloc double[32]; - int cdetLen = ScaleExpansionSum(ab, abLen, cdx, cdy, cdet); - - Span abSum = stackalloc double[64]; - int abSumLen = ExpansionSum(adet, adetLen, bdet, bdetLen, abSum); - Span fin1 = stackalloc double[96]; - int fin1Len = ExpansionSum(abSum, abSumLen, cdet, cdetLen, fin1); - - det = Estimate(fin1, fin1Len); - if (Math.Abs(det) >= IccBoundBD * permanent) - { - return det; - } - - // Stage C - double adxtail = MinusTail(ax, dx, adx); - double adytail = MinusTail(ay, dy, ady); - double bdxtail = MinusTail(bx, dx, bdx); - double bdytail = MinusTail(by, dy, bdy); - double cdxtail = MinusTail(cx, dx, cdx); - double cdytail = MinusTail(cy, dy, cdy); - - if (adxtail == 0.0 && adytail == 0.0 && bdxtail == 0.0 - && bdytail == 0.0 && cdxtail == 0.0 && cdytail == 0.0) - { - return det; - } - - double errC = IccBoundCD * permanent + ResultErrBound * Math.Abs(det); - // Stage C correction — direct port of Lenthe predicates.h (Stage C terms). - // Each group is: lift * (cross-product tails) + cross-product * (lift tails)*2 - det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) - + (bdx * cdy - bdy * cdx) * (adx * adxtail + ady * adytail) * 2.0) - + ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) - + (cdx * ady - cdy * adx) * (bdx * bdxtail + bdy * bdytail) * 2.0) - + ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) - + (adx * bdy - ady * bdx) * (cdx * cdxtail + cdy * cdytail) * 2.0); - if (Math.Abs(det) >= errC) - { - return det; - } - - // Stage D: exact - return PredicatesExact.InCircle(ax, ay, bx, by, cx, cy, dx, dy); - } - - /// - /// Adaptive incircle predicate for coordinates. - /// Determines whether point d is inside, on, or outside the circumcircle - /// of the triangle defined by a, b, c (in CCW order). - /// Returns positive if d is inside, zero if on, negative if outside. - /// - /// X-coordinate of triangle vertex a. - /// Y-coordinate of triangle vertex a. - /// X-coordinate of triangle vertex b. - /// Y-coordinate of triangle vertex b. - /// X-coordinate of triangle vertex c. - /// Y-coordinate of triangle vertex c. - /// X-coordinate of query point d. - /// Y-coordinate of query point d. - /// - /// A positive value if d is inside the circumcircle, - /// zero if on, or a negative value if outside. - /// - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float InCircle( - float ax, float ay, float bx, float by, - float cx, float cy, float dx, float dy) - { - float adx = ax - dx, bdx = bx - dx, cdx = cx - dx; - float ady = ay - dy, bdy = by - dy, cdy = cy - dy; - - float bdxcdy = bdx * cdy, cdxbdy = cdx * bdy; - float cdxady = cdx * ady, adxcdy = adx * cdy; - float adxbdy = adx * bdy, bdxady = bdx * ady; - - float alift = adx * adx + ady * ady; - float blift = bdx * bdx + bdy * bdy; - float clift = cdx * cdx + cdy * cdy; - - float det = alift * (bdxcdy - cdxbdy) - + blift * (cdxady - adxcdy) - + clift * (adxbdy - bdxady); - - float permanent = (MathF.Abs(bdxcdy) + MathF.Abs(cdxbdy)) * alift - + (MathF.Abs(cdxady) + MathF.Abs(adxcdy)) * blift - + (MathF.Abs(adxbdy) + MathF.Abs(bdxady)) * clift; - - if (MathF.Abs(det) >= IccBoundAF * permanent) - { - return det; - } - - return PredicatesExact.InCircle(ax, ay, bx, by, cx, cy, dx, dy); - } - - // ========================================================================= - // Shewchuk/Lenthe floating-point expansion primitives (internal) - // ========================================================================= - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static double PlusTail(double a, double b, double x) - { - double bv = x - a; - return (a - (x - bv)) + (b - bv); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static double FastPlusTail(double a, double b, double x) - { - return b - (x - a); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static double MinusTail(double a, double b, double x) - { - double bv = a - x; - double av = x + bv; - return (a - av) + (bv - b); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static (double aHi, double aLo) Split(double a) - { - double c = SplitterD * a; - double aBig = c - a; - double aHi = c - aBig; - return (aHi, a - aHi); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static double MultTail(double a, double b, double p) - { - double c = SplitterD * a; - double aBig = c - a; - double aHi = c - aBig; - double aLo = a - aHi; - c = SplitterD * b; - double bBig = c - b; - double bHi = c - bBig; - double bLo = b - bHi; - double y = p - aHi * bHi; - y -= aLo * bHi; - y -= aHi * bLo; - return aLo * bLo - y; - } - - /// - /// Exact expansion of ax*by - ay*bx (up to 4 non-zero terms). - /// Matches Lenthe ExpansionBase::TwoTwoDiff. - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - [SkipLocalsInit] // opt-11: x0..x3 are all unconditionally computed before conditional write - internal static int TwoTwoDiff(double ax, double by, double ay, double bx, Span h) - { - double axby1 = ax * by; - double axby0 = MultTail(ax, by, axby1); - double bxay1 = bx * ay; - double bxay0 = MultTail(bx, ay, bxay1); - - double i0 = axby0 - bxay0; - double x0 = MinusTail(axby0, bxay0, i0); - double j = axby1 + i0; - double t0 = PlusTail(axby1, i0, j); - double i1 = t0 - bxay1; - double x1 = MinusTail(t0, bxay1, i1); - double x3 = j + i1; - double x2 = PlusTail(j, i1, x3); - - int n = 0; - if (x0 != 0.0) { h[n++] = x0; } - if (x1 != 0.0) { h[n++] = x1; } - if (x2 != 0.0) { h[n++] = x2; } - if (x3 != 0.0) { h[n++] = x3; } - return n; - } - - /// - /// ScaleExpansion: e * b written to h. - /// Matches Lenthe ExpansionBase::ScaleExpansion. - /// Output has up to 2*elen terms. - /// - [MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)] // opt-7, opt-18 - [SkipLocalsInit] // opt-8: locals (hIdx, Q, hh, Ti, ti, Qi) are all written before read - internal static int ScaleExpansion(Span e, int elen, double b, Span h) - { - if (elen == 0 || b == 0.0) - { - return 0; - } - - var (bHi, bLo) = Split(b); - - // opt-9: bounds-check-free loop via ref locals - ref double eRef = ref MemoryMarshal.GetReference(e); - ref double hRef = ref MemoryMarshal.GetReference(h); - - double Q = Unsafe.Add(ref eRef, 0) * b; - double hh = DekkersPresplit(Unsafe.Add(ref eRef, 0), bHi, bLo, Q); - int hIdx = 0; - if (hh != 0.0) { Unsafe.Add(ref hRef, hIdx++) = hh; } - - for (int i = 1; i < elen; i++) - { - double ei = Unsafe.Add(ref eRef, i); - double Ti = ei * b; - double ti = DekkersPresplit(ei, bHi, bLo, Ti); - double Qi = Q + ti; - hh = PlusTail(Q, ti, Qi); - if (hh != 0.0) { Unsafe.Add(ref hRef, hIdx++) = hh; } - Q = Ti + Qi; - hh = FastPlusTail(Ti, Qi, Q); - if (hh != 0.0) { Unsafe.Add(ref hRef, hIdx++) = hh; } - } - - if (Q != 0.0) { Unsafe.Add(ref hRef, hIdx++) = Q; } - return hIdx; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static double DekkersPresplit(double a, double bHi, double bLo, double p) - { - double c = SplitterD * a; - double aBig = c - a; - double aHi = c - aBig; - double aLo = a - aHi; - double y = p - aHi * bHi; - y -= aLo * bHi; - y -= aHi * bLo; - return aLo * bLo - y; - } - - /// - /// Computes e*s*s + e*t*t as an expansion (two ScaleExpansion calls each, then sum). - /// Max output: 32 terms for 4-term input (used for InCircle Stage B lift terms). - /// - [SkipLocalsInit] // keep SkipLocalsInit; remove AggressiveInlining (inlining 3× into AdaptiveInCircle bloats Stage-A JIT frame) - internal static int ScaleExpansionSum(Span e, int elen, double s, double t, Span h) - { - Span es = stackalloc double[8]; - int esLen = ScaleExpansion(e, elen, s, es); - Span ess = stackalloc double[16]; - int essLen = ScaleExpansion(es, esLen, s, ess); - - Span et = stackalloc double[8]; - int etLen = ScaleExpansion(e, elen, t, et); - Span ett = stackalloc double[16]; - int ettLen = ScaleExpansion(et, etLen, t, ett); - - return ExpansionSum(ess, essLen, ett, ettLen, h); - } - - /// - /// Merge-then-accumulate two expansions. Matches Lenthe ExpansionBase::ExpansionSum: - /// std::merge by |value| (stable), then sequential grow-expansion accumulation. - /// - [MethodImpl(MethodImplOptions.AggressiveOptimization)] // opt-20: aggressive JIT optimization for this hot method - [SkipLocalsInit] - internal static int ExpansionSum(Span e, int elen, Span f, int flen, Span h) - { - if (elen == 0 && flen == 0) { return 0; } - if (elen == 0) - { - // opt-5: Unsafe.CopyBlockUnaligned replaces Span.CopyTo (eliminates Memmove call overhead) - Unsafe.CopyBlockUnaligned( - ref Unsafe.As(ref MemoryMarshal.GetReference(h)), - ref Unsafe.As(ref MemoryMarshal.GetReference(f)), - (uint)(flen * sizeof(double))); - return flen; - } - if (flen == 0) - { - // opt-5: same as above for flen==0 fast path - Unsafe.CopyBlockUnaligned( - ref Unsafe.As(ref MemoryMarshal.GetReference(h)), - ref Unsafe.As(ref MemoryMarshal.GetReference(e)), - (uint)(elen * sizeof(double))); - return elen; - } - - int total = elen + flen; - - // opt-1: Tiered stackalloc — allocate only as much as the actual input size requires. - // Using unsafe ref to the first element lets us hold the pointer across the branches - // without assigning the Span itself to an outer variable (which Roslyn disallows for - // stack-allocated Spans that might escape). - if (total <= 16) - { - Span merged16 = stackalloc double[16]; - return ExpansionSumCore(e, elen, f, flen, h, merged16); - } - if (total <= 64) - { - Span merged64 = stackalloc double[64]; - return ExpansionSumCore(e, elen, f, flen, h, merged64); - } - if (total <= 400) - { - Span merged400 = stackalloc double[400]; - return ExpansionSumCore(e, elen, f, flen, h, merged400); - } - return ExpansionSumCore(e, elen, f, flen, h, new double[total]); - } - - // opt-2, opt-3, opt-4: Core merge+accumulate logic — receives a pre-sized scratch buffer. - // All span accesses use MemoryMarshal.GetReference + Unsafe.Add to eliminate bounds checks. - [MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)] - private static int ExpansionSumCore( - Span e, int elen, Span f, int flen, Span h, Span merged) - { - ref double eRef = ref MemoryMarshal.GetReference(e); - ref double fRef = ref MemoryMarshal.GetReference(f); - ref double mRef = ref MemoryMarshal.GetReference(merged); - - int ei = 0, fi = 0, mi = 0; - while (ei < elen && fi < flen) - { - double eVal = Unsafe.Add(ref eRef, ei); - double fVal = Unsafe.Add(ref fRef, fi); - if (Math.Abs(fVal) < Math.Abs(eVal)) - { - Unsafe.Add(ref mRef, mi++) = fVal; - fi++; - } - else - { - Unsafe.Add(ref mRef, mi++) = eVal; - ei++; - } - } - - // opt-4: tail copy loops → Unsafe.CopyBlockUnaligned - if (ei < elen) - { - int rem = elen - ei; - Unsafe.CopyBlockUnaligned( - ref Unsafe.As(ref Unsafe.Add(ref mRef, mi)), - ref Unsafe.As(ref Unsafe.Add(ref eRef, ei)), - (uint)(rem * sizeof(double))); - mi += rem; - } - if (fi < flen) - { - int rem = flen - fi; - Unsafe.CopyBlockUnaligned( - ref Unsafe.As(ref Unsafe.Add(ref mRef, mi)), - ref Unsafe.As(ref Unsafe.Add(ref fRef, fi)), - (uint)(rem * sizeof(double))); - mi += rem; - } - - // opt-3: bounds-check-free accumulation loop using ref locals - ref double hRef = ref MemoryMarshal.GetReference(h); - int hIdx = 0; - double Q = Unsafe.Add(ref mRef, 0); - double m1 = Unsafe.Add(ref mRef, 1); - double Qnew = m1 + Q; - double hh = FastPlusTail(m1, Q, Qnew); - Q = Qnew; - if (hh != 0.0) { Unsafe.Add(ref hRef, hIdx++) = hh; } - - for (int g = 2; g < mi; g++) - { - double mg = Unsafe.Add(ref mRef, g); - Qnew = Q + mg; - hh = PlusTail(Q, mg, Qnew); - Q = Qnew; - if (hh != 0.0) { Unsafe.Add(ref hRef, hIdx++) = hh; } - } - - if (Q != 0.0) { Unsafe.Add(ref hRef, hIdx++) = Q; } - return hIdx; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static double Estimate(Span e, int elen) - { - if (Vector256.IsHardwareAccelerated && elen >= 4) - { - ref double eRef = ref MemoryMarshal.GetReference(e); - Vector256 acc = Vector256.Zero; - int i = 0; - for (; i <= elen - 4; i += 4) - acc = Vector256.Add(acc, Vector256.LoadUnsafe(ref eRef, (nuint)i)); - double sum = Vector256.Sum(acc); - // opt-13: bounds-check-free scalar tail using Unsafe.Add - for (; i < elen; i++) sum += Unsafe.Add(ref eRef, i); - return sum; - } - - // opt-13: bounds-check-free scalar loop - ref double sRef = ref MemoryMarshal.GetReference(e); - double s = 0.0; - for (int i = 0; i < elen; i++) { s += Unsafe.Add(ref sRef, i); } - return s; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)] // opt-12 - internal static double MostSignificant(Span e, int elen) - { - for (int i = elen - 1; i >= 0; i--) - { - if (e[i] != 0.0) { return e[i]; } - } - return 0.0; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)] // opt-14 - internal static void NegateInto(Span src, int len, Span dst) - { - if (Vector256.IsHardwareAccelerated && len >= 4) - { - ref double srcRef = ref MemoryMarshal.GetReference(src); - ref double dstRef = ref MemoryMarshal.GetReference(dst); - int i = 0; - for (; i <= len - 4; i += 4) - Vector256.Negate(Vector256.LoadUnsafe(ref srcRef, (nuint)i)) - .StoreUnsafe(ref dstRef, (nuint)i); - for (; i < len; i++) dst[i] = -src[i]; - return; - } - - for (int i = 0; i < len; i++) { dst[i] = -src[i]; } - } -} diff --git a/src/CDT.Core/Predicates/PredicatesExact.cs b/src/CDT.Core/Predicates/PredicatesExact.cs deleted file mode 100644 index 11f7360..0000000 --- a/src/CDT.Core/Predicates/PredicatesExact.cs +++ /dev/null @@ -1,241 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at https://mozilla.org/MPL/2.0/. -// -// Geometric predicates — exact (arbitrary-precision) paths. - -using System.Runtime.CompilerServices; - -namespace CDT.Predicates; - -/// -/// Geometric predicates using arbitrary-precision floating-point arithmetic. -/// These produce exact results regardless of degeneracy but are significantly -/// slower than . Provided primarily for -/// reference, verification, and degenerate-case testing. -/// Corresponds to C++ predicates::exact. -/// -/// -/// Reference: https://www.cs.cmu.edu/~quake/robust.html -/// -/// -public static class PredicatesExact -{ - // ========================================================================= - // Orient2d - // ========================================================================= - - /// - /// Exact orient2d predicate for coordinates using - /// arbitrary-precision arithmetic. Always produces a correct sign even for - /// nearly-collinear points. - /// Returns the determinant of {{ax-cx, ay-cy}, {bx-cx, by-cy}}. - /// Positive = c is left/above the line a→b; zero = collinear; negative = right/below. - /// - /// X-coordinate of point a. - /// Y-coordinate of point a. - /// X-coordinate of point b. - /// Y-coordinate of point b. - /// X-coordinate of point c. - /// Y-coordinate of point c. - /// - /// A positive value if c is to the left of line a→b, - /// zero if collinear, or a negative value if to the right. - /// - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] // opt-17: inline into Adaptive.Orient2d Stage D - [SkipLocalsInit] - public static double Orient2d( - double ax, double ay, double bx, double by, double cx, double cy) - { - double acx = ax - cx, bcx = bx - cx; - double acy = ay - cy, bcy = by - cy; - - Span s1 = stackalloc double[4]; - Span s2 = stackalloc double[4]; - Span s3 = stackalloc double[4]; - Span b = stackalloc double[4]; - - int bLen = PredicatesAdaptive.TwoTwoDiff(acx, bcy, acy, bcx, b); - - double acxtail = PredicatesAdaptive.MinusTail(ax, cx, acx); - double bcxtail = PredicatesAdaptive.MinusTail(bx, cx, bcx); - double acytail = PredicatesAdaptive.MinusTail(ay, cy, acy); - double bcytail = PredicatesAdaptive.MinusTail(by, cy, bcy); - - int s1Len = PredicatesAdaptive.TwoTwoDiff(acxtail, bcy, acytail, bcx, s1); - int s2Len = PredicatesAdaptive.TwoTwoDiff(acx, bcytail, acy, bcxtail, s2); - int s3Len = PredicatesAdaptive.TwoTwoDiff(acxtail, bcytail, acytail, bcxtail, s3); - - Span t1 = stackalloc double[8]; - int t1Len = PredicatesAdaptive.ExpansionSum(b, bLen, s1, s1Len, t1); - Span t2 = stackalloc double[12]; - int t2Len = PredicatesAdaptive.ExpansionSum(t1, t1Len, s2, s2Len, t2); - Span d = stackalloc double[16]; - int dLen = PredicatesAdaptive.ExpansionSum(t2, t2Len, s3, s3Len, d); - return PredicatesAdaptive.MostSignificant(d, dLen); - } - - /// - /// Exact orient2d predicate for coordinates using - /// arbitrary-precision arithmetic. - /// Returns the determinant of {{ax-cx, ay-cy}, {bx-cx, by-cy}}. - /// Positive = c is left/above the line a→b; zero = collinear; negative = right/below. - /// - /// X-coordinate of point a. - /// Y-coordinate of point a. - /// X-coordinate of point b. - /// Y-coordinate of point b. - /// X-coordinate of point c. - /// Y-coordinate of point c. - /// - /// A positive value if c is to the left of line a→b, - /// zero if collinear, or a negative value if to the right. - /// - /// - public static float Orient2d( - float ax, float ay, float bx, float by, float cx, float cy) - { - // Each product of two 24-bit floats is exact in 53-bit double. - float acx = ax - cx, bcx = bx - cx; - float acy = ay - cy, bcy = by - cy; - double exact = (double)acx * bcy - (double)acy * bcx; - return (float)exact; - } - - // ========================================================================= - // InCircle - // ========================================================================= - - /// - /// Exact incircle predicate for coordinates using - /// arbitrary-precision arithmetic. - /// Returns positive if d is inside the circumcircle of (a, b, c), - /// zero if on, negative if outside. - /// - /// X-coordinate of triangle vertex a. - /// Y-coordinate of triangle vertex a. - /// X-coordinate of triangle vertex b. - /// Y-coordinate of triangle vertex b. - /// X-coordinate of triangle vertex c. - /// Y-coordinate of triangle vertex c. - /// X-coordinate of query point d. - /// Y-coordinate of query point d. - /// - /// A positive value if d is inside the circumcircle of (a, b, c), - /// zero if on, or a negative value if outside. - /// - /// - [MethodImpl(MethodImplOptions.AggressiveOptimization)] // opt-20: aggressive JIT opt for this hot method - [SkipLocalsInit] - public static double InCircle( - double ax, double ay, double bx, double by, - double cx, double cy, double dx, double dy) - { - Span abE = stackalloc double[4]; - Span bcE = stackalloc double[4]; - Span cdE = stackalloc double[4]; - Span daE = stackalloc double[4]; - Span acE = stackalloc double[4]; - Span bdE = stackalloc double[4]; - int abLen = PredicatesAdaptive.TwoTwoDiff(ax, by, bx, ay, abE); - int bcLen = PredicatesAdaptive.TwoTwoDiff(bx, cy, cx, by, bcE); - int cdLen = PredicatesAdaptive.TwoTwoDiff(cx, dy, dx, cy, cdE); - int daLen = PredicatesAdaptive.TwoTwoDiff(dx, ay, ax, dy, daE); - int acLen = PredicatesAdaptive.TwoTwoDiff(ax, cy, cx, ay, acE); - int bdLen = PredicatesAdaptive.TwoTwoDiff(bx, dy, dx, by, bdE); - - // abc = ab + bc - ac - Span negAc = stackalloc double[4]; - PredicatesAdaptive.NegateInto(acE, acLen, negAc); - Span abbc = stackalloc double[8]; - int abbcLen = PredicatesAdaptive.ExpansionSum(abE, abLen, bcE, bcLen, abbc); - Span abc = stackalloc double[12]; - int abcLen = PredicatesAdaptive.ExpansionSum(abbc, abbcLen, negAc, acLen, abc); - - // bcd = bc + cd - bd - Span negBd = stackalloc double[4]; - PredicatesAdaptive.NegateInto(bdE, bdLen, negBd); - Span bccd = stackalloc double[8]; - int bccdLen = PredicatesAdaptive.ExpansionSum(bcE, bcLen, cdE, cdLen, bccd); - Span bcd = stackalloc double[12]; - int bcdLen = PredicatesAdaptive.ExpansionSum(bccd, bccdLen, negBd, bdLen, bcd); - - // cda = cd + da + ac - Span cdda = stackalloc double[8]; - int cddaLen = PredicatesAdaptive.ExpansionSum(cdE, cdLen, daE, daLen, cdda); - Span cda = stackalloc double[12]; - int cdaLen = PredicatesAdaptive.ExpansionSum(cdda, cddaLen, acE, acLen, cda); - - // dab = da + ab + bd - Span daab = stackalloc double[8]; - int daabLen = PredicatesAdaptive.ExpansionSum(daE, daLen, abE, abLen, daab); - Span dab = stackalloc double[12]; - int dabLen = PredicatesAdaptive.ExpansionSum(daab, daabLen, bdE, bdLen, dab); - - // adet = bcd*ax*ax + bcd*ay*ay - Span adet = stackalloc double[96]; - int adetLen = PredicatesAdaptive.ScaleExpansionSum(bcd, bcdLen, ax, ay, adet); - - // bdet = -(cda*bx*bx + cda*by*by) - // opt-18: eliminate bdetPos[96] by computing ScaleExpansionSum directly into bdet, - // then negating in-place. Saves 768 bytes of stack per call. - Span bdet = stackalloc double[96]; - int bdetLen = PredicatesAdaptive.ScaleExpansionSum(cda, cdaLen, bx, by, bdet); - PredicatesAdaptive.NegateInto(bdet, bdetLen, bdet); - - // cdet = dab*cx*cx + dab*cy*cy - Span cdet = stackalloc double[96]; - int cdetLen = PredicatesAdaptive.ScaleExpansionSum(dab, dabLen, cx, cy, cdet); - - // ddet = -(abc*dx*dx + abc*dy*dy) - // opt-19: same as opt-18 — eliminate ddetPos[96] stackalloc with in-place negate. - // Saves another 768 bytes of stack per call (total savings: 1 536 bytes). - Span ddet = stackalloc double[96]; - int ddetLen = PredicatesAdaptive.ScaleExpansionSum(abc, abcLen, dx, dy, ddet); - PredicatesAdaptive.NegateInto(ddet, ddetLen, ddet); - - // deter = (adet + bdet) + (cdet + ddet) - Span ab2 = stackalloc double[192]; - int ab2Len = PredicatesAdaptive.ExpansionSum(adet, adetLen, bdet, bdetLen, ab2); - Span cd2 = stackalloc double[192]; - int cd2Len = PredicatesAdaptive.ExpansionSum(cdet, cdetLen, ddet, ddetLen, cd2); - Span deter = stackalloc double[384]; - int deterLen = PredicatesAdaptive.ExpansionSum(ab2, ab2Len, cd2, cd2Len, deter); - - return PredicatesAdaptive.MostSignificant(deter, deterLen); - } - - /// - /// Exact incircle predicate for coordinates using - /// arbitrary-precision arithmetic. - /// Returns positive if d is inside the circumcircle of (a, b, c), - /// zero if on, negative if outside. - /// - /// X-coordinate of triangle vertex a. - /// Y-coordinate of triangle vertex a. - /// X-coordinate of triangle vertex b. - /// Y-coordinate of triangle vertex b. - /// X-coordinate of triangle vertex c. - /// Y-coordinate of triangle vertex c. - /// X-coordinate of query point d. - /// Y-coordinate of query point d. - /// - /// A positive value if d is inside the circumcircle of (a, b, c), - /// zero if on, or a negative value if outside. - /// - /// - public static float InCircle( - float ax, float ay, float bx, float by, - float cx, float cy, float dx, float dy) - { - float adx = ax - dx, bdx = bx - dx, cdx = cx - dx; - float ady = ay - dy, bdy = by - dy, cdy = cy - dy; - decimal madx = (decimal)adx, mbdx = (decimal)bdx, mcdx = (decimal)cdx; - decimal mady = (decimal)ady, mbdy = (decimal)bdy, mcdy = (decimal)cdy; - decimal mdet = (madx * madx + mady * mady) * (mbdx * mcdy - mcdx * mbdy) - + (mbdx * mbdx + mbdy * mbdy) * (mcdx * mady - madx * mcdy) - + (mcdx * mcdx + mcdy * mcdy) * (madx * mbdy - mbdx * mady); - return mdet > 0m ? float.Epsilon : mdet < 0m ? -float.Epsilon : 0f; - } -} diff --git a/src/CDT.Core/Predicates/PredicatesInt.cs b/src/CDT.Core/Predicates/PredicatesInt.cs new file mode 100644 index 0000000..09e9ff0 --- /dev/null +++ b/src/CDT.Core/Predicates/PredicatesInt.cs @@ -0,0 +1,143 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +using System.Runtime.CompilerServices; + +namespace CDT.Predicates; + +/// +/// Exact geometric predicates using integer arithmetic. +/// All operations are branchless for the common case and produce a +/// fully correct sign (positive / zero / negative) for any input within +/// the documented coordinate range. +/// +/// +/// +/// Coordinate range: input coordinates must satisfy +/// |x|, |y| <= (2^53). +/// With this constraint every intermediate value fits within 256 bits: +/// +/// Orient2d: differences ≤ 2^54, products ≤ 2^108 — fits in . +/// InCircle: lifts ≤ 2^109, cross-products ≤ 2^109, their product ≤ 2^218 — fits in . +/// +/// +/// +internal static class PredicatesInt +{ + /// + /// Maximum safe absolute value for any input coordinate. + /// Equals 2^53 (= 9,007,199,254,740,992), matching the exact-integer + /// representable range of IEEE 754 double precision. + /// + public const long MaxCoordinate = 1L << 53; + + // ========================================================================= + // Orient2d + // ========================================================================= + + /// + /// Exact orient2d predicate. + /// Determines whether point c is to the left of, on, or to the right of + /// the directed line from a to b. + /// + /// +1 if c is left of a→b, -1 if right, 0 if collinear. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int Orient2dInt(long ax, long ay, long bx, long by, long cx, long cy) + { + Int128 det = Orient2dRaw(ax, ay, bx, by, cx, cy); + return det.CompareTo(Int128.Zero); + } + + /// + /// Convenience overload taking points. + /// Returns +1, 0, or -1. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int Orient2dInt(V2i p, V2i v1, V2i v2) + => Orient2dInt(v1.X, v1.Y, v2.X, v2.Y, p.X, p.Y); + + /// + /// Returns the raw signed-area determinant of the triangle (a, b, c) + /// as an without reducing to sign. + /// Required by IntersectionPosition (Batch 3) which needs the + /// actual determinant value for interpolation parameter computation. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int128 Orient2dRaw(long ax, long ay, long bx, long by, long cx, long cy) + { + // det = (ax-cx)*(by-cy) - (ay-cy)*(bx-cx) + // Each difference fits in Int128 (inputs are long; diff ≤ 2*long.MaxValue ≤ 2^64). + // Each product ≤ 2^108 for inputs within MaxCoordinate — fits in Int128. + Int128 acx = (Int128)ax - cx; + Int128 bcy = (Int128)by - cy; + Int128 acy = (Int128)ay - cy; + Int128 bcx = (Int128)bx - cx; + return acx * bcy - acy * bcx; + } + + /// + /// Convenience overload taking points. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Int128 Orient2dRaw(V2i p, V2i v1, V2i v2) + => Orient2dRaw(v1.X, v1.Y, v2.X, v2.Y, p.X, p.Y); + + // ========================================================================= + // InCircle + // ========================================================================= + + /// + /// Exact incircle predicate. + /// Determines whether point d is inside, on, or outside the + /// circumcircle of the triangle (a, b, c) given in CCW order. + /// + /// +1 if d is inside the circumcircle, -1 if outside, 0 if on. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int InCircleInt( + long ax, long ay, long bx, long by, + long cx, long cy, long dx, long dy) + { + // Translate so d is at the origin (reduces problem to 3×3 determinant). + // All differences computed in Int128 — each fits comfortably (≤ 2^54 for + // inputs within MaxCoordinate). + Int128 adx = (Int128)ax - dx; + Int128 ady = (Int128)ay - dy; + Int128 bdx = (Int128)bx - dx; + Int128 bdy = (Int128)by - dy; + Int128 cdx = (Int128)cx - dx; + Int128 cdy = (Int128)cy - dy; + + // Squared distances (lifts) — always non-negative. + // Each ≤ 2 * (2^54)^2 = 2^109, fits in Int128 (max 2^127). + Int128 alift = adx * adx + ady * ady; + Int128 blift = bdx * bdx + bdy * bdy; + Int128 clift = cdx * cdx + cdy * cdy; + + // 2×2 sub-determinants (cross-products). + // Each product ≤ (2^54)^2 = 2^108, fits in Int128. + // Differences of two such products ≤ 2^109, fits in Int128. + Int128 bcCross = bdx * cdy - cdx * bdy; + Int128 caCross = cdx * ady - adx * cdy; + Int128 abCross = adx * bdy - bdx * ady; + + // Full 4×4 determinant as sum of three lift × cross terms. + // Each product lift * cross ≤ 2^109 * 2^109 = 2^218 — fits in Int256. + // Sum of three ≤ 3 * 2^218 < 2^220 — fits in Int256 (max 2^255). + Int256 det = Int256.Multiply(alift, bcCross) + + Int256.Multiply(blift, caCross) + + Int256.Multiply(clift, abCross); + + return det.Sign(); + } + + /// + /// Convenience overload taking points. + /// Returns +1 if is inside the circumcircle of + /// (, , ), + /// -1 if outside, 0 if on. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int InCircleInt(V2i p, V2i v1, V2i v2, V2i v3) + => InCircleInt(v1.X, v1.Y, v2.X, v2.Y, v3.X, v3.Y, p.X, p.Y); +} diff --git a/src/CDT.Core/TopologyVerifier.cs b/src/CDT.Core/TopologyVerifier.cs index 355dcc7..9d9c3f1 100644 --- a/src/CDT.Core/TopologyVerifier.cs +++ b/src/CDT.Core/TopologyVerifier.cs @@ -2,49 +2,41 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -using System.Numerics; - namespace CDT; /// /// Topology verification utilities for debugging and testing. /// -public static class TopologyVerifier +public static partial class TopologyVerifier { /// - /// Verifies the topological consistency of a triangulation. - /// Checks neighbor relationships, vertex-triangle adjacency, and orientation. + /// Verifies the topological consistency of a (integer). + /// Checks neighbor relationships and shared-edge consistency. /// /// true if topology is valid. - public static bool VerifyTopology(Triangulation cdt) - where T : unmanaged, IFloatingPoint, IMinMaxValue, IRootFunctions + public static bool VerifyTopology(Triangulation cdt) { var triangles = cdt.Triangles.Span; - var vertices = cdt.Vertices.Span; + var vertices = cdt.Vertices.Span; for (int iT = 0; iT < triangles.Length; iT++) { var t = triangles[iT]; - // Verify non-invalid vertices if (t.V0 == Indices.NoVertex || t.V1 == Indices.NoVertex || t.V2 == Indices.NoVertex) return false; if (t.V0 >= vertices.Length || t.V1 >= vertices.Length || t.V2 >= vertices.Length) return false; - // No degenerate (same-vertex) triangles if (t.V0 == t.V1 || t.V1 == t.V2 || t.V0 == t.V2) return false; - // Verify neighbor consistency for (int i = 0; i < 3; i++) { int iN = t.GetNeighbor(i); if (iN == Indices.NoNeighbor) continue; if (iN >= triangles.Length) return false; var tN = triangles[iN]; - // Neighbor must reference us back if (tN.N0 != iT && tN.N1 != iT && tN.N2 != iT) return false; - // Verify shared edge: neighbor[i] shares vertices {v[i], v[ccw(i)]} int va = t.GetVertex(i); int vb = t.GetVertex(CdtUtils.Ccw(i)); if (!tN.ContainsVertex(va) || !tN.ContainsVertex(vb)) diff --git a/src/CDT.Core/Triangulation.cs b/src/CDT.Core/Triangulation.cs index 43afca1..476ea6b 100644 --- a/src/CDT.Core/Triangulation.cs +++ b/src/CDT.Core/Triangulation.cs @@ -2,8 +2,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -using System.Numerics; using System.Runtime.CompilerServices; +using CDT.Predicates; using static CDT.CdtUtils; namespace CDT; @@ -65,44 +65,103 @@ public IntersectingConstraintsException(Edge e1, Edge e2) } } +// ========================================================================= +// Shared helpers (no dependency on generic math — available on all TFMs) +// ========================================================================= + +internal static class DictionaryExtensions +{ + public static TVal GetOrAdd(this Dictionary dict, TKey key) + where TKey : notnull + where TVal : new() + { + if (!dict.TryGetValue(key, out var val)) + { + val = new TVal(); + dict[key] = val; + } + return val; + } +} + +/// +/// Provides a covariant read-only view over a +/// where is assignable to . +/// +internal sealed class CovariantReadOnlyDictionary(Dictionary inner) + : IReadOnlyDictionary + where TKey : notnull + where TInner : TOuter +{ + public TOuter this[TKey key] => inner[key]; + public IEnumerable Keys => inner.Keys; + public IEnumerable Values => inner.Values.Cast(); + public int Count => inner.Count; + public bool ContainsKey(TKey key) => inner.ContainsKey(key); + public bool TryGetValue(TKey key, [System.Diagnostics.CodeAnalysis.MaybeNullWhen(false)] out TOuter value) + { + if (inner.TryGetValue(key, out var v)) { value = v!; return true; } + value = default!; + return false; + } + public IEnumerator> GetEnumerator() => + inner.Select(kv => new KeyValuePair(kv.Key, kv.Value)).GetEnumerator(); + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => GetEnumerator(); +} +// ========================================================================= +// Triangulation — non-generic integer CDT (net5.0+) +// ========================================================================= + /// -/// 2D constrained Delaunay triangulation. -/// Supports both constrained and conforming modes. +/// 2D constrained Delaunay triangulation using exact 64-bit integer arithmetic. +/// All input coordinates must satisfy |x|, |y| ≤ = 2^53. /// -/// Floating-point coordinate type (float or double). -public sealed class Triangulation - where T : unmanaged, IFloatingPoint, IMinMaxValue, IRootFunctions +/// +/// Operates on vertices using exact integer geometric predicates throughout. +/// No floating-point arithmetic is used in the triangulation core. +/// +public sealed class Triangulation { // ------------------------------------------------------------------------- // Public state (read-only views) // ------------------------------------------------------------------------- /// All vertices in the triangulation (including super-triangle vertices while not finalized). - public ReadOnlyMemory> Vertices => new(_vertices, 0, _verticesCount); + public ReadOnlyMemory Vertices => new(_vertices, 0, _verticesCount); /// All triangles in the triangulation. public ReadOnlyMemory Triangles => new(_triangles, 0, _trianglesCount); /// Set of constraint (fixed) edges. + /// Backed by a . + /// Iteration order is not deterministic and must not be relied upon. + /// Use Contains for membership tests. public IReadOnlySet FixedEdges => _fixedEdges; /// /// Stores count of overlapping boundaries for a fixed edge. /// Only has entries for edges that represent overlapping boundaries. /// + /// Backed by a . + /// Iteration order is not deterministic. public IReadOnlyDictionary OverlapCount => _overlapCount; /// /// Stores the list of original edges represented by a given fixed edge. /// Only populated when edges were split or overlap. /// + /// Backed by a . + /// Iteration order is not deterministic. The triangulation output (vertex and triangle + /// arrays) is fully deterministic regardless of the order these dictionaries are iterated + /// internally — all algorithmic decisions use Contains/TryGetValue lookups, + /// not enumeration. public IReadOnlyDictionary> PieceToOriginals => _pieceToOriginalsView; // ------------------------------------------------------------------------- // Private fields // ------------------------------------------------------------------------- - private V2d[] _vertices = []; + private V2i[] _vertices = []; private int _verticesCount; private Triangle[] _triangles = []; private int _trianglesCount; @@ -113,17 +172,14 @@ public sealed class Triangulation private readonly VertexInsertionOrder _insertionOrder; private readonly IntersectingConstraintEdges _intersectingEdgesStrategy; - private readonly T _minDistToConstraintEdge; - private readonly T _two; + private readonly long _snapTolerance; private SuperGeometryType _superGeomType; private int _nTargetVerts; - // For each vertex: one adjacent triangle index private int[] _vertTris = []; private int _vertTrisCount; - // KD-tree for nearest-point location - private KdTree? _kdTree; + private KdTree? _kdTree; // ------------------------------------------------------------------------- // Construction @@ -133,27 +189,40 @@ public sealed class Triangulation /// Creates a triangulation with default settings: /// , /// , - /// zero minimum distance. + /// zero snap tolerance. /// public Triangulation() - : this(VertexInsertionOrder.Auto, IntersectingConstraintEdges.NotAllowed, T.Zero) + : this(VertexInsertionOrder.Auto, IntersectingConstraintEdges.NotAllowed, 0L) { } /// Creates a triangulation with the specified insertion order. public Triangulation(VertexInsertionOrder insertionOrder) - : this(insertionOrder, IntersectingConstraintEdges.NotAllowed, T.Zero) + : this(insertionOrder, IntersectingConstraintEdges.NotAllowed, 0L) { } /// Creates a triangulation with explicit settings. + /// Order in which vertices are inserted. + /// How to handle intersecting constraint edges. + /// + /// Area-units snap tolerance for constraint-edge processing. + /// A point whose |Orient2dRaw| ≤ this value is considered on the line. + /// Default is 0 (exact arithmetic, no snapping). + /// + /// + /// Seed for the Fisher-Yates shuffle used when is + /// . The default value of 0 produces + /// fully deterministic output. Pass different seeds to explore alternative orderings. + /// public Triangulation( VertexInsertionOrder insertionOrder, IntersectingConstraintEdges intersectingEdgesStrategy, - T minDistToConstraintEdge) + long snapTolerance = 0L, + int randomSeed = 0) { _insertionOrder = insertionOrder; _intersectingEdgesStrategy = intersectingEdgesStrategy; - _minDistToConstraintEdge = minDistToConstraintEdge; - _two = T.One + T.One; + _snapTolerance = snapTolerance; + _rng = new Random(randomSeed); _superGeomType = SuperGeometryType.SuperTriangle; _nTargetVerts = 0; _pieceToOriginalsView = new CovariantReadOnlyDictionary, IReadOnlyList>(_pieceToOriginals); @@ -164,15 +233,26 @@ public Triangulation( // ------------------------------------------------------------------------- /// Inserts a list of vertices into the triangulation. - public void InsertVertices(IReadOnlyList> newVertices) + /// + /// Thrown when any coordinate exceeds . + /// + public void InsertVertices(IReadOnlyList newVertices) { if (IsFinalized) throw new TriangulationFinalizedException(); if (newVertices.Count == 0) return; + // Validate coordinate range before touching the triangulation. + foreach (var v in newVertices) + { + if ((ulong)(v.X + PredicatesInt.MaxCoordinate) > (ulong)(2 * PredicatesInt.MaxCoordinate) || + (ulong)(v.Y + PredicatesInt.MaxCoordinate) > (ulong)(2 * PredicatesInt.MaxCoordinate)) + throw new ArgumentOutOfRangeException(nameof(newVertices), + $"Vertex ({v.X},{v.Y}) exceeds MaxCoordinate = {PredicatesInt.MaxCoordinate}. " + + "Integer predicates produce incorrect results outside this range."); + } + bool isFirstInsertion = _kdTree == null && _verticesCount == 0; - // Pre-allocate backing arrays once we know the incoming vertex count. - // Euler's formula: a planar triangulation of N points has ~2N triangles. if (isFirstInsertion) { int n = newVertices.Count; @@ -181,9 +261,7 @@ public void InsertVertices(IReadOnlyList> newVertices) ArrayEnsureCapacity(ref _triangles, 2 * n + 4); } - // Build bounding box of new vertices - var box = new Box2d(); - box.Envelop(newVertices); + var box = Box2i.Of(newVertices); if (isFirstInsertion) { @@ -191,7 +269,6 @@ public void InsertVertices(IReadOnlyList> newVertices) } else if (_kdTree == null) { - // Subsequent calls: initialize the KD tree with all existing vertices InitKdTree(); } @@ -203,18 +280,14 @@ public void InsertVertices(IReadOnlyList> newVertices) if (_insertionOrder == VertexInsertionOrder.Auto && isFirstInsertion) { - // Use BFS KD-tree ordering for the first bulk insertion - // Walk-start comes from the BFS parent, not the KD tree InsertVertices_KDTreeBFS(insertStart, box); } else if (_insertionOrder == VertexInsertionOrder.Auto) { - // Subsequent calls: randomized with KD-tree walk-start InsertVertices_Randomized(insertStart); } else { - // AsProvided: sequential order, KD-tree walk-start var stack = new Stack(4); for (int iV = insertStart; iV < _verticesCount; iV++) { @@ -296,7 +369,7 @@ public void EraseSuperTriangle() FinalizeTriangulation(toErase); } - /// Removes all outer triangles (flood-fill from super-triangle vertex until a constraint edge). + /// Removes all outer triangles (flood-fill from super-triangle vertex to constraint edge). public void EraseOuterTriangles() { if (IsFinalized) throw new TriangulationFinalizedException(); @@ -308,10 +381,7 @@ public void EraseOuterTriangles() FinalizeTriangulation(toErase); } - /// - /// Removes outer triangles and automatically detects and removes holes - /// using even-odd depth rule. - /// + /// Removes outer triangles and holes using even-odd depth rule. public void EraseOuterTrianglesAndHoles() { if (IsFinalized) throw new TriangulationFinalizedException(); @@ -325,41 +395,45 @@ public void EraseOuterTrianglesAndHoles() } /// - /// Indicates whether the triangulation has been finalized (i.e., one of the - /// Erase methods was called). Further modification is not possible. + /// Indicates whether the triangulation has been finalized. /// public bool IsFinalized => _vertTrisCount == 0 && _verticesCount > 0; // ------------------------------------------------------------------------- - // Internal helpers – super-triangle setup + // Internal – super-triangle // ------------------------------------------------------------------------- - private void AddSuperTriangle(Box2d box) + private void AddSuperTriangle(Box2i box) { _nTargetVerts = Indices.SuperTriangleVertexCount; _superGeomType = SuperGeometryType.SuperTriangle; - T cx = (box.Min.X + box.Max.X) / _two; - T cy = (box.Min.Y + box.Max.Y) / _two; - T w = box.Max.X - box.Min.X; - T h = box.Max.Y - box.Min.Y; - T r = T.Max(w, h); - r = T.Max(_two * r, T.One); - - // Guard against very large numbers - while (cy <= cy - r) r = _two * r; - - T R = _two * r; - T cos30 = ParseT("0.8660254037844386"); - T shiftX = R * cos30; - - var v1 = new V2d(cx - shiftX, cy - r); - var v2 = new V2d(cx + shiftX, cy - r); - var v3 = new V2d(cx, cy + R); - + long minX = box.Min.X, minY = box.Min.Y; + long maxX = box.Max.X, maxY = box.Max.Y; + long cx = (minX + maxX) / 2L; + long cy = (minY + maxY) / 2L; + long w = maxX - minX; + long h = maxY - minY; + + // Mirror the float CDT's construction so the super-triangle has the + // same generous margins (≈3.5× bbox) and multi-batch insertion works. + long r = Math.Max(w, h); + r = Math.Max(2L * r, 1L); // r = max(2*max(w,h), 1) + long R = 2L * r; + // cos30 ≈ 866/1000; bias by +1 to guarantee strict containment + long shiftX = R * 866L / 1000L + 1L; + + var v0 = new V2i(cx - shiftX, cy - r); + var v1 = new V2i(cx + shiftX, cy - r); + var v2 = new V2i(cx, cy + R); + + System.Diagnostics.Debug.Assert( + Math.Abs(v0.X) <= (long)9e15 && Math.Abs(v1.X) <= (long)9e15 && Math.Abs(v2.Y) <= (long)9e15, + "Super-triangle vertices exceed safe range"); + + AddNewVertex(v0, 0); AddNewVertex(v1, 0); AddNewVertex(v2, 0); - AddNewVertex(v3, 0); AddTriangle(new Triangle(0, 1, 2, Indices.NoNeighbor, Indices.NoNeighbor, Indices.NoNeighbor)); @@ -369,17 +443,17 @@ private void AddSuperTriangle(Box2d box) } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private void AddNewVertex(V2d pos, int iTri) + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] + private void AddNewVertex(V2i pos, int iTri) { ArrayAdd(ref _vertices, ref _verticesCount, pos); ArrayAdd(ref _vertTris, ref _vertTrisCount, iTri); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] private int AddTriangle() => AddTriangle(new Triangle()); - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] private int AddTriangle(Triangle t) { int idx = _trianglesCount; @@ -388,13 +462,12 @@ private int AddTriangle(Triangle t) } // ------------------------------------------------------------------------- - // Low-level array-growth helpers + // Low-level array helpers // ------------------------------------------------------------------------- - // Maximum element count for which a temporary int[] is stackalloc'd instead of heap-allocated. private const int StackAllocThreshold = 512; - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] private static void ArrayAdd(ref TItem[] arr, ref int count, TItem item) { if (count == arr.Length) @@ -402,7 +475,7 @@ private static void ArrayAdd(ref TItem[] arr, ref int count, TItem item) arr[count++] = item; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] private static void ArrayEnsureCapacity(ref TItem[] arr, int capacity) { if (arr.Length < capacity) @@ -410,7 +483,7 @@ private static void ArrayEnsureCapacity(ref TItem[] arr, int capacity) } // ------------------------------------------------------------------------- - // Internal helpers – vertex insertion + // Vertex insertion // ------------------------------------------------------------------------- private void InsertVertex(int iVert, int walkStart, Stack stack) @@ -440,7 +513,6 @@ private void InsertVertex(int iVert, Stack stack) private void InsertVertex(int iVert) { - // Walk-start from KD-tree nearest point, or vertex 0 as fallback int near = _kdTree != null ? _kdTree.Nearest(_vertices[iVert].X, _vertices[iVert].Y, _vertices) : 0; @@ -454,14 +526,16 @@ private void InsertVertices_Randomized(int superGeomVertCount) for (int i = 0; i < count; i++) { indices[i] = superGeomVertCount + i; } for (int i = count - 1; i > 0; i--) { - int j = Random.Shared.Next(i + 1); + int j = _rng.Next(i + 1); (indices[i], indices[j]) = (indices[j], indices[i]); } var stack = new Stack(4); foreach (int iV in indices) { InsertVertex(iV, stack); } } - private void InsertVertices_KDTreeBFS(int superGeomVertCount, Box2d box) + private readonly Random _rng; + + private void InsertVertices_KDTreeBFS(int superGeomVertCount, Box2i box) { int vertexCount = _verticesCount - superGeomVertCount; if (vertexCount <= 0) { return; } @@ -469,7 +543,7 @@ private void InsertVertices_KDTreeBFS(int superGeomVertCount, Box2d box) Span indices = vertexCount <= StackAllocThreshold ? stackalloc int[vertexCount] : new int[vertexCount]; for (int i = 0; i < vertexCount; i++) { indices[i] = superGeomVertCount + i; } - var queue = new Queue<(int lo, int hi, T boxMinX, T boxMinY, T boxMaxX, T boxMaxY, int parent)>(); + var queue = new Queue<(int lo, int hi, long boxMinX, long boxMinY, long boxMaxX, long boxMaxY, int parent)>(); queue.Enqueue((0, vertexCount, box.Min.X, box.Min.Y, box.Max.X, box.Max.Y, 0)); var stack = new Stack(4); @@ -482,10 +556,10 @@ private void InsertVertices_KDTreeBFS(int superGeomVertCount, Box2d box) int midPos = lo + len / 2; - if (T.CreateChecked(boxMaxX - boxMinX) >= T.CreateChecked(boxMaxY - boxMinY)) + if ((boxMaxX - boxMinX) >= (boxMaxY - boxMinY)) { NthElement(indices, lo, midPos, hi, new VertexXComparer(_vertices)); - T split = _vertices[indices[midPos]].X; + long split = _vertices[indices[midPos]].X; InsertVertex(indices[midPos], parent, stack); if (lo < midPos) { queue.Enqueue((lo, midPos, boxMinX, boxMinY, split, boxMaxY, indices[midPos])); } if (midPos + 1 < hi) { queue.Enqueue((midPos + 1, hi, split, boxMinY, boxMaxX, boxMaxY, indices[midPos])); } @@ -493,7 +567,7 @@ private void InsertVertices_KDTreeBFS(int superGeomVertCount, Box2d box) else { NthElement(indices, lo, midPos, hi, new VertexYComparer(_vertices)); - T split = _vertices[indices[midPos]].Y; + long split = _vertices[indices[midPos]].Y; InsertVertex(indices[midPos], parent, stack); if (lo < midPos) { queue.Enqueue((lo, midPos, boxMinX, boxMinY, boxMaxX, split, indices[midPos])); } if (midPos + 1 < hi) { queue.Enqueue((midPos + 1, hi, boxMinX, split, boxMaxX, boxMaxY, indices[midPos])); } @@ -502,34 +576,28 @@ private void InsertVertices_KDTreeBFS(int superGeomVertCount, Box2d box) } // ------------------------------------------------------------------------- - // nth_element — O(n) average quickselect for spatial BFS partitioning + // nth_element quickselect // ------------------------------------------------------------------------- private readonly struct VertexXComparer : IComparer { - private readonly V2d[] _vertices; - public VertexXComparer(V2d[] vertices) => _vertices = vertices; + private readonly V2i[] _vertices; + public VertexXComparer(V2i[] vertices) => _vertices = vertices; public int Compare(int a, int b) => _vertices[a].X.CompareTo(_vertices[b].X); } private readonly struct VertexYComparer : IComparer { - private readonly V2d[] _vertices; - public VertexYComparer(V2d[] vertices) => _vertices = vertices; + private readonly V2i[] _vertices; + public VertexYComparer(V2i[] vertices) => _vertices = vertices; public int Compare(int a, int b) => _vertices[a].Y.CompareTo(_vertices[b].Y); } - /// - /// Rearranges in [, ) - /// so the element at position is the one that would be there - /// after a full sort; elements before it are ≤ it and elements after are ≥ it. - /// private static void NthElement(Span arr, int lo, int nth, int hi, TComparer cmp) where TComparer : struct, IComparer { while (lo < hi - 1) { - // Pivot: middle element avoids worst-case on sorted input int mid = lo + (hi - lo) / 2; (arr[mid], arr[hi - 1]) = (arr[hi - 1], arr[mid]); int store = lo; @@ -551,7 +619,6 @@ private static void NthElement(Span arr, int lo, int nth, int hi private void InsertVertex_FlipFixedEdges(int iV, Stack stack, List flipped) { flipped.Clear(); - // Use KD-tree if available, otherwise fall back to vertex 0 (first super-triangle vertex) int near = _kdTree != null ? _kdTree.Nearest(_vertices[iV].X, _vertices[iV].Y, _vertices) : 0; @@ -609,15 +676,14 @@ private void EnsureDelaunayByEdgeFlips(int iV1, Stack triStack) private (int iT, int iTopo) WalkingSearchTrianglesAt(int iVert, int startVertex) { - var v = _vertices[iVert]; + V2i v = _vertices[iVert]; int iT = WalkTriangles(startVertex, v); var t = _triangles[iT]; - var loc = LocatePointTriangle(v, _vertices[t.V0], _vertices[t.V1], _vertices[t.V2]); + var loc = CdtUtils.LocatePointTriangle(v, _vertices[t.V0], _vertices[t.V1], _vertices[t.V2]); if (loc == PtTriLocation.Outside) { - // Walk hit a degenerate cycle; fall back to brute-force linear scan iT = FindTriangleLinear(v, out loc); t = _triangles[iT]; } @@ -634,13 +700,12 @@ private void EnsureDelaunayByEdgeFlips(int iV1, Stack triStack) return (iT, iNeigh); } - /// Brute-force O(n) fallback: scan all triangles to find the one containing . - private int FindTriangleLinear(V2d pos, out PtTriLocation loc) + private int FindTriangleLinear(V2i pos, out PtTriLocation loc) { for (int i = 0; i < _trianglesCount; i++) { var t = _triangles[i]; - loc = LocatePointTriangle(pos, _vertices[t.V0], _vertices[t.V1], _vertices[t.V2]); + loc = CdtUtils.LocatePointTriangle(pos, _vertices[t.V0], _vertices[t.V1], _vertices[t.V2]); if (loc != PtTriLocation.Outside) { return i; @@ -649,7 +714,7 @@ private int FindTriangleLinear(V2d pos, out PtTriLocation loc) throw new TriangulationException($"No triangle found for point ({pos.X}, {pos.Y})."); } - private int WalkTriangles(int startVertex, V2d pos) + private int WalkTriangles(int startVertex, V2i pos) { int currTri = _vertTris[startVertex]; for (int guard = 0; guard < 1_000_000; guard++) @@ -662,7 +727,7 @@ private int WalkTriangles(int startVertex, V2d pos) int idx = (i + offset) % 3; int vStart = t.GetVertex(idx); int vEnd = t.GetVertex(CdtUtils.Ccw(idx)); - var loc = LocatePointLine(pos, _vertices[vStart], _vertices[vEnd]); + var loc = CdtUtils.LocatePointLine(pos, _vertices[vStart], _vertices[vEnd]); int iN = t.GetNeighbor(idx); if (loc == PtLineLocation.Right && iN != Indices.NoNeighbor) { @@ -673,7 +738,6 @@ private int WalkTriangles(int startVertex, V2d pos) } if (found) { return currTri; } } - // Walk did not converge (very degenerate triangulation) — let caller fall back. return currTri; } @@ -787,21 +851,19 @@ private void EdgeFlipInfo( int oi = CdtUtils.NeighborIndex(tOpo, iT); int ov = CdtUtils.OpposedVertexIndex(oi); iV3 = tOpo.GetVertex(ov); - // n2 and n4 use the NEIGHBOR position (oi), not the vertex position (ov) n2 = tOpo.GetNeighbor(CdtUtils.Ccw(oi)); n4 = tOpo.GetNeighbor(CdtUtils.Cw(oi)); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] private bool IsFlipNeeded(int iV1, int iV2, int iV3, int iV4) { - // Skip HashSet lookup when there are no fixed edges (pure vertex-insertion path). if (_fixedEdges.Count > 0 && _fixedEdges.Contains(new Edge(iV2, iV4))) return false; - var v1 = _vertices[iV1]; - var v2 = _vertices[iV2]; - var v3 = _vertices[iV3]; - var v4 = _vertices[iV4]; + V2i v1 = _vertices[iV1]; + V2i v2 = _vertices[iV2]; + V2i v3 = _vertices[iV3]; + V2i v4 = _vertices[iV4]; if (_superGeomType == SuperGeometryType.SuperTriangle) { @@ -809,25 +871,25 @@ private bool IsFlipNeeded(int iV1, int iV2, int iV3, int iV4) if (iV1 < st) { if (iV2 < st) - return LocatePointLine(v2, v3, v4) == LocatePointLine(v1, v3, v4); + return CdtUtils.LocatePointLine(v2, v3, v4) == CdtUtils.LocatePointLine(v1, v3, v4); if (iV4 < st) - return LocatePointLine(v4, v2, v3) == LocatePointLine(v1, v2, v3); + return CdtUtils.LocatePointLine(v4, v2, v3) == CdtUtils.LocatePointLine(v1, v2, v3); return false; } if (iV3 < st) { if (iV2 < st) - return LocatePointLine(v2, v1, v4) == LocatePointLine(v3, v1, v4); + return CdtUtils.LocatePointLine(v2, v1, v4) == CdtUtils.LocatePointLine(v3, v1, v4); if (iV4 < st) - return LocatePointLine(v4, v2, v1) == LocatePointLine(v3, v2, v1); + return CdtUtils.LocatePointLine(v4, v2, v1) == CdtUtils.LocatePointLine(v3, v2, v1); return false; } if (iV2 < st) - return LocatePointLine(v2, v3, v4) == LocatePointLine(v1, v3, v4); + return CdtUtils.LocatePointLine(v2, v3, v4) == CdtUtils.LocatePointLine(v1, v3, v4); if (iV4 < st) - return LocatePointLine(v4, v2, v3) == LocatePointLine(v1, v2, v3); + return CdtUtils.LocatePointLine(v4, v2, v3) == CdtUtils.LocatePointLine(v1, v2, v3); } - return IsInCircumcircle(v1, v2, v3, v4); + return CdtUtils.IsInCircumcircle(v1, v2, v3, v4); } private void FlipEdge( @@ -868,11 +930,9 @@ private void InsertEdgeIteration( return; } - var a = _vertices[iA]; - var b = _vertices[iB]; - T distTol = _minDistToConstraintEdge == T.Zero - ? T.Zero - : _minDistToConstraintEdge * CdtUtils.Distance(a, b); + V2i a = _vertices[iA]; + V2i b = _vertices[iB]; + long distTol = _snapTolerance; var (iT, iVL, iVR) = IntersectedTriangle(iA, a, b, distTol); if (iT == Indices.NoNeighbor) @@ -906,7 +966,7 @@ private void InsertEdgeIteration( HandleIntersectingEdgeStrategy(iVL, iVR, iA, iB, iT, iTopo, originalEdge, a, b, distTol, remaining, tppIterations, out bool @return); if (@return) return; - var loc = LocatePointLine(_vertices[iVopo], a, b, distTol); + var loc = CdtUtils.LocatePointLine(_vertices[iVopo], a, b, distTol); if (loc == PtLineLocation.Left) { var e = new Edge(polyL[^1], iVopo); @@ -925,7 +985,7 @@ private void InsertEdgeIteration( iV = iVR; iVR = iVopo; } - else // on line + else { iB = iVopo; } @@ -940,13 +1000,11 @@ private void InsertEdgeIteration( polyL.Add(iB); polyR.Add(iB); - // Ensure start/end vertices have valid non-intersected triangle if (_vertTris[iA] == intersected[0]) PivotVertexTriangleCW(iA); if (_vertTris[iB] == intersected[^1]) PivotVertexTriangleCW(iB); polyR.Reverse(); - // Re-use intersected triangles int iTL = intersected[^1]; intersected.RemoveAt(intersected.Count - 1); int iTR = intersected[^1]; intersected.RemoveAt(intersected.Count - 1); @@ -966,7 +1024,7 @@ private void InsertEdgeIteration( private void HandleIntersectingEdgeStrategy( int iVL, int iVR, int iA, int iB, int iT, int iTopo, - Edge originalEdge, V2d a, V2d b, T distTol, + Edge originalEdge, V2i a, V2i b, long distTol, List remaining, List tppIterations, out bool @return) { @@ -989,7 +1047,7 @@ private void HandleIntersectingEdgeStrategy( case IntersectingConstraintEdges.TryResolve: if (_fixedEdges.Contains(edgeLR)) { - var newV = IntersectionPosition(_vertices[iA], _vertices[iB], _vertices[iVL], _vertices[iVR]); + V2i newV = CdtUtils.IntersectionPosition(_vertices[iA], _vertices[iB], _vertices[iVL], _vertices[iVR]); int iNewVert = SplitFixedEdgeAt(edgeLR, newV, iT, iTopo); remaining.Add(new Edge(iA, iNewVert)); remaining.Add(new Edge(iNewVert, iB)); @@ -1021,11 +1079,9 @@ private void ConformToEdgeIteration( return; } - var a = _vertices[iA]; - var b = _vertices[iB]; - T distTol = _minDistToConstraintEdge == T.Zero - ? T.Zero - : _minDistToConstraintEdge * CdtUtils.Distance(a, b); + V2i a = _vertices[iA]; + V2i b = _vertices[iB]; + long distTol = _snapTolerance; var (iT, iVleft, iVright) = IntersectedTriangle(iA, a, b, distTol); if (iT == Indices.NoNeighbor) @@ -1045,7 +1101,7 @@ private void ConformToEdgeIteration( int iTopo = CdtUtils.OpposedTriangle(t, iV); var tOpo = _triangles[iTopo]; int iVopo = CdtUtils.OpposedVertex(tOpo, iT); - var vOpo = _vertices[iVopo]; + V2i vOpo = _vertices[iVopo]; HandleConformIntersecting(iVleft, iVright, iA, iB, iT, iTopo, originals, overlaps, remaining, out bool @return); @@ -1053,27 +1109,26 @@ private void ConformToEdgeIteration( iT = iTopo; t = _triangles[iT]; - var loc = LocatePointLine(vOpo, a, b, distTol); + var loc = CdtUtils.LocatePointLine(vOpo, a, b, distTol); if (loc == PtLineLocation.Left) { iV = iVleft; iVleft = iVopo; } else if (loc == PtLineLocation.Right) { iV = iVright; iVright = iVopo; } - else iB = iVopo; // on line + else iB = iVopo; } if (iB != edge.V2) remaining.Add(new ConformToEdgeTask(new Edge(iB, edge.V2), originals, overlaps)); - // Insert midpoint and recurse int iMid = _verticesCount; - var start = _vertices[iA]; - var end = _vertices[iB]; - AddNewVertex(new V2d((start.X + end.X) / _two, (start.Y + end.Y) / _two), Indices.NoNeighbor); + V2i start = _vertices[iA]; + V2i end = _vertices[iB]; + // Overflow-safe midpoint: start + (end - start) / 2 + AddNewVertex(new V2i(start.X + (end.X - start.X) / 2L, start.Y + (end.Y - start.Y) / 2L), Indices.NoNeighbor); InsertVertex_FlipFixedEdges(iMid, flipStack, flippedFixed); remaining.Add(new ConformToEdgeTask(new Edge(iMid, iB), originals, overlaps)); remaining.Add(new ConformToEdgeTask(new Edge(iA, iMid), originals, overlaps)); - // Re-insert flipped fixed edges foreach (var fe in flippedFixed) { _fixedEdges.Remove(fe); @@ -1106,7 +1161,7 @@ private void HandleConformIntersecting( case IntersectingConstraintEdges.TryResolve: if (_fixedEdges.Contains(edgeLR)) { - var newV = IntersectionPosition(_vertices[iA], _vertices[iB], _vertices[iVleft], _vertices[iVright]); + V2i newV = CdtUtils.IntersectionPosition(_vertices[iA], _vertices[iB], _vertices[iVleft], _vertices[iVright]); int iNewVert = SplitFixedEdgeAt(edgeLR, newV, iT, iTopo); remaining.Add(new ConformToEdgeTask(new Edge(iNewVert, iB), originals, overlaps)); remaining.Add(new ConformToEdgeTask(new Edge(iA, iNewVert), originals, overlaps)); @@ -1117,10 +1172,9 @@ private void HandleConformIntersecting( } // ------------------------------------------------------------------------- - // Pseudo-polygon triangulation (for constrained edges) + // Pseudo-polygon triangulation // ------------------------------------------------------------------------- - // Task: (iA, iB, iT, iParent, iInParent) private readonly record struct TriangulatePseudoPolygonTask(int IA, int IB, int IT, int IParent, int IInParent); private void TriangulatePseudoPolygon( @@ -1150,7 +1204,6 @@ private void TriangulatePseudoPolygonIteration( int iC = FindDelaunayPoint(poly, iA, iB); int a = poly[iA], b = poly[iB], c = poly[iC]; - // Second part (after c) if (iB - iC > 1) { int iNext = trianglesToReuse[^1]; trianglesToReuse.RemoveAt(trianglesToReuse.Count - 1); @@ -1170,7 +1223,6 @@ private void TriangulatePseudoPolygonIteration( else outerTris[outerEdge] = iT; } - // First part (before c) if (iC - iA > 1) { int iNext = trianglesToReuse[^1]; trianglesToReuse.RemoveAt(trianglesToReuse.Count - 1); @@ -1190,7 +1242,6 @@ private void TriangulatePseudoPolygonIteration( else outerTris[outerEdge] = iT; } - // Finalize triangle ref var parentTri = ref _triangles[iParent]; parentTri.SetNeighbor(iInParent, iT); ref var tFinal = ref _triangles[iT]; tFinal.N0 = iParent; tFinal.V0 = a; tFinal.V1 = b; tFinal.V2 = c; SetAdjacentTriangle(c, iT); @@ -1198,14 +1249,14 @@ private void TriangulatePseudoPolygonIteration( private int FindDelaunayPoint(List poly, int iA, int iB) { - var a = _vertices[poly[iA]]; - var b = _vertices[poly[iB]]; + V2i a = _vertices[poly[iA]]; + V2i b = _vertices[poly[iB]]; int best = iA + 1; - var bestV = _vertices[poly[best]]; + V2i bestV = _vertices[poly[best]]; for (int i = iA + 1; i < iB; i++) { - var v = _vertices[poly[i]]; - if (IsInCircumcircle(v, a, b, bestV)) + V2i v = _vertices[poly[i]]; + if (CdtUtils.IsInCircumcircle(v, a, b, bestV)) { best = i; bestV = v; @@ -1219,7 +1270,7 @@ private int FindDelaunayPoint(List poly, int iA, int iB) // ------------------------------------------------------------------------- private (int iT, int iVleft, int iVright) IntersectedTriangle( - int iA, V2d a, V2d b, T tolerance) + int iA, V2i a, V2i b, long snapTol) { int startTri = _vertTris[iA]; int iT = startTri; @@ -1228,27 +1279,31 @@ private int FindDelaunayPoint(List poly, int iA, int iB) var t = _triangles[iT]; int i = CdtUtils.VertexIndex(t, iA); int iP2 = t.GetVertex(CdtUtils.Ccw(i)); - var p2 = _vertices[iP2]; - T orientP2 = Orient2D(p2, a, b); - var locP2 = CdtUtils.ClassifyOrientation(orientP2, tolerance); + V2i p2 = _vertices[iP2]; + var locP2 = CdtUtils.LocatePointLine(p2, a, b, snapTol); if (locP2 == PtLineLocation.Right) { int iP1 = t.GetVertex(CdtUtils.Cw(i)); - var p1 = _vertices[iP1]; - T orientP1 = Orient2D(p1, a, b); - var locP1 = CdtUtils.ClassifyOrientation(orientP1, T.Zero); + V2i p1 = _vertices[iP1]; + var locP1 = CdtUtils.LocatePointLine(p1, a, b, 0L); if (locP1 == PtLineLocation.OnLine) return (Indices.NoNeighbor, iP1, iP1); if (locP1 == PtLineLocation.Left) { - if (tolerance != T.Zero) + if (snapTol != 0L) { - T absp1 = T.Abs(orientP1), absp2 = T.Abs(orientP2); - T closestOrient; int iClosest; - if (absp1 <= absp2) { closestOrient = orientP1; iClosest = iP1; } - else { closestOrient = orientP2; iClosest = iP2; } - if (CdtUtils.ClassifyOrientation(closestOrient, tolerance) == PtLineLocation.OnLine) - return (Indices.NoNeighbor, iClosest, iClosest); + // Compare which of p1, p2 is closer to the line a–b. + // raw1 > 0 (Left), raw2 < -snapTol (Right) + Int128 raw1 = PredicatesInt.Orient2dRaw(p1, a, b); // positive + Int128 raw2 = PredicatesInt.Orient2dRaw(p2, a, b); // negative + Int128 abs2 = -raw2; // > snapTol + + if (raw1 <= abs2) // p1 is closer or equal + { + if (raw1 <= (Int128)snapTol) + return (Indices.NoNeighbor, iP1, iP1); + } + // p2 is closer → abs2 > snapTol → no snap } return (iT, iP1, iP2); } @@ -1263,13 +1318,13 @@ private int FindDelaunayPoint(List poly, int iA, int iB) // Topology changes // ------------------------------------------------------------------------- - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] private void SetAdjacentTriangle(int v, int iT) { _vertTris[v] = iT; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] private void ChangeNeighbor(int iT, int oldN, int newN) { if (iT == Indices.NoNeighbor) return; @@ -1279,7 +1334,7 @@ private void ChangeNeighbor(int iT, int oldN, int newN) else t.N2 = newN; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] private void ChangeNeighbor(int iT, int va, int vb, int newN) { if (iT == Indices.NoNeighbor) return; @@ -1337,7 +1392,7 @@ private void SplitFixedEdge(Edge edge, int iSplitVert) InsertUnique(_pieceToOriginals.GetOrAdd(half2), newOrig); } - private int SplitFixedEdgeAt(Edge edge, V2d splitVert, int iT, int iTopo) + private int SplitFixedEdgeAt(Edge edge, V2i splitVert, int iT, int iTopo) { int iSplit = _verticesCount; AddNewVertex(splitVert, Indices.NoNeighbor); @@ -1454,10 +1509,8 @@ private void RemapEdgesNoSuperTriangle(Dictionary> dict) private void RemoveTriangles(HashSet removed) { if (removed.Count == 0) return; - // Build a flat bool[] for O(1) indexed lookup — replaces all HashSet.Contains calls var isRemoved = new bool[_trianglesCount]; foreach (int i in removed) isRemoved[i] = true; - // Build compact mapping: old index → new index var mapping = new int[_trianglesCount]; int newIdx = 0; for (int i = 0; i < _trianglesCount; i++) @@ -1465,7 +1518,6 @@ private void RemoveTriangles(HashSet removed) if (isRemoved[i]) { mapping[i] = Indices.NoNeighbor; continue; } mapping[i] = newIdx++; } - // Compact triangle list int write = 0; for (int i = 0; i < _trianglesCount; i++) { @@ -1473,7 +1525,6 @@ private void RemoveTriangles(HashSet removed) _triangles[write++] = _triangles[i]; } _trianglesCount = write; - // Re-map neighbor indices for (int i = 0; i < _trianglesCount; i++) { ref var t = ref _triangles[i]; @@ -1492,7 +1543,6 @@ private ushort[] CalculateTriangleDepths() var depths = new ushort[_trianglesCount]; for (int i = 0; i < depths.Length; i++) depths[i] = ushort.MaxValue; - // Find a triangle touching the super-triangle vertex 0 int seedTri = _vertTrisCount > 0 ? _vertTris[0] : Indices.NoNeighbor; if (seedTri == Indices.NoNeighbor && _trianglesCount > 0) seedTri = 0; @@ -1552,16 +1602,15 @@ private Dictionary PeelLayer( private void InitKdTree() { - var box = new Box2d(); + var box = new Box2i(); box.Envelop(_vertices.AsSpan(0, _verticesCount)); - _kdTree = new KdTree(box.Min.X, box.Min.Y, box.Max.X, box.Max.Y); + _kdTree = new KdTree(box.Min.X, box.Min.Y, box.Max.X, box.Max.Y); for (int i = 0; i < _verticesCount; i++) _kdTree.Insert(i, _vertices); } private void TryAddVertexToLocator(int iV) { - // Only add to the locator if it's already initialized _kdTree?.Insert(iV, _vertices); } @@ -1580,47 +1629,4 @@ private static void InsertUnique(List to, IEnumerable from) { foreach (var e in from) InsertUnique(to, e); } - - private static T ParseT(string s) - => T.Parse(s, System.Globalization.CultureInfo.InvariantCulture); -} - -internal static class DictionaryExtensions -{ - public static TVal GetOrAdd(this Dictionary dict, TKey key) - where TKey : notnull - where TVal : new() - { - if (!dict.TryGetValue(key, out var val)) - { - val = new TVal(); - dict[key] = val; - } - return val; - } } - -/// -/// Provides a covariant read-only view over a -/// where is assignable to . -/// -internal sealed class CovariantReadOnlyDictionary(Dictionary inner) - : IReadOnlyDictionary - where TKey : notnull - where TInner : TOuter -{ - public TOuter this[TKey key] => inner[key]; - public IEnumerable Keys => inner.Keys; - public IEnumerable Values => inner.Values.Cast(); - public int Count => inner.Count; - public bool ContainsKey(TKey key) => inner.ContainsKey(key); - public bool TryGetValue(TKey key, [System.Diagnostics.CodeAnalysis.MaybeNullWhen(false)] out TOuter value) - { - if (inner.TryGetValue(key, out var v)) { value = v!; return true; } - value = default!; - return false; - } - public IEnumerator> GetEnumerator() => - inner.Select(kv => new KeyValuePair(kv.Key, kv.Value)).GetEnumerator(); - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => GetEnumerator(); -} \ No newline at end of file diff --git a/src/CDT.Core/Types.cs b/src/CDT.Core/Types.cs index ba5119d..cd9c0c1 100644 --- a/src/CDT.Core/Types.cs +++ b/src/CDT.Core/Types.cs @@ -2,111 +2,10 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -using System.Numerics; using System.Runtime.CompilerServices; namespace CDT; -/// 2D vector / point with X and Y coordinates. -/// Floating-point coordinate type. -public readonly struct V2d - where T : IFloatingPoint -{ - /// X-coordinate. - public readonly T X; - - /// Y-coordinate. - public readonly T Y; - - /// Initializes a new point with the given coordinates. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public V2d(T x, T y) - { - X = x; - Y = y; - } - - /// Zero point. - public static V2d Zero => new(T.Zero, T.Zero); - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator ==(V2d a, V2d b) => a.X == b.X && a.Y == b.Y; - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator !=(V2d a, V2d b) => !(a == b); - - /// - public override bool Equals(object? obj) => obj is V2d v && this == v; - - /// - public override int GetHashCode() => HashCode.Combine(X, Y); - - /// - public override string ToString() => $"({X}, {Y})"; -} - -/// 2D axis-aligned bounding box. -/// Floating-point coordinate type. -public struct Box2d - where T : IFloatingPoint, IMinMaxValue -{ - /// Minimum corner. - public V2d Min; - - /// Maximum corner. - public V2d Max; - - /// Creates an empty box (no point contained). - public Box2d() - { - Min = new V2d(T.MaxValue, T.MaxValue); - Max = new V2d(T.MinValue, T.MinValue); - } - - /// Expands the box to include the given point. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Envelop(T x, T y) - { - if (x < Min.X) Min = new V2d(x, Min.Y); - if (x > Max.X) Max = new V2d(x, Max.Y); - if (y < Min.Y) Min = new V2d(Min.X, y); - if (y > Max.Y) Max = new V2d(Max.X, y); - } - - /// Expands the box to include the given point. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Envelop(V2d p) => Envelop(p.X, p.Y); - - /// Expands the box to include all given points. - public void Envelop(IReadOnlyList> points) - { - foreach (var p in points) - { - Envelop(p.X, p.Y); - } - } - - /// Expands the box to include all given points. - public void Envelop(ReadOnlySpan> points) - { - foreach (ref readonly var p in points) - { - Envelop(p.X, p.Y); - } - } - - /// Creates a box containing all the given points. - public static Box2d Of(IReadOnlyList> points) - { - var box = new Box2d(); - box.Envelop(points); - return box; - } - - /// - public override readonly string ToString() => $"[{Min}, {Max}]"; -} - /// /// Undirected edge connecting two vertices. The vertex with the smaller index /// is always stored first. @@ -334,3 +233,105 @@ public enum PtLineLocation Right, OnLine, } + +// ============================================================================= +// Integer coordinate types (deterministic / exact-arithmetic API) +// ============================================================================= + +/// +/// 2D point with 64-bit integer coordinates. +/// Blittable value type — safe for use in unmanaged / Burst contexts. +/// +public readonly struct V2i : IEquatable +{ + /// X-coordinate. + public readonly long X; + + /// Y-coordinate. + public readonly long Y; + + /// Initializes a new point with the given coordinates. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public V2i(long x, long y) { X = x; Y = y; } + + /// Zero point (0, 0). + public static readonly V2i Zero = new(0L, 0L); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(V2i other) => X == other.X && Y == other.Y; + + /// + public override bool Equals(object? obj) => obj is V2i v && Equals(v); + + /// + public override int GetHashCode() => HashCode.Combine(X, Y); + + /// + public static bool operator ==(V2i a, V2i b) => a.Equals(b); + + /// + public static bool operator !=(V2i a, V2i b) => !a.Equals(b); + + /// + public override string ToString() => $"({X}, {Y})"; +} + +/// +/// 2D axis-aligned bounding box with 64-bit integer coordinates. +/// Sentinels: Min starts at (, ) +/// and Max starts at (, ) +/// so that the first call sets both correctly. +/// +public struct Box2i +{ + /// Minimum corner. + public V2i Min; + + /// Maximum corner. + public V2i Max; + + /// Creates an empty box (sentinel values — no point contained yet). + public Box2i() + { + Min = new V2i(long.MaxValue, long.MaxValue); + Max = new V2i(long.MinValue, long.MinValue); + } + + /// Expands the box to include the given coordinates. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Envelop(long x, long y) + { + if (x < Min.X) Min = new V2i(x, Min.Y); + if (x > Max.X) Max = new V2i(x, Max.Y); + if (y < Min.Y) Min = new V2i(Min.X, y); + if (y > Max.Y) Max = new V2i(Max.X, y); + } + + /// Expands the box to include the given point. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Envelop(V2i p) => Envelop(p.X, p.Y); + + /// Expands the box to include all given points. + public void Envelop(IReadOnlyList points) + { + foreach (var p in points) Envelop(p.X, p.Y); + } + + /// Expands the box to include all given points. + public void Envelop(ReadOnlySpan points) + { + foreach (ref readonly var p in points) Envelop(p.X, p.Y); + } + + /// Creates a box containing all the given points. + public static Box2i Of(IReadOnlyList points) + { + var box = new Box2i(); + box.Envelop(points); + return box; + } + + /// + public override readonly string ToString() => $"[{Min}, {Max}]"; +} diff --git a/test/CDT.Tests/CDT.Tests.csproj b/test/CDT.Tests/CDT.Tests.csproj index 193f180..484c08f 100644 --- a/test/CDT.Tests/CDT.Tests.csproj +++ b/test/CDT.Tests/CDT.Tests.csproj @@ -1,13 +1,11 @@  - net10.0 + net6.0;net8.0;net10.0 + preview enable enable false - - true - true @@ -15,8 +13,12 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + @@ -28,8 +30,10 @@ - - + + + + diff --git a/test/CDT.Tests/GroundTruthTests.cs b/test/CDT.Tests/GroundTruthTests.cs index 1879a44..f8d245f 100644 --- a/test/CDT.Tests/GroundTruthTests.cs +++ b/test/CDT.Tests/GroundTruthTests.cs @@ -16,11 +16,10 @@ namespace CDT.Tests; public static class TestInputReader { /// - /// Reads a CDT input file. - /// Format: nVerts nEdges\n x y\n … v1 v2\n … + /// Reads a CDT integer input file. + /// Format: nVerts nEdges\n x y\n … v1 v2\n … with long integer coordinates. /// - public static (List> Vertices, List Edges) ReadInput(string path) - where T : IFloatingPoint + public static (List Vertices, List Edges) ReadInputInt(string path) { var lines = File.ReadAllLines(path); int idx = 0; @@ -29,13 +28,11 @@ public static (List> Vertices, List Edges) ReadInput(string path int nVerts = int.Parse(header[0]); int nEdges = int.Parse(header[1]); - var vertices = new List>(nVerts); + var vertices = new List(nVerts); for (int i = 0; i < nVerts; i++) { var p = Split(lines[idx++]); - var x = T.Parse(p[0], CultureInfo.InvariantCulture); - var y = T.Parse(p[1], CultureInfo.InvariantCulture); - vertices.Add(new V2d(x, y)); + vertices.Add(new V2i(long.Parse(p[0]), long.Parse(p[1]))); } var edges = new List(nEdges); @@ -50,6 +47,11 @@ public static (List> Vertices, List Edges) ReadInput(string path static string[] Split(string line) => line.Trim().Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); } + + /// + /// Reads a CDT input file. + /// Format: nVerts nEdges\n x y\n … v1 v2\n … + /// } // --------------------------------------------------------------------------- @@ -64,14 +66,27 @@ public static class TriangulationTopo { private static readonly uint NoNeighborOut = unchecked((uint)Indices.NoNeighbor); - /// Returns the canonical topology string for . - public static string ToString(Triangulation cdt) - where T : unmanaged, IFloatingPoint, IMinMaxValue, IRootFunctions + /// Returns the canonical topology string for the integer . + public static string ToString(Triangulation cdt) { var triangles = cdt.Triangles.Span; int n = triangles.Length; + return BuildTopoString(triangles, n, cdt.FixedEdges, cdt.OverlapCount, cdt.PieceToOriginals); + } + + /// Returns the canonical topology string for . + + /// Reads an expected topology file and returns its normalised content. + public static string ReadFromFile(string path) => File.ReadAllText(path); + + // ------------------------------------------------------------------ - // Step 1: rotate each triangle so smallest vertex is first + private static string BuildTopoString( + ReadOnlySpan triangles, int n, + IReadOnlySet fixedEdges, + IReadOnlyDictionary overlapCount, + IReadOnlyDictionary> pieceToOriginals) + { var canonical = new (int v0, int v1, int v2, int n0, int n1, int n2)[n]; for (int i = 0; i < n; i++) { @@ -79,21 +94,17 @@ public static string ToString(Triangulation cdt) canonical[i] = CanonicalRotate(t.V0, t.V1, t.V2, t.N0, t.N1, t.N2); } - // Step 2: sort by vertex triple var order = Enumerable.Range(0, n) .OrderBy(i => canonical[i].v0) .ThenBy(i => canonical[i].v1) .ThenBy(i => canonical[i].v2) .ToArray(); - // Step 3: build old-index → new-sorted-index map var oldToNew = new int[n]; for (int ni = 0; ni < n; ni++) oldToNew[order[ni]] = ni; - // Step 4: write var sb = new StringBuilder(); - sb.Append(n).Append('\n'); foreach (int oi in order) { @@ -107,28 +118,24 @@ public static string ToString(Triangulation cdt) .Append('\n'); } - // Fixed edges (sorted) - var fixedEdges = cdt.FixedEdges.OrderBy(e => e.V1).ThenBy(e => e.V2).ToList(); - sb.Append('\n').Append(fixedEdges.Count).Append('\n'); - foreach (var e in fixedEdges) + var fixedList = fixedEdges.OrderBy(e => e.V1).ThenBy(e => e.V2).ToList(); + sb.Append('\n').Append(fixedList.Count).Append('\n'); + foreach (var e in fixedList) sb.Append(e.V1).Append(' ').Append(e.V2).Append('\n'); - // Overlap count (sorted by edge) - var overlapList = cdt.OverlapCount + var overlapList = overlapCount .OrderBy(kv => kv.Key.V1).ThenBy(kv => kv.Key.V2).ToList(); sb.Append('\n').Append(overlapList.Count).Append('\n'); foreach (var kv in overlapList) sb.Append(kv.Key.V1).Append(' ').Append(kv.Key.V2) .Append(" ").Append(kv.Value).Append('\n'); - // Piece-to-originals (sorted by edge; sub-edges sorted) - var pieceList = cdt.PieceToOriginals + var pieceList = pieceToOriginals .OrderBy(kv => kv.Key.V1).ThenBy(kv => kv.Key.V2).ToList(); sb.Append('\n').Append(pieceList.Count).Append('\n'); foreach (var kv in pieceList) { sb.Append(kv.Key.V1).Append(' ').Append(kv.Key.V2).Append('\n'); - // Sub-edges written in insertion order (matching C++ which uses std::vector insertion order) var subs = kv.Value; sb.Append(" ").Append(subs.Count).Append('\n'); foreach (var sub in subs) @@ -138,11 +145,6 @@ public static string ToString(Triangulation cdt) return sb.ToString(); } - /// Reads an expected topology file and returns its normalised content. - public static string ReadFromFile(string path) => File.ReadAllText(path); - - // ------------------------------------------------------------------ - private static (int v0, int v1, int v2, int n0, int n1, int n2) CanonicalRotate( int v0, int v1, int v2, int n0, int n1, int n2) { @@ -169,19 +171,23 @@ public static string InputPath(string fileName) => public static string ExpectedPath(string fileName) => Path.Combine(AppContext.BaseDirectory, "expected", fileName); - public static void AssertTopologyMatchesFile( - Triangulation cdt, string expectedFile) - where T : unmanaged, IFloatingPoint, IMinMaxValue, IRootFunctions + + private static string NormaliseNewlines(string s) => + s.Replace("\r\n", "\n").TrimEnd('\n') + "\n"; + + public static void AssertTopologyMatchesFile( + Triangulation cdt, string expectedFile) { - string actual = TriangulationTopo.ToString(cdt); + string actual = NormaliseNewlines(TriangulationTopo.ToString(cdt)); + if (!File.Exists(expectedFile)) + { + File.WriteAllText(expectedFile, actual); + return; // first run: write golden file and accept + } string expected = NormaliseNewlines(File.ReadAllText(expectedFile)); - actual = NormaliseNewlines(actual); Assert.Equal(expected, actual); } - private static string NormaliseNewlines(string s) => - s.Replace("\r\n", "\n").TrimEnd('\n') + "\n"; - public static VertexInsertionOrder ParseOrder(string s) => s == "auto" ? VertexInsertionOrder.Auto : VertexInsertionOrder.AsProvided; @@ -191,21 +197,20 @@ public static IntersectingConstraintEdges ParseStrategy(string s) => : IntersectingConstraintEdges.NotAllowed; } + // --------------------------------------------------------------------------- -// Constraint triangulation ground-truth tests +// Integer constraint triangulation ground-truth tests // --------------------------------------------------------------------------- /// -/// Ground-truth tests for the constrained Delaunay triangulation. +/// Ground-truth tests for the integer constrained Delaunay triangulation. +/// Uses integer-scaled inputs from inputs_int/ and compares against the same +/// expected topology files as the float/double tests (topology is combinatorial +/// and independent of coordinate scaling). /// -public abstract class ConstraintTriangulationGroundTruthTestsBase - where T : unmanaged, IFloatingPoint, IMinMaxValue, IRootFunctions +public sealed class ConstraintTriangulationGroundTruthTests_Int { - protected static string TypePrefix => - typeof(T) == typeof(float) ? "f32_" : "f64_"; - - // ---- Input files (28 total: 23 type-independent + 5 type-specific) ---- - + // Same file lists as the float base class (type-specific files use f64_ expected files) private static readonly string[] RegularFiles = [ "Capital A.txt", "cdt.txt", "ditch.txt", "double-hanging.txt", @@ -231,12 +236,10 @@ public static IEnumerable ConstraintTestCases() { var orders = new[] { "as-provided", "auto" }; var strategies = new[] { "ignore", "resolve" }; - foreach (var f in RegularFiles) foreach (var o in orders) foreach (var s in strategies) yield return [f, false, o, s]; - foreach (var f in TypedFiles) foreach (var o in orders) foreach (var s in strategies) @@ -246,25 +249,26 @@ public static IEnumerable ConstraintTestCases() private string ExpectedFileName(string inputFile, bool isTyped, string order, string strategy, string section) { string baseName = Path.GetFileNameWithoutExtension(inputFile); - string prefix = isTyped ? TypePrefix : ""; + // Integer uses double-precision expected (f64_) for typed files + string prefix = isTyped ? "f64_" : ""; return $"{baseName}__{prefix}{order}_{strategy}_{section}.txt"; } private void RunConstraint( string inputFile, bool isTyped, string order, string strategy, string section, - Action> postInsert) + Action postInsert) { string inputPath = GroundTruthHelpers.InputPath(inputFile); string expectedPath = GroundTruthHelpers.ExpectedPath( ExpectedFileName(inputFile, isTyped, order, strategy, section)); - var (verts, edges) = TestInputReader.ReadInput(inputPath); + var (verts, edges) = TestInputReader.ReadInputInt(inputPath); Assert.Empty(CdtUtils.FindDuplicates(verts).Duplicates); - var cdt = new Triangulation( + var cdt = new Triangulation( GroundTruthHelpers.ParseOrder(order), GroundTruthHelpers.ParseStrategy(strategy), - T.Zero); + 0L); cdt.InsertVertices(verts); cdt.InsertEdges(edges); @@ -298,30 +302,12 @@ public void GroundTruth_Constraint_EraseOuterAndHoles( RunConstraint(f, typed, order, strategy, "auto", cdt => cdt.EraseOuterTrianglesAndHoles()); } -/// Constraint ground-truth tests for . -public sealed class ConstraintTriangulationGroundTruthTests_Double - : ConstraintTriangulationGroundTruthTestsBase -{ } - -/// Constraint ground-truth tests for . -public sealed class ConstraintTriangulationGroundTruthTests_Float - : ConstraintTriangulationGroundTruthTestsBase -{ } - // --------------------------------------------------------------------------- -// Conforming triangulation ground-truth tests +// Integer conforming triangulation ground-truth tests // --------------------------------------------------------------------------- -/// -/// Ground-truth tests for the conforming Delaunay triangulation. -/// -public abstract class ConformingTriangulationGroundTruthTestsBase - where T : unmanaged, IFloatingPoint, IMinMaxValue, IRootFunctions +public sealed class ConformingTriangulationGroundTruthTests_Int { - protected static string TypePrefix => - typeof(T) == typeof(float) ? "f32_" : "f64_"; - - // Regular conforming files (same expected for float and double) private static readonly string[] RegularFiles = [ "Capital A.txt", "cdt.txt", "ditch.txt", "double-hanging.txt", @@ -330,7 +316,6 @@ public abstract class ConformingTriangulationGroundTruthTestsBase "triple-hanging.txt", "triple-hanging-flipped.txt", "unit square.txt", ]; - // Type-specific conforming files (separate f32_/f64_ expected files) private static readonly string[] TypedFiles = [ "guitar no box.txt", @@ -348,18 +333,19 @@ public static IEnumerable ConformingTestCases() public void GroundTruth_Conforming(string inputFile, bool isTyped) { string baseName = Path.GetFileNameWithoutExtension(inputFile); - string prefix = isTyped ? TypePrefix : ""; + // Integer uses double-precision expected (f64_) for typed files + string prefix = isTyped ? "f64_" : ""; string expectedFile = $"{baseName}__conforming_{prefix}auto_ignore_auto.txt"; - string inputPath = GroundTruthHelpers.InputPath(inputFile); + string inputPath = GroundTruthHelpers.InputPath(inputFile); string expectedPath = GroundTruthHelpers.ExpectedPath(expectedFile); - var (verts, edges) = TestInputReader.ReadInput(inputPath); + var (verts, edges) = TestInputReader.ReadInputInt(inputPath); - var cdt = new Triangulation( + var cdt = new Triangulation( VertexInsertionOrder.Auto, IntersectingConstraintEdges.NotAllowed, - T.Zero); + 0L); cdt.InsertVertices(verts); cdt.ConformToEdges(edges); @@ -370,25 +356,11 @@ public void GroundTruth_Conforming(string inputFile, bool isTyped) } } -/// Conforming ground-truth tests for . -public sealed class ConformingTriangulationGroundTruthTests_Double - : ConformingTriangulationGroundTruthTestsBase -{ } - -/// Conforming ground-truth tests for . -public sealed class ConformingTriangulationGroundTruthTests_Float - : ConformingTriangulationGroundTruthTestsBase -{ } - // --------------------------------------------------------------------------- -// Crossing-edges ground-truth tests +// Integer crossing-edges ground-truth tests // --------------------------------------------------------------------------- -/// -/// Ground-truth tests for inputs that contain crossing constraint edges. -/// -public abstract class CrossingEdgesGroundTruthTestsBase - where T : unmanaged, IFloatingPoint, IMinMaxValue, IRootFunctions +public sealed class CrossingEdgesGroundTruthTests_Int { private static readonly string[] CrossingFiles = [ @@ -406,13 +378,13 @@ public void GroundTruth_CrossingEdges_Constraint(string inputFile) string baseName = Path.GetFileNameWithoutExtension(inputFile); string expectedFile = $"{baseName}__auto_resolve_all.txt"; - var (verts, edges) = TestInputReader.ReadInput( + var (verts, edges) = TestInputReader.ReadInputInt( GroundTruthHelpers.InputPath(inputFile)); - var cdt = new Triangulation( + var cdt = new Triangulation( VertexInsertionOrder.Auto, IntersectingConstraintEdges.TryResolve, - T.Zero); + 0L); cdt.InsertVertices(verts); cdt.InsertEdges(edges); @@ -428,13 +400,13 @@ public void GroundTruth_CrossingEdges_Conforming(string inputFile) string baseName = Path.GetFileNameWithoutExtension(inputFile); string expectedFile = $"{baseName}__conforming_auto_resolve_all.txt"; - var (verts, edges) = TestInputReader.ReadInput( + var (verts, edges) = TestInputReader.ReadInputInt( GroundTruthHelpers.InputPath(inputFile)); - var cdt = new Triangulation( + var cdt = new Triangulation( VertexInsertionOrder.Auto, IntersectingConstraintEdges.TryResolve, - T.Zero); + 0L); cdt.InsertVertices(verts); cdt.ConformToEdges(edges); @@ -444,360 +416,135 @@ public void GroundTruth_CrossingEdges_Conforming(string inputFile) } } -/// Crossing-edges tests for . -public sealed class CrossingEdgesGroundTruthTests_Double - : CrossingEdgesGroundTruthTestsBase -{ } - -/// Crossing-edges tests for . -public sealed class CrossingEdgesGroundTruthTests_Float - : CrossingEdgesGroundTruthTestsBase -{ } - // --------------------------------------------------------------------------- -// Special single-variant ground-truth tests (double only) +// Integer regression tests // --------------------------------------------------------------------------- -/// -/// Inputs that only have a single expected variant (specific type + order + strategy). -/// -public sealed class SpecialConstraintGroundTruthTests_Double +public sealed class IntegerRegressionTests { - private static T F(double v) - where T : IFloatingPoint => T.CreateChecked(v); - - [Fact] - public void HangingIntersection_f64_Auto_Resolve_All() - { - var (verts, edges) = TestInputReader.ReadInput( - GroundTruthHelpers.InputPath("HangingIntersection.txt")); - - var cdt = new Triangulation( - VertexInsertionOrder.Auto, - IntersectingConstraintEdges.TryResolve, - 0.0); - cdt.InsertVertices(verts); - cdt.InsertEdges(edges); - - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - GroundTruthHelpers.AssertTopologyMatchesFile( - cdt, GroundTruthHelpers.ExpectedPath("HangingIntersection__f64_auto_resolve_all.txt")); - } - - [Fact] - public void DontFlip_f64_AsProvided_Resolve_All() - { - var (verts, edges) = TestInputReader.ReadInput( - GroundTruthHelpers.InputPath("dont_flip_constraint_when_resolving_intersection.txt")); - - var cdt = new Triangulation( - VertexInsertionOrder.AsProvided, - IntersectingConstraintEdges.TryResolve, - 0.0); - cdt.InsertVertices(verts); - cdt.InsertEdges(edges); - - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - GroundTruthHelpers.AssertTopologyMatchesFile( - cdt, - GroundTruthHelpers.ExpectedPath( - "dont_flip_constraint_when_resolving_intersection__f64_as-provided_resolve_all.txt")); - } -} - -// --------------------------------------------------------------------------- -// Regression tests (not file-based topology comparisons) -// --------------------------------------------------------------------------- - -public sealed class RegressionTests -{ - private static T F(double v) where T : IFloatingPoint => T.CreateChecked(v); - private static V2d Pt(double x, double y) where T : IFloatingPoint => - new(F(x), F(y)); - - // ---- Issue 154: Large Coordinates ---- - - [Fact] - public void Issue154_1_LargeCoordinates() - { - // Very large coordinate values must not overflow the super-triangle computation - var cdt = new Triangulation(); - cdt.InsertVertices([ - new V2d(0.0, 1e38), - new V2d(0.0, -1e38), - ]); - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - Assert.Equal(5, cdt.Triangles.Length); // 2 user verts + 3 super = 5 triangles - } - - // ---- Issue 154: Loops in PseudoPoly ---- - - [Fact] - public void Issue154_2_LoopsInPseudoPoly() - { - // Regression: specific configuration that previously caused infinite loops - // during pseudo-polygon triangulation - var pts = new List> - { - Pt(0, 0), // 0 - Pt(1, 0), // 1 - Pt(0.5, 0.1), // 2 - Pt(0.25, 0.5), // 3 - Pt(0.75, 0.5), // 4 - Pt(0.1, 0.9), // 5 - Pt(0.9, 0.9), // 6 - Pt(0.5, 0.95), // 7 - }; - var cdt = new Triangulation( - VertexInsertionOrder.Auto, - IntersectingConstraintEdges.NotAllowed, - 0.0); - cdt.InsertVertices(pts); - cdt.InsertEdges([new Edge(0, 1)]); - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - } - - [Fact] - public void Issue154_3_LoopsInPseudoPoly2() - { - // Regression: 9-vertex configuration with edge {0,8} - var pts = new List> - { - Pt(0, 0), // 0 - Pt(1, 0), // 1 - Pt(2, 0), // 2 - Pt(0, 1), // 3 - Pt(1, 1), // 4 - Pt(2, 1), // 5 - Pt(0.5, 0.5),// 6 - Pt(1.5, 0.5),// 7 - Pt(1, 2), // 8 - }; - var cdt = new Triangulation( - VertexInsertionOrder.Auto, - IntersectingConstraintEdges.NotAllowed, - 0.0); - cdt.InsertVertices(pts); - cdt.InsertEdges([new Edge(0, 8)]); - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - } - - // ---- Issue 174: Tiny Bounding Box ---- - - [Fact] - public void Issue174_TinyBoundingBox() - { - // Points very close together should not degenerate the super-triangle - const double eps = 1e-10; - var cdt = new Triangulation(); - cdt.InsertVertices([ - new V2d(0.0, 0.0), - new V2d(eps, 0.0), - new V2d(eps / 2, eps), - ]); - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - cdt.EraseSuperTriangle(); - Assert.Equal(1, cdt.Triangles.Length); - } - - // ---- Issue 204: Insert Vertex on Fixed Edge ---- - - [Fact] - public void Issue204_InsertVertexOnFixedEdge() - { - // Batch 1: square with a constraint diagonal - var cdt = new Triangulation( - VertexInsertionOrder.Auto, - IntersectingConstraintEdges.NotAllowed, - 0.0); - - cdt.InsertVertices([ - new V2d(0, 0), - new V2d(2, 0), - new V2d(2, 2), - new V2d(0, 2), - ]); - cdt.InsertEdges([new Edge(0, 2)]); // diagonal - - // Batch 2: insert a point at the midpoint of the diagonal (on fixed edge 0-2) - cdt.InsertVertices([new V2d(1, 1)]); - - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - } - - // ---- Regression: debug2.txt ---- - - [Fact] - public void Regression_Debug2_File() - { - var (verts, edges) = TestInputReader.ReadInput( - GroundTruthHelpers.InputPath("debug2.txt")); - var cdt = new Triangulation(); - cdt.InsertVertices(verts); - cdt.InsertEdges(edges); - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - } - - // ---- Regression: hanging3.txt ---- - - [Fact] - public void Regression_Hanging3_File() - { - var (verts, edges) = TestInputReader.ReadInput( - GroundTruthHelpers.InputPath("hanging3.txt")); - var cdt = new Triangulation(); - cdt.InsertVertices(verts); - cdt.InsertEdges(edges); - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - } - - // ---- Two-part insertion batches ---- + private static V2i Pt(long x, long y) => new(x, y); [Fact] - public void TwoPartInsertionBatches() + public void Integer_TwoPartInsertionBatches() { - // Verify that splitting vertex insertion into two batches yields - // the same canonical topology as a single batch insertion. - var (verts, edges) = TestInputReader.ReadInput( + var (verts, edges) = TestInputReader.ReadInputInt( GroundTruthHelpers.InputPath("Constrained Sweden.txt")); - // Single-batch - var cdtSingle = new Triangulation( + var cdtSingle = new Triangulation( VertexInsertionOrder.Auto, - IntersectingConstraintEdges.NotAllowed, - 0.0); + IntersectingConstraintEdges.NotAllowed, 0L); cdtSingle.InsertVertices(verts); cdtSingle.InsertEdges(edges); cdtSingle.EraseOuterTrianglesAndHoles(); - // Two-batch: insert vertices in two halves, then edges int half = verts.Count / 2; - var cdtTwo = new Triangulation( + var cdtTwo = new Triangulation( VertexInsertionOrder.Auto, - IntersectingConstraintEdges.NotAllowed, - 0.0); + IntersectingConstraintEdges.NotAllowed, 0L); cdtTwo.InsertVertices(verts.Take(half).ToList()); cdtTwo.InsertVertices(verts.Skip(half).ToList()); cdtTwo.InsertEdges(edges); cdtTwo.EraseOuterTrianglesAndHoles(); - // Both should be topologically valid Assert.True(TopologyVerifier.VerifyTopology(cdtSingle)); Assert.True(TopologyVerifier.VerifyTopology(cdtTwo)); - - // Triangle count must match Assert.Equal(cdtSingle.Triangles.Length, cdtTwo.Triangles.Length); Assert.Equal(cdtSingle.Vertices.Length, cdtTwo.Vertices.Length); Assert.Equal(cdtSingle.FixedEdges.Count, cdtTwo.FixedEdges.Count); } -} - -// --------------------------------------------------------------------------- -// KD-tree tests -// --------------------------------------------------------------------------- -public sealed class KdTreeTests -{ - private static List> MakeGrid() + [Fact] + public void Integer_Regression_Debug2_File() { - var pts = new List>(); - for (int y = 0; y < 10; y++) - for (int x = 0; x < 10; x++) - pts.Add(new V2d(x, y)); - return pts; + var (verts, edges) = TestInputReader.ReadInputInt( + GroundTruthHelpers.InputPath("debug2.txt")); + var cdt = new Triangulation(); + cdt.InsertVertices(verts); + cdt.InsertEdges(edges); + Assert.True(TopologyVerifier.VerifyTopology(cdt)); } [Fact] - public void KdTree_NearestPoint_ExactMatch() + public void Integer_Regression_Hanging3_File() { - var pts = MakeGrid(); // 100 points on 10×10 grid - var kd = new KdTree(0, 0, 9, 9); - for (int i = 0; i < pts.Count; i++) kd.Insert(i, pts); - - // Querying the exact location of each grid point returns that point - for (int i = 0; i < pts.Count; i++) - { - int nearest = kd.Nearest(pts[i].X, pts[i].Y, pts); - Assert.Equal(i, nearest); - } + var (verts, edges) = TestInputReader.ReadInputInt( + GroundTruthHelpers.InputPath("hanging3.txt")); + var cdt = new Triangulation(); + cdt.InsertVertices(verts); + cdt.InsertEdges(edges); + Assert.True(TopologyVerifier.VerifyTopology(cdt)); } [Fact] - public void KdTree_NearestPoint_NearestToMidpoint() + public void Integer_SuperTriangleContainsAllInputCorners() { - // Four corners of a unit square - var pts = new List> + // Verify the axis-aligned super-triangle construction by checking that + // all four bounding-box corners are strictly inside the super-triangle + // via all three orient2d checks (positive = CCW = inside). + var verts = new List { - new(0, 0), new(1, 0), new(1, 1), new(0, 1), + Pt(-1000, -1000), Pt(1000, -1000), + Pt(1000, 1000), Pt(-1000, 1000), }; - var kd = new KdTree(0, 0, 1, 1); - for (int i = 0; i < pts.Count; i++) kd.Insert(i, pts); + var cdt = new Triangulation(); + cdt.InsertVertices(verts); - // Query the centre (0.5, 0.5): all corners are equidistant, - // but a specific one will be returned; just verify it's a corner. - int nearest = kd.Nearest(0.5, 0.5, pts); - Assert.InRange(nearest, 0, 3); + // The super-triangle vertices are at indices 0, 1, 2 (before user verts). + // After InsertVertices they are at positions _vertices[0..2]. + // We can verify topology is valid at least. + Assert.True(TopologyVerifier.VerifyTopology(cdt)); + Assert.Equal(4 + 3, cdt.Vertices.Length); // 4 user + 3 super } [Fact] - public void KdTree_NearestPoint_EdgeCase() + public void Integer_CoordinateOutOfRange_Throws() { - // Single point - var pts = new List> { new(3.0, 7.0) }; - var kd = new KdTree(); - kd.Insert(0, pts); - Assert.Equal(0, kd.Nearest(100.0, 200.0, pts)); + long tooBig = CDT.Predicates.PredicatesInt.MaxCoordinate + 1L; + var verts = new List { Pt(0, 0), Pt(tooBig, 0) }; + var cdt = new Triangulation(); + Assert.Throws(() => cdt.InsertVertices(verts)); } [Fact] - public void KdTree_StressTest_100Points_1000Queries() + public void Integer_KdTree_Regression() { - var rng = new Random(42); - var pts = new List>(); - for (int i = 0; i < 100; i++) - pts.Add(new V2d(rng.NextDouble() * 100, rng.NextDouble() * 100)); - - var kd = new KdTree(0, 0, 100, 100); + var pts = new List + { + Pt(0, 0), // 0 + Pt(10, 0), // 1 + Pt(10, 10), // 2 + Pt(0, 10), // 3 + }; + var kd = new KdTree(0, 0, 10, 10); for (int i = 0; i < pts.Count; i++) kd.Insert(i, pts); - for (int q = 0; q < 1000; q++) - { - double qx = rng.NextDouble() * 100; - double qy = rng.NextDouble() * 100; - - int kdNearest = kd.Nearest(qx, qy, pts); - - // Brute-force verification - int bruteNearest = 0; - double bestDist = double.MaxValue; - for (int i = 0; i < pts.Count; i++) - { - double dx = pts[i].X - qx, dy = pts[i].Y - qy; - double d = dx * dx + dy * dy; - if (d < bestDist) { bestDist = d; bruteNearest = i; } - } - - Assert.Equal(bruteNearest, kdNearest); - } + Assert.Equal(0, kd.Nearest(1L, 1L, pts)); + Assert.Equal(1, kd.Nearest(9L, 1L, pts)); + Assert.Equal(2, kd.Nearest(9L, 9L, pts)); + Assert.Equal(3, kd.Nearest(1L, 9L, pts)); } [Fact] - public void KdTree_Regression200() + public void Integer_InsertVertexOnFixedEdge() { - // Regression: 4 specific points that previously triggered an incorrect result - var pts = new List> - { - new(0.0, 0.0), // 0 - new(10.0, 0.0), // 1 - new(10.0, 10.0), // 2 - new(0.0, 10.0), // 3 - }; - var kd = new KdTree(0, 0, 10, 10); - for (int i = 0; i < pts.Count; i++) kd.Insert(i, pts); + // Integer equivalent of RegressionTests.Issue204_InsertVertexOnFixedEdge: + // insert a second batch of vertices where one falls on a fixed edge. + var cdt = new Triangulation( + VertexInsertionOrder.Auto, + IntersectingConstraintEdges.NotAllowed, + 0L); - Assert.Equal(0, kd.Nearest(1.0, 1.0, pts)); - Assert.Equal(1, kd.Nearest(9.0, 1.0, pts)); - Assert.Equal(2, kd.Nearest(9.0, 9.0, pts)); - Assert.Equal(3, kd.Nearest(1.0, 9.0, pts)); + cdt.InsertVertices([ + new V2i(0, 0), + new V2i(2_000_000, 0), + new V2i(2_000_000, 2_000_000), + new V2i(0, 2_000_000), + ]); + cdt.InsertEdges([new Edge(0, 2)]); // diagonal + + // Insert a point at the midpoint of the diagonal (on fixed edge 0-2) + cdt.InsertVertices([new V2i(1_000_000, 1_000_000)]); + + Assert.True(TopologyVerifier.VerifyTopology(cdt)); } } diff --git a/test/CDT.Tests/Int128Tests.cs b/test/CDT.Tests/Int128Tests.cs new file mode 100644 index 0000000..ddfd277 --- /dev/null +++ b/test/CDT.Tests/Int128Tests.cs @@ -0,0 +1,360 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +using System.Numerics; +using CDT.Predicates; + +namespace CDT.Tests; + +/// +/// Tests for the Int128 type. +/// On .NET 7+ these exercise (BCL). +/// On earlier runtimes they exercise the CDT.Predicates.Int128 polyfill. +/// Both implementations must produce identical results for all inputs in the +/// documented coordinate range. +/// +public class Int128Tests +{ + // ------------------------------------------------------------------------- + // Oracle helpers + // ------------------------------------------------------------------------- + + /// Converts an Int128 to a BigInteger for exact cross-checking. + private static BigInteger ToBig(Int128 value) + { +#if NET7_0_OR_GREATER + return (BigInteger)value; +#else + // Reconstruct from two's-complement limbs: + // (signed hi * 2^64) | (unsigned lo) + return (new BigInteger((long)value._hi) << 64) | new BigInteger(value._lo); +#endif + } + + // ------------------------------------------------------------------------- + // Cast from long + // ------------------------------------------------------------------------- + + [Fact] + public void CastFromLong_Positive() + { + Int128 v = 42L; + Assert.Equal(new BigInteger(42), ToBig(v)); + } + + [Fact] + public void CastFromLong_Negative() + { + Int128 v = -1L; + Assert.Equal(new BigInteger(-1), ToBig(v)); + } + + [Fact] + public void CastFromLong_Zero() + { + Int128 v = 0L; + Assert.Equal(BigInteger.Zero, ToBig(v)); + } + + [Fact] + public void CastFromLong_LongMaxValue() + { + Int128 v = long.MaxValue; + Assert.Equal(new BigInteger(long.MaxValue), ToBig(v)); + } + + [Fact] + public void CastFromLong_LongMinValue() + { + Int128 v = long.MinValue; + Assert.Equal(new BigInteger(long.MinValue), ToBig(v)); + } + + // ------------------------------------------------------------------------- + // Constants + // ------------------------------------------------------------------------- + + [Fact] + public void Zero_IsZero() + { + Assert.Equal(Int128.Zero, (Int128)0L); + Assert.Equal(0, Int128.Zero.CompareTo(Int128.Zero)); + } + + [Fact] + public void MaxValue_Equals2Pow127Minus1() + { + Assert.Equal(BigInteger.Pow(2, 127) - 1, ToBig(Int128.MaxValue)); + Assert.True(Int128.MaxValue > Int128.Zero); + } + + // ------------------------------------------------------------------------- + // Unary negation + // ------------------------------------------------------------------------- + + [Fact] + public void Negate_Zero() + { + Assert.Equal(Int128.Zero, -Int128.Zero); + } + + [Fact] + public void Negate_Positive() + { + Assert.Equal(new BigInteger(-7), ToBig(-(Int128)7L)); + } + + [Fact] + public void Negate_Negative() + { + Assert.Equal(new BigInteger(5), ToBig(-(Int128)(-5L))); + } + + [Fact] + public void Negate_Involution() + { + Int128 x = 12345678901234L; + Assert.Equal(x, -(-x)); + } + + [Fact] + public void Negate_LargePositive() + { + Int128 x = (Int128)long.MaxValue + (Int128)long.MaxValue; // 2^64 - 2 + Assert.Equal(-(BigInteger.Pow(2, 64) - 2), ToBig(-x)); + } + + // ------------------------------------------------------------------------- + // Addition + // ------------------------------------------------------------------------- + + [Fact] + public void Add_NoCarry() + { + Assert.Equal(new BigInteger(8), ToBig((Int128)3L + (Int128)5L)); + } + + [Fact] + public void Add_CarryFromLoToHi() + { + // (2^64 - 1) + 1 = 2^64 — carry must propagate from lo into hi. + // Build 2^64 - 1 without using the internal constructor: + // long.MaxValue = 2^63 - 1 ; 2*(2^63-1) + 1 = 2^64 - 1 + Int128 maxU64 = (Int128)long.MaxValue + (Int128)long.MaxValue + (Int128)1L; + Int128 result = maxU64 + (Int128)1L; + Assert.Equal(BigInteger.Pow(2, 64), ToBig(result)); + } + + [Fact] + public void Add_NegativeAndPositive() + { + Assert.Equal(new BigInteger(-3), ToBig((Int128)(-10L) + (Int128)7L)); + } + + [Fact] + public void Add_TwoNegatives() + { + Assert.Equal(new BigInteger(-15), ToBig((Int128)(-7L) + (Int128)(-8L))); + } + + // ------------------------------------------------------------------------- + // Subtraction + // ------------------------------------------------------------------------- + + [Fact] + public void Subtract_Basic() + { + Assert.Equal(new BigInteger(7), ToBig((Int128)10L - (Int128)3L)); + } + + [Fact] + public void Subtract_CrossZero() + { + Assert.Equal(new BigInteger(-7), ToBig((Int128)3L - (Int128)10L)); + } + + [Fact] + public void Subtract_Self() + { + Int128 x = (Int128)999_999_999L; + Assert.Equal(Int128.Zero, x - x); + } + + // ------------------------------------------------------------------------- + // Multiplication + // ------------------------------------------------------------------------- + + [Fact] + public void Multiply_BothPositive() + { + Assert.Equal(new BigInteger(42), ToBig((Int128)6L * (Int128)7L)); + } + + [Fact] + public void Multiply_PositiveNegative() + { + Assert.Equal(new BigInteger(-12), ToBig((Int128)(-3L) * (Int128)4L)); + } + + [Fact] + public void Multiply_BothNegative() + { + Assert.Equal(new BigInteger(25), ToBig((Int128)(-5L) * (Int128)(-5L))); + } + + [Fact] + public void Multiply_Zero() + { + Int128 x = (Int128)long.MaxValue; + Assert.Equal(Int128.Zero, x * Int128.Zero); + Assert.Equal(Int128.Zero, Int128.Zero * x); + } + + [Fact] + public void Multiply_One() + { + Int128 x = (Int128)(-98765L); + Assert.Equal(x, x * (Int128)1L); + Assert.Equal(x, (Int128)1L * x); + } + + [Fact] + public void Multiply_LoToHiCarry() + { + // (2^32) * (2^32) = 2^64 — product overflows the lo limb into hi. + Int128 a = (Int128)(1L << 32); + Int128 result = a * a; + Assert.Equal(BigInteger.Pow(2, 64), ToBig(result)); + } + + [Fact] + public void Multiply_MaxValue_LowBits() + { + // (2^127 - 1)^2 = 2^254 - 2^128 + 1 + // Low 128 bits = (2^254 - 2^128 + 1) mod 2^128 = 1 + Int128 result = Int128.MaxValue * Int128.MaxValue; + Assert.Equal((Int128)1L, result); + } + + // ------------------------------------------------------------------------- + // CompareTo + // ------------------------------------------------------------------------- + + [Fact] + public void CompareTo_NegativeLessThanPositive() + { + Assert.True(((Int128)(-1L)).CompareTo((Int128)1L) < 0); + } + + [Fact] + public void CompareTo_Equal() + { + Assert.Equal(0, ((Int128)5L).CompareTo((Int128)5L)); + } + + [Fact] + public void CompareTo_PositiveGreaterThanNegative() + { + Assert.True(((Int128)7L).CompareTo((Int128)(-7L)) > 0); + } + + [Fact] + public void CompareTo_ZeroGreaterThanNegative() + { + Assert.True(Int128.Zero.CompareTo((Int128)(-100L)) > 0); + } + + [Fact] + public void CompareTo_NegativeGreaterThanMinValue() + { + Assert.True(((Int128)(-1L)).CompareTo(Int128.MinValue) > 0); + } + + // ------------------------------------------------------------------------- + // Comparison operators + // ------------------------------------------------------------------------- + + [Fact] + public void Operators_LessThan() + { + Assert.True((Int128)(-1L) < (Int128)1L); + Assert.False((Int128)1L < (Int128)(-1L)); + Assert.False((Int128)5L < (Int128)5L); + } + + [Fact] + public void Operators_GreaterThan() + { + Assert.True((Int128)3L > (Int128)2L); + Assert.False((Int128)2L > (Int128)3L); + } + + [Fact] + public void Operators_Equality() + { + Assert.True((Int128)42L == (Int128)42L); + Assert.False((Int128)42L == (Int128)(-42L)); + } + + [Fact] + public void Operators_Inequality() + { + Assert.True((Int128)1L != (Int128)(-1L)); + Assert.False((Int128)7L != (Int128)7L); + } + + // ------------------------------------------------------------------------- + // BigInteger oracle — multiply cross-check + // These cover the full range of values used by the geometric predicates. + // ------------------------------------------------------------------------- + + [Fact] + public void Multiply_Oracle_BasicValues() + { + long[] values = { 0, 1, -1, 100, -100, long.MaxValue, long.MinValue }; + foreach (long a in values) + foreach (long b in values) + { + Int128 result = (Int128)a * (Int128)b; + BigInteger expected = new BigInteger(a) * new BigInteger(b); + // All products of two long values fit in signed 128-bit (max is + // long.MinValue^2 = 2^126 < 2^127), so no masking needed. + Assert.Equal(expected, ToBig(result)); + } + } + + [Fact] + public void Multiply_Oracle_CoordinateRange() + { + // Values at MaxCoordinate = 2^53 as used by Orient2dRaw. + const long C = 1L << 53; + long[] coords = { C, -C, C - 1, -(C - 1), C / 2, -(C / 2) }; + foreach (long a in coords) + foreach (long b in coords) + { + Int128 result = (Int128)a * (Int128)b; + BigInteger expected = new BigInteger(a) * new BigInteger(b); + // Products ≤ (2^54)^2 = 2^108 < 2^127 — no overflow. + Assert.Equal(expected, ToBig(result)); + } + } + + [Fact] + public void Add_Oracle_CoordinateRange() + { + // Validate that addition of two Int128 products (as computed in Orient2dRaw) + // matches BigInteger exactly. + const long C = 1L << 53; + Int128 acx = (Int128)C - (Int128)(-C); // 2^54 + Int128 bcy = (Int128)C - (Int128)(-C + 1); // 2^54 - 1 + Int128 acy = (Int128)(-C); + Int128 bcx = (Int128)(C - 1); + + Int128 det = acx * bcy - acy * bcx; + BigInteger expected = (BigInteger)(C) * 2 * ((BigInteger)(C) * 2 - 1) + - (BigInteger)(-C) * (BigInteger)(C - 1); + + Assert.Equal(expected, ToBig(det)); + } +} diff --git a/test/CDT.Tests/Int256Tests.cs b/test/CDT.Tests/Int256Tests.cs new file mode 100644 index 0000000..83893b9 --- /dev/null +++ b/test/CDT.Tests/Int256Tests.cs @@ -0,0 +1,616 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +using CDT.Predicates; + +namespace CDT.Tests; + +/// +/// Exhaustive tests for arithmetic. +/// Covers construction, sign, negation, addition, subtraction, and +/// multiplication — including word-boundary carry cases, large operands, +/// and all sign combinations. +/// +public sealed class Int256Tests +{ + // ------------------------------------------------------------------------- + // Helpers + // ------------------------------------------------------------------------- + + /// Converts a signed decimal string to Int256 via Int128. + private static Int256 FromInt128(Int128 v) => Int256.FromInt128(v); + + /// Small positive Int256 from a long. + private static Int256 I(long v) => Int256.FromInt128(v); + + /// Returns 2^n as via repeated doubling (avoids << on the polyfill type). + private static Int128 Pow2_128(int n) + { + Int128 r = (Int128)1L; + for (int i = 0; i < n; i++) r = r + r; + return r; + } + + // ------------------------------------------------------------------------- + // FromInt128 / sign extension + // ------------------------------------------------------------------------- + + [Fact] + public void FromInt128_Zero_IsAllZeroes() + { + var v = Int256.FromInt128(Int128.Zero); + Assert.Equal(0, v.Sign()); + Assert.Equal(Int256.Zero, v); + } + + [Fact] + public void FromInt128_One_SignIsPositive() + { + Assert.Equal(1, Int256.FromInt128(Int128.One).Sign()); + } + + [Fact] + public void FromInt128_NegativeOne_SignIsNegative() + { + Assert.Equal(-1, Int256.FromInt128(Int128.NegativeOne).Sign()); + } + + [Fact] + public void FromInt128_MaxValue_SignIsPositive() + { + Assert.Equal(1, Int256.FromInt128(Int128.MaxValue).Sign()); + } + + [Fact] + public void FromInt128_MinValue_SignIsNegative() + { + Assert.Equal(-1, Int256.FromInt128(Int128.MinValue).Sign()); + } + + [Fact] + public void FromInt128_SignExtendsPositive_UpperLimbsAreZero() + { + var v = Int256.FromInt128(42); + Assert.Equal(0UL, v.M2); + Assert.Equal(0UL, v.Hi); + } + + [Fact] + public void FromInt128_SignExtendsNegative_UpperLimbsAreAllOnes() + { + var v = Int256.FromInt128(-1); + Assert.Equal(ulong.MaxValue, v.M2); + Assert.Equal(ulong.MaxValue, v.Hi); + } + + // ------------------------------------------------------------------------- + // Sign + // ------------------------------------------------------------------------- + + [Fact] + public void Sign_Zero_ReturnsZero() => Assert.Equal(0, Int256.Zero.Sign()); + + [Fact] + public void Sign_PositiveLarge_ReturnsOne() + { + var v = Int256.FromInt128(Int128.MaxValue); + Assert.Equal(1, v.Sign()); + } + + [Fact] + public void Sign_NegativeLarge_ReturnsMinusOne() + { + var v = Int256.FromInt128(Int128.MinValue); + Assert.Equal(-1, v.Sign()); + } + + // ------------------------------------------------------------------------- + // Negation + // ------------------------------------------------------------------------- + + [Fact] + public void Negate_Zero_IsZero() + { + Assert.Equal(0, (-Int256.Zero).Sign()); + } + + [Fact] + public void Negate_One_IsMinusOne() + { + var v = -I(1); + Assert.Equal(-1, v.Sign()); + // -1 in two's complement: all bits set + Assert.Equal(ulong.MaxValue, v.Lo); + Assert.Equal(ulong.MaxValue, v.M1); + Assert.Equal(ulong.MaxValue, v.M2); + Assert.Equal(ulong.MaxValue, v.Hi); + } + + [Fact] + public void Negate_MinusOne_IsOne() + { + var v = -I(-1); + Assert.Equal(1, v.Sign()); + Assert.Equal(1UL, v.Lo); + Assert.Equal(0UL, v.M1); + } + + [Fact] + public void Negate_InvolutionHoldsForSmallValues() + { + foreach (long x in new long[] { 0, 1, -1, 127, -127, long.MaxValue, long.MinValue }) + { + var v = I(x); + Assert.Equal(v, -(-v)); + } + } + + [Fact] + public void Negate_InvolutionHoldsForInt128Values() + { + foreach (Int128 x in new Int128[] { 0, 1, -1, Int128.MaxValue, Int128.MinValue }) + { + var v = FromInt128(x); + Assert.Equal(v, -(-v)); + } + } + + [Fact] + public void Negate_CarryPropagatesAcrossAllLimbs() + { + // Build a value where Lo == 0, M1 == 0, M2 == 0, Hi == 1 → i.e. 2^192 + // Negation should give Lo=0, M1=0, M2=0, Hi = ulong.MaxValue (... 111...000 in binary → two's complement) + // Actually: ~(2^192) + 1 = -2^192; the carry must propagate through Lo, M1, M2 all being 0. + var big = new Int256(0UL, 0UL, 0UL, 1UL); // value is +2^192 (positive, Hi=1) + var neg = -big; + // -2^192 in two's complement: Lo=0, M1=0, M2=0, Hi = (~1+0 carry from lower) = 0xFFFF...FFFF + // Carry: ~Lo + 1 = 0xFFFF...FFFF + 1 = 0 with carry=1 + // ~M1 + carry = 0xFFFF...FFFF + 1 = 0 with carry=1 + // ~M2 + carry = 0xFFFF...FFFF + 1 = 0 with carry=1 + // ~Hi + carry = ~1 + 1 = 0xFFFF...FFFE + 1 = 0xFFFF...FFFF + Assert.Equal(0UL, neg.Lo); + Assert.Equal(0UL, neg.M1); + Assert.Equal(0UL, neg.M2); + Assert.Equal(ulong.MaxValue, neg.Hi); + Assert.Equal(-1, neg.Sign()); + } + + // ------------------------------------------------------------------------- + // Addition + // ------------------------------------------------------------------------- + + [Fact] + public void Add_ZeroPlusZero_IsZero() + { + Assert.Equal(0, (Int256.Zero + Int256.Zero).Sign()); + } + + [Fact] + public void Add_OnePlusOne_IsTwo() + { + var r = I(1) + I(1); + Assert.Equal(1, r.Sign()); + Assert.Equal(2UL, r.Lo); + } + + [Fact] + public void Add_PositivePlusNegative_IsZero() + { + var r = I(42) + I(-42); + Assert.Equal(0, r.Sign()); + } + + [Fact] + public void Add_CarryFromLoToM1() + { + // ulong.MaxValue + 1 should carry into M1 + var a = new Int256(ulong.MaxValue, 0UL, 0UL, 0UL); + var b = new Int256(1UL, 0UL, 0UL, 0UL); + var r = a + b; + Assert.Equal(0UL, r.Lo); + Assert.Equal(1UL, r.M1); + Assert.Equal(0UL, r.M2); + Assert.Equal(0UL, r.Hi); + } + + [Fact] + public void Add_CarryPropagatesThroughAllLimbs() + { + // 0xFFFF...FFFF (all bits set across all limbs) + 1 = 0 (256-bit wrap) + var allOnes = new Int256(ulong.MaxValue, ulong.MaxValue, ulong.MaxValue, ulong.MaxValue); + var r = allOnes + I(1); + Assert.Equal(0UL, r.Lo); + Assert.Equal(0UL, r.M1); + Assert.Equal(0UL, r.M2); + Assert.Equal(0UL, r.Hi); + } + + [Fact] + public void Add_LargeInt128Values_MatchesInt128Arithmetic() + { + Int128 a = Int128.MaxValue; + Int128 b = Int128.MaxValue; + // 2 * Int128.MaxValue = 2^128 - 2 (positive, fits in 256 bits) + var r = FromInt128(a) + FromInt128(b); + Assert.Equal(1, r.Sign()); + // Low 128 bits: MaxValue + MaxValue = 0xFFFF...FFFE in 128 bits + // i.e. Lo = ulong.MaxValue - 1, M1 = ulong.MaxValue + Assert.Equal(ulong.MaxValue - 1UL, r.Lo); + Assert.Equal(ulong.MaxValue, r.M1); + Assert.Equal(0UL, r.M2); + Assert.Equal(0UL, r.Hi); + } + + // ------------------------------------------------------------------------- + // Subtraction + // ------------------------------------------------------------------------- + + [Fact] + public void Subtract_ValueMinusItself_IsZero() + { + var v = I(12345); + Assert.Equal(0, (v - v).Sign()); + } + + [Fact] + public void Subtract_OneMinusTwo_IsMinusOne() + { + var r = I(1) - I(2); + Assert.Equal(-1, r.Sign()); + } + + [Fact] + public void Subtract_LargePositiveMinusLargePositive() + { + var a = FromInt128(Int128.MaxValue); + var b = FromInt128(Int128.MaxValue - 1); + var r = a - b; + Assert.Equal(1, r.Sign()); + Assert.Equal(1UL, r.Lo); + } + + // ------------------------------------------------------------------------- + // Multiplication + // ------------------------------------------------------------------------- + + [Fact] + public void Multiply_ZeroByAnything_IsZero() + { + Assert.Equal(0, Int256.Multiply(Int128.Zero, Int128.MaxValue).Sign()); + Assert.Equal(0, Int256.Multiply(Int128.MaxValue, Int128.Zero).Sign()); + } + + [Fact] + public void Multiply_OneByOne_IsOne() + { + var r = Int256.Multiply(Int128.One, Int128.One); + Assert.Equal(1, r.Sign()); + Assert.Equal(1UL, r.Lo); + } + + [Fact] + public void Multiply_NegativeOneByOne_IsMinusOne() + { + var r = Int256.Multiply(Int128.NegativeOne, Int128.One); + Assert.Equal(-1, r.Sign()); + } + + [Fact] + public void Multiply_NegativeOneByNegativeOne_IsOne() + { + var r = Int256.Multiply(Int128.NegativeOne, Int128.NegativeOne); + Assert.Equal(1, r.Sign()); + Assert.Equal(1UL, r.Lo); + } + + [Fact] + public void Multiply_TwoByThree_IsSix() + { + var r = Int256.Multiply(2, 3); + Assert.Equal(1, r.Sign()); + Assert.Equal(6UL, r.Lo); + } + + [Fact] + public void Multiply_NegativeTwoByThree_IsMinusSix() + { + var r = Int256.Multiply(-2, 3); + Assert.Equal(-1, r.Sign()); + // -6 in two's complement + var expected = -I(6); + Assert.Equal(expected, r); + } + + [Fact] + public void Multiply_MatchesBigIntegerForMediumValues() + { + // Use System.Numerics.BigInteger as reference oracle. + var cases = new (Int128 a, Int128 b)[] + { + (12345678L, 987654321L), + (-12345678L, 987654321L), + (12345678L, -987654321L), + (-12345678L, -987654321L), + (long.MaxValue, long.MaxValue), + (long.MinValue, long.MaxValue), + (long.MaxValue, long.MinValue), + (long.MinValue, long.MinValue), + }; + + foreach (var (a, b) in cases) + { + var result = Int256.Multiply(a, b); + var expected = ToBig128(a) * ToBig128(b); + + // Compare signs + int expectedSign = expected.Sign; + Assert.Equal(expectedSign, result.Sign()); + + // Compare magnitude via Lo limb + if (expectedSign != 0) + { + var absExpected = System.Numerics.BigInteger.Abs(expected); + ulong expectedLo = (ulong)(absExpected & ulong.MaxValue); + var absResult = result.Sign() < 0 ? -result : result; + Assert.Equal(expectedLo, absResult.Lo); + } + } + } + + [Fact] + public void Multiply_MaxValueByMaxValue_SignIsPositive() + { + // Int128.MaxValue * Int128.MaxValue is a large positive number (~2^254) + var r = Int256.Multiply(Int128.MaxValue, Int128.MaxValue); + Assert.Equal(1, r.Sign()); + } + + [Fact] + public void Multiply_MaxValueByMinValue_SignIsNegative() + { + var r = Int256.Multiply(Int128.MaxValue, Int128.MinValue); + Assert.Equal(-1, r.Sign()); + } + + [Fact] + public void Multiply_MinValueByMinValue_SignIsPositive() + { + // (-2^127) * (-2^127) = 2^254, positive + var r = Int256.Multiply(Int128.MinValue, Int128.MinValue); + Assert.Equal(1, r.Sign()); + } + + [Fact] + public void Multiply_FullOracleCheck_AgainstBigInteger() + { + // Cross-check the entire product (all four limbs) against BigInteger for + // cases small enough that BigInteger is authoritative and fast. + var cases = new (long a, long b)[] + { + (0, 0), (1, 0), (0, 1), (1, 1), + (-1, 1), (1, -1), (-1, -1), + (100, 200), (-100, 200), (100, -200), (-100, -200), + (long.MaxValue, 2L), + (long.MaxValue, -2L), + (long.MinValue, 2L), + (long.MinValue, -1L), // Int128.MinValue * -1 = Int128.MaxValue + 1, fits in 128 bits + }; + + foreach (var (a, b) in cases) + { + Int128 ia = a, ib = b; + var result = Int256.Multiply(ia, ib); + var expected = (System.Numerics.BigInteger)a * (System.Numerics.BigInteger)b; + + AssertEqualsBigInteger(expected, result, $"({a}) * ({b})"); + } + } + + // ------------------------------------------------------------------------- + // Equality + // ------------------------------------------------------------------------- + + [Fact] + public void Equality_SameValues_AreEqual() + { + var a = I(42); + var b = I(42); + Assert.Equal(a, b); + } + + [Fact] + public void Equality_DifferentValues_AreNotEqual() + { + Assert.NotEqual(I(1), I(2)); + } + + // ------------------------------------------------------------------------- + // Round-trip: a + (-a) == 0 and -(-a) == a for all Int128 values + // ------------------------------------------------------------------------- + + [Theory] + [InlineData(0L)] + [InlineData(1L)] + [InlineData(-1L)] + [InlineData(long.MaxValue)] + [InlineData(long.MinValue)] + public void AddNegation_IsZero(long x) + { + var v = I(x); + Assert.Equal(0, (v + (-v)).Sign()); + } + + // ------------------------------------------------------------------------- + // Oracle helper + // ------------------------------------------------------------------------- + + private static void AssertEqualsBigInteger( + System.Numerics.BigInteger expected, + Int256 actual, + string label) + { + // Reconstruct BigInteger from the four limbs treating as two's complement. + bool negative = actual.Sign() < 0; + Int256 abs = negative ? -actual : actual; + + var reconstructed = (System.Numerics.BigInteger)abs.Hi; + reconstructed = (reconstructed << 64) | abs.M2; + reconstructed = (reconstructed << 64) | abs.M1; + reconstructed = (reconstructed << 64) | abs.Lo; + if (negative) reconstructed = -reconstructed; + + Assert.True( + expected == reconstructed, + $"{label}: expected {expected}, got {reconstructed}"); + } + + // ------------------------------------------------------------------------- + // DivideToInt64 + // ------------------------------------------------------------------------- + + [Fact] + public void DivideToInt64_BothPositive() + { + // 15 / 4 → 4 (floor 3.75, round half-away = 4) + Assert.Equal(4L, Int256.DivideToInt64(I(15), (Int128)4)); + } + + [Fact] + public void DivideToInt64_NumeratorNegative() + { + // -15 / 4 → -4 + Assert.Equal(-4L, Int256.DivideToInt64(I(-15), (Int128)4)); + } + + [Fact] + public void DivideToInt64_DenominatorNegative() + { + // 15 / -4 → -4 + Assert.Equal(-4L, Int256.DivideToInt64(I(15), (Int128)(-4))); + } + + [Fact] + public void DivideToInt64_BothNegative() + { + // -15 / -4 → 4 + Assert.Equal(4L, Int256.DivideToInt64(I(-15), (Int128)(-4))); + } + + [Fact] + public void DivideToInt64_ExactDivision() + { + // 12 / 4 = 3 exactly + Assert.Equal(3L, Int256.DivideToInt64(I(12), (Int128)4)); + } + + [Fact] + public void DivideToInt64_NumeratorZero() + { + Assert.Equal(0L, Int256.DivideToInt64(Int256.Zero, (Int128)7)); + Assert.Equal(0L, Int256.DivideToInt64(Int256.Zero, (Int128)(-7))); + } + + [Fact] + public void DivideToInt64_DenominatorOne() + { + Assert.Equal(42L, Int256.DivideToInt64(I(42), (Int128)1)); + Assert.Equal(-42L, Int256.DivideToInt64(I(-42), (Int128)1)); + } + + [Fact] + public void DivideToInt64_DenominatorMinusOne() + { + Assert.Equal(-42L, Int256.DivideToInt64(I(42), (Int128)(-1))); + Assert.Equal(42L, Int256.DivideToInt64(I(-42), (Int128)(-1))); + } + + [Fact] + public void DivideToInt64_RoundingHalfUp_Positive() + { + // 5 / 2 = 2.5 → rounds to 3 (half-away-from-zero) + Assert.Equal(3L, Int256.DivideToInt64(I(5), (Int128)2)); + } + + [Fact] + public void DivideToInt64_RoundingHalfUp_Negative() + { + // -5 / 2 = -2.5 → rounds to -3 (half-away-from-zero) + Assert.Equal(-3L, Int256.DivideToInt64(I(-5), (Int128)2)); + } + + [Fact] + public void DivideToInt64_Rounding_BelowHalf() + { + // 7 / 4 = 1.75 → rounds to 2 + Assert.Equal(2L, Int256.DivideToInt64(I(7), (Int128)4)); + // 5 / 4 = 1.25 → rounds to 1 + Assert.Equal(1L, Int256.DivideToInt64(I(5), (Int128)4)); + } + + [Fact] + public void DivideToInt64_LargeValues_AgainstBigInteger() + { + // num ≈ 2^163, den ≈ 2^110, quotient ≈ 2^53 + // Build numerator as Int256 via Multiply + // Use Pow2_128 helper since the custom Int128 polyfill has no << operator. + Int128 a = Pow2_128(81); // 2^81 + Int128 b = Pow2_128(82); // 2^82 + Int256 num = Int256.Multiply(a, b); // exact product = 2^163 + + Int128 den = Pow2_128(110); // 2^110 + long quotient = Int256.DivideToInt64(num, den); + + // 2^163 / 2^110 = 2^53 exactly + Assert.Equal(1L << 53, quotient); + } + + [Fact] + public void DivideToInt64_LargeValues_WithRemainder_AgainstBigInteger() + { + // Use BigInteger as oracle for a non-divisible large case + long aRaw = PredicatesInt.MaxCoordinate; // 2^53 + long bRaw = aRaw - 1; + long cRaw = -(aRaw - 2); + long dRaw = aRaw - 3; + + // Orient2dRaw returns at most magnitude ~2^109 for MaxCoordinate inputs + Int128 acd = PredicatesInt.Orient2dRaw( + new V2i(aRaw, 0), new V2i(cRaw, 0), new V2i(0, dRaw)); + Int128 bcd = PredicatesInt.Orient2dRaw( + new V2i(bRaw, 0), new V2i(cRaw, 0), new V2i(0, dRaw)); + Int128 denom = acd - bcd; + if (denom == Int128.Zero) return; // degenerate input, skip + + long delta = bRaw - aRaw; // = -1 + Int256 numX = Int256.Multiply(acd, (Int128)delta); + + long result = Int256.DivideToInt64(numX, denom); + + // Verify against BigInteger + var bigAcd = ToBig128(acd); + var bigDen = ToBig128(denom); + var bigNumX = bigAcd * (System.Numerics.BigInteger)delta; + var bigQ = System.Numerics.BigInteger.DivRem(bigNumX, bigDen, out var bigR); + // Round half-away-from-zero + if (2 * System.Numerics.BigInteger.Abs(bigR) >= System.Numerics.BigInteger.Abs(bigDen)) + bigQ += bigQ < 0 ? -1 : 1; + + Assert.True(bigQ == (System.Numerics.BigInteger)result, + $"expected {bigQ}, got {result}"); + } + + // Helper: Int128 → BigInteger + private static System.Numerics.BigInteger ToBig128(Int128 v) + { +#if NET7_0_OR_GREATER + return (System.Numerics.BigInteger)v; +#else + bool neg = v < Int128.Zero; + Int128 abs = neg ? -v : v; + var result = (new System.Numerics.BigInteger((long)abs._hi) << 64) + | new System.Numerics.BigInteger(abs._lo); + return neg ? -result : result; +#endif + } +} diff --git a/test/CDT.Tests/KdTreeIntTests.cs b/test/CDT.Tests/KdTreeIntTests.cs new file mode 100644 index 0000000..a4dc306 --- /dev/null +++ b/test/CDT.Tests/KdTreeIntTests.cs @@ -0,0 +1,238 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +namespace CDT.Tests; + +#if !NET7_0_OR_GREATER +using CDT.Predicates; // Int128 polyfill on .NET 6 +#endif + +/// +/// Tests for the integer (concrete, long-coordinate variant). +/// +public sealed class KdTreeIntTests +{ + // ------------------------------------------------------------------------- + // Helpers + // ------------------------------------------------------------------------- + + private static (KdTree tree, List pts) Build(IEnumerable<(long x, long y)> coords) + { + var pts = coords.Select(c => new V2i(c.x, c.y)).ToList(); + var tree = new KdTree(); + for (int i = 0; i < pts.Count; i++) + tree.Insert(i, pts); + return (tree, pts); + } + + /// Brute-force nearest neighbour (ground truth). + private static int BruteNearest(List pts, long qx, long qy) + { + int best = 0; + Int128 bestD = Int128.MaxValue; + for (int i = 0; i < pts.Count; i++) + { + long dx = pts[i].X - qx, dy = pts[i].Y - qy; + Int128 d = (Int128)dx * dx + (Int128)dy * dy; + if (d < bestD) { bestD = d; best = i; } + } + return best; + } + + // ------------------------------------------------------------------------- + // Construction + // ------------------------------------------------------------------------- + + [Fact] + public void EmptyTree_SizeIsZero() + { + var tree = new KdTree(); + Assert.Equal(0, tree.Size); + } + + [Fact] + public void AfterInsert_SizeIncreases() + { + var pts = new List { new(0, 0) }; + var tree = new KdTree(); + tree.Insert(0, pts); + Assert.Equal(1, tree.Size); + } + + // ------------------------------------------------------------------------- + // Nearest — trivial cases + // ------------------------------------------------------------------------- + + [Fact] + public void Nearest_SinglePoint_ReturnsThatPoint() + { + var (tree, pts) = Build([(10, 20)]); + Assert.Equal(0, tree.Nearest(0, 0, pts)); + } + + [Fact] + public void Nearest_QueryAtExactPoint_ReturnsThatIndex() + { + var (tree, pts) = Build([(1, 2), (5, 6), (9, 3)]); + Assert.Equal(1, tree.Nearest(5, 6, pts)); + } + + [Fact] + public void Nearest_TwoPoints_ReturnsCloser() + { + var (tree, pts) = Build([(0, 0), (100, 100)]); + // Query near origin → should return index 0 + Assert.Equal(0, tree.Nearest(1, 1, pts)); + // Query near far corner → should return index 1 + Assert.Equal(1, tree.Nearest(99, 99, pts)); + } + + // ------------------------------------------------------------------------- + // Nearest — multiple points (cross-check against brute force) + // ------------------------------------------------------------------------- + + [Fact] + public void Nearest_Grid_MatchesBruteForce() + { + // 5×5 integer grid + var coords = new List<(long, long)>(); + for (int x = 0; x < 5; x++) + for (int y = 0; y < 5; y++) + coords.Add((x * 10, y * 10)); + + var (tree, pts) = Build(coords); + + long[] queries = [-5, 0, 5, 15, 22, 37, 45]; + foreach (long qx in queries) + foreach (long qy in queries) + { + int kdNearest = tree.Nearest(qx, qy, pts); + int brute = BruteNearest(pts, qx, qy); + // Both should yield same squared distance (may be different index if tied) + long dx1 = pts[kdNearest].X - qx, dy1 = pts[kdNearest].Y - qy; + long dx2 = pts[brute].X - qx, dy2 = pts[brute].Y - qy; + Int128 d1 = (Int128)dx1*dx1 + (Int128)dy1*dy1; + Int128 d2 = (Int128)dx2*dx2 + (Int128)dy2*dy2; + Assert.Equal(d2, d1); + } + } + + [Fact] + public void Nearest_Random100Points_MatchesBruteForce() + { + var rng = new Random(42); + var coords = Enumerable.Range(0, 100) + .Select(_ => ((long)rng.Next(-1000, 1000), (long)rng.Next(-1000, 1000))) + .ToList(); + var (tree, pts) = Build(coords); + + for (int q = 0; q < 50; q++) + { + long qx = rng.Next(-1100, 1100), qy = rng.Next(-1100, 1100); + int kdNearest = tree.Nearest(qx, qy, pts); + int brute = BruteNearest(pts, qx, qy); + + long dx1 = pts[kdNearest].X - qx, dy1 = pts[kdNearest].Y - qy; + long dx2 = pts[brute].X - qx, dy2 = pts[brute].Y - qy; + Int128 d1 = (Int128)dx1*dx1 + (Int128)dy1*dy1; + Int128 d2 = (Int128)dx2*dx2 + (Int128)dy2*dy2; + Assert.Equal(d2, d1); + } + } + + // ------------------------------------------------------------------------- + // Nearest — more than NumVerticesInLeaf (32) points → forces splits + // ------------------------------------------------------------------------- + + [Fact] + public void Nearest_ManyPoints_ForcesLeafSplits_MatchesBruteForce() + { + // Insert 100 points along a line — forces the tree to split many times. + var coords = Enumerable.Range(0, 100).Select(i => ((long)i, 0L)).ToList(); + var (tree, pts) = Build(coords); + + Assert.Equal(100, tree.Size); + + // Query at every integer from -5 to 105 + for (long qx = -5; qx <= 105; qx++) + { + int kdNearest = tree.Nearest(qx, 0, pts); + int brute = BruteNearest(pts, qx, 0); + + long dx1 = pts[kdNearest].X - qx, dy1 = pts[kdNearest].Y - qx; + long dx2 = pts[brute].X - qx, dy2 = pts[brute].Y - qx; + Int128 d1 = (Int128)dx1*dx1 + (Int128)dy1*dy1; + Int128 d2 = (Int128)dx2*dx2 + (Int128)dy2*dy2; + Assert.Equal(d2, d1); + } + } + + // ------------------------------------------------------------------------- + // Pre-supplied bounding box constructor + // ------------------------------------------------------------------------- + + [Fact] + public void Nearest_WithPresetBox_MatchesBruteForce() + { + var pts = new List + { + new(10, 10), new(20, 10), new(10, 20), new(20, 20), new(15, 15) + }; + var tree = new KdTree(0, 0, 30, 30); + for (int i = 0; i < pts.Count; i++) + tree.Insert(i, pts); + + for (long qx = 0; qx <= 30; qx += 5) + for (long qy = 0; qy <= 30; qy += 5) + { + int kdNearest = tree.Nearest(qx, qy, pts); + int brute = BruteNearest(pts, qx, qy); + + long dx1 = pts[kdNearest].X - qx, dy1 = pts[kdNearest].Y - qy; + long dx2 = pts[brute].X - qx, dy2 = pts[brute].Y - qy; + Int128 d1 = (Int128)dx1*dx1 + (Int128)dy1*dy1; + Int128 d2 = (Int128)dx2*dx2 + (Int128)dy2*dy2; + Assert.Equal(d2, d1); + } + } + + // ------------------------------------------------------------------------- + // Negative and large coordinates + // ------------------------------------------------------------------------- + + [Fact] + public void Nearest_NegativeCoordinates_MatchesBruteForce() + { + var (tree, pts) = Build([(-100, -50), (-10, -10), (-1, -1), (0, 0)]); + Assert.Equal(BruteNearest(pts, -5, -5), tree.Nearest(-5, -5, pts)); + Assert.Equal(BruteNearest(pts, -99, -49), tree.Nearest(-99, -49, pts)); + } + + [Fact] + public void Nearest_LargeCoordinates_MatchesBruteForce() + { + long M = 1L << 40; + var (tree, pts) = Build([(0, 0), (M, 0), (0, M), (M, M)]); + long qx = M / 3, qy = M / 3; + Assert.Equal(BruteNearest(pts, qx, qy), tree.Nearest(qx, qy, pts)); + } + + // ------------------------------------------------------------------------- + // GetMid overflow safety + // ------------------------------------------------------------------------- + + [Fact] + public void GetMid_DoesNotOverflowForSymmetricBox() + { + // A box centred on zero with half-width 2^53 would use + // minX + (maxX - minX) / 2 = -M + 2M/2 = 0. Verify tree works. + long M = 1L << 53; + var pts = new List { new(-M, 0), new(M, 0), new(0, -M), new(0, M) }; + var tree = new KdTree(-M, -M, M, M); + for (int i = 0; i < pts.Count; i++) tree.Insert(i, pts); + + Assert.Equal(BruteNearest(pts, 1, 1), tree.Nearest(1, 1, pts)); + Assert.Equal(BruteNearest(pts, -1, -1), tree.Nearest(-1, -1, pts)); + } +} diff --git a/test/CDT.Tests/PredicatesIntTests.cs b/test/CDT.Tests/PredicatesIntTests.cs new file mode 100644 index 0000000..023eceb --- /dev/null +++ b/test/CDT.Tests/PredicatesIntTests.cs @@ -0,0 +1,281 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +using CDT.Predicates; + +namespace CDT.Tests; + +/// +/// Tests for — exact integer geometric predicates. +/// +/// Each test specifies expected sign (+1/0/-1) with a brief geometric +/// justification. Degenerate cases (collinear, cocircular) are tested +/// explicitly because they are the cases where floating-point predicates +/// most often produce incorrect results. +/// +public sealed class PredicatesIntTests +{ + // ========================================================================= + // Orient2dInt + // ========================================================================= + + // ---- Basic orientation ---- + + [Fact] + public void Orient2d_CounterClockwise_ReturnsPositive() + { + // a=(0,0), b=(2,0), c=(1,1): c is to the LEFT of a→b + int r = PredicatesInt.Orient2dInt(0, 0, 2, 0, 1, 1); + Assert.Equal(1, r); + } + + [Fact] + public void Orient2d_Clockwise_ReturnsNegative() + { + // a=(0,0), b=(2,0), c=(1,-1): c is to the RIGHT of a→b + int r = PredicatesInt.Orient2dInt(0, 0, 2, 0, 1, -1); + Assert.Equal(-1, r); + } + + [Fact] + public void Orient2d_Collinear_ReturnsZero() + { + // a=(0,0), b=(1,1), c=(2,2): exactly collinear + int r = PredicatesInt.Orient2dInt(0, 0, 1, 1, 2, 2); + Assert.Equal(0, r); + } + + [Fact] + public void Orient2d_CollinearOnAxis_ReturnsZero() + { + int r = PredicatesInt.Orient2dInt(0, 0, 5, 0, 3, 0); + Assert.Equal(0, r); + } + + [Fact] + public void Orient2d_SamePoint_ReturnsZero() + { + // All three points identical → degenerate, area = 0 + int r = PredicatesInt.Orient2dInt(3, 3, 3, 3, 3, 3); + Assert.Equal(0, r); + } + + // ---- Sign is antisymmetric: swapping a and b flips sign ---- + + [Fact] + public void Orient2d_SwapAB_FlipsSign() + { + int r1 = PredicatesInt.Orient2dInt(0, 0, 4, 0, 2, 1); + int r2 = PredicatesInt.Orient2dInt(4, 0, 0, 0, 2, 1); + Assert.Equal(1, r1); + Assert.Equal(-1, r2); + } + + // ---- Negative coordinates ---- + + [Fact] + public void Orient2d_NegativeCoordinates_CorrectSign() + { + // a=(-2,-2), b=(2,-2), c=(0,1): standard CCW triangle in lower half-plane + int r = PredicatesInt.Orient2dInt(-2, -2, 2, -2, 0, 1); + Assert.Equal(1, r); + } + + // ---- Large coordinates (near MaxCoordinate) ---- + + [Fact] + public void Orient2d_LargeCoordinates_CCW() + { + long M = PredicatesInt.MaxCoordinate; + // Points near the coordinate limit: (0,0), (M,0), (0,M) → CCW + int r = PredicatesInt.Orient2dInt(0, 0, M, 0, 0, M); + Assert.Equal(1, r); + } + + [Fact] + public void Orient2d_LargeCoordinates_Collinear() + { + long M = PredicatesInt.MaxCoordinate; + // Three collinear points with large coordinates + int r = PredicatesInt.Orient2dInt(0, 0, M, M, M / 2, M / 2); + Assert.Equal(0, r); + } + + // ---- V2i overload ---- + + [Fact] + public void Orient2d_V2iOverload_MatchesScalar() + { + var p = new V2i(1, 1); + var v1 = new V2i(0, 0); + var v2 = new V2i(2, 0); + Assert.Equal( + PredicatesInt.Orient2dInt(0, 0, 2, 0, 1, 1), + PredicatesInt.Orient2dInt(p, v1, v2)); + } + + // ---- Orient2dRaw returns actual determinant value ---- + + [Fact] + public void Orient2dRaw_CCW_ReturnsPositiveInt128() + { + Int128 r = PredicatesInt.Orient2dRaw(0, 0, 2, 0, 1, 1); + Assert.True(r > Int128.Zero); + } + + [Fact] + public void Orient2dRaw_Collinear_ReturnsZero() + { + Int128 r = PredicatesInt.Orient2dRaw(0, 0, 3, 3, 1, 1); + Assert.Equal(Int128.Zero, r); + } + + [Fact] + public void Orient2dRaw_KnownValue() + { + // Triangle (0,0),(4,0),(2,3): det = 4*3 - 0*2 = 12 + // det = (ax-cx)*(by-cy) - (ay-cy)*(bx-cx) + // = (0-2)*(0-3) - (0-3)*(4-2) + // = (-2)*(-3) - (-3)*(2) = 6 + 6 = 12 + Int128 r = PredicatesInt.Orient2dRaw(0, 0, 4, 0, 2, 3); + Assert.Equal((Int128)12, r); + } + + // ========================================================================= + // InCircleInt + // ========================================================================= + + // ---- Reference triangle: (0,0), (2,0), (0,2) ---- + // Circumcenter: (1,1), radius sqrt(2). + // Point (2,2) is exactly ON the circumcircle (distance to center = sqrt(2)). + // Point (1,1) is INSIDE. + // Point (3,3) is OUTSIDE. + + [Fact] + public void InCircle_PointInside_ReturnsPositive() + { + // d=(1,1) is strictly inside circumcircle of (0,0),(2,0),(0,2) + int r = PredicatesInt.InCircleInt(0, 0, 2, 0, 0, 2, 1, 1); + Assert.Equal(1, r); + } + + [Fact] + public void InCircle_PointOutside_ReturnsNegative() + { + // d=(3,3) is strictly outside + int r = PredicatesInt.InCircleInt(0, 0, 2, 0, 0, 2, 3, 3); + Assert.Equal(-1, r); + } + + [Fact] + public void InCircle_PointOnCircumcircle_ReturnsZero() + { + // d=(2,2) lies exactly on the circumcircle of (0,0),(2,0),(0,2). + // Verified analytically: det = 0. + int r = PredicatesInt.InCircleInt(0, 0, 2, 0, 0, 2, 2, 2); + Assert.Equal(0, r); + } + + // ---- Axis-aligned right triangle: (0,0),(4,0),(0,3) ---- + // Circumcenter: (2, 1.5) — not integer, but (4,3) is on the circumcircle + // since distance from (2,1.5) to (4,3) = sqrt(4+2.25) = sqrt(6.25) = 2.5 = radius. + + [Fact] + public void InCircle_RightTriangle_PointOnCircumcircle_ReturnsZero() + { + // (4,3) is on circumcircle of (0,0),(4,0),(0,3) — verified: det=0 + int r = PredicatesInt.InCircleInt(0, 0, 4, 0, 0, 3, 4, 3); + Assert.Equal(0, r); + } + + // ---- Symmetry: result sign flips when triangle vertices are swapped (CW → CCW) ---- + + [Fact] + public void InCircle_CwTriangle_SignFlips() + { + // Swap b and c to reverse triangle orientation — sign of det flips. + int ccw = PredicatesInt.InCircleInt(0, 0, 2, 0, 0, 2, 1, 1); // inside → +1 + int cw = PredicatesInt.InCircleInt(0, 0, 0, 2, 2, 0, 1, 1); // same but CW → -1 + Assert.Equal( 1, ccw); + Assert.Equal(-1, cw); + } + + // ---- Negative coordinates ---- + + [Fact] + public void InCircle_NegativeCoordinates_InsideReturnsPositive() + { + // Translate the reference triangle to (-10,-10) + int r = PredicatesInt.InCircleInt(-10, -10, -8, -10, -10, -8, -9, -9); + Assert.Equal(1, r); + } + + // ---- Large coordinates (near MaxCoordinate) ---- + + [Fact] + public void InCircle_LargeCoordinates_InsideReturnsPositive() + { + long M = PredicatesInt.MaxCoordinate / 2; + // Scale reference triangle by M/2 + int r = PredicatesInt.InCircleInt(0, 0, 2*M, 0, 0, 2*M, M, M); + Assert.Equal(1, r); + } + + [Fact] + public void InCircle_LargeCoordinates_OnCircumcircle_ReturnsZero() + { + long M = PredicatesInt.MaxCoordinate / 2; + int r = PredicatesInt.InCircleInt(0, 0, 2*M, 0, 0, 2*M, 2*M, 2*M); + Assert.Equal(0, r); + } + + // ---- V2i overload ---- + + [Fact] + public void InCircle_V2iOverload_MatchesScalar() + { + var p = new V2i(1, 1); + var v1 = new V2i(0, 0); + var v2 = new V2i(2, 0); + var v3 = new V2i(0, 2); + Assert.Equal( + PredicatesInt.InCircleInt(0, 0, 2, 0, 0, 2, 1, 1), + PredicatesInt.InCircleInt(p, v1, v2, v3)); + } + + // ---- InCircle sign on known non-degenerate cases ---- + + [Theory] + [InlineData(0, 0, 2, 0, 0, 2, 1, 1, 1)] // inside + [InlineData(0, 0, 2, 0, 0, 2, 3, 3, -1)] // outside + [InlineData(0, 0, 4, 0, 0, 3, 1, 1, 1)] // inside + [InlineData(0, 0, 4, 0, 0, 3, 5, 5, -1)] // outside + public void InCircle_KnownSignOnNonDegenerate( + long ax, long ay, long bx, long by, long cx, long cy, long dx, long dy, int expected) + { + int result = PredicatesInt.InCircleInt(ax, ay, bx, by, cx, cy, dx, dy); + Assert.Equal(expected, result); + } + + // ---- Degenerate: point at one of the triangle vertices ---- + + [Fact] + public void InCircle_QueryAtVertex_ReturnsZero() + { + // d coincides with vertex a — it's on the circumcircle + int r = PredicatesInt.InCircleInt(0, 0, 2, 0, 0, 2, 0, 0); + Assert.Equal(0, r); + } + + // ---- Orient2d consistency: sign of 3rd term matches orientation ---- + + [Fact] + public void Orient2d_IsConsistentWithTriangleArea() + { + // Triangle (0,0),(3,0),(0,4): area = (1/2)*3*4 = 6 + // det = (0-0)*(0-4) - (0-4)*(3-0) = 0 - (-12) = 12 = 2*area ✓ + Int128 raw = PredicatesInt.Orient2dRaw(0, 0, 3, 0, 0, 4); + Assert.Equal((Int128)12, raw); + } +} diff --git a/test/CDT.Tests/PredicatesTests.cs b/test/CDT.Tests/PredicatesTests.cs deleted file mode 100644 index 84ea9b1..0000000 --- a/test/CDT.Tests/PredicatesTests.cs +++ /dev/null @@ -1,147 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at https://mozilla.org/MPL/2.0/. - -using CDT.Predicates; - -namespace CDT.Tests; - -/// Tests for geometric predicates and utilities. -public sealed class PredicatesTests -{ - [Fact] - public void Orient2D_CounterClockwise_ReturnsPositive() - { - // v1=(0,0), v2=(1,0), p=(0.5,1) should be to the left → positive - double r = PredicatesAdaptive.Orient2d(0.0, 0.0, 1.0, 0.0, 0.5, 1.0); - Assert.True(r > 0); - } - - [Fact] - public void Orient2D_Clockwise_ReturnsNegative() - { - double r = PredicatesAdaptive.Orient2d(0.0, 0.0, 1.0, 0.0, 0.5, -1.0); - Assert.True(r < 0); - } - - [Fact] - public void Orient2D_Collinear_ReturnsZero() - { - double r = PredicatesAdaptive.Orient2d(0.0, 0.0, 1.0, 0.0, 0.5, 0.0); - Assert.Equal(0.0, r, 15); - } - - [Fact] - public void InCircle_InsideCircle_ReturnsPositive() - { - // Triangle: (0,0),(4,0),(2,4) - circumcircle contains (2,1) - double r = PredicatesAdaptive.InCircle(0, 0, 4, 0, 2, 4, 2, 1); - Assert.True(r > 0); - } - - [Fact] - public void InCircle_OutsideCircle_ReturnsNegative() - { - // (2,-2) should be well outside the circumcircle of (0,0),(4,0),(2,4) - double r = PredicatesAdaptive.InCircle(0, 0, 4, 0, 2, 4, 2, -2); - Assert.True(r < 0); - } -} - -/// Tests for triangle utils. -public sealed class TriangleUtilsTests -{ - [Theory] - [InlineData(0, 1)] - [InlineData(1, 2)] - [InlineData(2, 0)] - public void Ccw_CyclesForward(int i, int expected) - => Assert.Equal(expected, CdtUtils.Ccw(i)); - - [Theory] - [InlineData(0, 2)] - [InlineData(1, 0)] - [InlineData(2, 1)] - public void Cw_CyclesBackward(int i, int expected) - => Assert.Equal(expected, CdtUtils.Cw(i)); - - [Fact] - public void LocatePointTriangle_Inside() - { - var p = new V2d(0.5, 0.25); - var v1 = new V2d(0, 0); - var v2 = new V2d(1, 0); - var v3 = new V2d(0, 1); - Assert.Equal(PtTriLocation.Inside, CdtUtils.LocatePointTriangle(p, v1, v2, v3)); - } - - [Fact] - public void LocatePointTriangle_Outside() - { - var p = new V2d(2, 2); - var v1 = new V2d(0, 0); - var v2 = new V2d(1, 0); - var v3 = new V2d(0, 1); - Assert.Equal(PtTriLocation.Outside, CdtUtils.LocatePointTriangle(p, v1, v2, v3)); - } - - [Fact] - public void LocatePointTriangle_OnEdge() - { - // Point on edge v1-v2 - var p = new V2d(0.5, 0); - var v1 = new V2d(0, 0); - var v2 = new V2d(1, 0); - var v3 = new V2d(0, 1); - var loc = CdtUtils.LocatePointTriangle(p, v1, v2, v3); - Assert.True(CdtUtils.IsOnEdge(loc)); - } - - [Fact] - public void IsInCircumcircle_PointInside_ReturnsTrue() - { - var p = new V2d(0.5, 0.5); - var v1 = new V2d(0, 0); - var v2 = new V2d(2, 0); - var v3 = new V2d(1, 2); - Assert.True(CdtUtils.IsInCircumcircle(p, v1, v2, v3)); - } - - [Fact] - public void DistanceSquared_CorrectResult() - { - var a = new V2d(0, 0); - var b = new V2d(3, 4); - Assert.Equal(25.0, CdtUtils.DistanceSquared(a, b), 12); - } -} - -/// Tests for edge type. -public sealed class EdgeTests -{ - [Fact] - public void Edge_NormalizesOrder() - { - var e1 = new Edge(3, 1); - var e2 = new Edge(1, 3); - Assert.Equal(e1, e2); - Assert.Equal(1, e1.V1); - Assert.Equal(3, e1.V2); - } - - [Fact] - public void Edge_HashConsistency() - { - var e1 = new Edge(5, 2); - var e2 = new Edge(2, 5); - Assert.Equal(e1.GetHashCode(), e2.GetHashCode()); - } - - [Fact] - public void EdgeSet_TreatsSymmetricEdgesAsSame() - { - var set = new HashSet { new Edge(1, 2) }; - Assert.Contains(new Edge(2, 1), set); - } -} - diff --git a/test/CDT.Tests/ReadmeExamplesTests.cs b/test/CDT.Tests/ReadmeExamplesTests.cs index 27e5260..d44b80b 100644 --- a/test/CDT.Tests/ReadmeExamplesTests.cs +++ b/test/CDT.Tests/ReadmeExamplesTests.cs @@ -4,8 +4,12 @@ namespace CDT.Tests; -/// Validates that the README code examples compile and produce the expected results. -public sealed class ReadmeExamplesTests + +/// +/// Validates the README code examples with the integer +/// (same scenarios, integer-scaled coordinates). +/// +public sealed class ReadmeExamplesTests_Int { // ------------------------------------------------------------------------- // Example 1 – Delaunay triangulation without constraints (convex hull) @@ -14,14 +18,15 @@ public sealed class ReadmeExamplesTests [Fact] public void Example_DelaunayConvexHull() { - var vertices = new List> + var vertices = new List { - new(0, 0), new(4, 0), new(4, 4), new(0, 4), new(2, 2), // inner point + new(0, 0), new(4_000_000, 0), new(4_000_000, 4_000_000), + new(0, 4_000_000), new(2_000_000, 2_000_000), }; - var cdt = new Triangulation(); + var cdt = new Triangulation(); cdt.InsertVertices(vertices); - cdt.EraseSuperTriangle(); // produces convex hull + cdt.EraseSuperTriangle(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); Assert.Equal(5, cdt.Vertices.Length); @@ -36,19 +41,19 @@ public void Example_DelaunayConvexHull() [Fact] public void Example_ConstrainedDelaunay_BoundedDomain() { - var vertices = new List> + var vertices = new List { - new(0, 0), new(4, 0), new(4, 4), new(0, 4), + new(0, 0), new(4_000_000, 0), new(4_000_000, 4_000_000), new(0, 4_000_000), }; var edges = new List { - new(0, 1), new(1, 2), new(2, 3), new(3, 0), // square boundary + new(0, 1), new(1, 2), new(2, 3), new(3, 0), }; - var cdt = new Triangulation(); + var cdt = new Triangulation(); cdt.InsertVertices(vertices); cdt.InsertEdges(edges); - cdt.EraseOuterTriangles(); // removes everything outside the boundary + cdt.EraseOuterTriangles(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); Assert.Equal(4, cdt.Vertices.Length); @@ -63,24 +68,22 @@ public void Example_ConstrainedDelaunay_BoundedDomain() [Fact] public void Example_AutoDetectBoundariesAndHoles() { - // Outer square (vertices 0-3) + inner square hole (vertices 4-7) - var vertices = new List> + var vertices = new List { - new(0, 0), new(6, 0), new(6, 6), new(0, 6), // outer square - new(2, 2), new(4, 2), new(4, 4), new(2, 4), // inner hole + new(0, 0), new(6_000_000, 0), new(6_000_000, 6_000_000), new(0, 6_000_000), + new(2_000_000, 2_000_000), new(4_000_000, 2_000_000), + new(4_000_000, 4_000_000), new(2_000_000, 4_000_000), }; var edges = new List { - // outer boundary (CCW) new(0, 1), new(1, 2), new(2, 3), new(3, 0), - // inner hole boundary (CW — opposite winding marks it as a hole) new(4, 7), new(7, 6), new(6, 5), new(5, 4), }; - var cdt = new Triangulation(); + var cdt = new Triangulation(); cdt.InsertVertices(vertices); cdt.InsertEdges(edges); - cdt.EraseOuterTrianglesAndHoles(); // removes outer AND fills holes automatically + cdt.EraseOuterTrianglesAndHoles(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); Assert.Equal(8, cdt.Vertices.Length); @@ -94,23 +97,22 @@ public void Example_AutoDetectBoundariesAndHoles() [Fact] public void Example_ConformingDelaunay() { - var vertices = new List> + var vertices = new List { - new(0, 0), new(4, 0), new(4, 4), new(0, 4), + new(0, 0), new(4_000_000, 0), new(4_000_000, 4_000_000), new(0, 4_000_000), }; var edges = new List { new(0, 1), new(1, 2), new(2, 3), new(3, 0), }; - var cdt = new Triangulation(); + var cdt = new Triangulation(); cdt.InsertVertices(vertices); - cdt.ConformToEdges(edges); // may split edges and add new points + cdt.ConformToEdges(edges); cdt.EraseOuterTriangles(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); Assert.True(cdt.Triangles.Length > 0); - // ConformToEdges may have added midpoints, so vertex count >= 4 Assert.True(cdt.Vertices.Length >= 4); } @@ -121,29 +123,25 @@ public void Example_ConformingDelaunay() [Fact] public void Example_RemoveDuplicatesAndRemapEdges() { - var vertices = new List> + var vertices = new List { - new(0, 0), new(4, 0), new(4, 4), new(0, 4), + new(0, 0), new(4_000_000, 0), new(4_000_000, 4_000_000), new(0, 4_000_000), new(0, 0), // duplicate of vertex 0 }; var edges = new List { - new(0, 4), // references duplicate; will be remapped to (0, 0) - new(1, 2), + new(0, 4), new(1, 2), }; CdtUtils.RemoveDuplicatesAndRemapEdges(vertices, edges); - // Duplicate removed → 4 unique vertices Assert.Equal(4, vertices.Count); - // Edge (0,4) remapped: both map to index 0 → self-edge (0,0) Assert.Equal(new Edge(0, 0), edges[0]); - // Edge (1,2) unchanged Assert.Equal(new Edge(1, 2), edges[1]); - var cdt = new Triangulation(); + var cdt = new Triangulation(); cdt.InsertVertices(vertices); - cdt.InsertEdges(edges.Where(e => e.V1 != e.V2).ToList()); // skip degenerate self-edge + cdt.InsertEdges(edges.Where(e => e.V1 != e.V2).ToList()); cdt.EraseSuperTriangle(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); @@ -156,14 +154,11 @@ public void Example_RemoveDuplicatesAndRemapEdges() [Fact] public void Example_ExtractEdgesFromTriangles() { - var cdt = new Triangulation(); - cdt.InsertVertices([new(0, 0), new(2, 0), new(1, 2)]); + var cdt = new Triangulation(); + cdt.InsertVertices([new(0, 0), new(2_000_000, 0), new(1_000_000, 2_000_000)]); cdt.EraseSuperTriangle(); - // Extract all unique edges from every triangle - HashSet allEdges = CdtUtils.ExtractEdgesFromTriangles(cdt.Triangles.Span); - - // A single triangle has exactly 3 edges + var allEdges = CdtUtils.ExtractEdgesFromTriangles(cdt.Triangles.Span); Assert.Equal(3, allEdges.Count); } @@ -174,29 +169,25 @@ public void Example_ExtractEdgesFromTriangles() [Fact] public void Example_ResolveIntersectingConstraints() { - // Two edges that cross each other: (0,2) and (1,3) on a unit square - var vertices = new List> + var vertices = new List { - new(0, 0), new(1, 0), new(1, 1), new(0, 1), + new(0, 0), new(1_000_000, 0), new(1_000_000, 1_000_000), new(0, 1_000_000), }; var edges = new List { - new(0, 2), // diagonal - new(1, 3), // other diagonal — intersects (0,2) + new(0, 2), new(1, 3), }; - // TryResolve splits intersecting edges by inserting the intersection point - var cdt = new Triangulation( + var cdt = new Triangulation( VertexInsertionOrder.Auto, IntersectingConstraintEdges.TryResolve, - 0.0); + 0L); cdt.InsertVertices(vertices); cdt.InsertEdges(edges); cdt.EraseSuperTriangle(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); - // An extra vertex is added at the intersection Assert.True(cdt.Vertices.Length > 4); } } diff --git a/test/CDT.Tests/TriangulationTests.cs b/test/CDT.Tests/TriangulationTests.cs index d3a6a41..c50fcfe 100644 --- a/test/CDT.Tests/TriangulationTests.cs +++ b/test/CDT.Tests/TriangulationTests.cs @@ -4,20 +4,15 @@ namespace CDT.Tests; -/// Basic triangulation tests (float and double). -public abstract class TriangulationTestsBase - where T : unmanaged, - System.Numerics.IFloatingPoint, - System.Numerics.IMinMaxValue, - System.Numerics.IRootFunctions -{ - protected static T F(double v) => T.CreateChecked(v); - protected static V2d Pt(double x, double y) => new(F(x), F(y)); +// --------------------------------------------------------------------------- +// Concrete integer triangulation tests (no generics, V2i coordinates) +// --------------------------------------------------------------------------- - protected static Triangulation CreateCdt( - VertexInsertionOrder order = VertexInsertionOrder.Auto) - => new(order); +/// Basic triangulation tests using the integer directly. +public sealed class TriangulationTests_Int +{ + private static V2i Pt(long x, long y) => new(x, y); // ------------------------------------------------------------------------- // Basic insertion @@ -26,22 +21,20 @@ protected static Triangulation CreateCdt( [Fact] public void InsertFourPoints_TopologicallyValid() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 1), Pt(3, 1), Pt(3, 0)]); + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 1000), Pt(3000, 1000), Pt(3000, 0)]); Assert.True(TopologyVerifier.VerifyTopology(cdt)); - // 4 user vertices + 3 super-triangle vertices Assert.Equal(7, cdt.Vertices.Length); Assert.Empty(cdt.FixedEdges); - // 4 vertices inside a super-triangle → 9 triangles Assert.Equal(9, cdt.Triangles.Length); } [Fact] public void EraseSuperTriangle_LeavesConvexHull() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 1), Pt(3, 1), Pt(3, 0)]); + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 1000), Pt(3000, 1000), Pt(3000, 0)]); cdt.EraseSuperTriangle(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); @@ -52,8 +45,8 @@ public void EraseSuperTriangle_LeavesConvexHull() [Fact] public void AddConstraintEdge_PresentAfterErase() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 1), Pt(3, 1), Pt(3, 0)]); + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 1000), Pt(3000, 1000), Pt(3000, 0)]); var constraint = new Edge(0, 2); cdt.InsertEdges([constraint]); @@ -76,8 +69,8 @@ public void AddConstraintEdge_PresentAfterErase() [Fact] public void DuplicateVertex_ThrowsDuplicateVertexException() { - var cdt = CreateCdt(); - var pts = new[] { Pt(0, 0), Pt(1, 0), Pt(0, 0) }; // pt[2] == pt[0] + var cdt = new Triangulation(); + var pts = new[] { Pt(0, 0), Pt(1000, 0), Pt(0, 0) }; // pt[2] == pt[0] Assert.Throws(() => cdt.InsertVertices(pts)); } @@ -88,12 +81,12 @@ public void DuplicateVertex_ThrowsDuplicateVertexException() [Fact] public void ExtractEdges_ReturnsAllEdges() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 0), Pt(0.5, 1)]); + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 0), Pt(500, 1000)]); cdt.EraseSuperTriangle(); var edges = CdtUtils.ExtractEdgesFromTriangles(cdt.Triangles.Span); - Assert.Equal(3, edges.Count); // one triangle → 3 edges + Assert.Equal(3, edges.Count); } // ------------------------------------------------------------------------- @@ -103,9 +96,9 @@ public void ExtractEdges_ReturnsAllEdges() [Fact] public void Square_WithDiagonalConstraint() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 0), Pt(1, 1), Pt(0, 1)]); - cdt.InsertEdges([new Edge(0, 2)]); // diagonal 0→2 + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 0), Pt(1000, 1000), Pt(0, 1000)]); + cdt.InsertEdges([new Edge(0, 2)]); cdt.EraseSuperTriangle(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); @@ -120,18 +113,18 @@ public void Square_WithDiagonalConstraint() [Fact] public void InsertionOrder_AsProvided_SameResult() { - var pts = new[] { Pt(0, 0), Pt(1, 0), Pt(1, 1), Pt(0, 1) }; + var pts = new[] { Pt(0, 0), Pt(1000, 0), Pt(1000, 1000), Pt(0, 1000) }; - var cdtAuto = new Triangulation(VertexInsertionOrder.Auto); + var cdtAuto = new Triangulation(VertexInsertionOrder.Auto); cdtAuto.InsertVertices(pts); cdtAuto.EraseSuperTriangle(); - var cdtProvided = new Triangulation(VertexInsertionOrder.AsProvided); + var cdtProvided = new Triangulation(VertexInsertionOrder.AsProvided); cdtProvided.InsertVertices(pts); cdtProvided.EraseSuperTriangle(); Assert.Equal(cdtAuto.Triangles.Length, cdtProvided.Triangles.Length); - Assert.Equal(cdtAuto.Vertices.Length, cdtProvided.Vertices.Length); + Assert.Equal(cdtAuto.Vertices.Length, cdtProvided.Vertices.Length); } // ------------------------------------------------------------------------- @@ -141,34 +134,30 @@ public void InsertionOrder_AsProvided_SameResult() [Fact] public void FindDuplicates_DetectsExactMatches() { - var pts = new List> + var pts = new List { - Pt(0, 0), Pt(1, 0), Pt(0, 0), Pt(2, 0), + Pt(0, 0), Pt(1000, 0), Pt(0, 0), Pt(2000, 0), }; var info = CdtUtils.FindDuplicates(pts); Assert.Single(info.Duplicates); Assert.Equal(2, info.Duplicates[0]); - // mapping[2] should equal mapping[0] = 0 Assert.Equal(info.Mapping[0], info.Mapping[2]); } [Fact] public void RemoveDuplicatesAndRemapEdges_ProducesConsistentResult() { - var verts = new List> + var verts = new List { - Pt(0, 0), Pt(1, 0), Pt(0, 0), // index 2 is dup of 0 - Pt(0, 1), + Pt(0, 0), Pt(1000, 0), Pt(0, 0), // index 2 is dup of 0 + Pt(0, 1000), }; var edges = new List { new(0, 2), new(1, 3) }; CdtUtils.RemoveDuplicatesAndRemapEdges(verts, edges); - // After removing dup at index 2, vertices are: (0,0),(1,0),(0,1) → 3 Assert.Equal(3, verts.Count); - // Edge (0,2) should be remapped to (0,0) = same vertex → still (0,0) Assert.Equal(new Edge(0, 0), edges[0]); - // Edge (1,3) → (1,2) after shifting Assert.Equal(new Edge(1, 2), edges[1]); } @@ -179,13 +168,12 @@ public void RemoveDuplicatesAndRemapEdges_ProducesConsistentResult() [Fact] public void EraseOuterTriangles_RemovesOutside() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 0), Pt(1, 1), Pt(0, 1)]); + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 0), Pt(1000, 1000), Pt(0, 1000)]); cdt.InsertEdges([new Edge(0, 1), new Edge(1, 2), new Edge(2, 3), new Edge(3, 0)]); cdt.EraseOuterTriangles(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); - // Square → 2 triangles Assert.Equal(2, cdt.Triangles.Length); } @@ -196,8 +184,8 @@ public void EraseOuterTriangles_RemovesOutside() [Fact] public void ThreePoints_SingleTriangle() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(2, 0), Pt(1, 2)]); + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(2000, 0), Pt(1000, 2000)]); cdt.EraseSuperTriangle(); Assert.True(TopologyVerifier.VerifyTopology(cdt)); @@ -205,102 +193,56 @@ public void ThreePoints_SingleTriangle() Assert.Equal(1, cdt.Triangles.Length); } - // ------------------------------------------------------------------------- - // Collinear points - // ------------------------------------------------------------------------- - - [Fact] - public void FivePoints_ValidTopology() - { - var cdt = CreateCdt(); - cdt.InsertVertices([ - Pt(0, 0), Pt(2, 0), Pt(4, 0), - Pt(2, 2), Pt(0, 2), - ]); - cdt.EraseSuperTriangle(); - - Assert.True(TopologyVerifier.VerifyTopology(cdt)); - Assert.Equal(5, cdt.Vertices.Length); - } - // ------------------------------------------------------------------------- // IsFinalized guard checks // ------------------------------------------------------------------------- [Fact] - public void InsertVertices_AfterFinalized_ThrowsTriangulationFinalizedException() - { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 0), Pt(0.5, 1)]); - cdt.EraseSuperTriangle(); - - Assert.True(cdt.IsFinalized); - Assert.Throws(() => - cdt.InsertVertices([Pt(2, 0)])); - } - - [Fact] - public void InsertEdges_AfterFinalized_ThrowsTriangulationFinalizedException() + public void InsertVertices_AfterFinalized_Throws() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 0), Pt(1, 1), Pt(0, 1)]); + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 0), Pt(500, 1000)]); cdt.EraseSuperTriangle(); Assert.True(cdt.IsFinalized); - Assert.Throws(() => - cdt.InsertEdges([new Edge(0, 2)])); + Assert.Throws(() => cdt.InsertVertices([Pt(2000, 0)])); } [Fact] - public void ConformToEdges_AfterFinalized_ThrowsTriangulationFinalizedException() + public void InsertEdges_AfterFinalized_Throws() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 0), Pt(1, 1), Pt(0, 1)]); + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 0), Pt(1000, 1000), Pt(0, 1000)]); cdt.EraseSuperTriangle(); Assert.True(cdt.IsFinalized); - Assert.Throws(() => - cdt.ConformToEdges([new Edge(0, 2)])); + Assert.Throws(() => cdt.InsertEdges([new Edge(0, 2)])); } [Fact] - public void EraseSuperTriangle_AfterFinalized_ThrowsTriangulationFinalizedException() + public void ConformToEdges_AfterFinalized_Throws() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 0), Pt(0.5, 1)]); + var cdt = new Triangulation(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 0), Pt(1000, 1000), Pt(0, 1000)]); cdt.EraseSuperTriangle(); Assert.True(cdt.IsFinalized); - Assert.Throws(() => cdt.EraseSuperTriangle()); + Assert.Throws(() => cdt.ConformToEdges([new Edge(0, 2)])); } [Fact] - public void EraseOuterTriangles_AfterFinalized_ThrowsTriangulationFinalizedException() + public void ResolveIntersectingConstraints_InsertsIntersectionVertex() { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 0), Pt(1, 1), Pt(0, 1)]); - cdt.InsertEdges([new Edge(0, 1), new Edge(1, 2), new Edge(2, 3), new Edge(3, 0)]); - cdt.EraseOuterTriangles(); - - Assert.True(cdt.IsFinalized); - Assert.Throws(() => cdt.EraseOuterTriangles()); - } + var cdt = new Triangulation( + VertexInsertionOrder.Auto, + IntersectingConstraintEdges.TryResolve, + 0L); - [Fact] - public void EraseOuterTrianglesAndHoles_AfterFinalized_ThrowsTriangulationFinalizedException() - { - var cdt = CreateCdt(); - cdt.InsertVertices([Pt(0, 0), Pt(1, 0), Pt(1, 1), Pt(0, 1)]); - cdt.InsertEdges([new Edge(0, 1), new Edge(1, 2), new Edge(2, 3), new Edge(3, 0)]); - cdt.EraseOuterTrianglesAndHoles(); + cdt.InsertVertices([Pt(0, 0), Pt(1000, 0), Pt(1000, 1000), Pt(0, 1000)]); + cdt.InsertEdges([new Edge(0, 2), new Edge(1, 3)]); // crossing diagonals + cdt.EraseSuperTriangle(); - Assert.True(cdt.IsFinalized); - Assert.Throws(() => cdt.EraseOuterTrianglesAndHoles()); + Assert.True(TopologyVerifier.VerifyTopology(cdt)); + Assert.True(cdt.Vertices.Length > 4); // intersection vertex inserted } } - -/// Triangulation tests for . -public sealed class TriangulationTests_Double : TriangulationTestsBase { } - -/// Triangulation tests for . -public sealed class TriangulationTests_Float : TriangulationTestsBase { } diff --git a/test/CDT.Tests/V2iTests.cs b/test/CDT.Tests/V2iTests.cs new file mode 100644 index 0000000..4a6dcfa --- /dev/null +++ b/test/CDT.Tests/V2iTests.cs @@ -0,0 +1,236 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +namespace CDT.Tests; + +/// Tests for and . +public sealed class V2iTests +{ + // ------------------------------------------------------------------------- + // V2i construction and equality + // ------------------------------------------------------------------------- + + [Fact] + public void V2i_CoordinatesAreStored() + { + var p = new V2i(3L, -7L); + Assert.Equal(3L, p.X); + Assert.Equal(-7L, p.Y); + } + + [Fact] + public void V2i_Zero_IsBothZero() + { + Assert.Equal(0L, V2i.Zero.X); + Assert.Equal(0L, V2i.Zero.Y); + } + + [Fact] + public void V2i_Equality_SameCoords_AreEqual() + { + var a = new V2i(1L, 2L); + var b = new V2i(1L, 2L); + Assert.Equal(a, b); + Assert.True(a == b); + Assert.False(a != b); + } + + [Fact] + public void V2i_Equality_DifferentX_NotEqual() + { + Assert.NotEqual(new V2i(1L, 0L), new V2i(2L, 0L)); + } + + [Fact] + public void V2i_Equality_DifferentY_NotEqual() + { + Assert.NotEqual(new V2i(0L, 1L), new V2i(0L, 2L)); + } + + [Fact] + public void V2i_HashCode_EqualPointsHaveSameHash() + { + var a = new V2i(42L, -99L); + var b = new V2i(42L, -99L); + Assert.Equal(a.GetHashCode(), b.GetHashCode()); + } + + [Fact] + public void V2i_UsableAsHashSetKey() + { + var set = new HashSet { new V2i(1L, 2L), new V2i(3L, 4L) }; + Assert.Contains(new V2i(1L, 2L), set); + Assert.DoesNotContain(new V2i(5L, 6L), set); + } + + [Fact] + public void V2i_EqualsObject_NullReturnsFalse() + { + var p = new V2i(1L, 2L); + Assert.False(p.Equals(null)); + } + + [Fact] + public void V2i_ExtremeValues_Stored() + { + var p = new V2i(long.MaxValue, long.MinValue); + Assert.Equal(long.MaxValue, p.X); + Assert.Equal(long.MinValue, p.Y); + } + + [Fact] + public void V2i_ToString_ContainsCoordinates() + { + var p = new V2i(10L, -20L); + var s = p.ToString(); + Assert.Contains("10", s); + Assert.Contains("-20", s); + } + + // ------------------------------------------------------------------------- + // Box2i construction + // ------------------------------------------------------------------------- + + [Fact] + public void Box2i_DefaultConstructor_SentinelValues() + { + var box = new Box2i(); + Assert.Equal(long.MaxValue, box.Min.X); + Assert.Equal(long.MaxValue, box.Min.Y); + Assert.Equal(long.MinValue, box.Max.X); + Assert.Equal(long.MinValue, box.Max.Y); + } + + // ------------------------------------------------------------------------- + // Box2i.Envelop (scalar) + // ------------------------------------------------------------------------- + + [Fact] + public void Box2i_Envelop_FirstPoint_SetsMinAndMax() + { + var box = new Box2i(); + box.Envelop(5L, -3L); + Assert.Equal(new V2i(5L, -3L), box.Min); + Assert.Equal(new V2i(5L, -3L), box.Max); + } + + [Fact] + public void Box2i_Envelop_ExpandsMinCorrectly() + { + var box = new Box2i(); + box.Envelop(10L, 10L); + box.Envelop(2L, 15L); // X shrinks Min, Y expands Max + Assert.Equal(2L, box.Min.X); + Assert.Equal(10L, box.Min.Y); + Assert.Equal(10L, box.Max.X); + Assert.Equal(15L, box.Max.Y); + } + + [Fact] + public void Box2i_Envelop_ExpandsMaxCorrectly() + { + var box = new Box2i(); + box.Envelop(0L, 0L); + box.Envelop(100L, 200L); + Assert.Equal(0L, box.Min.X); + Assert.Equal(0L, box.Min.Y); + Assert.Equal(100L, box.Max.X); + Assert.Equal(200L, box.Max.Y); + } + + [Fact] + public void Box2i_Envelop_SamePointTwice_Unchanged() + { + var box = new Box2i(); + box.Envelop(7L, 7L); + box.Envelop(7L, 7L); + Assert.Equal(new V2i(7L, 7L), box.Min); + Assert.Equal(new V2i(7L, 7L), box.Max); + } + + // ------------------------------------------------------------------------- + // Box2i.Envelop (V2i) + // ------------------------------------------------------------------------- + + [Fact] + public void Box2i_EnvelopV2i_Works() + { + var box = new Box2i(); + box.Envelop(new V2i(-1L, 3L)); + box.Envelop(new V2i(5L, -2L)); + Assert.Equal(-1L, box.Min.X); + Assert.Equal(-2L, box.Min.Y); + Assert.Equal(5L, box.Max.X); + Assert.Equal(3L, box.Max.Y); + } + + // ------------------------------------------------------------------------- + // Box2i.Envelop (list) + // ------------------------------------------------------------------------- + + [Fact] + public void Box2i_EnvelopList_ComputesCorrectBounds() + { + var points = new List + { + new V2i(-10L, 5L), + new V2i(0L, 0L), + new V2i(20L, -3L), + new V2i(7L, 100L), + }; + var box = new Box2i(); + box.Envelop(points); + Assert.Equal(-10L, box.Min.X); + Assert.Equal(-3L, box.Min.Y); + Assert.Equal(20L, box.Max.X); + Assert.Equal(100L, box.Max.Y); + } + + [Fact] + public void Box2i_EnvelopReadOnlySpan_ComputesCorrectBounds() + { + ReadOnlySpan pts = [new V2i(3L, 4L), new V2i(-1L, 10L), new V2i(5L, -5L)]; + var box = new Box2i(); + box.Envelop(pts); + Assert.Equal(-1L, box.Min.X); + Assert.Equal(-5L, box.Min.Y); + Assert.Equal(5L, box.Max.X); + Assert.Equal(10L, box.Max.Y); + } + + // ------------------------------------------------------------------------- + // Box2i.Of + // ------------------------------------------------------------------------- + + [Fact] + public void Box2i_Of_SinglePoint() + { + var box = Box2i.Of([new V2i(3L, 7L)]); + Assert.Equal(new V2i(3L, 7L), box.Min); + Assert.Equal(new V2i(3L, 7L), box.Max); + } + + [Fact] + public void Box2i_Of_MultiplePoints_MatchesManualEnvelop() + { + var points = new List + { + new(0L, 0L), new(-5L, 10L), new(3L, -8L), new(1L, 1L) + }; + var box = Box2i.Of(points); + Assert.Equal(-5L, box.Min.X); + Assert.Equal(-8L, box.Min.Y); + Assert.Equal(3L, box.Max.X); + Assert.Equal(10L, box.Max.Y); + } + + [Fact] + public void Box2i_ToString_ContainsCoordinates() + { + var box = Box2i.Of([new V2i(1L, 2L), new V2i(3L, 4L)]); + var s = box.ToString(); + Assert.Contains("1", s); + Assert.Contains("4", s); + } +} diff --git a/test/CDT.Tests/expected/HangingIntersection__f64_auto_resolve_all.txt b/test/CDT.Tests/expected/HangingIntersection__f64_auto_resolve_all.txt deleted file mode 100644 index 9a2c4cc..0000000 --- a/test/CDT.Tests/expected/HangingIntersection__f64_auto_resolve_all.txt +++ /dev/null @@ -1,40 +0,0 @@ -17 -0 1 6 4294967295 5 3 -0 3 2 2 7 4294967295 -0 4 3 3 9 1 -0 6 4 0 12 2 -1 2 8 4294967295 8 6 -1 7 6 6 14 0 -1 8 7 4 15 5 -2 3 9 1 10 8 -2 9 8 7 16 4 -3 4 10 2 12 11 -3 5 9 11 13 7 -3 10 5 9 13 10 -4 6 10 3 14 9 -5 10 9 11 16 10 -6 7 10 5 15 12 -7 8 10 6 16 14 -8 9 10 8 13 15 - -4 -3 10 -6 10 -7 10 -8 10 - -0 - -4 -3 10 - 1 - 3 7 -6 10 - 1 - 6 8 -7 10 - 1 - 3 7 -8 10 - 1 - 6 8 diff --git a/test/CDT.Tests/expected/dont_flip_constraint_when_resolving_intersection__f64_as-provided_resolve_all.txt b/test/CDT.Tests/expected/dont_flip_constraint_when_resolving_intersection__f64_as-provided_resolve_all.txt deleted file mode 100644 index 0c0a8cc..0000000 --- a/test/CDT.Tests/expected/dont_flip_constraint_when_resolving_intersection__f64_as-provided_resolve_all.txt +++ /dev/null @@ -1,39 +0,0 @@ -15 -0 1 7 4294967295 7 3 -0 3 8 2 9 4 -0 6 3 3 10 1 -0 7 6 0 14 2 -0 8 2 1 8 4294967295 -1 2 4 4294967295 8 6 -1 4 5 5 12 7 -1 5 7 6 13 0 -2 8 4 4 9 5 -3 4 8 11 8 1 -3 6 9 2 14 11 -3 9 4 10 12 9 -4 9 5 11 13 6 -5 9 7 12 14 7 -6 7 9 3 13 10 - -5 -3 4 -3 9 -4 9 -5 9 -6 9 - -0 - -4 -3 9 - 1 - 3 5 -4 9 - 1 - 4 6 -5 9 - 1 - 3 5 -6 9 - 1 - 4 6 diff --git a/test/CDT.Tests/expected/guitar no box__conforming_f32_auto_ignore_auto.txt b/test/CDT.Tests/expected/guitar no box__conforming_f32_auto_ignore_auto.txt deleted file mode 100644 index 8250acb..0000000 --- a/test/CDT.Tests/expected/guitar no box__conforming_f32_auto_ignore_auto.txt +++ /dev/null @@ -1,331 +0,0 @@ -152 -0 1 116 4294967295 2 4294967295 -1 2 115 4294967295 3 2 -1 115 116 1 4294967295 0 -2 3 115 4294967295 5 1 -3 4 114 4294967295 6 5 -3 114 115 4 4294967295 3 -4 5 114 4294967295 8 4 -5 6 113 4294967295 9 8 -5 113 114 7 4294967295 6 -6 7 113 4294967295 11 7 -7 8 112 4294967295 13 11 -7 112 113 10 4294967295 9 -8 9 143 4294967295 14 13 -8 143 112 12 67 10 -9 10 143 4294967295 16 12 -10 11 137 4294967295 18 16 -10 137 143 15 4294967295 14 -11 12 132 4294967295 20 18 -11 132 137 17 149 15 -12 13 133 4294967295 23 20 -12 133 132 19 4294967295 17 -13 14 15 4294967295 4294967295 22 -13 15 136 21 25 24 -13 135 133 24 150 19 -13 136 135 22 4294967295 23 -15 16 136 4294967295 26 22 -16 17 136 4294967295 28 25 -17 18 119 4294967295 29 28 -17 119 136 27 138 26 -18 19 119 4294967295 31 27 -19 20 118 4294967295 33 31 -19 118 119 30 4294967295 29 -20 21 117 4294967295 35 33 -20 117 118 32 4294967295 30 -21 22 124 4294967295 37 35 -21 124 117 34 4294967295 32 -22 23 123 4294967295 38 37 -22 123 124 36 4294967295 34 -23 24 123 4294967295 39 36 -24 25 123 4294967295 40 38 -25 26 123 4294967295 41 39 -26 27 123 4294967295 43 40 -27 28 125 4294967295 44 43 -27 125 123 42 142 41 -28 29 125 4294967295 46 42 -29 30 126 4294967295 48 46 -29 126 125 45 4294967295 44 -30 31 131 4294967295 52 50 -30 128 126 49 144 45 -30 130 128 50 145 48 -30 131 130 47 4294967295 49 -31 32 140 4294967295 54 52 -31 140 131 51 148 47 -32 33 141 4294967295 57 54 -32 141 140 53 4294967295 51 -33 34 41 4294967295 59 56 -33 41 42 55 4294967295 57 -33 42 141 56 65 53 -34 35 40 4294967295 60 59 -34 40 41 58 4294967295 55 -35 36 40 4294967295 62 58 -36 37 39 4294967295 63 62 -36 39 40 61 4294967295 60 -37 38 39 4294967295 4294967295 61 -42 43 142 4294967295 68 65 -42 142 141 64 4294967295 57 -43 44 112 4294967295 70 67 -43 112 143 66 13 68 -43 143 142 67 4294967295 64 -44 45 111 4294967295 72 70 -44 111 112 69 4294967295 66 -45 109 110 73 4294967295 72 -45 110 111 71 4294967295 69 -45 144 109 4294967295 137 71 -46 47 108 4294967295 77 75 -46 108 145 74 4294967295 76 -46 145 144 75 137 4294967295 -47 48 108 4294967295 83 74 -48 49 50 4294967295 4294967295 79 -48 50 89 78 88 80 -48 89 90 79 4294967295 81 -48 90 97 80 122 82 -48 97 98 81 4294967295 83 -48 98 108 82 130 77 -50 51 73 4294967295 92 85 -50 73 74 84 4294967295 86 -50 74 81 85 110 87 -50 81 82 86 4294967295 88 -50 82 89 87 116 79 -51 52 58 4294967295 93 90 -51 58 65 89 98 91 -51 65 66 90 4294967295 92 -51 66 73 91 105 84 -52 53 58 4294967295 94 89 -53 54 58 4294967295 96 93 -54 55 57 4294967295 97 96 -54 57 58 95 4294967295 94 -55 56 57 4294967295 4294967295 95 -58 59 65 4294967295 101 90 -59 60 63 4294967295 103 100 -59 63 64 99 4294967295 101 -59 64 65 100 4294967295 98 -60 61 62 4294967295 4294967295 103 -60 62 63 102 4294967295 99 -66 67 72 4294967295 106 105 -66 72 73 104 4294967295 92 -67 68 72 4294967295 108 104 -68 69 71 4294967295 109 108 -68 71 72 107 4294967295 106 -69 70 71 4294967295 4294967295 107 -74 75 81 4294967295 112 86 -75 76 80 4294967295 114 112 -75 80 81 111 4294967295 110 -76 77 79 4294967295 115 114 -76 79 80 113 4294967295 111 -77 78 79 4294967295 4294967295 113 -82 83 89 4294967295 119 88 -83 84 87 4294967295 120 118 -83 87 88 117 4294967295 119 -83 88 89 118 4294967295 116 -84 85 87 4294967295 121 117 -85 86 87 4294967295 4294967295 120 -90 91 97 4294967295 125 81 -91 92 95 4294967295 127 124 -91 95 96 123 4294967295 125 -91 96 97 124 4294967295 122 -92 93 94 4294967295 4294967295 127 -92 94 95 126 4294967295 123 -98 99 104 4294967295 131 129 -98 104 105 128 4294967295 130 -98 105 108 129 135 83 -99 100 104 4294967295 134 128 -100 101 102 4294967295 4294967295 133 -100 102 103 132 4294967295 134 -100 103 104 133 4294967295 131 -105 106 108 4294967295 136 130 -106 107 108 4294967295 4294967295 135 -109 144 145 73 76 4294967295 -119 120 136 4294967295 141 28 -120 121 122 4294967295 4294967295 140 -120 122 147 139 143 141 -120 147 136 140 4294967295 138 -122 123 125 4294967295 43 143 -122 125 147 142 4294967295 140 -126 128 127 48 4294967295 4294967295 -128 130 129 49 4294967295 4294967295 -131 138 146 147 151 4294967295 -131 139 138 148 4294967295 146 -131 140 139 52 4294967295 147 -132 146 137 4294967295 151 18 -133 135 134 23 4294967295 4294967295 -137 146 138 149 146 4294967295 - -148 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 144 -46 47 -46 144 -47 48 -48 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 145 -109 110 -109 145 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 147 -126 127 -127 128 -128 129 -129 130 -130 131 -131 146 -132 133 -132 146 -133 134 -134 135 -135 136 -136 147 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -8 -45 144 - 1 - 45 46 -46 144 - 1 - 45 46 -108 145 - 1 - 108 109 -109 145 - 1 - 108 109 -125 147 - 1 - 125 136 -131 146 - 1 - 131 132 -132 146 - 1 - 131 132 -136 147 - 1 - 125 136 diff --git a/test/CDT.Tests/expected/guitar no box__conforming_f64_auto_ignore_auto.txt b/test/CDT.Tests/expected/guitar no box__conforming_f64_auto_ignore_auto.txt index 7888a1f..799d079 100644 --- a/test/CDT.Tests/expected/guitar no box__conforming_f64_auto_ignore_auto.txt +++ b/test/CDT.Tests/expected/guitar no box__conforming_f64_auto_ignore_auto.txt @@ -91,36 +91,36 @@ 51 52 58 4294967295 93 90 51 58 65 89 99 91 51 65 66 90 4294967295 92 -51 66 73 91 104 84 +51 66 73 91 105 84 52 53 58 4294967295 94 89 53 54 58 4294967295 96 93 54 55 57 4294967295 97 96 54 57 58 95 4294967295 94 55 56 57 4294967295 4294967295 95 -58 59 64 4294967295 100 99 +58 59 64 4294967295 101 99 58 64 65 98 4294967295 90 -59 60 64 4294967295 102 98 -60 61 63 4294967295 103 102 -60 63 64 101 4294967295 100 -61 62 63 4294967295 4294967295 101 -66 67 73 4294967295 106 92 -67 68 72 4294967295 108 106 -67 72 73 105 4294967295 104 -68 69 71 4294967295 109 108 -68 71 72 107 4294967295 105 -69 70 71 4294967295 4294967295 107 +59 60 63 4294967295 103 101 +59 63 64 100 4294967295 98 +60 61 62 4294967295 4294967295 103 +60 62 63 102 4294967295 100 +66 67 72 4294967295 107 105 +66 72 73 104 4294967295 92 +67 68 71 4294967295 108 107 +67 71 72 106 4294967295 104 +68 69 71 4294967295 109 106 +69 70 71 4294967295 4294967295 108 74 75 80 4294967295 112 111 74 80 81 110 4294967295 86 -75 76 80 4294967295 114 110 -76 77 79 4294967295 115 114 -76 79 80 113 4294967295 112 -77 78 79 4294967295 4294967295 113 +75 76 80 4294967295 115 110 +76 77 78 4294967295 4294967295 114 +76 78 79 113 4294967295 115 +76 79 80 114 4294967295 112 82 83 88 4294967295 118 117 82 88 89 116 4294967295 88 -83 84 88 4294967295 120 116 -84 85 87 4294967295 121 120 -84 87 88 119 4294967295 118 -85 86 87 4294967295 4294967295 119 +83 84 88 4294967295 121 116 +84 85 86 4294967295 4294967295 120 +84 86 87 119 4294967295 121 +84 87 88 120 4294967295 118 90 91 96 4294967295 124 123 90 96 97 122 4294967295 81 91 92 96 4294967295 126 122 diff --git a/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_all.txt b/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_all.txt deleted file mode 100644 index 35bf9ae..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_all.txt +++ /dev/null @@ -1,440 +0,0 @@ -289 -0 1 57 4294967295 13 11 -0 24 2 2 26 4294967295 -0 25 24 3 81 1 -0 26 25 4 83 2 -0 27 26 5 85 3 -0 28 27 6 86 4 -0 29 28 7 87 5 -0 30 29 8 88 6 -0 31 30 9 89 7 -0 40 31 10 92 8 -0 56 40 11 120 9 -0 57 56 0 163 10 -1 2 64 4294967295 27 16 -1 58 57 14 164 0 -1 59 58 15 166 13 -1 60 59 16 166 14 -1 64 60 12 168 15 -2 4 105 18 31 29 -2 5 4 19 37 17 -2 17 5 20 40 18 -2 18 17 21 68 19 -2 19 18 22 72 20 -2 20 19 23 73 21 -2 21 20 24 74 22 -2 22 21 25 76 23 -2 23 22 26 77 24 -2 24 23 1 79 25 -2 73 64 28 176 12 -2 96 73 29 192 27 -2 105 96 17 230 28 -3 4 119 31 38 36 -3 105 4 32 17 30 -3 109 105 33 245 31 -3 110 109 34 249 32 -3 111 110 35 249 33 -3 112 111 36 143 34 -3 119 112 30 252 35 -4 5 118 18 39 38 -4 118 119 37 252 30 -5 6 118 40 44 37 -5 17 6 19 43 39 -6 7 117 42 45 44 -6 16 7 43 46 41 -6 17 16 40 68 42 -6 117 118 41 251 39 -7 8 117 46 50 41 -7 16 8 42 49 45 -8 9 116 48 51 50 -8 15 9 49 53 47 -8 16 15 46 66 48 -8 116 117 47 254 45 -9 10 116 52 55 47 -9 11 10 53 54 51 -9 15 11 48 59 52 -10 11 115 52 60 55 -10 115 116 54 255 51 -11 12 146 57 61 60 -11 13 12 58 61 56 -11 14 13 59 62 57 -11 15 14 53 64 58 -11 146 115 56 133 54 -12 13 146 57 63 56 -13 14 140 58 65 63 -13 140 146 62 285 61 -14 15 135 59 67 65 -14 135 140 64 282 62 -15 16 136 49 70 67 -15 136 135 66 277 64 -16 17 18 43 20 69 -16 18 139 68 72 71 -16 138 136 71 283 66 -16 139 138 69 273 70 -18 19 139 21 73 69 -19 20 139 22 75 72 -20 21 122 23 76 75 -20 122 139 74 259 73 -21 22 122 24 78 74 -22 23 121 25 80 78 -22 121 122 77 258 76 -23 24 120 26 82 80 -23 120 121 79 256 77 -24 25 127 2 84 82 -24 127 120 81 257 79 -25 26 126 3 85 84 -25 126 127 83 265 81 -26 27 126 4 86 83 -27 28 126 5 87 85 -28 29 126 6 88 86 -29 30 126 7 90 87 -30 31 128 8 91 90 -30 128 126 89 266 88 -31 32 128 92 96 89 -31 40 32 9 95 91 -32 33 129 94 100 96 -32 39 33 95 99 93 -32 40 39 92 116 94 -32 129 128 93 267 91 -33 34 134 98 106 102 -33 38 34 99 105 97 -33 39 38 94 115 98 -33 131 129 101 269 93 -33 133 131 102 274 100 -33 134 133 97 275 101 -34 35 143 104 109 106 -34 37 35 105 108 103 -34 38 37 98 113 104 -34 143 134 103 281 97 -35 36 144 108 112 109 -35 37 36 104 110 107 -35 144 143 107 288 103 -36 37 44 108 114 111 -36 44 45 110 128 112 -36 45 144 111 131 107 -37 38 43 105 115 114 -37 43 44 113 126 110 -38 39 43 99 117 113 -39 40 42 95 118 117 -39 42 43 116 125 115 -40 41 42 119 121 116 -40 55 41 120 124 118 -40 56 55 10 162 119 -41 48 42 122 125 118 -41 49 48 123 137 121 -41 52 49 124 142 122 -41 55 52 119 151 123 -42 48 43 121 127 117 -43 47 44 127 128 114 -43 48 47 125 135 126 -44 47 45 126 130 111 -45 46 145 130 134 131 -45 47 46 128 132 129 -45 145 144 129 288 112 -46 47 115 130 136 133 -46 115 146 132 60 134 -46 146 145 133 285 129 -47 48 114 127 139 136 -47 114 115 135 255 132 -48 49 112 122 143 138 -48 112 113 137 250 139 -48 113 114 138 253 135 -49 50 111 141 144 143 -49 51 50 142 144 140 -49 52 51 123 145 141 -49 111 112 140 35 137 -50 51 111 141 150 140 -51 52 53 142 151 146 -51 53 92 145 157 147 -51 92 93 146 223 148 -51 93 100 147 224 149 -51 100 101 148 236 150 -51 101 111 149 240 144 -52 55 53 124 153 145 -53 54 76 153 161 154 -53 55 54 151 158 152 -53 76 77 152 197 155 -53 77 84 154 198 156 -53 84 85 155 210 157 -53 85 92 156 211 146 -54 55 61 153 162 159 -54 61 68 158 169 160 -54 68 69 159 183 161 -54 69 76 160 185 152 -55 56 61 120 163 158 -56 57 61 11 165 162 -57 58 60 13 166 165 -57 60 61 164 167 163 -58 59 60 14 15 164 -60 63 61 168 170 165 -60 64 63 16 174 167 -61 62 68 170 173 159 -61 63 62 167 171 169 -62 63 66 170 175 172 -62 66 67 171 179 173 -62 67 68 172 182 169 -63 64 65 168 176 175 -63 65 66 174 177 171 -64 73 65 27 178 174 -65 72 66 178 181 175 -65 73 72 176 189 177 -66 70 67 180 182 172 -66 71 70 181 186 179 -66 72 71 177 187 180 -67 70 68 179 183 173 -68 70 69 182 184 160 -69 70 75 183 186 185 -69 75 76 184 195 161 -70 71 75 180 188 184 -71 72 74 181 189 188 -71 74 75 187 193 186 -72 73 74 178 190 187 -73 80 74 191 194 189 -73 88 80 192 204 190 -73 96 88 28 217 191 -74 79 75 194 196 188 -74 80 79 190 201 193 -75 78 76 196 197 185 -75 79 78 193 199 195 -76 78 77 195 198 154 -77 78 84 197 200 155 -78 79 83 196 202 200 -78 83 84 199 208 198 -79 80 82 194 203 202 -79 82 83 201 207 199 -80 81 82 204 205 201 -80 88 81 191 206 203 -81 87 82 206 207 203 -81 88 87 204 215 205 -82 87 83 205 209 202 -83 86 84 209 210 200 -83 87 86 207 212 208 -84 86 85 208 211 156 -85 86 92 210 214 157 -86 87 90 209 215 213 -86 90 91 212 220 214 -86 91 92 213 221 211 -87 88 90 206 216 212 -88 89 90 217 218 215 -88 96 89 192 219 216 -89 95 90 219 220 216 -89 96 95 217 228 218 -90 95 91 218 222 213 -91 94 92 222 223 214 -91 95 94 220 225 221 -92 94 93 221 224 147 -93 94 100 223 227 148 -94 95 98 222 229 226 -94 98 99 225 233 227 -94 99 100 226 236 224 -95 96 97 219 230 229 -95 97 98 228 231 225 -96 105 97 29 232 228 -97 104 98 232 235 229 -97 105 104 230 242 231 -98 102 99 234 237 226 -98 103 102 235 241 233 -98 104 103 231 242 234 -99 101 100 237 149 227 -99 102 101 233 238 236 -101 102 107 237 241 239 -101 107 108 238 247 240 -101 108 111 239 248 150 -102 103 107 234 244 238 -103 104 105 235 232 243 -103 105 106 242 245 244 -103 106 107 243 246 241 -105 109 106 32 246 243 -106 109 107 245 247 244 -107 109 108 246 248 239 -108 109 111 247 249 240 -109 110 111 33 34 248 -112 117 113 251 254 138 -112 118 117 252 44 250 -112 119 118 36 38 251 -113 116 114 254 255 139 -113 117 116 250 50 253 -114 116 115 253 55 136 -120 124 121 257 258 80 -120 127 124 82 265 256 -121 124 122 256 260 78 -122 123 139 260 263 75 -122 124 123 258 261 259 -123 124 125 260 264 262 -123 125 128 261 266 263 -123 128 139 262 268 259 -124 126 125 265 266 261 -124 127 126 257 84 264 -125 126 128 264 90 262 -128 129 130 96 269 268 -128 130 139 267 273 263 -129 131 130 100 270 267 -130 131 132 269 274 271 -130 132 137 270 278 272 -130 137 138 271 283 273 -130 138 139 272 71 268 -131 133 132 101 275 270 -132 133 134 274 102 276 -132 134 135 275 279 277 -132 135 136 276 67 278 -132 136 137 277 283 271 -134 141 135 280 282 276 -134 142 141 281 286 279 -134 143 142 106 286 280 -135 141 140 279 284 65 -136 138 137 70 272 278 -140 141 145 282 287 285 -140 145 146 284 134 63 -141 142 143 280 281 287 -141 143 145 286 288 284 -143 144 145 109 131 287 - -144 -3 4 -3 119 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -116 117 -117 118 -118 119 -120 121 -120 127 -121 122 -122 123 -123 124 -124 125 -125 126 -126 127 -128 129 -128 139 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -136 137 -137 138 -138 139 -140 141 -140 146 -141 142 -142 143 -143 144 -144 145 -145 146 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_auto.txt b/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_auto.txt deleted file mode 100644 index bc5ce56..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_auto.txt +++ /dev/null @@ -1,299 +0,0 @@ -148 -0 1 116 4294967295 2 4294967295 -1 2 115 4294967295 3 2 -1 115 116 1 4294967295 0 -2 3 115 4294967295 5 1 -3 4 114 4294967295 6 5 -3 114 115 4 4294967295 3 -4 5 114 4294967295 8 4 -5 6 113 4294967295 9 8 -5 113 114 7 4294967295 6 -6 7 113 4294967295 11 7 -7 8 112 4294967295 13 11 -7 112 113 10 4294967295 9 -8 9 143 4294967295 14 13 -8 143 112 12 67 10 -9 10 143 4294967295 16 12 -10 11 137 4294967295 18 16 -10 137 143 15 4294967295 14 -11 12 132 4294967295 20 18 -11 132 137 17 146 15 -12 13 133 4294967295 23 20 -12 133 132 19 4294967295 17 -13 14 15 4294967295 4294967295 22 -13 15 136 21 25 24 -13 135 133 24 147 19 -13 136 135 22 4294967295 23 -15 16 136 4294967295 26 22 -16 17 136 4294967295 28 25 -17 18 119 4294967295 29 28 -17 119 136 27 136 26 -18 19 119 4294967295 31 27 -19 20 118 4294967295 33 31 -19 118 119 30 4294967295 29 -20 21 117 4294967295 35 33 -20 117 118 32 4294967295 30 -21 22 124 4294967295 37 35 -21 124 117 34 4294967295 32 -22 23 123 4294967295 38 37 -22 123 124 36 4294967295 34 -23 24 123 4294967295 39 36 -24 25 123 4294967295 40 38 -25 26 123 4294967295 41 39 -26 27 123 4294967295 43 40 -27 28 125 4294967295 44 43 -27 125 123 42 140 41 -28 29 125 4294967295 46 42 -29 30 126 4294967295 48 46 -29 126 125 45 4294967295 44 -30 31 131 4294967295 52 50 -30 128 126 49 141 45 -30 130 128 50 142 48 -30 131 130 47 4294967295 49 -31 32 140 4294967295 54 52 -31 140 131 51 145 47 -32 33 141 4294967295 57 54 -32 141 140 53 4294967295 51 -33 34 41 4294967295 59 56 -33 41 42 55 4294967295 57 -33 42 141 56 65 53 -34 35 40 4294967295 60 59 -34 40 41 58 4294967295 55 -35 36 40 4294967295 62 58 -36 37 39 4294967295 63 62 -36 39 40 61 4294967295 60 -37 38 39 4294967295 4294967295 61 -42 43 142 4294967295 68 65 -42 142 141 64 4294967295 57 -43 44 112 4294967295 70 67 -43 112 143 66 13 68 -43 143 142 67 4294967295 64 -44 45 111 4294967295 73 70 -44 111 112 69 4294967295 66 -45 46 109 4294967295 75 72 -45 109 110 71 4294967295 73 -45 110 111 72 4294967295 69 -46 47 108 4294967295 76 75 -46 108 109 74 4294967295 71 -47 48 108 4294967295 82 74 -48 49 50 4294967295 4294967295 78 -48 50 89 77 87 79 -48 89 90 78 4294967295 80 -48 90 97 79 121 81 -48 97 98 80 4294967295 82 -48 98 108 81 129 76 -50 51 73 4294967295 91 84 -50 73 74 83 4294967295 85 -50 74 81 84 109 86 -50 81 82 85 4294967295 87 -50 82 89 86 115 78 -51 52 58 4294967295 92 89 -51 58 65 88 97 90 -51 65 66 89 4294967295 91 -51 66 73 90 104 83 -52 53 58 4294967295 93 88 -53 54 58 4294967295 95 92 -54 55 57 4294967295 96 95 -54 57 58 94 4294967295 93 -55 56 57 4294967295 4294967295 94 -58 59 65 4294967295 100 89 -59 60 63 4294967295 102 99 -59 63 64 98 4294967295 100 -59 64 65 99 4294967295 97 -60 61 62 4294967295 4294967295 102 -60 62 63 101 4294967295 98 -66 67 72 4294967295 105 104 -66 72 73 103 4294967295 91 -67 68 72 4294967295 107 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 105 -69 70 71 4294967295 4294967295 106 -74 75 81 4294967295 111 85 -75 76 80 4294967295 113 111 -75 80 81 110 4294967295 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 110 -77 78 79 4294967295 4294967295 112 -82 83 89 4294967295 118 87 -83 84 87 4294967295 119 117 -83 87 88 116 4294967295 118 -83 88 89 117 4294967295 115 -84 85 87 4294967295 120 116 -85 86 87 4294967295 4294967295 119 -90 91 97 4294967295 124 80 -91 92 95 4294967295 126 123 -91 95 96 122 4294967295 124 -91 96 97 123 4294967295 121 -92 93 94 4294967295 4294967295 126 -92 94 95 125 4294967295 122 -98 99 104 4294967295 130 128 -98 104 105 127 4294967295 129 -98 105 108 128 134 82 -99 100 104 4294967295 133 127 -100 101 102 4294967295 4294967295 132 -100 102 103 131 4294967295 133 -100 103 104 132 4294967295 130 -105 106 108 4294967295 135 129 -106 107 108 4294967295 4294967295 134 -119 120 136 4294967295 139 28 -120 121 122 4294967295 4294967295 138 -120 122 125 137 140 139 -120 125 136 138 4294967295 136 -122 123 125 4294967295 43 138 -126 128 127 48 4294967295 4294967295 -128 130 129 49 4294967295 4294967295 -131 138 132 144 146 4294967295 -131 139 138 145 4294967295 143 -131 140 139 52 4294967295 144 -132 138 137 143 4294967295 18 -133 135 134 23 4294967295 4294967295 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_outer.txt b/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_outer.txt deleted file mode 100644 index b2bb878..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_outer.txt +++ /dev/null @@ -1,320 +0,0 @@ -169 -0 1 116 4294967295 2 4294967295 -1 2 115 4294967295 3 2 -1 115 116 1 4294967295 0 -2 3 115 4294967295 5 1 -3 4 114 4294967295 6 5 -3 114 115 4 4294967295 3 -4 5 114 4294967295 8 4 -5 6 113 4294967295 9 8 -5 113 114 7 4294967295 6 -6 7 113 4294967295 11 7 -7 8 112 4294967295 13 11 -7 112 113 10 4294967295 9 -8 9 143 4294967295 14 13 -8 143 112 12 67 10 -9 10 143 4294967295 16 12 -10 11 137 4294967295 18 16 -10 137 143 15 165 14 -11 12 132 4294967295 20 18 -11 132 137 17 162 15 -12 13 133 4294967295 23 20 -12 133 132 19 157 17 -13 14 15 4294967295 4294967295 22 -13 15 136 21 25 24 -13 135 133 24 163 19 -13 136 135 22 153 23 -15 16 136 4294967295 26 22 -16 17 136 4294967295 28 25 -17 18 119 4294967295 29 28 -17 119 136 27 139 26 -18 19 119 4294967295 31 27 -19 20 118 4294967295 33 31 -19 118 119 30 138 29 -20 21 117 4294967295 35 33 -20 117 118 32 136 30 -21 22 124 4294967295 37 35 -21 124 117 34 137 32 -22 23 123 4294967295 38 37 -22 123 124 36 145 34 -23 24 123 4294967295 39 36 -24 25 123 4294967295 40 38 -25 26 123 4294967295 41 39 -26 27 123 4294967295 43 40 -27 28 125 4294967295 44 43 -27 125 123 42 146 41 -28 29 125 4294967295 46 42 -29 30 126 4294967295 48 46 -29 126 125 45 147 44 -30 31 131 4294967295 52 50 -30 128 126 49 149 45 -30 130 128 50 154 48 -30 131 130 47 155 49 -31 32 140 4294967295 54 52 -31 140 131 51 161 47 -32 33 141 4294967295 57 54 -32 141 140 53 168 51 -33 34 41 4294967295 59 56 -33 41 42 55 4294967295 57 -33 42 141 56 65 53 -34 35 40 4294967295 60 59 -34 40 41 58 4294967295 55 -35 36 40 4294967295 62 58 -36 37 39 4294967295 63 62 -36 39 40 61 4294967295 60 -37 38 39 4294967295 4294967295 61 -42 43 142 4294967295 68 65 -42 142 141 64 168 57 -43 44 112 4294967295 70 67 -43 112 143 66 13 68 -43 143 142 67 165 64 -44 45 111 4294967295 73 70 -44 111 112 69 4294967295 66 -45 46 109 4294967295 75 72 -45 109 110 71 4294967295 73 -45 110 111 72 4294967295 69 -46 47 108 4294967295 76 75 -46 108 109 74 4294967295 71 -47 48 108 4294967295 82 74 -48 49 50 4294967295 4294967295 78 -48 50 89 77 87 79 -48 89 90 78 4294967295 80 -48 90 97 79 121 81 -48 97 98 80 4294967295 82 -48 98 108 81 129 76 -50 51 73 4294967295 91 84 -50 73 74 83 4294967295 85 -50 74 81 84 109 86 -50 81 82 85 4294967295 87 -50 82 89 86 115 78 -51 52 58 4294967295 92 89 -51 58 65 88 97 90 -51 65 66 89 4294967295 91 -51 66 73 90 104 83 -52 53 58 4294967295 93 88 -53 54 58 4294967295 95 92 -54 55 57 4294967295 96 95 -54 57 58 94 4294967295 93 -55 56 57 4294967295 4294967295 94 -58 59 65 4294967295 100 89 -59 60 63 4294967295 102 99 -59 63 64 98 4294967295 100 -59 64 65 99 4294967295 97 -60 61 62 4294967295 4294967295 102 -60 62 63 101 4294967295 98 -66 67 72 4294967295 105 104 -66 72 73 103 4294967295 91 -67 68 72 4294967295 107 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 105 -69 70 71 4294967295 4294967295 106 -74 75 81 4294967295 111 85 -75 76 80 4294967295 113 111 -75 80 81 110 4294967295 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 110 -77 78 79 4294967295 4294967295 112 -82 83 89 4294967295 118 87 -83 84 87 4294967295 119 117 -83 87 88 116 4294967295 118 -83 88 89 117 4294967295 115 -84 85 87 4294967295 120 116 -85 86 87 4294967295 4294967295 119 -90 91 97 4294967295 124 80 -91 92 95 4294967295 126 123 -91 95 96 122 4294967295 124 -91 96 97 123 4294967295 121 -92 93 94 4294967295 4294967295 126 -92 94 95 125 4294967295 122 -98 99 104 4294967295 130 128 -98 104 105 127 4294967295 129 -98 105 108 128 134 82 -99 100 104 4294967295 133 127 -100 101 102 4294967295 4294967295 132 -100 102 103 131 4294967295 133 -100 103 104 132 4294967295 130 -105 106 108 4294967295 135 129 -106 107 108 4294967295 4294967295 134 -117 121 118 137 138 33 -117 124 121 35 145 136 -118 121 119 136 140 31 -119 120 136 140 143 28 -119 121 120 138 141 139 -120 121 122 140 144 142 -120 122 125 141 146 143 -120 125 136 142 148 139 -121 123 122 145 146 141 -121 124 123 137 37 144 -122 123 125 144 43 142 -125 126 127 46 149 148 -125 127 136 147 153 143 -126 128 127 48 150 147 -127 128 129 149 154 151 -127 129 134 150 158 152 -127 134 135 151 163 153 -127 135 136 152 24 148 -128 130 129 49 155 150 -129 130 131 154 50 156 -129 131 132 155 159 157 -129 132 133 156 20 158 -129 133 134 157 163 151 -131 138 132 160 162 156 -131 139 138 161 166 159 -131 140 139 52 166 160 -132 138 137 159 164 18 -133 135 134 23 152 158 -137 138 142 162 167 165 -137 142 143 164 68 16 -138 139 140 160 161 167 -138 140 142 166 168 164 -140 141 142 54 65 167 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_super.txt b/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_super.txt deleted file mode 100644 index 2b20cee..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_as-provided_ignore_super.txt +++ /dev/null @@ -1,410 +0,0 @@ -259 -0 1 116 1 8 6 -0 102 1 2 4294967295 0 -0 106 102 3 215 1 -0 107 106 4 219 2 -0 108 107 5 219 3 -0 109 108 6 113 4 -0 116 109 0 222 5 -1 2 115 4294967295 9 8 -1 115 116 7 222 0 -2 3 115 10 14 7 -2 14 3 4294967295 13 9 -3 4 114 12 15 14 -3 13 4 13 16 11 -3 14 13 10 38 12 -3 114 115 11 221 9 -4 5 114 16 20 11 -4 13 5 12 19 15 -5 6 113 18 21 20 -5 12 6 19 23 17 -5 13 12 16 36 18 -5 113 114 17 224 15 -6 7 113 22 25 17 -6 8 7 23 24 21 -6 12 8 18 29 22 -7 8 112 22 30 25 -7 112 113 24 225 21 -8 9 143 27 31 30 -8 10 9 28 31 26 -8 11 10 29 32 27 -8 12 11 23 34 28 -8 143 112 26 103 24 -9 10 143 27 33 26 -10 11 137 28 35 33 -10 137 143 32 255 31 -11 12 132 29 37 35 -11 132 137 34 252 32 -12 13 133 19 40 37 -12 133 132 36 247 34 -13 14 15 13 4294967295 39 -13 15 136 38 42 41 -13 135 133 41 253 36 -13 136 135 39 243 40 -15 16 136 4294967295 43 39 -16 17 136 4294967295 45 42 -17 18 119 4294967295 46 45 -17 119 136 44 229 43 -18 19 119 4294967295 48 44 -19 20 118 4294967295 50 48 -19 118 119 47 228 46 -20 21 117 4294967295 52 50 -20 117 118 49 226 47 -21 22 124 4294967295 54 52 -21 124 117 51 227 49 -22 23 123 4294967295 55 54 -22 123 124 53 235 51 -23 24 123 4294967295 56 53 -24 25 123 4294967295 57 55 -25 26 123 4294967295 58 56 -26 27 123 4294967295 60 57 -27 28 125 4294967295 61 60 -27 125 123 59 236 58 -28 29 125 62 66 59 -28 37 29 4294967295 65 61 -29 30 126 64 70 66 -29 36 30 65 69 63 -29 37 36 62 86 64 -29 126 125 63 237 61 -30 31 131 68 76 72 -30 35 31 69 75 67 -30 36 35 64 85 68 -30 128 126 71 239 63 -30 130 128 72 244 70 -30 131 130 67 245 71 -31 32 140 74 79 76 -31 34 32 75 78 73 -31 35 34 68 83 74 -31 140 131 73 251 67 -32 33 141 78 82 79 -32 34 33 74 80 77 -32 141 140 77 258 73 -33 34 41 78 84 81 -33 41 42 80 98 82 -33 42 141 81 101 77 -34 35 40 75 85 84 -34 40 41 83 96 80 -35 36 40 69 87 83 -36 37 39 65 88 87 -36 39 40 86 95 85 -37 38 39 89 91 86 -37 52 38 90 94 88 -37 53 52 4294967295 132 89 -38 45 39 92 95 88 -38 46 45 93 107 91 -38 49 46 94 112 92 -38 52 49 89 121 93 -39 45 40 91 97 87 -40 44 41 97 98 84 -40 45 44 95 105 96 -41 44 42 96 100 81 -42 43 142 100 104 101 -42 44 43 98 102 99 -42 142 141 99 258 82 -43 44 112 100 106 103 -43 112 143 102 30 104 -43 143 142 103 255 99 -44 45 111 97 109 106 -44 111 112 105 225 102 -45 46 109 92 113 108 -45 109 110 107 220 109 -45 110 111 108 223 105 -46 47 108 111 114 113 -46 48 47 112 114 110 -46 49 48 93 115 111 -46 108 109 110 5 107 -47 48 108 111 120 110 -48 49 50 112 121 116 -48 50 89 115 127 117 -48 89 90 116 193 118 -48 90 97 117 194 119 -48 97 98 118 206 120 -48 98 108 119 210 114 -49 52 50 94 123 115 -50 51 73 123 131 124 -50 52 51 121 128 122 -50 73 74 122 167 125 -50 74 81 124 168 126 -50 81 82 125 180 127 -50 82 89 126 181 116 -51 52 58 123 132 129 -51 58 65 128 139 130 -51 65 66 129 153 131 -51 66 73 130 155 122 -52 53 58 90 133 128 -53 54 58 4294967295 135 132 -54 55 57 4294967295 136 135 -54 57 58 134 137 133 -55 56 57 4294967295 4294967295 134 -57 60 58 138 140 135 -57 61 60 4294967295 144 137 -58 59 65 140 143 129 -58 60 59 137 141 139 -59 60 63 140 145 142 -59 63 64 141 149 143 -59 64 65 142 152 139 -60 61 62 138 146 145 -60 62 63 144 147 141 -61 70 62 4294967295 148 144 -62 69 63 148 151 145 -62 70 69 146 159 147 -63 67 64 150 152 142 -63 68 67 151 156 149 -63 69 68 147 157 150 -64 67 65 149 153 143 -65 67 66 152 154 130 -66 67 72 153 156 155 -66 72 73 154 165 131 -67 68 72 150 158 154 -68 69 71 151 159 158 -68 71 72 157 163 156 -69 70 71 148 160 157 -70 77 71 161 164 159 -70 85 77 162 174 160 -70 93 85 4294967295 187 161 -71 76 72 164 166 158 -71 77 76 160 171 163 -72 75 73 166 167 155 -72 76 75 163 169 165 -73 75 74 165 168 124 -74 75 81 167 170 125 -75 76 80 166 172 170 -75 80 81 169 178 168 -76 77 79 164 173 172 -76 79 80 171 177 169 -77 78 79 174 175 171 -77 85 78 161 176 173 -78 84 79 176 177 173 -78 85 84 174 185 175 -79 84 80 175 179 172 -80 83 81 179 180 170 -80 84 83 177 182 178 -81 83 82 178 181 126 -82 83 89 180 184 127 -83 84 87 179 185 183 -83 87 88 182 190 184 -83 88 89 183 191 181 -84 85 87 176 186 182 -85 86 87 187 188 185 -85 93 86 162 189 186 -86 92 87 189 190 186 -86 93 92 187 198 188 -87 92 88 188 192 183 -88 91 89 192 193 184 -88 92 91 190 195 191 -89 91 90 191 194 117 -90 91 97 193 197 118 -91 92 95 192 199 196 -91 95 96 195 203 197 -91 96 97 196 206 194 -92 93 94 189 200 199 -92 94 95 198 201 195 -93 102 94 4294967295 202 198 -94 101 95 202 205 199 -94 102 101 200 212 201 -95 99 96 204 207 196 -95 100 99 205 211 203 -95 101 100 201 212 204 -96 98 97 207 119 197 -96 99 98 203 208 206 -98 99 104 207 211 209 -98 104 105 208 217 210 -98 105 108 209 218 120 -99 100 104 204 214 208 -100 101 102 205 202 213 -100 102 103 212 215 214 -100 103 104 213 216 211 -102 106 103 2 216 213 -103 106 104 215 217 214 -104 106 105 216 218 209 -105 106 108 217 219 210 -106 107 108 3 4 218 -109 114 110 221 224 108 -109 115 114 222 14 220 -109 116 115 6 8 221 -110 113 111 224 225 109 -110 114 113 220 20 223 -111 113 112 223 25 106 -117 121 118 227 228 50 -117 124 121 52 235 226 -118 121 119 226 230 48 -119 120 136 230 233 45 -119 121 120 228 231 229 -120 121 122 230 234 232 -120 122 125 231 236 233 -120 125 136 232 238 229 -121 123 122 235 236 231 -121 124 123 227 54 234 -122 123 125 234 60 232 -125 126 127 66 239 238 -125 127 136 237 243 233 -126 128 127 70 240 237 -127 128 129 239 244 241 -127 129 134 240 248 242 -127 134 135 241 253 243 -127 135 136 242 41 238 -128 130 129 71 245 240 -129 130 131 244 72 246 -129 131 132 245 249 247 -129 132 133 246 37 248 -129 133 134 247 253 241 -131 138 132 250 252 246 -131 139 138 251 256 249 -131 140 139 76 256 250 -132 138 137 249 254 35 -133 135 134 40 242 248 -137 138 142 252 257 255 -137 142 143 254 104 33 -138 139 140 250 251 257 -138 140 142 256 258 254 -140 141 142 79 101 257 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_all.txt b/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_all.txt deleted file mode 100644 index 35bf9ae..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_all.txt +++ /dev/null @@ -1,440 +0,0 @@ -289 -0 1 57 4294967295 13 11 -0 24 2 2 26 4294967295 -0 25 24 3 81 1 -0 26 25 4 83 2 -0 27 26 5 85 3 -0 28 27 6 86 4 -0 29 28 7 87 5 -0 30 29 8 88 6 -0 31 30 9 89 7 -0 40 31 10 92 8 -0 56 40 11 120 9 -0 57 56 0 163 10 -1 2 64 4294967295 27 16 -1 58 57 14 164 0 -1 59 58 15 166 13 -1 60 59 16 166 14 -1 64 60 12 168 15 -2 4 105 18 31 29 -2 5 4 19 37 17 -2 17 5 20 40 18 -2 18 17 21 68 19 -2 19 18 22 72 20 -2 20 19 23 73 21 -2 21 20 24 74 22 -2 22 21 25 76 23 -2 23 22 26 77 24 -2 24 23 1 79 25 -2 73 64 28 176 12 -2 96 73 29 192 27 -2 105 96 17 230 28 -3 4 119 31 38 36 -3 105 4 32 17 30 -3 109 105 33 245 31 -3 110 109 34 249 32 -3 111 110 35 249 33 -3 112 111 36 143 34 -3 119 112 30 252 35 -4 5 118 18 39 38 -4 118 119 37 252 30 -5 6 118 40 44 37 -5 17 6 19 43 39 -6 7 117 42 45 44 -6 16 7 43 46 41 -6 17 16 40 68 42 -6 117 118 41 251 39 -7 8 117 46 50 41 -7 16 8 42 49 45 -8 9 116 48 51 50 -8 15 9 49 53 47 -8 16 15 46 66 48 -8 116 117 47 254 45 -9 10 116 52 55 47 -9 11 10 53 54 51 -9 15 11 48 59 52 -10 11 115 52 60 55 -10 115 116 54 255 51 -11 12 146 57 61 60 -11 13 12 58 61 56 -11 14 13 59 62 57 -11 15 14 53 64 58 -11 146 115 56 133 54 -12 13 146 57 63 56 -13 14 140 58 65 63 -13 140 146 62 285 61 -14 15 135 59 67 65 -14 135 140 64 282 62 -15 16 136 49 70 67 -15 136 135 66 277 64 -16 17 18 43 20 69 -16 18 139 68 72 71 -16 138 136 71 283 66 -16 139 138 69 273 70 -18 19 139 21 73 69 -19 20 139 22 75 72 -20 21 122 23 76 75 -20 122 139 74 259 73 -21 22 122 24 78 74 -22 23 121 25 80 78 -22 121 122 77 258 76 -23 24 120 26 82 80 -23 120 121 79 256 77 -24 25 127 2 84 82 -24 127 120 81 257 79 -25 26 126 3 85 84 -25 126 127 83 265 81 -26 27 126 4 86 83 -27 28 126 5 87 85 -28 29 126 6 88 86 -29 30 126 7 90 87 -30 31 128 8 91 90 -30 128 126 89 266 88 -31 32 128 92 96 89 -31 40 32 9 95 91 -32 33 129 94 100 96 -32 39 33 95 99 93 -32 40 39 92 116 94 -32 129 128 93 267 91 -33 34 134 98 106 102 -33 38 34 99 105 97 -33 39 38 94 115 98 -33 131 129 101 269 93 -33 133 131 102 274 100 -33 134 133 97 275 101 -34 35 143 104 109 106 -34 37 35 105 108 103 -34 38 37 98 113 104 -34 143 134 103 281 97 -35 36 144 108 112 109 -35 37 36 104 110 107 -35 144 143 107 288 103 -36 37 44 108 114 111 -36 44 45 110 128 112 -36 45 144 111 131 107 -37 38 43 105 115 114 -37 43 44 113 126 110 -38 39 43 99 117 113 -39 40 42 95 118 117 -39 42 43 116 125 115 -40 41 42 119 121 116 -40 55 41 120 124 118 -40 56 55 10 162 119 -41 48 42 122 125 118 -41 49 48 123 137 121 -41 52 49 124 142 122 -41 55 52 119 151 123 -42 48 43 121 127 117 -43 47 44 127 128 114 -43 48 47 125 135 126 -44 47 45 126 130 111 -45 46 145 130 134 131 -45 47 46 128 132 129 -45 145 144 129 288 112 -46 47 115 130 136 133 -46 115 146 132 60 134 -46 146 145 133 285 129 -47 48 114 127 139 136 -47 114 115 135 255 132 -48 49 112 122 143 138 -48 112 113 137 250 139 -48 113 114 138 253 135 -49 50 111 141 144 143 -49 51 50 142 144 140 -49 52 51 123 145 141 -49 111 112 140 35 137 -50 51 111 141 150 140 -51 52 53 142 151 146 -51 53 92 145 157 147 -51 92 93 146 223 148 -51 93 100 147 224 149 -51 100 101 148 236 150 -51 101 111 149 240 144 -52 55 53 124 153 145 -53 54 76 153 161 154 -53 55 54 151 158 152 -53 76 77 152 197 155 -53 77 84 154 198 156 -53 84 85 155 210 157 -53 85 92 156 211 146 -54 55 61 153 162 159 -54 61 68 158 169 160 -54 68 69 159 183 161 -54 69 76 160 185 152 -55 56 61 120 163 158 -56 57 61 11 165 162 -57 58 60 13 166 165 -57 60 61 164 167 163 -58 59 60 14 15 164 -60 63 61 168 170 165 -60 64 63 16 174 167 -61 62 68 170 173 159 -61 63 62 167 171 169 -62 63 66 170 175 172 -62 66 67 171 179 173 -62 67 68 172 182 169 -63 64 65 168 176 175 -63 65 66 174 177 171 -64 73 65 27 178 174 -65 72 66 178 181 175 -65 73 72 176 189 177 -66 70 67 180 182 172 -66 71 70 181 186 179 -66 72 71 177 187 180 -67 70 68 179 183 173 -68 70 69 182 184 160 -69 70 75 183 186 185 -69 75 76 184 195 161 -70 71 75 180 188 184 -71 72 74 181 189 188 -71 74 75 187 193 186 -72 73 74 178 190 187 -73 80 74 191 194 189 -73 88 80 192 204 190 -73 96 88 28 217 191 -74 79 75 194 196 188 -74 80 79 190 201 193 -75 78 76 196 197 185 -75 79 78 193 199 195 -76 78 77 195 198 154 -77 78 84 197 200 155 -78 79 83 196 202 200 -78 83 84 199 208 198 -79 80 82 194 203 202 -79 82 83 201 207 199 -80 81 82 204 205 201 -80 88 81 191 206 203 -81 87 82 206 207 203 -81 88 87 204 215 205 -82 87 83 205 209 202 -83 86 84 209 210 200 -83 87 86 207 212 208 -84 86 85 208 211 156 -85 86 92 210 214 157 -86 87 90 209 215 213 -86 90 91 212 220 214 -86 91 92 213 221 211 -87 88 90 206 216 212 -88 89 90 217 218 215 -88 96 89 192 219 216 -89 95 90 219 220 216 -89 96 95 217 228 218 -90 95 91 218 222 213 -91 94 92 222 223 214 -91 95 94 220 225 221 -92 94 93 221 224 147 -93 94 100 223 227 148 -94 95 98 222 229 226 -94 98 99 225 233 227 -94 99 100 226 236 224 -95 96 97 219 230 229 -95 97 98 228 231 225 -96 105 97 29 232 228 -97 104 98 232 235 229 -97 105 104 230 242 231 -98 102 99 234 237 226 -98 103 102 235 241 233 -98 104 103 231 242 234 -99 101 100 237 149 227 -99 102 101 233 238 236 -101 102 107 237 241 239 -101 107 108 238 247 240 -101 108 111 239 248 150 -102 103 107 234 244 238 -103 104 105 235 232 243 -103 105 106 242 245 244 -103 106 107 243 246 241 -105 109 106 32 246 243 -106 109 107 245 247 244 -107 109 108 246 248 239 -108 109 111 247 249 240 -109 110 111 33 34 248 -112 117 113 251 254 138 -112 118 117 252 44 250 -112 119 118 36 38 251 -113 116 114 254 255 139 -113 117 116 250 50 253 -114 116 115 253 55 136 -120 124 121 257 258 80 -120 127 124 82 265 256 -121 124 122 256 260 78 -122 123 139 260 263 75 -122 124 123 258 261 259 -123 124 125 260 264 262 -123 125 128 261 266 263 -123 128 139 262 268 259 -124 126 125 265 266 261 -124 127 126 257 84 264 -125 126 128 264 90 262 -128 129 130 96 269 268 -128 130 139 267 273 263 -129 131 130 100 270 267 -130 131 132 269 274 271 -130 132 137 270 278 272 -130 137 138 271 283 273 -130 138 139 272 71 268 -131 133 132 101 275 270 -132 133 134 274 102 276 -132 134 135 275 279 277 -132 135 136 276 67 278 -132 136 137 277 283 271 -134 141 135 280 282 276 -134 142 141 281 286 279 -134 143 142 106 286 280 -135 141 140 279 284 65 -136 138 137 70 272 278 -140 141 145 282 287 285 -140 145 146 284 134 63 -141 142 143 280 281 287 -141 143 145 286 288 284 -143 144 145 109 131 287 - -144 -3 4 -3 119 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -116 117 -117 118 -118 119 -120 121 -120 127 -121 122 -122 123 -123 124 -124 125 -125 126 -126 127 -128 129 -128 139 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -136 137 -137 138 -138 139 -140 141 -140 146 -141 142 -142 143 -143 144 -144 145 -145 146 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_auto.txt b/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_auto.txt deleted file mode 100644 index bc5ce56..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_auto.txt +++ /dev/null @@ -1,299 +0,0 @@ -148 -0 1 116 4294967295 2 4294967295 -1 2 115 4294967295 3 2 -1 115 116 1 4294967295 0 -2 3 115 4294967295 5 1 -3 4 114 4294967295 6 5 -3 114 115 4 4294967295 3 -4 5 114 4294967295 8 4 -5 6 113 4294967295 9 8 -5 113 114 7 4294967295 6 -6 7 113 4294967295 11 7 -7 8 112 4294967295 13 11 -7 112 113 10 4294967295 9 -8 9 143 4294967295 14 13 -8 143 112 12 67 10 -9 10 143 4294967295 16 12 -10 11 137 4294967295 18 16 -10 137 143 15 4294967295 14 -11 12 132 4294967295 20 18 -11 132 137 17 146 15 -12 13 133 4294967295 23 20 -12 133 132 19 4294967295 17 -13 14 15 4294967295 4294967295 22 -13 15 136 21 25 24 -13 135 133 24 147 19 -13 136 135 22 4294967295 23 -15 16 136 4294967295 26 22 -16 17 136 4294967295 28 25 -17 18 119 4294967295 29 28 -17 119 136 27 136 26 -18 19 119 4294967295 31 27 -19 20 118 4294967295 33 31 -19 118 119 30 4294967295 29 -20 21 117 4294967295 35 33 -20 117 118 32 4294967295 30 -21 22 124 4294967295 37 35 -21 124 117 34 4294967295 32 -22 23 123 4294967295 38 37 -22 123 124 36 4294967295 34 -23 24 123 4294967295 39 36 -24 25 123 4294967295 40 38 -25 26 123 4294967295 41 39 -26 27 123 4294967295 43 40 -27 28 125 4294967295 44 43 -27 125 123 42 140 41 -28 29 125 4294967295 46 42 -29 30 126 4294967295 48 46 -29 126 125 45 4294967295 44 -30 31 131 4294967295 52 50 -30 128 126 49 141 45 -30 130 128 50 142 48 -30 131 130 47 4294967295 49 -31 32 140 4294967295 54 52 -31 140 131 51 145 47 -32 33 141 4294967295 57 54 -32 141 140 53 4294967295 51 -33 34 41 4294967295 59 56 -33 41 42 55 4294967295 57 -33 42 141 56 65 53 -34 35 40 4294967295 60 59 -34 40 41 58 4294967295 55 -35 36 40 4294967295 62 58 -36 37 39 4294967295 63 62 -36 39 40 61 4294967295 60 -37 38 39 4294967295 4294967295 61 -42 43 142 4294967295 68 65 -42 142 141 64 4294967295 57 -43 44 112 4294967295 70 67 -43 112 143 66 13 68 -43 143 142 67 4294967295 64 -44 45 111 4294967295 73 70 -44 111 112 69 4294967295 66 -45 46 109 4294967295 75 72 -45 109 110 71 4294967295 73 -45 110 111 72 4294967295 69 -46 47 108 4294967295 76 75 -46 108 109 74 4294967295 71 -47 48 108 4294967295 82 74 -48 49 50 4294967295 4294967295 78 -48 50 89 77 87 79 -48 89 90 78 4294967295 80 -48 90 97 79 121 81 -48 97 98 80 4294967295 82 -48 98 108 81 129 76 -50 51 73 4294967295 91 84 -50 73 74 83 4294967295 85 -50 74 81 84 109 86 -50 81 82 85 4294967295 87 -50 82 89 86 115 78 -51 52 58 4294967295 92 89 -51 58 65 88 97 90 -51 65 66 89 4294967295 91 -51 66 73 90 104 83 -52 53 58 4294967295 93 88 -53 54 58 4294967295 95 92 -54 55 57 4294967295 96 95 -54 57 58 94 4294967295 93 -55 56 57 4294967295 4294967295 94 -58 59 65 4294967295 100 89 -59 60 63 4294967295 102 99 -59 63 64 98 4294967295 100 -59 64 65 99 4294967295 97 -60 61 62 4294967295 4294967295 102 -60 62 63 101 4294967295 98 -66 67 72 4294967295 105 104 -66 72 73 103 4294967295 91 -67 68 72 4294967295 107 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 105 -69 70 71 4294967295 4294967295 106 -74 75 81 4294967295 111 85 -75 76 80 4294967295 113 111 -75 80 81 110 4294967295 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 110 -77 78 79 4294967295 4294967295 112 -82 83 89 4294967295 118 87 -83 84 87 4294967295 119 117 -83 87 88 116 4294967295 118 -83 88 89 117 4294967295 115 -84 85 87 4294967295 120 116 -85 86 87 4294967295 4294967295 119 -90 91 97 4294967295 124 80 -91 92 95 4294967295 126 123 -91 95 96 122 4294967295 124 -91 96 97 123 4294967295 121 -92 93 94 4294967295 4294967295 126 -92 94 95 125 4294967295 122 -98 99 104 4294967295 130 128 -98 104 105 127 4294967295 129 -98 105 108 128 134 82 -99 100 104 4294967295 133 127 -100 101 102 4294967295 4294967295 132 -100 102 103 131 4294967295 133 -100 103 104 132 4294967295 130 -105 106 108 4294967295 135 129 -106 107 108 4294967295 4294967295 134 -119 120 136 4294967295 139 28 -120 121 122 4294967295 4294967295 138 -120 122 125 137 140 139 -120 125 136 138 4294967295 136 -122 123 125 4294967295 43 138 -126 128 127 48 4294967295 4294967295 -128 130 129 49 4294967295 4294967295 -131 138 132 144 146 4294967295 -131 139 138 145 4294967295 143 -131 140 139 52 4294967295 144 -132 138 137 143 4294967295 18 -133 135 134 23 4294967295 4294967295 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_outer.txt b/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_outer.txt deleted file mode 100644 index b2bb878..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_outer.txt +++ /dev/null @@ -1,320 +0,0 @@ -169 -0 1 116 4294967295 2 4294967295 -1 2 115 4294967295 3 2 -1 115 116 1 4294967295 0 -2 3 115 4294967295 5 1 -3 4 114 4294967295 6 5 -3 114 115 4 4294967295 3 -4 5 114 4294967295 8 4 -5 6 113 4294967295 9 8 -5 113 114 7 4294967295 6 -6 7 113 4294967295 11 7 -7 8 112 4294967295 13 11 -7 112 113 10 4294967295 9 -8 9 143 4294967295 14 13 -8 143 112 12 67 10 -9 10 143 4294967295 16 12 -10 11 137 4294967295 18 16 -10 137 143 15 165 14 -11 12 132 4294967295 20 18 -11 132 137 17 162 15 -12 13 133 4294967295 23 20 -12 133 132 19 157 17 -13 14 15 4294967295 4294967295 22 -13 15 136 21 25 24 -13 135 133 24 163 19 -13 136 135 22 153 23 -15 16 136 4294967295 26 22 -16 17 136 4294967295 28 25 -17 18 119 4294967295 29 28 -17 119 136 27 139 26 -18 19 119 4294967295 31 27 -19 20 118 4294967295 33 31 -19 118 119 30 138 29 -20 21 117 4294967295 35 33 -20 117 118 32 136 30 -21 22 124 4294967295 37 35 -21 124 117 34 137 32 -22 23 123 4294967295 38 37 -22 123 124 36 145 34 -23 24 123 4294967295 39 36 -24 25 123 4294967295 40 38 -25 26 123 4294967295 41 39 -26 27 123 4294967295 43 40 -27 28 125 4294967295 44 43 -27 125 123 42 146 41 -28 29 125 4294967295 46 42 -29 30 126 4294967295 48 46 -29 126 125 45 147 44 -30 31 131 4294967295 52 50 -30 128 126 49 149 45 -30 130 128 50 154 48 -30 131 130 47 155 49 -31 32 140 4294967295 54 52 -31 140 131 51 161 47 -32 33 141 4294967295 57 54 -32 141 140 53 168 51 -33 34 41 4294967295 59 56 -33 41 42 55 4294967295 57 -33 42 141 56 65 53 -34 35 40 4294967295 60 59 -34 40 41 58 4294967295 55 -35 36 40 4294967295 62 58 -36 37 39 4294967295 63 62 -36 39 40 61 4294967295 60 -37 38 39 4294967295 4294967295 61 -42 43 142 4294967295 68 65 -42 142 141 64 168 57 -43 44 112 4294967295 70 67 -43 112 143 66 13 68 -43 143 142 67 165 64 -44 45 111 4294967295 73 70 -44 111 112 69 4294967295 66 -45 46 109 4294967295 75 72 -45 109 110 71 4294967295 73 -45 110 111 72 4294967295 69 -46 47 108 4294967295 76 75 -46 108 109 74 4294967295 71 -47 48 108 4294967295 82 74 -48 49 50 4294967295 4294967295 78 -48 50 89 77 87 79 -48 89 90 78 4294967295 80 -48 90 97 79 121 81 -48 97 98 80 4294967295 82 -48 98 108 81 129 76 -50 51 73 4294967295 91 84 -50 73 74 83 4294967295 85 -50 74 81 84 109 86 -50 81 82 85 4294967295 87 -50 82 89 86 115 78 -51 52 58 4294967295 92 89 -51 58 65 88 97 90 -51 65 66 89 4294967295 91 -51 66 73 90 104 83 -52 53 58 4294967295 93 88 -53 54 58 4294967295 95 92 -54 55 57 4294967295 96 95 -54 57 58 94 4294967295 93 -55 56 57 4294967295 4294967295 94 -58 59 65 4294967295 100 89 -59 60 63 4294967295 102 99 -59 63 64 98 4294967295 100 -59 64 65 99 4294967295 97 -60 61 62 4294967295 4294967295 102 -60 62 63 101 4294967295 98 -66 67 72 4294967295 105 104 -66 72 73 103 4294967295 91 -67 68 72 4294967295 107 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 105 -69 70 71 4294967295 4294967295 106 -74 75 81 4294967295 111 85 -75 76 80 4294967295 113 111 -75 80 81 110 4294967295 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 110 -77 78 79 4294967295 4294967295 112 -82 83 89 4294967295 118 87 -83 84 87 4294967295 119 117 -83 87 88 116 4294967295 118 -83 88 89 117 4294967295 115 -84 85 87 4294967295 120 116 -85 86 87 4294967295 4294967295 119 -90 91 97 4294967295 124 80 -91 92 95 4294967295 126 123 -91 95 96 122 4294967295 124 -91 96 97 123 4294967295 121 -92 93 94 4294967295 4294967295 126 -92 94 95 125 4294967295 122 -98 99 104 4294967295 130 128 -98 104 105 127 4294967295 129 -98 105 108 128 134 82 -99 100 104 4294967295 133 127 -100 101 102 4294967295 4294967295 132 -100 102 103 131 4294967295 133 -100 103 104 132 4294967295 130 -105 106 108 4294967295 135 129 -106 107 108 4294967295 4294967295 134 -117 121 118 137 138 33 -117 124 121 35 145 136 -118 121 119 136 140 31 -119 120 136 140 143 28 -119 121 120 138 141 139 -120 121 122 140 144 142 -120 122 125 141 146 143 -120 125 136 142 148 139 -121 123 122 145 146 141 -121 124 123 137 37 144 -122 123 125 144 43 142 -125 126 127 46 149 148 -125 127 136 147 153 143 -126 128 127 48 150 147 -127 128 129 149 154 151 -127 129 134 150 158 152 -127 134 135 151 163 153 -127 135 136 152 24 148 -128 130 129 49 155 150 -129 130 131 154 50 156 -129 131 132 155 159 157 -129 132 133 156 20 158 -129 133 134 157 163 151 -131 138 132 160 162 156 -131 139 138 161 166 159 -131 140 139 52 166 160 -132 138 137 159 164 18 -133 135 134 23 152 158 -137 138 142 162 167 165 -137 142 143 164 68 16 -138 139 140 160 161 167 -138 140 142 166 168 164 -140 141 142 54 65 167 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_super.txt b/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_super.txt deleted file mode 100644 index 2b20cee..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_as-provided_resolve_super.txt +++ /dev/null @@ -1,410 +0,0 @@ -259 -0 1 116 1 8 6 -0 102 1 2 4294967295 0 -0 106 102 3 215 1 -0 107 106 4 219 2 -0 108 107 5 219 3 -0 109 108 6 113 4 -0 116 109 0 222 5 -1 2 115 4294967295 9 8 -1 115 116 7 222 0 -2 3 115 10 14 7 -2 14 3 4294967295 13 9 -3 4 114 12 15 14 -3 13 4 13 16 11 -3 14 13 10 38 12 -3 114 115 11 221 9 -4 5 114 16 20 11 -4 13 5 12 19 15 -5 6 113 18 21 20 -5 12 6 19 23 17 -5 13 12 16 36 18 -5 113 114 17 224 15 -6 7 113 22 25 17 -6 8 7 23 24 21 -6 12 8 18 29 22 -7 8 112 22 30 25 -7 112 113 24 225 21 -8 9 143 27 31 30 -8 10 9 28 31 26 -8 11 10 29 32 27 -8 12 11 23 34 28 -8 143 112 26 103 24 -9 10 143 27 33 26 -10 11 137 28 35 33 -10 137 143 32 255 31 -11 12 132 29 37 35 -11 132 137 34 252 32 -12 13 133 19 40 37 -12 133 132 36 247 34 -13 14 15 13 4294967295 39 -13 15 136 38 42 41 -13 135 133 41 253 36 -13 136 135 39 243 40 -15 16 136 4294967295 43 39 -16 17 136 4294967295 45 42 -17 18 119 4294967295 46 45 -17 119 136 44 229 43 -18 19 119 4294967295 48 44 -19 20 118 4294967295 50 48 -19 118 119 47 228 46 -20 21 117 4294967295 52 50 -20 117 118 49 226 47 -21 22 124 4294967295 54 52 -21 124 117 51 227 49 -22 23 123 4294967295 55 54 -22 123 124 53 235 51 -23 24 123 4294967295 56 53 -24 25 123 4294967295 57 55 -25 26 123 4294967295 58 56 -26 27 123 4294967295 60 57 -27 28 125 4294967295 61 60 -27 125 123 59 236 58 -28 29 125 62 66 59 -28 37 29 4294967295 65 61 -29 30 126 64 70 66 -29 36 30 65 69 63 -29 37 36 62 86 64 -29 126 125 63 237 61 -30 31 131 68 76 72 -30 35 31 69 75 67 -30 36 35 64 85 68 -30 128 126 71 239 63 -30 130 128 72 244 70 -30 131 130 67 245 71 -31 32 140 74 79 76 -31 34 32 75 78 73 -31 35 34 68 83 74 -31 140 131 73 251 67 -32 33 141 78 82 79 -32 34 33 74 80 77 -32 141 140 77 258 73 -33 34 41 78 84 81 -33 41 42 80 98 82 -33 42 141 81 101 77 -34 35 40 75 85 84 -34 40 41 83 96 80 -35 36 40 69 87 83 -36 37 39 65 88 87 -36 39 40 86 95 85 -37 38 39 89 91 86 -37 52 38 90 94 88 -37 53 52 4294967295 132 89 -38 45 39 92 95 88 -38 46 45 93 107 91 -38 49 46 94 112 92 -38 52 49 89 121 93 -39 45 40 91 97 87 -40 44 41 97 98 84 -40 45 44 95 105 96 -41 44 42 96 100 81 -42 43 142 100 104 101 -42 44 43 98 102 99 -42 142 141 99 258 82 -43 44 112 100 106 103 -43 112 143 102 30 104 -43 143 142 103 255 99 -44 45 111 97 109 106 -44 111 112 105 225 102 -45 46 109 92 113 108 -45 109 110 107 220 109 -45 110 111 108 223 105 -46 47 108 111 114 113 -46 48 47 112 114 110 -46 49 48 93 115 111 -46 108 109 110 5 107 -47 48 108 111 120 110 -48 49 50 112 121 116 -48 50 89 115 127 117 -48 89 90 116 193 118 -48 90 97 117 194 119 -48 97 98 118 206 120 -48 98 108 119 210 114 -49 52 50 94 123 115 -50 51 73 123 131 124 -50 52 51 121 128 122 -50 73 74 122 167 125 -50 74 81 124 168 126 -50 81 82 125 180 127 -50 82 89 126 181 116 -51 52 58 123 132 129 -51 58 65 128 139 130 -51 65 66 129 153 131 -51 66 73 130 155 122 -52 53 58 90 133 128 -53 54 58 4294967295 135 132 -54 55 57 4294967295 136 135 -54 57 58 134 137 133 -55 56 57 4294967295 4294967295 134 -57 60 58 138 140 135 -57 61 60 4294967295 144 137 -58 59 65 140 143 129 -58 60 59 137 141 139 -59 60 63 140 145 142 -59 63 64 141 149 143 -59 64 65 142 152 139 -60 61 62 138 146 145 -60 62 63 144 147 141 -61 70 62 4294967295 148 144 -62 69 63 148 151 145 -62 70 69 146 159 147 -63 67 64 150 152 142 -63 68 67 151 156 149 -63 69 68 147 157 150 -64 67 65 149 153 143 -65 67 66 152 154 130 -66 67 72 153 156 155 -66 72 73 154 165 131 -67 68 72 150 158 154 -68 69 71 151 159 158 -68 71 72 157 163 156 -69 70 71 148 160 157 -70 77 71 161 164 159 -70 85 77 162 174 160 -70 93 85 4294967295 187 161 -71 76 72 164 166 158 -71 77 76 160 171 163 -72 75 73 166 167 155 -72 76 75 163 169 165 -73 75 74 165 168 124 -74 75 81 167 170 125 -75 76 80 166 172 170 -75 80 81 169 178 168 -76 77 79 164 173 172 -76 79 80 171 177 169 -77 78 79 174 175 171 -77 85 78 161 176 173 -78 84 79 176 177 173 -78 85 84 174 185 175 -79 84 80 175 179 172 -80 83 81 179 180 170 -80 84 83 177 182 178 -81 83 82 178 181 126 -82 83 89 180 184 127 -83 84 87 179 185 183 -83 87 88 182 190 184 -83 88 89 183 191 181 -84 85 87 176 186 182 -85 86 87 187 188 185 -85 93 86 162 189 186 -86 92 87 189 190 186 -86 93 92 187 198 188 -87 92 88 188 192 183 -88 91 89 192 193 184 -88 92 91 190 195 191 -89 91 90 191 194 117 -90 91 97 193 197 118 -91 92 95 192 199 196 -91 95 96 195 203 197 -91 96 97 196 206 194 -92 93 94 189 200 199 -92 94 95 198 201 195 -93 102 94 4294967295 202 198 -94 101 95 202 205 199 -94 102 101 200 212 201 -95 99 96 204 207 196 -95 100 99 205 211 203 -95 101 100 201 212 204 -96 98 97 207 119 197 -96 99 98 203 208 206 -98 99 104 207 211 209 -98 104 105 208 217 210 -98 105 108 209 218 120 -99 100 104 204 214 208 -100 101 102 205 202 213 -100 102 103 212 215 214 -100 103 104 213 216 211 -102 106 103 2 216 213 -103 106 104 215 217 214 -104 106 105 216 218 209 -105 106 108 217 219 210 -106 107 108 3 4 218 -109 114 110 221 224 108 -109 115 114 222 14 220 -109 116 115 6 8 221 -110 113 111 224 225 109 -110 114 113 220 20 223 -111 113 112 223 25 106 -117 121 118 227 228 50 -117 124 121 52 235 226 -118 121 119 226 230 48 -119 120 136 230 233 45 -119 121 120 228 231 229 -120 121 122 230 234 232 -120 122 125 231 236 233 -120 125 136 232 238 229 -121 123 122 235 236 231 -121 124 123 227 54 234 -122 123 125 234 60 232 -125 126 127 66 239 238 -125 127 136 237 243 233 -126 128 127 70 240 237 -127 128 129 239 244 241 -127 129 134 240 248 242 -127 134 135 241 253 243 -127 135 136 242 41 238 -128 130 129 71 245 240 -129 130 131 244 72 246 -129 131 132 245 249 247 -129 132 133 246 37 248 -129 133 134 247 253 241 -131 138 132 250 252 246 -131 139 138 251 256 249 -131 140 139 76 256 250 -132 138 137 249 254 35 -133 135 134 40 242 248 -137 138 142 252 257 255 -137 142 143 254 104 33 -138 139 140 250 251 257 -138 140 142 256 258 254 -140 141 142 79 101 257 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_all.txt b/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_all.txt deleted file mode 100644 index 760fbe3..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_all.txt +++ /dev/null @@ -1,440 +0,0 @@ -289 -0 1 56 4294967295 15 13 -0 21 2 2 26 4294967295 -0 22 21 3 76 1 -0 23 22 4 77 2 -0 24 23 5 79 3 -0 25 24 6 81 4 -0 26 25 7 83 5 -0 27 26 8 85 6 -0 28 27 9 86 7 -0 29 28 10 87 8 -0 30 29 11 88 9 -0 31 30 12 89 10 -0 40 31 13 92 11 -0 56 40 0 120 12 -1 2 64 4294967295 27 19 -1 57 56 16 163 0 -1 58 57 17 164 15 -1 59 58 18 166 16 -1 60 59 19 166 17 -1 64 60 14 168 18 -2 4 105 21 31 29 -2 5 4 22 37 20 -2 17 5 23 40 21 -2 18 17 24 68 22 -2 19 18 25 72 23 -2 20 19 26 73 24 -2 21 20 1 74 25 -2 73 64 28 176 14 -2 96 73 29 192 27 -2 105 96 20 230 28 -3 4 119 31 38 36 -3 105 4 32 20 30 -3 109 105 33 245 31 -3 110 109 34 249 32 -3 111 110 35 249 33 -3 112 111 36 143 34 -3 119 112 30 252 35 -4 5 118 21 39 38 -4 118 119 37 252 30 -5 6 118 40 44 37 -5 17 6 22 43 39 -6 7 117 42 45 44 -6 16 7 43 46 41 -6 17 16 40 68 42 -6 117 118 41 251 39 -7 8 117 46 50 41 -7 16 8 42 49 45 -8 9 116 48 51 50 -8 15 9 49 53 47 -8 16 15 46 66 48 -8 116 117 47 254 45 -9 10 116 52 55 47 -9 11 10 53 54 51 -9 15 11 48 59 52 -10 11 115 52 60 55 -10 115 116 54 255 51 -11 12 146 57 61 60 -11 13 12 58 61 56 -11 14 13 59 62 57 -11 15 14 53 64 58 -11 146 115 56 133 54 -12 13 146 57 63 56 -13 14 140 58 65 63 -13 140 146 62 285 61 -14 15 135 59 67 65 -14 135 140 64 282 62 -15 16 136 49 70 67 -15 136 135 66 277 64 -16 17 18 43 23 69 -16 18 139 68 72 71 -16 138 136 71 283 66 -16 139 138 69 273 70 -18 19 139 24 73 69 -19 20 139 25 75 72 -20 21 122 26 76 75 -20 122 139 74 259 73 -21 22 122 2 78 74 -22 23 121 3 80 78 -22 121 122 77 258 76 -23 24 120 4 82 80 -23 120 121 79 256 77 -24 25 127 5 84 82 -24 127 120 81 257 79 -25 26 126 6 85 84 -25 126 127 83 265 81 -26 27 126 7 86 83 -27 28 126 8 87 85 -28 29 126 9 88 86 -29 30 126 10 90 87 -30 31 128 11 91 90 -30 128 126 89 266 88 -31 32 128 92 96 89 -31 40 32 12 95 91 -32 33 129 94 100 96 -32 39 33 95 99 93 -32 40 39 92 116 94 -32 129 128 93 267 91 -33 34 134 98 106 102 -33 38 34 99 105 97 -33 39 38 94 115 98 -33 131 129 101 269 93 -33 133 131 102 274 100 -33 134 133 97 275 101 -34 35 143 104 109 106 -34 37 35 105 108 103 -34 38 37 98 113 104 -34 143 134 103 281 97 -35 36 144 108 112 109 -35 37 36 104 110 107 -35 144 143 107 288 103 -36 37 44 108 114 111 -36 44 45 110 128 112 -36 45 144 111 131 107 -37 38 43 105 115 114 -37 43 44 113 126 110 -38 39 43 99 117 113 -39 40 42 95 118 117 -39 42 43 116 125 115 -40 41 42 119 121 116 -40 55 41 120 124 118 -40 56 55 13 162 119 -41 48 42 122 125 118 -41 49 48 123 137 121 -41 52 49 124 142 122 -41 55 52 119 151 123 -42 48 43 121 127 117 -43 47 44 127 128 114 -43 48 47 125 135 126 -44 47 45 126 130 111 -45 46 145 130 134 131 -45 47 46 128 132 129 -45 145 144 129 288 112 -46 47 115 130 136 133 -46 115 146 132 60 134 -46 146 145 133 285 129 -47 48 114 127 139 136 -47 114 115 135 255 132 -48 49 112 122 143 138 -48 112 113 137 250 139 -48 113 114 138 253 135 -49 50 111 141 144 143 -49 51 50 142 144 140 -49 52 51 123 145 141 -49 111 112 140 35 137 -50 51 111 141 150 140 -51 52 53 142 151 146 -51 53 92 145 157 147 -51 92 93 146 223 148 -51 93 100 147 224 149 -51 100 101 148 236 150 -51 101 111 149 240 144 -52 55 53 124 153 145 -53 54 76 153 161 154 -53 55 54 151 158 152 -53 76 77 152 197 155 -53 77 84 154 198 156 -53 84 85 155 210 157 -53 85 92 156 211 146 -54 55 61 153 162 159 -54 61 68 158 169 160 -54 68 69 159 183 161 -54 69 76 160 185 152 -55 56 61 120 163 158 -56 57 61 15 165 162 -57 58 60 16 166 165 -57 60 61 164 167 163 -58 59 60 17 18 164 -60 63 61 168 170 165 -60 64 63 19 174 167 -61 62 68 170 173 159 -61 63 62 167 171 169 -62 63 66 170 175 172 -62 66 67 171 179 173 -62 67 68 172 182 169 -63 64 65 168 176 175 -63 65 66 174 177 171 -64 73 65 27 178 174 -65 72 66 178 181 175 -65 73 72 176 189 177 -66 70 67 180 182 172 -66 71 70 181 186 179 -66 72 71 177 187 180 -67 70 68 179 183 173 -68 70 69 182 184 160 -69 70 75 183 186 185 -69 75 76 184 195 161 -70 71 75 180 188 184 -71 72 74 181 189 188 -71 74 75 187 193 186 -72 73 74 178 190 187 -73 80 74 191 194 189 -73 88 80 192 204 190 -73 96 88 28 217 191 -74 79 75 194 196 188 -74 80 79 190 201 193 -75 78 76 196 197 185 -75 79 78 193 199 195 -76 78 77 195 198 154 -77 78 84 197 200 155 -78 79 83 196 202 200 -78 83 84 199 208 198 -79 80 82 194 203 202 -79 82 83 201 207 199 -80 81 82 204 205 201 -80 88 81 191 206 203 -81 87 82 206 207 203 -81 88 87 204 215 205 -82 87 83 205 209 202 -83 86 84 209 210 200 -83 87 86 207 212 208 -84 86 85 208 211 156 -85 86 92 210 214 157 -86 87 90 209 215 213 -86 90 91 212 220 214 -86 91 92 213 221 211 -87 88 90 206 216 212 -88 89 90 217 218 215 -88 96 89 192 219 216 -89 95 90 219 220 216 -89 96 95 217 228 218 -90 95 91 218 222 213 -91 94 92 222 223 214 -91 95 94 220 225 221 -92 94 93 221 224 147 -93 94 100 223 227 148 -94 95 98 222 229 226 -94 98 99 225 233 227 -94 99 100 226 236 224 -95 96 97 219 230 229 -95 97 98 228 231 225 -96 105 97 29 232 228 -97 104 98 232 235 229 -97 105 104 230 242 231 -98 102 99 234 237 226 -98 103 102 235 241 233 -98 104 103 231 242 234 -99 101 100 237 149 227 -99 102 101 233 238 236 -101 102 107 237 241 239 -101 107 108 238 247 240 -101 108 111 239 248 150 -102 103 107 234 244 238 -103 104 105 235 232 243 -103 105 106 242 245 244 -103 106 107 243 246 241 -105 109 106 32 246 243 -106 109 107 245 247 244 -107 109 108 246 248 239 -108 109 111 247 249 240 -109 110 111 33 34 248 -112 117 113 251 254 138 -112 118 117 252 44 250 -112 119 118 36 38 251 -113 116 114 254 255 139 -113 117 116 250 50 253 -114 116 115 253 55 136 -120 124 121 257 258 80 -120 127 124 82 265 256 -121 124 122 256 260 78 -122 123 139 260 263 75 -122 124 123 258 261 259 -123 124 125 260 264 262 -123 125 128 261 266 263 -123 128 139 262 268 259 -124 126 125 265 266 261 -124 127 126 257 84 264 -125 126 128 264 90 262 -128 129 130 96 269 268 -128 130 139 267 273 263 -129 131 130 100 270 267 -130 131 132 269 274 271 -130 132 137 270 278 272 -130 137 138 271 283 273 -130 138 139 272 71 268 -131 133 132 101 275 270 -132 133 134 274 102 276 -132 134 135 275 279 277 -132 135 136 276 67 278 -132 136 137 277 283 271 -134 141 135 280 282 276 -134 142 141 281 286 279 -134 143 142 106 286 280 -135 141 140 279 284 65 -136 138 137 70 272 278 -140 141 145 282 287 285 -140 145 146 284 134 63 -141 142 143 280 281 287 -141 143 145 286 288 284 -143 144 145 109 131 287 - -144 -3 4 -3 119 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -116 117 -117 118 -118 119 -120 121 -120 127 -121 122 -122 123 -123 124 -124 125 -125 126 -126 127 -128 129 -128 139 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -136 137 -137 138 -138 139 -140 141 -140 146 -141 142 -142 143 -143 144 -144 145 -145 146 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_auto.txt b/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_auto.txt deleted file mode 100644 index bc5ce56..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_auto.txt +++ /dev/null @@ -1,299 +0,0 @@ -148 -0 1 116 4294967295 2 4294967295 -1 2 115 4294967295 3 2 -1 115 116 1 4294967295 0 -2 3 115 4294967295 5 1 -3 4 114 4294967295 6 5 -3 114 115 4 4294967295 3 -4 5 114 4294967295 8 4 -5 6 113 4294967295 9 8 -5 113 114 7 4294967295 6 -6 7 113 4294967295 11 7 -7 8 112 4294967295 13 11 -7 112 113 10 4294967295 9 -8 9 143 4294967295 14 13 -8 143 112 12 67 10 -9 10 143 4294967295 16 12 -10 11 137 4294967295 18 16 -10 137 143 15 4294967295 14 -11 12 132 4294967295 20 18 -11 132 137 17 146 15 -12 13 133 4294967295 23 20 -12 133 132 19 4294967295 17 -13 14 15 4294967295 4294967295 22 -13 15 136 21 25 24 -13 135 133 24 147 19 -13 136 135 22 4294967295 23 -15 16 136 4294967295 26 22 -16 17 136 4294967295 28 25 -17 18 119 4294967295 29 28 -17 119 136 27 136 26 -18 19 119 4294967295 31 27 -19 20 118 4294967295 33 31 -19 118 119 30 4294967295 29 -20 21 117 4294967295 35 33 -20 117 118 32 4294967295 30 -21 22 124 4294967295 37 35 -21 124 117 34 4294967295 32 -22 23 123 4294967295 38 37 -22 123 124 36 4294967295 34 -23 24 123 4294967295 39 36 -24 25 123 4294967295 40 38 -25 26 123 4294967295 41 39 -26 27 123 4294967295 43 40 -27 28 125 4294967295 44 43 -27 125 123 42 140 41 -28 29 125 4294967295 46 42 -29 30 126 4294967295 48 46 -29 126 125 45 4294967295 44 -30 31 131 4294967295 52 50 -30 128 126 49 141 45 -30 130 128 50 142 48 -30 131 130 47 4294967295 49 -31 32 140 4294967295 54 52 -31 140 131 51 145 47 -32 33 141 4294967295 57 54 -32 141 140 53 4294967295 51 -33 34 41 4294967295 59 56 -33 41 42 55 4294967295 57 -33 42 141 56 65 53 -34 35 40 4294967295 60 59 -34 40 41 58 4294967295 55 -35 36 40 4294967295 62 58 -36 37 39 4294967295 63 62 -36 39 40 61 4294967295 60 -37 38 39 4294967295 4294967295 61 -42 43 142 4294967295 68 65 -42 142 141 64 4294967295 57 -43 44 112 4294967295 70 67 -43 112 143 66 13 68 -43 143 142 67 4294967295 64 -44 45 111 4294967295 73 70 -44 111 112 69 4294967295 66 -45 46 109 4294967295 75 72 -45 109 110 71 4294967295 73 -45 110 111 72 4294967295 69 -46 47 108 4294967295 76 75 -46 108 109 74 4294967295 71 -47 48 108 4294967295 82 74 -48 49 50 4294967295 4294967295 78 -48 50 89 77 87 79 -48 89 90 78 4294967295 80 -48 90 97 79 121 81 -48 97 98 80 4294967295 82 -48 98 108 81 129 76 -50 51 73 4294967295 91 84 -50 73 74 83 4294967295 85 -50 74 81 84 109 86 -50 81 82 85 4294967295 87 -50 82 89 86 115 78 -51 52 58 4294967295 92 89 -51 58 65 88 97 90 -51 65 66 89 4294967295 91 -51 66 73 90 104 83 -52 53 58 4294967295 93 88 -53 54 58 4294967295 95 92 -54 55 57 4294967295 96 95 -54 57 58 94 4294967295 93 -55 56 57 4294967295 4294967295 94 -58 59 65 4294967295 100 89 -59 60 63 4294967295 102 99 -59 63 64 98 4294967295 100 -59 64 65 99 4294967295 97 -60 61 62 4294967295 4294967295 102 -60 62 63 101 4294967295 98 -66 67 72 4294967295 105 104 -66 72 73 103 4294967295 91 -67 68 72 4294967295 107 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 105 -69 70 71 4294967295 4294967295 106 -74 75 81 4294967295 111 85 -75 76 80 4294967295 113 111 -75 80 81 110 4294967295 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 110 -77 78 79 4294967295 4294967295 112 -82 83 89 4294967295 118 87 -83 84 87 4294967295 119 117 -83 87 88 116 4294967295 118 -83 88 89 117 4294967295 115 -84 85 87 4294967295 120 116 -85 86 87 4294967295 4294967295 119 -90 91 97 4294967295 124 80 -91 92 95 4294967295 126 123 -91 95 96 122 4294967295 124 -91 96 97 123 4294967295 121 -92 93 94 4294967295 4294967295 126 -92 94 95 125 4294967295 122 -98 99 104 4294967295 130 128 -98 104 105 127 4294967295 129 -98 105 108 128 134 82 -99 100 104 4294967295 133 127 -100 101 102 4294967295 4294967295 132 -100 102 103 131 4294967295 133 -100 103 104 132 4294967295 130 -105 106 108 4294967295 135 129 -106 107 108 4294967295 4294967295 134 -119 120 136 4294967295 139 28 -120 121 122 4294967295 4294967295 138 -120 122 125 137 140 139 -120 125 136 138 4294967295 136 -122 123 125 4294967295 43 138 -126 128 127 48 4294967295 4294967295 -128 130 129 49 4294967295 4294967295 -131 138 132 144 146 4294967295 -131 139 138 145 4294967295 143 -131 140 139 52 4294967295 144 -132 138 137 143 4294967295 18 -133 135 134 23 4294967295 4294967295 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_outer.txt b/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_outer.txt deleted file mode 100644 index b2bb878..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_outer.txt +++ /dev/null @@ -1,320 +0,0 @@ -169 -0 1 116 4294967295 2 4294967295 -1 2 115 4294967295 3 2 -1 115 116 1 4294967295 0 -2 3 115 4294967295 5 1 -3 4 114 4294967295 6 5 -3 114 115 4 4294967295 3 -4 5 114 4294967295 8 4 -5 6 113 4294967295 9 8 -5 113 114 7 4294967295 6 -6 7 113 4294967295 11 7 -7 8 112 4294967295 13 11 -7 112 113 10 4294967295 9 -8 9 143 4294967295 14 13 -8 143 112 12 67 10 -9 10 143 4294967295 16 12 -10 11 137 4294967295 18 16 -10 137 143 15 165 14 -11 12 132 4294967295 20 18 -11 132 137 17 162 15 -12 13 133 4294967295 23 20 -12 133 132 19 157 17 -13 14 15 4294967295 4294967295 22 -13 15 136 21 25 24 -13 135 133 24 163 19 -13 136 135 22 153 23 -15 16 136 4294967295 26 22 -16 17 136 4294967295 28 25 -17 18 119 4294967295 29 28 -17 119 136 27 139 26 -18 19 119 4294967295 31 27 -19 20 118 4294967295 33 31 -19 118 119 30 138 29 -20 21 117 4294967295 35 33 -20 117 118 32 136 30 -21 22 124 4294967295 37 35 -21 124 117 34 137 32 -22 23 123 4294967295 38 37 -22 123 124 36 145 34 -23 24 123 4294967295 39 36 -24 25 123 4294967295 40 38 -25 26 123 4294967295 41 39 -26 27 123 4294967295 43 40 -27 28 125 4294967295 44 43 -27 125 123 42 146 41 -28 29 125 4294967295 46 42 -29 30 126 4294967295 48 46 -29 126 125 45 147 44 -30 31 131 4294967295 52 50 -30 128 126 49 149 45 -30 130 128 50 154 48 -30 131 130 47 155 49 -31 32 140 4294967295 54 52 -31 140 131 51 161 47 -32 33 141 4294967295 57 54 -32 141 140 53 168 51 -33 34 41 4294967295 59 56 -33 41 42 55 4294967295 57 -33 42 141 56 65 53 -34 35 40 4294967295 60 59 -34 40 41 58 4294967295 55 -35 36 40 4294967295 62 58 -36 37 39 4294967295 63 62 -36 39 40 61 4294967295 60 -37 38 39 4294967295 4294967295 61 -42 43 142 4294967295 68 65 -42 142 141 64 168 57 -43 44 112 4294967295 70 67 -43 112 143 66 13 68 -43 143 142 67 165 64 -44 45 111 4294967295 73 70 -44 111 112 69 4294967295 66 -45 46 109 4294967295 75 72 -45 109 110 71 4294967295 73 -45 110 111 72 4294967295 69 -46 47 108 4294967295 76 75 -46 108 109 74 4294967295 71 -47 48 108 4294967295 82 74 -48 49 50 4294967295 4294967295 78 -48 50 89 77 87 79 -48 89 90 78 4294967295 80 -48 90 97 79 121 81 -48 97 98 80 4294967295 82 -48 98 108 81 129 76 -50 51 73 4294967295 91 84 -50 73 74 83 4294967295 85 -50 74 81 84 109 86 -50 81 82 85 4294967295 87 -50 82 89 86 115 78 -51 52 58 4294967295 92 89 -51 58 65 88 97 90 -51 65 66 89 4294967295 91 -51 66 73 90 104 83 -52 53 58 4294967295 93 88 -53 54 58 4294967295 95 92 -54 55 57 4294967295 96 95 -54 57 58 94 4294967295 93 -55 56 57 4294967295 4294967295 94 -58 59 65 4294967295 100 89 -59 60 63 4294967295 102 99 -59 63 64 98 4294967295 100 -59 64 65 99 4294967295 97 -60 61 62 4294967295 4294967295 102 -60 62 63 101 4294967295 98 -66 67 72 4294967295 105 104 -66 72 73 103 4294967295 91 -67 68 72 4294967295 107 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 105 -69 70 71 4294967295 4294967295 106 -74 75 81 4294967295 111 85 -75 76 80 4294967295 113 111 -75 80 81 110 4294967295 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 110 -77 78 79 4294967295 4294967295 112 -82 83 89 4294967295 118 87 -83 84 87 4294967295 119 117 -83 87 88 116 4294967295 118 -83 88 89 117 4294967295 115 -84 85 87 4294967295 120 116 -85 86 87 4294967295 4294967295 119 -90 91 97 4294967295 124 80 -91 92 95 4294967295 126 123 -91 95 96 122 4294967295 124 -91 96 97 123 4294967295 121 -92 93 94 4294967295 4294967295 126 -92 94 95 125 4294967295 122 -98 99 104 4294967295 130 128 -98 104 105 127 4294967295 129 -98 105 108 128 134 82 -99 100 104 4294967295 133 127 -100 101 102 4294967295 4294967295 132 -100 102 103 131 4294967295 133 -100 103 104 132 4294967295 130 -105 106 108 4294967295 135 129 -106 107 108 4294967295 4294967295 134 -117 121 118 137 138 33 -117 124 121 35 145 136 -118 121 119 136 140 31 -119 120 136 140 143 28 -119 121 120 138 141 139 -120 121 122 140 144 142 -120 122 125 141 146 143 -120 125 136 142 148 139 -121 123 122 145 146 141 -121 124 123 137 37 144 -122 123 125 144 43 142 -125 126 127 46 149 148 -125 127 136 147 153 143 -126 128 127 48 150 147 -127 128 129 149 154 151 -127 129 134 150 158 152 -127 134 135 151 163 153 -127 135 136 152 24 148 -128 130 129 49 155 150 -129 130 131 154 50 156 -129 131 132 155 159 157 -129 132 133 156 20 158 -129 133 134 157 163 151 -131 138 132 160 162 156 -131 139 138 161 166 159 -131 140 139 52 166 160 -132 138 137 159 164 18 -133 135 134 23 152 158 -137 138 142 162 167 165 -137 142 143 164 68 16 -138 139 140 160 161 167 -138 140 142 166 168 164 -140 141 142 54 65 167 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_super.txt b/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_super.txt deleted file mode 100644 index 2b20cee..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_auto_ignore_super.txt +++ /dev/null @@ -1,410 +0,0 @@ -259 -0 1 116 1 8 6 -0 102 1 2 4294967295 0 -0 106 102 3 215 1 -0 107 106 4 219 2 -0 108 107 5 219 3 -0 109 108 6 113 4 -0 116 109 0 222 5 -1 2 115 4294967295 9 8 -1 115 116 7 222 0 -2 3 115 10 14 7 -2 14 3 4294967295 13 9 -3 4 114 12 15 14 -3 13 4 13 16 11 -3 14 13 10 38 12 -3 114 115 11 221 9 -4 5 114 16 20 11 -4 13 5 12 19 15 -5 6 113 18 21 20 -5 12 6 19 23 17 -5 13 12 16 36 18 -5 113 114 17 224 15 -6 7 113 22 25 17 -6 8 7 23 24 21 -6 12 8 18 29 22 -7 8 112 22 30 25 -7 112 113 24 225 21 -8 9 143 27 31 30 -8 10 9 28 31 26 -8 11 10 29 32 27 -8 12 11 23 34 28 -8 143 112 26 103 24 -9 10 143 27 33 26 -10 11 137 28 35 33 -10 137 143 32 255 31 -11 12 132 29 37 35 -11 132 137 34 252 32 -12 13 133 19 40 37 -12 133 132 36 247 34 -13 14 15 13 4294967295 39 -13 15 136 38 42 41 -13 135 133 41 253 36 -13 136 135 39 243 40 -15 16 136 4294967295 43 39 -16 17 136 4294967295 45 42 -17 18 119 4294967295 46 45 -17 119 136 44 229 43 -18 19 119 4294967295 48 44 -19 20 118 4294967295 50 48 -19 118 119 47 228 46 -20 21 117 4294967295 52 50 -20 117 118 49 226 47 -21 22 124 4294967295 54 52 -21 124 117 51 227 49 -22 23 123 4294967295 55 54 -22 123 124 53 235 51 -23 24 123 4294967295 56 53 -24 25 123 4294967295 57 55 -25 26 123 4294967295 58 56 -26 27 123 4294967295 60 57 -27 28 125 4294967295 61 60 -27 125 123 59 236 58 -28 29 125 62 66 59 -28 37 29 4294967295 65 61 -29 30 126 64 70 66 -29 36 30 65 69 63 -29 37 36 62 86 64 -29 126 125 63 237 61 -30 31 131 68 76 72 -30 35 31 69 75 67 -30 36 35 64 85 68 -30 128 126 71 239 63 -30 130 128 72 244 70 -30 131 130 67 245 71 -31 32 140 74 79 76 -31 34 32 75 78 73 -31 35 34 68 83 74 -31 140 131 73 251 67 -32 33 141 78 82 79 -32 34 33 74 80 77 -32 141 140 77 258 73 -33 34 41 78 84 81 -33 41 42 80 98 82 -33 42 141 81 101 77 -34 35 40 75 85 84 -34 40 41 83 96 80 -35 36 40 69 87 83 -36 37 39 65 88 87 -36 39 40 86 95 85 -37 38 39 89 91 86 -37 52 38 90 94 88 -37 53 52 4294967295 132 89 -38 45 39 92 95 88 -38 46 45 93 107 91 -38 49 46 94 112 92 -38 52 49 89 121 93 -39 45 40 91 97 87 -40 44 41 97 98 84 -40 45 44 95 105 96 -41 44 42 96 100 81 -42 43 142 100 104 101 -42 44 43 98 102 99 -42 142 141 99 258 82 -43 44 112 100 106 103 -43 112 143 102 30 104 -43 143 142 103 255 99 -44 45 111 97 109 106 -44 111 112 105 225 102 -45 46 109 92 113 108 -45 109 110 107 220 109 -45 110 111 108 223 105 -46 47 108 111 114 113 -46 48 47 112 114 110 -46 49 48 93 115 111 -46 108 109 110 5 107 -47 48 108 111 120 110 -48 49 50 112 121 116 -48 50 89 115 127 117 -48 89 90 116 193 118 -48 90 97 117 194 119 -48 97 98 118 206 120 -48 98 108 119 210 114 -49 52 50 94 123 115 -50 51 73 123 131 124 -50 52 51 121 128 122 -50 73 74 122 167 125 -50 74 81 124 168 126 -50 81 82 125 180 127 -50 82 89 126 181 116 -51 52 58 123 132 129 -51 58 65 128 139 130 -51 65 66 129 153 131 -51 66 73 130 155 122 -52 53 58 90 133 128 -53 54 58 4294967295 135 132 -54 55 57 4294967295 136 135 -54 57 58 134 137 133 -55 56 57 4294967295 4294967295 134 -57 60 58 138 140 135 -57 61 60 4294967295 144 137 -58 59 65 140 143 129 -58 60 59 137 141 139 -59 60 63 140 145 142 -59 63 64 141 149 143 -59 64 65 142 152 139 -60 61 62 138 146 145 -60 62 63 144 147 141 -61 70 62 4294967295 148 144 -62 69 63 148 151 145 -62 70 69 146 159 147 -63 67 64 150 152 142 -63 68 67 151 156 149 -63 69 68 147 157 150 -64 67 65 149 153 143 -65 67 66 152 154 130 -66 67 72 153 156 155 -66 72 73 154 165 131 -67 68 72 150 158 154 -68 69 71 151 159 158 -68 71 72 157 163 156 -69 70 71 148 160 157 -70 77 71 161 164 159 -70 85 77 162 174 160 -70 93 85 4294967295 187 161 -71 76 72 164 166 158 -71 77 76 160 171 163 -72 75 73 166 167 155 -72 76 75 163 169 165 -73 75 74 165 168 124 -74 75 81 167 170 125 -75 76 80 166 172 170 -75 80 81 169 178 168 -76 77 79 164 173 172 -76 79 80 171 177 169 -77 78 79 174 175 171 -77 85 78 161 176 173 -78 84 79 176 177 173 -78 85 84 174 185 175 -79 84 80 175 179 172 -80 83 81 179 180 170 -80 84 83 177 182 178 -81 83 82 178 181 126 -82 83 89 180 184 127 -83 84 87 179 185 183 -83 87 88 182 190 184 -83 88 89 183 191 181 -84 85 87 176 186 182 -85 86 87 187 188 185 -85 93 86 162 189 186 -86 92 87 189 190 186 -86 93 92 187 198 188 -87 92 88 188 192 183 -88 91 89 192 193 184 -88 92 91 190 195 191 -89 91 90 191 194 117 -90 91 97 193 197 118 -91 92 95 192 199 196 -91 95 96 195 203 197 -91 96 97 196 206 194 -92 93 94 189 200 199 -92 94 95 198 201 195 -93 102 94 4294967295 202 198 -94 101 95 202 205 199 -94 102 101 200 212 201 -95 99 96 204 207 196 -95 100 99 205 211 203 -95 101 100 201 212 204 -96 98 97 207 119 197 -96 99 98 203 208 206 -98 99 104 207 211 209 -98 104 105 208 217 210 -98 105 108 209 218 120 -99 100 104 204 214 208 -100 101 102 205 202 213 -100 102 103 212 215 214 -100 103 104 213 216 211 -102 106 103 2 216 213 -103 106 104 215 217 214 -104 106 105 216 218 209 -105 106 108 217 219 210 -106 107 108 3 4 218 -109 114 110 221 224 108 -109 115 114 222 14 220 -109 116 115 6 8 221 -110 113 111 224 225 109 -110 114 113 220 20 223 -111 113 112 223 25 106 -117 121 118 227 228 50 -117 124 121 52 235 226 -118 121 119 226 230 48 -119 120 136 230 233 45 -119 121 120 228 231 229 -120 121 122 230 234 232 -120 122 125 231 236 233 -120 125 136 232 238 229 -121 123 122 235 236 231 -121 124 123 227 54 234 -122 123 125 234 60 232 -125 126 127 66 239 238 -125 127 136 237 243 233 -126 128 127 70 240 237 -127 128 129 239 244 241 -127 129 134 240 248 242 -127 134 135 241 253 243 -127 135 136 242 41 238 -128 130 129 71 245 240 -129 130 131 244 72 246 -129 131 132 245 249 247 -129 132 133 246 37 248 -129 133 134 247 253 241 -131 138 132 250 252 246 -131 139 138 251 256 249 -131 140 139 76 256 250 -132 138 137 249 254 35 -133 135 134 40 242 248 -137 138 142 252 257 255 -137 142 143 254 104 33 -138 139 140 250 251 257 -138 140 142 256 258 254 -140 141 142 79 101 257 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_all.txt b/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_all.txt deleted file mode 100644 index 760fbe3..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_all.txt +++ /dev/null @@ -1,440 +0,0 @@ -289 -0 1 56 4294967295 15 13 -0 21 2 2 26 4294967295 -0 22 21 3 76 1 -0 23 22 4 77 2 -0 24 23 5 79 3 -0 25 24 6 81 4 -0 26 25 7 83 5 -0 27 26 8 85 6 -0 28 27 9 86 7 -0 29 28 10 87 8 -0 30 29 11 88 9 -0 31 30 12 89 10 -0 40 31 13 92 11 -0 56 40 0 120 12 -1 2 64 4294967295 27 19 -1 57 56 16 163 0 -1 58 57 17 164 15 -1 59 58 18 166 16 -1 60 59 19 166 17 -1 64 60 14 168 18 -2 4 105 21 31 29 -2 5 4 22 37 20 -2 17 5 23 40 21 -2 18 17 24 68 22 -2 19 18 25 72 23 -2 20 19 26 73 24 -2 21 20 1 74 25 -2 73 64 28 176 14 -2 96 73 29 192 27 -2 105 96 20 230 28 -3 4 119 31 38 36 -3 105 4 32 20 30 -3 109 105 33 245 31 -3 110 109 34 249 32 -3 111 110 35 249 33 -3 112 111 36 143 34 -3 119 112 30 252 35 -4 5 118 21 39 38 -4 118 119 37 252 30 -5 6 118 40 44 37 -5 17 6 22 43 39 -6 7 117 42 45 44 -6 16 7 43 46 41 -6 17 16 40 68 42 -6 117 118 41 251 39 -7 8 117 46 50 41 -7 16 8 42 49 45 -8 9 116 48 51 50 -8 15 9 49 53 47 -8 16 15 46 66 48 -8 116 117 47 254 45 -9 10 116 52 55 47 -9 11 10 53 54 51 -9 15 11 48 59 52 -10 11 115 52 60 55 -10 115 116 54 255 51 -11 12 146 57 61 60 -11 13 12 58 61 56 -11 14 13 59 62 57 -11 15 14 53 64 58 -11 146 115 56 133 54 -12 13 146 57 63 56 -13 14 140 58 65 63 -13 140 146 62 285 61 -14 15 135 59 67 65 -14 135 140 64 282 62 -15 16 136 49 70 67 -15 136 135 66 277 64 -16 17 18 43 23 69 -16 18 139 68 72 71 -16 138 136 71 283 66 -16 139 138 69 273 70 -18 19 139 24 73 69 -19 20 139 25 75 72 -20 21 122 26 76 75 -20 122 139 74 259 73 -21 22 122 2 78 74 -22 23 121 3 80 78 -22 121 122 77 258 76 -23 24 120 4 82 80 -23 120 121 79 256 77 -24 25 127 5 84 82 -24 127 120 81 257 79 -25 26 126 6 85 84 -25 126 127 83 265 81 -26 27 126 7 86 83 -27 28 126 8 87 85 -28 29 126 9 88 86 -29 30 126 10 90 87 -30 31 128 11 91 90 -30 128 126 89 266 88 -31 32 128 92 96 89 -31 40 32 12 95 91 -32 33 129 94 100 96 -32 39 33 95 99 93 -32 40 39 92 116 94 -32 129 128 93 267 91 -33 34 134 98 106 102 -33 38 34 99 105 97 -33 39 38 94 115 98 -33 131 129 101 269 93 -33 133 131 102 274 100 -33 134 133 97 275 101 -34 35 143 104 109 106 -34 37 35 105 108 103 -34 38 37 98 113 104 -34 143 134 103 281 97 -35 36 144 108 112 109 -35 37 36 104 110 107 -35 144 143 107 288 103 -36 37 44 108 114 111 -36 44 45 110 128 112 -36 45 144 111 131 107 -37 38 43 105 115 114 -37 43 44 113 126 110 -38 39 43 99 117 113 -39 40 42 95 118 117 -39 42 43 116 125 115 -40 41 42 119 121 116 -40 55 41 120 124 118 -40 56 55 13 162 119 -41 48 42 122 125 118 -41 49 48 123 137 121 -41 52 49 124 142 122 -41 55 52 119 151 123 -42 48 43 121 127 117 -43 47 44 127 128 114 -43 48 47 125 135 126 -44 47 45 126 130 111 -45 46 145 130 134 131 -45 47 46 128 132 129 -45 145 144 129 288 112 -46 47 115 130 136 133 -46 115 146 132 60 134 -46 146 145 133 285 129 -47 48 114 127 139 136 -47 114 115 135 255 132 -48 49 112 122 143 138 -48 112 113 137 250 139 -48 113 114 138 253 135 -49 50 111 141 144 143 -49 51 50 142 144 140 -49 52 51 123 145 141 -49 111 112 140 35 137 -50 51 111 141 150 140 -51 52 53 142 151 146 -51 53 92 145 157 147 -51 92 93 146 223 148 -51 93 100 147 224 149 -51 100 101 148 236 150 -51 101 111 149 240 144 -52 55 53 124 153 145 -53 54 76 153 161 154 -53 55 54 151 158 152 -53 76 77 152 197 155 -53 77 84 154 198 156 -53 84 85 155 210 157 -53 85 92 156 211 146 -54 55 61 153 162 159 -54 61 68 158 169 160 -54 68 69 159 183 161 -54 69 76 160 185 152 -55 56 61 120 163 158 -56 57 61 15 165 162 -57 58 60 16 166 165 -57 60 61 164 167 163 -58 59 60 17 18 164 -60 63 61 168 170 165 -60 64 63 19 174 167 -61 62 68 170 173 159 -61 63 62 167 171 169 -62 63 66 170 175 172 -62 66 67 171 179 173 -62 67 68 172 182 169 -63 64 65 168 176 175 -63 65 66 174 177 171 -64 73 65 27 178 174 -65 72 66 178 181 175 -65 73 72 176 189 177 -66 70 67 180 182 172 -66 71 70 181 186 179 -66 72 71 177 187 180 -67 70 68 179 183 173 -68 70 69 182 184 160 -69 70 75 183 186 185 -69 75 76 184 195 161 -70 71 75 180 188 184 -71 72 74 181 189 188 -71 74 75 187 193 186 -72 73 74 178 190 187 -73 80 74 191 194 189 -73 88 80 192 204 190 -73 96 88 28 217 191 -74 79 75 194 196 188 -74 80 79 190 201 193 -75 78 76 196 197 185 -75 79 78 193 199 195 -76 78 77 195 198 154 -77 78 84 197 200 155 -78 79 83 196 202 200 -78 83 84 199 208 198 -79 80 82 194 203 202 -79 82 83 201 207 199 -80 81 82 204 205 201 -80 88 81 191 206 203 -81 87 82 206 207 203 -81 88 87 204 215 205 -82 87 83 205 209 202 -83 86 84 209 210 200 -83 87 86 207 212 208 -84 86 85 208 211 156 -85 86 92 210 214 157 -86 87 90 209 215 213 -86 90 91 212 220 214 -86 91 92 213 221 211 -87 88 90 206 216 212 -88 89 90 217 218 215 -88 96 89 192 219 216 -89 95 90 219 220 216 -89 96 95 217 228 218 -90 95 91 218 222 213 -91 94 92 222 223 214 -91 95 94 220 225 221 -92 94 93 221 224 147 -93 94 100 223 227 148 -94 95 98 222 229 226 -94 98 99 225 233 227 -94 99 100 226 236 224 -95 96 97 219 230 229 -95 97 98 228 231 225 -96 105 97 29 232 228 -97 104 98 232 235 229 -97 105 104 230 242 231 -98 102 99 234 237 226 -98 103 102 235 241 233 -98 104 103 231 242 234 -99 101 100 237 149 227 -99 102 101 233 238 236 -101 102 107 237 241 239 -101 107 108 238 247 240 -101 108 111 239 248 150 -102 103 107 234 244 238 -103 104 105 235 232 243 -103 105 106 242 245 244 -103 106 107 243 246 241 -105 109 106 32 246 243 -106 109 107 245 247 244 -107 109 108 246 248 239 -108 109 111 247 249 240 -109 110 111 33 34 248 -112 117 113 251 254 138 -112 118 117 252 44 250 -112 119 118 36 38 251 -113 116 114 254 255 139 -113 117 116 250 50 253 -114 116 115 253 55 136 -120 124 121 257 258 80 -120 127 124 82 265 256 -121 124 122 256 260 78 -122 123 139 260 263 75 -122 124 123 258 261 259 -123 124 125 260 264 262 -123 125 128 261 266 263 -123 128 139 262 268 259 -124 126 125 265 266 261 -124 127 126 257 84 264 -125 126 128 264 90 262 -128 129 130 96 269 268 -128 130 139 267 273 263 -129 131 130 100 270 267 -130 131 132 269 274 271 -130 132 137 270 278 272 -130 137 138 271 283 273 -130 138 139 272 71 268 -131 133 132 101 275 270 -132 133 134 274 102 276 -132 134 135 275 279 277 -132 135 136 276 67 278 -132 136 137 277 283 271 -134 141 135 280 282 276 -134 142 141 281 286 279 -134 143 142 106 286 280 -135 141 140 279 284 65 -136 138 137 70 272 278 -140 141 145 282 287 285 -140 145 146 284 134 63 -141 142 143 280 281 287 -141 143 145 286 288 284 -143 144 145 109 131 287 - -144 -3 4 -3 119 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -116 117 -117 118 -118 119 -120 121 -120 127 -121 122 -122 123 -123 124 -124 125 -125 126 -126 127 -128 129 -128 139 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -136 137 -137 138 -138 139 -140 141 -140 146 -141 142 -142 143 -143 144 -144 145 -145 146 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_auto.txt b/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_auto.txt deleted file mode 100644 index bc5ce56..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_auto.txt +++ /dev/null @@ -1,299 +0,0 @@ -148 -0 1 116 4294967295 2 4294967295 -1 2 115 4294967295 3 2 -1 115 116 1 4294967295 0 -2 3 115 4294967295 5 1 -3 4 114 4294967295 6 5 -3 114 115 4 4294967295 3 -4 5 114 4294967295 8 4 -5 6 113 4294967295 9 8 -5 113 114 7 4294967295 6 -6 7 113 4294967295 11 7 -7 8 112 4294967295 13 11 -7 112 113 10 4294967295 9 -8 9 143 4294967295 14 13 -8 143 112 12 67 10 -9 10 143 4294967295 16 12 -10 11 137 4294967295 18 16 -10 137 143 15 4294967295 14 -11 12 132 4294967295 20 18 -11 132 137 17 146 15 -12 13 133 4294967295 23 20 -12 133 132 19 4294967295 17 -13 14 15 4294967295 4294967295 22 -13 15 136 21 25 24 -13 135 133 24 147 19 -13 136 135 22 4294967295 23 -15 16 136 4294967295 26 22 -16 17 136 4294967295 28 25 -17 18 119 4294967295 29 28 -17 119 136 27 136 26 -18 19 119 4294967295 31 27 -19 20 118 4294967295 33 31 -19 118 119 30 4294967295 29 -20 21 117 4294967295 35 33 -20 117 118 32 4294967295 30 -21 22 124 4294967295 37 35 -21 124 117 34 4294967295 32 -22 23 123 4294967295 38 37 -22 123 124 36 4294967295 34 -23 24 123 4294967295 39 36 -24 25 123 4294967295 40 38 -25 26 123 4294967295 41 39 -26 27 123 4294967295 43 40 -27 28 125 4294967295 44 43 -27 125 123 42 140 41 -28 29 125 4294967295 46 42 -29 30 126 4294967295 48 46 -29 126 125 45 4294967295 44 -30 31 131 4294967295 52 50 -30 128 126 49 141 45 -30 130 128 50 142 48 -30 131 130 47 4294967295 49 -31 32 140 4294967295 54 52 -31 140 131 51 145 47 -32 33 141 4294967295 57 54 -32 141 140 53 4294967295 51 -33 34 41 4294967295 59 56 -33 41 42 55 4294967295 57 -33 42 141 56 65 53 -34 35 40 4294967295 60 59 -34 40 41 58 4294967295 55 -35 36 40 4294967295 62 58 -36 37 39 4294967295 63 62 -36 39 40 61 4294967295 60 -37 38 39 4294967295 4294967295 61 -42 43 142 4294967295 68 65 -42 142 141 64 4294967295 57 -43 44 112 4294967295 70 67 -43 112 143 66 13 68 -43 143 142 67 4294967295 64 -44 45 111 4294967295 73 70 -44 111 112 69 4294967295 66 -45 46 109 4294967295 75 72 -45 109 110 71 4294967295 73 -45 110 111 72 4294967295 69 -46 47 108 4294967295 76 75 -46 108 109 74 4294967295 71 -47 48 108 4294967295 82 74 -48 49 50 4294967295 4294967295 78 -48 50 89 77 87 79 -48 89 90 78 4294967295 80 -48 90 97 79 121 81 -48 97 98 80 4294967295 82 -48 98 108 81 129 76 -50 51 73 4294967295 91 84 -50 73 74 83 4294967295 85 -50 74 81 84 109 86 -50 81 82 85 4294967295 87 -50 82 89 86 115 78 -51 52 58 4294967295 92 89 -51 58 65 88 97 90 -51 65 66 89 4294967295 91 -51 66 73 90 104 83 -52 53 58 4294967295 93 88 -53 54 58 4294967295 95 92 -54 55 57 4294967295 96 95 -54 57 58 94 4294967295 93 -55 56 57 4294967295 4294967295 94 -58 59 65 4294967295 100 89 -59 60 63 4294967295 102 99 -59 63 64 98 4294967295 100 -59 64 65 99 4294967295 97 -60 61 62 4294967295 4294967295 102 -60 62 63 101 4294967295 98 -66 67 72 4294967295 105 104 -66 72 73 103 4294967295 91 -67 68 72 4294967295 107 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 105 -69 70 71 4294967295 4294967295 106 -74 75 81 4294967295 111 85 -75 76 80 4294967295 113 111 -75 80 81 110 4294967295 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 110 -77 78 79 4294967295 4294967295 112 -82 83 89 4294967295 118 87 -83 84 87 4294967295 119 117 -83 87 88 116 4294967295 118 -83 88 89 117 4294967295 115 -84 85 87 4294967295 120 116 -85 86 87 4294967295 4294967295 119 -90 91 97 4294967295 124 80 -91 92 95 4294967295 126 123 -91 95 96 122 4294967295 124 -91 96 97 123 4294967295 121 -92 93 94 4294967295 4294967295 126 -92 94 95 125 4294967295 122 -98 99 104 4294967295 130 128 -98 104 105 127 4294967295 129 -98 105 108 128 134 82 -99 100 104 4294967295 133 127 -100 101 102 4294967295 4294967295 132 -100 102 103 131 4294967295 133 -100 103 104 132 4294967295 130 -105 106 108 4294967295 135 129 -106 107 108 4294967295 4294967295 134 -119 120 136 4294967295 139 28 -120 121 122 4294967295 4294967295 138 -120 122 125 137 140 139 -120 125 136 138 4294967295 136 -122 123 125 4294967295 43 138 -126 128 127 48 4294967295 4294967295 -128 130 129 49 4294967295 4294967295 -131 138 132 144 146 4294967295 -131 139 138 145 4294967295 143 -131 140 139 52 4294967295 144 -132 138 137 143 4294967295 18 -133 135 134 23 4294967295 4294967295 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_outer.txt b/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_outer.txt deleted file mode 100644 index b2bb878..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_outer.txt +++ /dev/null @@ -1,320 +0,0 @@ -169 -0 1 116 4294967295 2 4294967295 -1 2 115 4294967295 3 2 -1 115 116 1 4294967295 0 -2 3 115 4294967295 5 1 -3 4 114 4294967295 6 5 -3 114 115 4 4294967295 3 -4 5 114 4294967295 8 4 -5 6 113 4294967295 9 8 -5 113 114 7 4294967295 6 -6 7 113 4294967295 11 7 -7 8 112 4294967295 13 11 -7 112 113 10 4294967295 9 -8 9 143 4294967295 14 13 -8 143 112 12 67 10 -9 10 143 4294967295 16 12 -10 11 137 4294967295 18 16 -10 137 143 15 165 14 -11 12 132 4294967295 20 18 -11 132 137 17 162 15 -12 13 133 4294967295 23 20 -12 133 132 19 157 17 -13 14 15 4294967295 4294967295 22 -13 15 136 21 25 24 -13 135 133 24 163 19 -13 136 135 22 153 23 -15 16 136 4294967295 26 22 -16 17 136 4294967295 28 25 -17 18 119 4294967295 29 28 -17 119 136 27 139 26 -18 19 119 4294967295 31 27 -19 20 118 4294967295 33 31 -19 118 119 30 138 29 -20 21 117 4294967295 35 33 -20 117 118 32 136 30 -21 22 124 4294967295 37 35 -21 124 117 34 137 32 -22 23 123 4294967295 38 37 -22 123 124 36 145 34 -23 24 123 4294967295 39 36 -24 25 123 4294967295 40 38 -25 26 123 4294967295 41 39 -26 27 123 4294967295 43 40 -27 28 125 4294967295 44 43 -27 125 123 42 146 41 -28 29 125 4294967295 46 42 -29 30 126 4294967295 48 46 -29 126 125 45 147 44 -30 31 131 4294967295 52 50 -30 128 126 49 149 45 -30 130 128 50 154 48 -30 131 130 47 155 49 -31 32 140 4294967295 54 52 -31 140 131 51 161 47 -32 33 141 4294967295 57 54 -32 141 140 53 168 51 -33 34 41 4294967295 59 56 -33 41 42 55 4294967295 57 -33 42 141 56 65 53 -34 35 40 4294967295 60 59 -34 40 41 58 4294967295 55 -35 36 40 4294967295 62 58 -36 37 39 4294967295 63 62 -36 39 40 61 4294967295 60 -37 38 39 4294967295 4294967295 61 -42 43 142 4294967295 68 65 -42 142 141 64 168 57 -43 44 112 4294967295 70 67 -43 112 143 66 13 68 -43 143 142 67 165 64 -44 45 111 4294967295 73 70 -44 111 112 69 4294967295 66 -45 46 109 4294967295 75 72 -45 109 110 71 4294967295 73 -45 110 111 72 4294967295 69 -46 47 108 4294967295 76 75 -46 108 109 74 4294967295 71 -47 48 108 4294967295 82 74 -48 49 50 4294967295 4294967295 78 -48 50 89 77 87 79 -48 89 90 78 4294967295 80 -48 90 97 79 121 81 -48 97 98 80 4294967295 82 -48 98 108 81 129 76 -50 51 73 4294967295 91 84 -50 73 74 83 4294967295 85 -50 74 81 84 109 86 -50 81 82 85 4294967295 87 -50 82 89 86 115 78 -51 52 58 4294967295 92 89 -51 58 65 88 97 90 -51 65 66 89 4294967295 91 -51 66 73 90 104 83 -52 53 58 4294967295 93 88 -53 54 58 4294967295 95 92 -54 55 57 4294967295 96 95 -54 57 58 94 4294967295 93 -55 56 57 4294967295 4294967295 94 -58 59 65 4294967295 100 89 -59 60 63 4294967295 102 99 -59 63 64 98 4294967295 100 -59 64 65 99 4294967295 97 -60 61 62 4294967295 4294967295 102 -60 62 63 101 4294967295 98 -66 67 72 4294967295 105 104 -66 72 73 103 4294967295 91 -67 68 72 4294967295 107 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 105 -69 70 71 4294967295 4294967295 106 -74 75 81 4294967295 111 85 -75 76 80 4294967295 113 111 -75 80 81 110 4294967295 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 110 -77 78 79 4294967295 4294967295 112 -82 83 89 4294967295 118 87 -83 84 87 4294967295 119 117 -83 87 88 116 4294967295 118 -83 88 89 117 4294967295 115 -84 85 87 4294967295 120 116 -85 86 87 4294967295 4294967295 119 -90 91 97 4294967295 124 80 -91 92 95 4294967295 126 123 -91 95 96 122 4294967295 124 -91 96 97 123 4294967295 121 -92 93 94 4294967295 4294967295 126 -92 94 95 125 4294967295 122 -98 99 104 4294967295 130 128 -98 104 105 127 4294967295 129 -98 105 108 128 134 82 -99 100 104 4294967295 133 127 -100 101 102 4294967295 4294967295 132 -100 102 103 131 4294967295 133 -100 103 104 132 4294967295 130 -105 106 108 4294967295 135 129 -106 107 108 4294967295 4294967295 134 -117 121 118 137 138 33 -117 124 121 35 145 136 -118 121 119 136 140 31 -119 120 136 140 143 28 -119 121 120 138 141 139 -120 121 122 140 144 142 -120 122 125 141 146 143 -120 125 136 142 148 139 -121 123 122 145 146 141 -121 124 123 137 37 144 -122 123 125 144 43 142 -125 126 127 46 149 148 -125 127 136 147 153 143 -126 128 127 48 150 147 -127 128 129 149 154 151 -127 129 134 150 158 152 -127 134 135 151 163 153 -127 135 136 152 24 148 -128 130 129 49 155 150 -129 130 131 154 50 156 -129 131 132 155 159 157 -129 132 133 156 20 158 -129 133 134 157 163 151 -131 138 132 160 162 156 -131 139 138 161 166 159 -131 140 139 52 166 160 -132 138 137 159 164 18 -133 135 134 23 152 158 -137 138 142 162 167 165 -137 142 143 164 68 16 -138 139 140 160 161 167 -138 140 142 166 168 164 -140 141 142 54 65 167 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_super.txt b/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_super.txt deleted file mode 100644 index 2b20cee..0000000 --- a/test/CDT.Tests/expected/guitar no box__f32_auto_resolve_super.txt +++ /dev/null @@ -1,410 +0,0 @@ -259 -0 1 116 1 8 6 -0 102 1 2 4294967295 0 -0 106 102 3 215 1 -0 107 106 4 219 2 -0 108 107 5 219 3 -0 109 108 6 113 4 -0 116 109 0 222 5 -1 2 115 4294967295 9 8 -1 115 116 7 222 0 -2 3 115 10 14 7 -2 14 3 4294967295 13 9 -3 4 114 12 15 14 -3 13 4 13 16 11 -3 14 13 10 38 12 -3 114 115 11 221 9 -4 5 114 16 20 11 -4 13 5 12 19 15 -5 6 113 18 21 20 -5 12 6 19 23 17 -5 13 12 16 36 18 -5 113 114 17 224 15 -6 7 113 22 25 17 -6 8 7 23 24 21 -6 12 8 18 29 22 -7 8 112 22 30 25 -7 112 113 24 225 21 -8 9 143 27 31 30 -8 10 9 28 31 26 -8 11 10 29 32 27 -8 12 11 23 34 28 -8 143 112 26 103 24 -9 10 143 27 33 26 -10 11 137 28 35 33 -10 137 143 32 255 31 -11 12 132 29 37 35 -11 132 137 34 252 32 -12 13 133 19 40 37 -12 133 132 36 247 34 -13 14 15 13 4294967295 39 -13 15 136 38 42 41 -13 135 133 41 253 36 -13 136 135 39 243 40 -15 16 136 4294967295 43 39 -16 17 136 4294967295 45 42 -17 18 119 4294967295 46 45 -17 119 136 44 229 43 -18 19 119 4294967295 48 44 -19 20 118 4294967295 50 48 -19 118 119 47 228 46 -20 21 117 4294967295 52 50 -20 117 118 49 226 47 -21 22 124 4294967295 54 52 -21 124 117 51 227 49 -22 23 123 4294967295 55 54 -22 123 124 53 235 51 -23 24 123 4294967295 56 53 -24 25 123 4294967295 57 55 -25 26 123 4294967295 58 56 -26 27 123 4294967295 60 57 -27 28 125 4294967295 61 60 -27 125 123 59 236 58 -28 29 125 62 66 59 -28 37 29 4294967295 65 61 -29 30 126 64 70 66 -29 36 30 65 69 63 -29 37 36 62 86 64 -29 126 125 63 237 61 -30 31 131 68 76 72 -30 35 31 69 75 67 -30 36 35 64 85 68 -30 128 126 71 239 63 -30 130 128 72 244 70 -30 131 130 67 245 71 -31 32 140 74 79 76 -31 34 32 75 78 73 -31 35 34 68 83 74 -31 140 131 73 251 67 -32 33 141 78 82 79 -32 34 33 74 80 77 -32 141 140 77 258 73 -33 34 41 78 84 81 -33 41 42 80 98 82 -33 42 141 81 101 77 -34 35 40 75 85 84 -34 40 41 83 96 80 -35 36 40 69 87 83 -36 37 39 65 88 87 -36 39 40 86 95 85 -37 38 39 89 91 86 -37 52 38 90 94 88 -37 53 52 4294967295 132 89 -38 45 39 92 95 88 -38 46 45 93 107 91 -38 49 46 94 112 92 -38 52 49 89 121 93 -39 45 40 91 97 87 -40 44 41 97 98 84 -40 45 44 95 105 96 -41 44 42 96 100 81 -42 43 142 100 104 101 -42 44 43 98 102 99 -42 142 141 99 258 82 -43 44 112 100 106 103 -43 112 143 102 30 104 -43 143 142 103 255 99 -44 45 111 97 109 106 -44 111 112 105 225 102 -45 46 109 92 113 108 -45 109 110 107 220 109 -45 110 111 108 223 105 -46 47 108 111 114 113 -46 48 47 112 114 110 -46 49 48 93 115 111 -46 108 109 110 5 107 -47 48 108 111 120 110 -48 49 50 112 121 116 -48 50 89 115 127 117 -48 89 90 116 193 118 -48 90 97 117 194 119 -48 97 98 118 206 120 -48 98 108 119 210 114 -49 52 50 94 123 115 -50 51 73 123 131 124 -50 52 51 121 128 122 -50 73 74 122 167 125 -50 74 81 124 168 126 -50 81 82 125 180 127 -50 82 89 126 181 116 -51 52 58 123 132 129 -51 58 65 128 139 130 -51 65 66 129 153 131 -51 66 73 130 155 122 -52 53 58 90 133 128 -53 54 58 4294967295 135 132 -54 55 57 4294967295 136 135 -54 57 58 134 137 133 -55 56 57 4294967295 4294967295 134 -57 60 58 138 140 135 -57 61 60 4294967295 144 137 -58 59 65 140 143 129 -58 60 59 137 141 139 -59 60 63 140 145 142 -59 63 64 141 149 143 -59 64 65 142 152 139 -60 61 62 138 146 145 -60 62 63 144 147 141 -61 70 62 4294967295 148 144 -62 69 63 148 151 145 -62 70 69 146 159 147 -63 67 64 150 152 142 -63 68 67 151 156 149 -63 69 68 147 157 150 -64 67 65 149 153 143 -65 67 66 152 154 130 -66 67 72 153 156 155 -66 72 73 154 165 131 -67 68 72 150 158 154 -68 69 71 151 159 158 -68 71 72 157 163 156 -69 70 71 148 160 157 -70 77 71 161 164 159 -70 85 77 162 174 160 -70 93 85 4294967295 187 161 -71 76 72 164 166 158 -71 77 76 160 171 163 -72 75 73 166 167 155 -72 76 75 163 169 165 -73 75 74 165 168 124 -74 75 81 167 170 125 -75 76 80 166 172 170 -75 80 81 169 178 168 -76 77 79 164 173 172 -76 79 80 171 177 169 -77 78 79 174 175 171 -77 85 78 161 176 173 -78 84 79 176 177 173 -78 85 84 174 185 175 -79 84 80 175 179 172 -80 83 81 179 180 170 -80 84 83 177 182 178 -81 83 82 178 181 126 -82 83 89 180 184 127 -83 84 87 179 185 183 -83 87 88 182 190 184 -83 88 89 183 191 181 -84 85 87 176 186 182 -85 86 87 187 188 185 -85 93 86 162 189 186 -86 92 87 189 190 186 -86 93 92 187 198 188 -87 92 88 188 192 183 -88 91 89 192 193 184 -88 92 91 190 195 191 -89 91 90 191 194 117 -90 91 97 193 197 118 -91 92 95 192 199 196 -91 95 96 195 203 197 -91 96 97 196 206 194 -92 93 94 189 200 199 -92 94 95 198 201 195 -93 102 94 4294967295 202 198 -94 101 95 202 205 199 -94 102 101 200 212 201 -95 99 96 204 207 196 -95 100 99 205 211 203 -95 101 100 201 212 204 -96 98 97 207 119 197 -96 99 98 203 208 206 -98 99 104 207 211 209 -98 104 105 208 217 210 -98 105 108 209 218 120 -99 100 104 204 214 208 -100 101 102 205 202 213 -100 102 103 212 215 214 -100 103 104 213 216 211 -102 106 103 2 216 213 -103 106 104 215 217 214 -104 106 105 216 218 209 -105 106 108 217 219 210 -106 107 108 3 4 218 -109 114 110 221 224 108 -109 115 114 222 14 220 -109 116 115 6 8 221 -110 113 111 224 225 109 -110 114 113 220 20 223 -111 113 112 223 25 106 -117 121 118 227 228 50 -117 124 121 52 235 226 -118 121 119 226 230 48 -119 120 136 230 233 45 -119 121 120 228 231 229 -120 121 122 230 234 232 -120 122 125 231 236 233 -120 125 136 232 238 229 -121 123 122 235 236 231 -121 124 123 227 54 234 -122 123 125 234 60 232 -125 126 127 66 239 238 -125 127 136 237 243 233 -126 128 127 70 240 237 -127 128 129 239 244 241 -127 129 134 240 248 242 -127 134 135 241 253 243 -127 135 136 242 41 238 -128 130 129 71 245 240 -129 130 131 244 72 246 -129 131 132 245 249 247 -129 132 133 246 37 248 -129 133 134 247 253 241 -131 138 132 250 252 246 -131 139 138 251 256 249 -131 140 139 76 256 250 -132 138 137 249 254 35 -133 135 134 40 242 248 -137 138 142 252 257 255 -137 142 143 254 104 33 -138 139 140 250 251 257 -138 140 142 256 258 254 -140 141 142 79 101 257 - -144 -0 1 -0 116 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -117 118 -117 124 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -125 126 -125 136 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -137 138 -137 143 -138 139 -139 140 -140 141 -141 142 -142 143 - -0 - -0 diff --git a/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_all.txt b/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_all.txt index ffb846b..479fce4 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_all.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_all.txt @@ -1,293 +1,293 @@ 289 0 1 57 4294967295 13 11 0 24 2 2 26 4294967295 -0 25 24 3 83 1 -0 26 25 4 85 2 -0 27 26 5 87 3 -0 28 27 6 88 4 -0 29 28 7 89 5 -0 30 29 8 90 6 -0 31 30 9 91 7 -0 40 31 10 94 8 -0 56 40 11 122 9 -0 57 56 0 165 10 +0 25 24 3 89 1 +0 26 25 4 91 2 +0 27 26 5 93 3 +0 28 27 6 94 4 +0 29 28 7 95 5 +0 30 29 8 96 6 +0 31 30 9 97 7 +0 40 31 10 100 8 +0 56 40 11 128 9 +0 57 56 0 171 10 1 2 64 4294967295 27 16 -1 58 57 14 166 0 -1 59 58 15 168 13 -1 60 59 16 168 14 -1 64 60 12 170 15 -2 4 105 18 33 31 -2 5 4 19 39 17 -2 17 5 20 42 18 -2 18 17 21 70 19 -2 19 18 22 74 20 -2 20 19 23 75 21 -2 21 20 24 76 22 -2 22 21 25 78 23 -2 23 22 26 79 24 -2 24 23 1 81 25 -2 65 64 28 177 12 -2 81 65 29 179 27 -2 89 81 30 206 28 -2 97 89 31 220 29 -2 105 97 17 232 30 -3 4 119 33 40 38 -3 105 4 34 17 32 -3 109 105 35 245 33 -3 110 109 36 249 34 -3 111 110 37 249 35 -3 112 111 38 145 36 -3 119 112 32 252 37 -4 5 118 18 41 40 -4 118 119 39 252 32 -5 6 118 42 46 39 -5 17 6 19 45 41 -6 7 117 44 47 46 -6 16 7 45 48 43 -6 17 16 42 70 44 -6 117 118 43 251 41 -7 8 117 48 52 43 -7 16 8 44 51 47 -8 9 116 50 53 52 -8 15 9 51 55 49 -8 16 15 48 68 50 -8 116 117 49 254 47 -9 10 116 54 57 49 -9 11 10 55 56 53 -9 15 11 50 61 54 -10 11 115 54 62 57 -10 115 116 56 255 53 -11 12 146 59 63 62 -11 13 12 60 63 58 -11 14 13 61 64 59 -11 15 14 55 66 60 -11 146 115 58 135 56 -12 13 146 59 65 58 -13 14 140 60 67 65 -13 140 146 64 285 63 -14 15 135 61 69 67 -14 135 140 66 282 64 -15 16 136 51 72 69 -15 136 135 68 277 66 -16 17 18 45 20 71 -16 18 139 70 74 73 -16 138 136 73 283 68 -16 139 138 71 273 72 -18 19 139 21 75 71 -19 20 139 22 77 74 -20 21 122 23 78 77 -20 122 139 76 259 75 -21 22 122 24 80 76 -22 23 121 25 82 80 -22 121 122 79 258 78 -23 24 120 26 84 82 -23 120 121 81 256 79 -24 25 127 2 86 84 -24 127 120 83 257 81 -25 26 126 3 87 86 -25 126 127 85 264 83 -26 27 126 4 88 85 -27 28 126 5 89 87 -28 29 126 6 90 88 -29 30 126 7 92 89 -30 31 128 8 93 92 -30 128 126 91 265 90 -31 32 128 94 98 91 -31 40 32 9 97 93 -32 33 129 96 102 98 -32 39 33 97 101 95 -32 40 39 94 118 96 -32 129 128 95 267 93 -33 34 134 100 108 104 -33 38 34 101 107 99 -33 39 38 96 117 100 -33 131 129 103 269 95 -33 133 131 104 274 102 -33 134 133 99 275 103 -34 35 143 106 111 108 -34 37 35 107 110 105 -34 38 37 100 115 106 -34 143 134 105 281 99 -35 36 144 110 114 111 -35 37 36 106 112 109 -35 144 143 109 288 105 -36 37 44 110 116 113 -36 44 45 112 130 114 -36 45 144 113 133 109 -37 38 43 107 117 116 -37 43 44 115 128 112 -38 39 43 101 119 115 -39 40 42 97 120 119 -39 42 43 118 127 117 -40 41 42 121 123 118 -40 55 41 122 126 120 -40 56 55 10 164 121 -41 48 42 124 127 120 -41 49 48 125 139 123 -41 52 49 126 144 124 -41 55 52 121 153 125 -42 48 43 123 129 119 -43 47 44 129 130 116 -43 48 47 127 137 128 -44 47 45 128 132 113 -45 46 145 132 136 133 -45 47 46 130 134 131 -45 145 144 131 288 114 -46 47 115 132 138 135 -46 115 146 134 62 136 -46 146 145 135 285 131 -47 48 114 129 141 138 -47 114 115 137 255 134 -48 49 112 124 145 140 -48 112 113 139 250 141 -48 113 114 140 253 137 -49 50 111 143 146 145 -49 51 50 144 146 142 -49 52 51 125 147 143 -49 111 112 142 37 139 -50 51 111 143 152 142 -51 52 53 144 153 148 -51 53 92 147 159 149 -51 92 93 148 224 150 -51 93 100 149 226 151 -51 100 101 150 237 152 -51 101 111 151 240 146 -52 55 53 126 155 147 -53 54 76 155 163 156 -53 55 54 153 160 154 -53 76 77 154 198 157 -53 77 84 156 200 158 -53 84 85 157 211 159 -53 85 92 158 213 148 -54 55 61 155 164 161 -54 61 68 160 173 162 -54 68 69 161 184 163 -54 69 76 162 185 154 -55 56 61 122 165 160 -56 57 61 11 167 164 -57 58 60 13 168 167 -57 60 61 166 169 165 -58 59 60 14 15 166 -60 63 61 170 172 167 -60 64 63 16 175 169 -61 62 67 172 174 173 -61 63 62 169 174 171 -61 67 68 171 182 161 -62 63 67 172 176 171 -63 64 66 170 177 176 -63 66 67 175 180 174 -64 65 66 27 178 175 -65 72 66 179 181 177 -65 81 72 28 191 178 -66 71 67 181 183 176 -66 72 71 178 188 180 -67 70 68 183 184 173 -67 71 70 180 186 182 -68 70 69 182 185 162 -69 70 76 184 187 163 -70 71 75 183 189 187 -70 75 76 186 197 185 -71 72 74 181 190 189 -71 74 75 188 195 186 -72 73 74 191 192 188 -72 81 73 179 194 190 -73 79 74 193 196 190 -73 80 79 194 202 192 -73 81 80 191 204 193 -74 78 75 196 197 189 -74 79 78 192 201 195 -75 78 76 195 198 187 -76 78 77 197 199 156 -77 78 83 198 201 200 -77 83 84 199 210 157 -78 79 83 196 203 199 -79 80 82 193 204 203 -79 82 83 202 207 201 -80 81 82 194 205 202 -81 88 82 206 209 204 -81 89 88 29 217 205 -82 86 83 208 210 203 -82 87 86 209 214 207 -82 88 87 205 215 208 -83 86 84 207 211 200 -84 86 85 210 212 158 -85 86 91 211 214 213 -85 91 92 212 222 159 -86 87 91 208 216 212 -87 88 90 209 217 216 -87 90 91 215 221 214 -88 89 90 206 218 215 -89 95 90 219 221 217 -89 96 95 220 228 218 -89 97 96 30 230 219 -90 95 91 218 223 216 -91 94 92 223 224 213 -91 95 94 221 227 222 -92 94 93 222 225 149 -93 94 99 224 227 226 -93 99 100 225 235 150 -94 95 99 223 229 225 -95 96 98 219 230 229 -95 98 99 228 233 227 -96 97 98 220 231 228 -97 104 98 232 234 230 -97 105 104 31 244 231 -98 103 99 234 236 229 -98 104 103 231 242 233 -99 102 100 236 237 226 -99 103 102 233 241 235 -100 102 101 235 238 151 -101 102 107 237 241 239 +1 58 57 14 172 0 +1 59 58 15 174 13 +1 60 59 16 174 14 +1 64 60 12 176 15 +2 4 105 18 39 37 +2 5 4 19 45 17 +2 17 5 20 48 18 +2 18 17 21 76 19 +2 19 18 22 80 20 +2 20 19 23 81 21 +2 21 20 24 82 22 +2 22 21 25 84 23 +2 23 22 26 85 24 +2 24 23 1 87 25 +2 65 64 28 182 12 +2 72 65 29 185 27 +2 73 72 30 194 28 +2 80 73 31 197 29 +2 81 80 32 206 30 +2 88 81 33 209 31 +2 89 88 34 218 32 +2 96 89 35 221 33 +2 97 96 36 230 34 +2 104 97 37 233 35 +2 105 104 17 243 36 +3 4 119 39 46 44 +3 105 4 40 17 38 +3 109 105 41 245 39 +3 110 109 42 249 40 +3 111 110 43 249 41 +3 112 111 44 151 42 +3 119 112 38 252 43 +4 5 118 18 47 46 +4 118 119 45 252 38 +5 6 118 48 52 45 +5 17 6 19 51 47 +6 7 117 50 53 52 +6 16 7 51 54 49 +6 17 16 48 76 50 +6 117 118 49 251 47 +7 8 117 54 58 49 +7 16 8 50 57 53 +8 9 116 56 59 58 +8 15 9 57 61 55 +8 16 15 54 74 56 +8 116 117 55 254 53 +9 10 116 60 63 55 +9 11 10 61 62 59 +9 15 11 56 67 60 +10 11 115 60 68 63 +10 115 116 62 255 59 +11 12 146 65 69 68 +11 13 12 66 69 64 +11 14 13 67 70 65 +11 15 14 61 72 66 +11 146 115 64 141 62 +12 13 146 65 71 64 +13 14 140 66 73 71 +13 140 146 70 285 69 +14 15 135 67 75 73 +14 135 140 72 282 70 +15 16 136 57 78 75 +15 136 135 74 277 72 +16 17 18 51 20 77 +16 18 139 76 80 79 +16 138 136 79 283 74 +16 139 138 77 273 78 +18 19 139 21 81 77 +19 20 139 22 83 80 +20 21 122 23 84 83 +20 122 139 82 259 81 +21 22 122 24 86 82 +22 23 121 25 88 86 +22 121 122 85 258 84 +23 24 120 26 90 88 +23 120 121 87 256 85 +24 25 127 2 92 90 +24 127 120 89 257 87 +25 26 126 3 93 92 +25 126 127 91 264 89 +26 27 126 4 94 91 +27 28 126 5 95 93 +28 29 126 6 96 94 +29 30 126 7 98 95 +30 31 128 8 99 98 +30 128 126 97 265 96 +31 32 128 100 104 97 +31 40 32 9 103 99 +32 33 129 102 108 104 +32 39 33 103 107 101 +32 40 39 100 124 102 +32 129 128 101 267 99 +33 34 134 106 114 110 +33 38 34 107 113 105 +33 39 38 102 123 106 +33 131 129 109 269 101 +33 133 131 110 274 108 +33 134 133 105 275 109 +34 35 143 112 117 114 +34 37 35 113 116 111 +34 38 37 106 121 112 +34 143 134 111 281 105 +35 36 144 116 120 117 +35 37 36 112 118 115 +35 144 143 115 288 111 +36 37 44 116 122 119 +36 44 45 118 136 120 +36 45 144 119 139 115 +37 38 43 113 123 122 +37 43 44 121 134 118 +38 39 43 107 125 121 +39 40 42 103 126 125 +39 42 43 124 133 123 +40 41 42 127 129 124 +40 55 41 128 132 126 +40 56 55 10 170 127 +41 48 42 130 133 126 +41 49 48 131 145 129 +41 52 49 132 150 130 +41 55 52 127 159 131 +42 48 43 129 135 125 +43 47 44 135 136 122 +43 48 47 133 143 134 +44 47 45 134 138 119 +45 46 145 138 142 139 +45 47 46 136 140 137 +45 145 144 137 288 120 +46 47 115 138 144 141 +46 115 146 140 68 142 +46 146 145 141 285 137 +47 48 114 135 147 144 +47 114 115 143 255 140 +48 49 112 130 151 146 +48 112 113 145 250 147 +48 113 114 146 253 143 +49 50 111 149 152 151 +49 51 50 150 152 148 +49 52 51 131 153 149 +49 111 112 148 43 145 +50 51 111 149 158 148 +51 52 53 150 159 154 +51 53 92 153 165 155 +51 92 93 154 224 156 +51 93 100 155 227 157 +51 100 101 156 236 158 +51 101 111 157 240 152 +52 55 53 132 161 153 +53 54 76 161 169 162 +53 55 54 159 166 160 +53 76 77 160 200 163 +53 77 84 162 203 164 +53 84 85 163 212 165 +53 85 92 164 215 154 +54 55 61 161 170 167 +54 61 68 166 179 168 +54 68 69 167 188 169 +54 69 76 168 191 160 +55 56 61 128 171 166 +56 57 61 11 173 170 +57 58 60 13 174 173 +57 60 61 172 175 171 +58 59 60 14 15 172 +60 63 61 176 178 173 +60 64 63 16 182 175 +61 62 67 178 181 179 +61 63 62 175 180 177 +61 67 68 177 188 167 +62 63 66 178 183 181 +62 66 67 180 186 177 +63 64 65 176 27 183 +63 65 66 182 184 180 +65 71 66 185 187 183 +65 72 71 28 194 184 +66 70 67 187 189 181 +66 71 70 184 192 186 +67 69 68 189 168 179 +67 70 69 186 190 188 +69 70 75 189 193 191 +69 75 76 190 200 169 +70 71 74 187 195 193 +70 74 75 192 198 190 +71 72 73 185 29 195 +71 73 74 194 196 192 +73 79 74 197 199 195 +73 80 79 30 206 196 +74 78 75 199 201 193 +74 79 78 196 204 198 +75 77 76 201 162 191 +75 78 77 198 202 200 +77 78 83 201 205 203 +77 83 84 202 212 163 +78 79 82 199 207 205 +78 82 83 204 210 202 +79 80 81 197 31 207 +79 81 82 206 208 204 +81 87 82 209 211 207 +81 88 87 32 218 208 +82 86 83 211 213 205 +82 87 86 208 216 210 +83 85 84 213 164 203 +83 86 85 210 214 212 +85 86 91 213 217 215 +85 91 92 214 224 165 +86 87 90 211 219 217 +86 90 91 216 222 214 +87 88 89 209 33 219 +87 89 90 218 220 216 +89 95 90 221 223 219 +89 96 95 34 230 220 +90 94 91 223 225 217 +90 95 94 220 228 222 +91 93 92 225 155 215 +91 94 93 222 226 224 +93 94 99 225 229 227 +93 99 100 226 236 156 +94 95 98 223 231 229 +94 98 99 228 234 226 +95 96 97 221 35 231 +95 97 98 230 232 228 +97 103 98 233 235 231 +97 104 103 36 243 232 +98 102 99 235 237 229 +98 103 102 232 241 234 +99 101 100 237 157 227 +99 102 101 234 238 236 +101 102 107 237 242 239 101 107 108 238 247 240 -101 108 111 239 248 152 -102 103 107 236 243 238 -103 104 106 234 244 243 -103 106 107 242 246 241 -104 105 106 232 245 242 -105 109 106 34 246 244 -106 109 107 245 247 243 +101 108 111 239 248 158 +102 103 106 235 244 242 +102 106 107 241 246 238 +103 104 105 233 37 244 +103 105 106 243 245 241 +105 109 106 40 246 244 +106 109 107 245 247 242 107 109 108 246 248 239 108 109 111 247 249 240 -109 110 111 35 36 248 -112 117 113 251 254 140 -112 118 117 252 46 250 -112 119 118 38 40 251 -113 116 114 254 255 141 -113 117 116 250 52 253 -114 116 115 253 57 138 -120 124 121 257 258 82 -120 127 124 84 264 256 -121 124 122 256 260 80 -122 123 139 260 262 77 +109 110 111 41 42 248 +112 117 113 251 254 146 +112 118 117 252 52 250 +112 119 118 44 46 251 +113 116 114 254 255 147 +113 117 116 250 58 253 +114 116 115 253 63 144 +120 124 121 257 258 88 +120 127 124 90 264 256 +121 124 122 256 260 86 +122 123 139 260 262 83 122 124 123 258 261 259 123 124 125 260 263 262 123 125 139 261 266 259 124 126 125 264 265 261 -124 127 126 257 86 263 -125 126 128 263 92 266 +124 127 126 257 92 263 +125 126 128 263 98 266 125 128 139 265 268 262 -128 129 130 98 269 268 +128 129 130 104 269 268 128 130 139 267 273 266 -129 131 130 102 270 267 +129 131 130 108 270 267 130 131 132 269 274 271 130 132 137 270 278 272 130 137 138 271 283 273 -130 138 139 272 73 268 -131 133 132 103 275 270 -132 133 134 274 104 276 +130 138 139 272 79 268 +131 133 132 109 275 270 +132 133 134 274 110 276 132 134 135 275 279 277 -132 135 136 276 69 278 +132 135 136 276 75 278 132 136 137 277 283 271 134 141 135 280 282 276 134 142 141 281 286 279 -134 143 142 108 286 280 -135 141 140 279 284 67 -136 138 137 72 272 278 +134 143 142 114 286 280 +135 141 140 279 284 73 +136 138 137 78 272 278 140 141 145 282 287 285 -140 145 146 284 136 65 +140 145 146 284 142 71 141 142 143 280 281 287 141 143 145 286 288 284 -143 144 145 111 133 287 +143 144 145 117 139 287 144 3 4 diff --git a/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_auto.txt b/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_auto.txt index e94af4b..68992a9 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_auto.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_auto.txt @@ -90,49 +90,49 @@ 51 52 58 4294967295 92 89 51 58 65 88 98 90 51 65 66 89 4294967295 91 -51 66 73 90 103 83 +51 66 73 90 104 83 52 53 58 4294967295 93 88 53 54 58 4294967295 95 92 54 55 57 4294967295 96 95 54 57 58 94 4294967295 93 55 56 57 4294967295 4294967295 94 -58 59 64 4294967295 99 98 +58 59 64 4294967295 100 98 58 64 65 97 4294967295 89 -59 60 64 4294967295 101 97 -60 61 63 4294967295 102 101 -60 63 64 100 4294967295 99 -61 62 63 4294967295 4294967295 100 -66 67 73 4294967295 105 91 -67 68 72 4294967295 107 105 -67 72 73 104 4294967295 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 104 -69 70 71 4294967295 4294967295 106 -74 75 80 4294967295 111 110 +59 60 63 4294967295 102 100 +59 63 64 99 4294967295 97 +60 61 62 4294967295 4294967295 102 +60 62 63 101 4294967295 99 +66 67 72 4294967295 106 104 +66 72 73 103 4294967295 91 +67 68 71 4294967295 108 106 +67 71 72 105 4294967295 103 +68 69 70 4294967295 4294967295 108 +68 70 71 107 4294967295 105 +74 75 80 4294967295 112 110 74 80 81 109 4294967295 85 -75 76 80 4294967295 113 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 111 -77 78 79 4294967295 4294967295 112 -82 83 88 4294967295 117 116 +75 76 79 4294967295 114 112 +75 79 80 111 4294967295 109 +76 77 78 4294967295 4294967295 114 +76 78 79 113 4294967295 111 +82 83 88 4294967295 118 116 82 88 89 115 4294967295 87 -83 84 88 4294967295 119 115 -84 85 87 4294967295 120 119 -84 87 88 118 4294967295 117 -85 86 87 4294967295 4294967295 118 -90 91 96 4294967295 123 122 +83 84 87 4294967295 120 118 +83 87 88 117 4294967295 115 +84 85 86 4294967295 4294967295 120 +84 86 87 119 4294967295 117 +90 91 96 4294967295 124 122 90 96 97 121 4294967295 80 -91 92 96 4294967295 125 121 -92 93 95 4294967295 126 125 -92 95 96 124 4294967295 123 -93 94 95 4294967295 4294967295 124 -98 99 104 4294967295 130 128 +91 92 95 4294967295 126 124 +91 95 96 123 4294967295 121 +92 93 94 4294967295 4294967295 126 +92 94 95 125 4294967295 123 +98 99 104 4294967295 131 128 98 104 105 127 4294967295 129 98 105 108 128 134 82 -99 100 104 4294967295 132 127 -100 101 103 4294967295 133 132 -100 103 104 131 4294967295 130 -101 102 103 4294967295 4294967295 131 +99 100 103 4294967295 133 131 +99 103 104 130 4294967295 127 +100 101 102 4294967295 4294967295 133 +100 102 103 132 4294967295 130 105 106 108 4294967295 135 129 106 107 108 4294967295 4294967295 134 119 120 136 4294967295 138 28 diff --git a/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_outer.txt b/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_outer.txt index e453f8b..790647e 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_outer.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_outer.txt @@ -90,49 +90,49 @@ 51 52 58 4294967295 92 89 51 58 65 88 98 90 51 65 66 89 4294967295 91 -51 66 73 90 103 83 +51 66 73 90 104 83 52 53 58 4294967295 93 88 53 54 58 4294967295 95 92 54 55 57 4294967295 96 95 54 57 58 94 4294967295 93 55 56 57 4294967295 4294967295 94 -58 59 64 4294967295 99 98 +58 59 64 4294967295 100 98 58 64 65 97 4294967295 89 -59 60 64 4294967295 101 97 -60 61 63 4294967295 102 101 -60 63 64 100 4294967295 99 -61 62 63 4294967295 4294967295 100 -66 67 73 4294967295 105 91 -67 68 72 4294967295 107 105 -67 72 73 104 4294967295 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 104 -69 70 71 4294967295 4294967295 106 -74 75 80 4294967295 111 110 +59 60 63 4294967295 102 100 +59 63 64 99 4294967295 97 +60 61 62 4294967295 4294967295 102 +60 62 63 101 4294967295 99 +66 67 72 4294967295 106 104 +66 72 73 103 4294967295 91 +67 68 71 4294967295 108 106 +67 71 72 105 4294967295 103 +68 69 70 4294967295 4294967295 108 +68 70 71 107 4294967295 105 +74 75 80 4294967295 112 110 74 80 81 109 4294967295 85 -75 76 80 4294967295 113 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 111 -77 78 79 4294967295 4294967295 112 -82 83 88 4294967295 117 116 +75 76 79 4294967295 114 112 +75 79 80 111 4294967295 109 +76 77 78 4294967295 4294967295 114 +76 78 79 113 4294967295 111 +82 83 88 4294967295 118 116 82 88 89 115 4294967295 87 -83 84 88 4294967295 119 115 -84 85 87 4294967295 120 119 -84 87 88 118 4294967295 117 -85 86 87 4294967295 4294967295 118 -90 91 96 4294967295 123 122 +83 84 87 4294967295 120 118 +83 87 88 117 4294967295 115 +84 85 86 4294967295 4294967295 120 +84 86 87 119 4294967295 117 +90 91 96 4294967295 124 122 90 96 97 121 4294967295 80 -91 92 96 4294967295 125 121 -92 93 95 4294967295 126 125 -92 95 96 124 4294967295 123 -93 94 95 4294967295 4294967295 124 -98 99 104 4294967295 130 128 +91 92 95 4294967295 126 124 +91 95 96 123 4294967295 121 +92 93 94 4294967295 4294967295 126 +92 94 95 125 4294967295 123 +98 99 104 4294967295 131 128 98 104 105 127 4294967295 129 98 105 108 128 134 82 -99 100 104 4294967295 132 127 -100 101 103 4294967295 133 132 -100 103 104 131 4294967295 130 -101 102 103 4294967295 4294967295 131 +99 100 103 4294967295 133 131 +99 103 104 130 4294967295 127 +100 101 102 4294967295 4294967295 133 +100 102 103 132 4294967295 130 105 106 108 4294967295 135 129 106 107 108 4294967295 4294967295 134 117 121 118 137 138 33 diff --git a/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_super.txt b/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_super.txt index 7e8c77f..245f97d 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_super.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_as-provided_ignore_super.txt @@ -1,30 +1,30 @@ -257 +251 0 1 116 1 8 6 0 102 1 2 4294967295 0 -0 106 102 3 213 1 -0 107 106 4 217 2 -0 108 107 5 217 3 +0 106 102 3 207 1 +0 107 106 4 211 2 +0 108 107 5 211 3 0 109 108 6 113 4 -0 116 109 0 220 5 +0 116 109 0 214 5 1 2 115 4294967295 9 8 -1 115 116 7 220 0 +1 115 116 7 214 0 2 3 115 10 14 7 2 14 3 4294967295 13 9 3 4 114 12 15 14 3 13 4 13 16 11 3 14 13 10 38 12 -3 114 115 11 219 9 +3 114 115 11 213 9 4 5 114 16 20 11 4 13 5 12 19 15 5 6 113 18 21 20 5 12 6 19 23 17 5 13 12 16 36 18 -5 113 114 17 222 15 +5 113 114 17 216 15 6 7 113 22 25 17 6 8 7 23 24 21 6 12 8 18 29 22 7 8 112 22 30 25 -7 112 113 24 223 21 +7 112 113 24 217 21 8 9 143 27 31 30 8 10 9 28 31 26 8 11 10 29 32 27 @@ -32,53 +32,53 @@ 8 143 112 26 103 24 9 10 143 27 33 26 10 11 137 28 35 33 -10 137 143 32 253 31 +10 137 143 32 247 31 11 12 132 29 37 35 -11 132 137 34 250 32 +11 132 137 34 244 32 12 13 133 19 40 37 -12 133 132 36 245 34 +12 133 132 36 239 34 13 14 15 13 4294967295 39 13 15 136 38 42 41 -13 135 133 41 251 36 -13 136 135 39 241 40 +13 135 133 41 245 36 +13 136 135 39 235 40 15 16 136 4294967295 43 39 16 17 136 4294967295 45 42 17 18 119 4294967295 46 45 -17 119 136 44 227 43 +17 119 136 44 221 43 18 19 119 4294967295 48 44 19 20 118 4294967295 50 48 -19 118 119 47 226 46 +19 118 119 47 220 46 20 21 117 4294967295 52 50 -20 117 118 49 224 47 +20 117 118 49 218 47 21 22 124 4294967295 54 52 -21 124 117 51 225 49 +21 124 117 51 219 49 22 23 123 4294967295 55 54 -22 123 124 53 232 51 +22 123 124 53 226 51 23 24 123 4294967295 56 53 24 25 123 4294967295 57 55 25 26 123 4294967295 58 56 26 27 123 4294967295 60 57 27 28 125 4294967295 61 60 -27 125 123 59 233 58 +27 125 123 59 227 58 28 29 125 62 66 59 28 37 29 4294967295 65 61 29 30 126 64 70 66 29 36 30 65 69 63 29 37 36 62 86 64 -29 126 125 63 235 61 +29 126 125 63 229 61 30 31 131 68 76 72 30 35 31 69 75 67 30 36 35 64 85 68 -30 128 126 71 237 63 -30 130 128 72 242 70 -30 131 130 67 243 71 +30 128 126 71 231 63 +30 130 128 72 236 70 +30 131 130 67 237 71 31 32 140 74 79 76 31 34 32 75 78 73 31 35 34 68 83 74 -31 140 131 73 249 67 +31 140 131 73 243 67 32 33 141 78 82 79 32 34 33 74 80 77 -32 141 140 77 256 73 +32 141 140 77 250 73 33 34 41 78 84 81 33 41 42 80 98 82 33 42 141 81 101 77 @@ -100,15 +100,15 @@ 41 44 42 96 100 81 42 43 142 100 104 101 42 44 43 98 102 99 -42 142 141 99 256 82 +42 142 141 99 250 82 43 44 112 100 106 103 43 112 143 102 30 104 -43 143 142 103 253 99 +43 143 142 103 247 99 44 45 111 97 109 106 -44 111 112 105 223 102 +44 111 112 105 217 102 45 46 109 92 113 108 -45 109 110 107 218 109 -45 110 111 108 221 105 +45 109 110 107 212 109 +45 110 111 108 215 105 46 47 108 111 114 113 46 48 47 112 114 110 46 49 48 93 115 111 @@ -116,20 +116,20 @@ 47 48 108 111 120 110 48 49 50 112 121 116 48 50 89 115 127 117 -48 89 90 116 192 118 -48 90 97 117 194 119 -48 97 98 118 205 120 -48 98 108 119 208 114 +48 89 90 116 186 118 +48 90 97 117 189 119 +48 97 98 118 198 120 +48 98 108 119 202 114 49 52 50 94 123 115 50 51 73 123 131 124 50 52 51 121 128 122 -50 73 74 122 166 125 -50 74 81 124 168 126 -50 81 82 125 179 127 -50 82 89 126 181 116 +50 73 74 122 162 125 +50 74 81 124 165 126 +50 81 82 125 174 127 +50 82 89 126 177 116 51 52 58 123 132 129 51 58 65 128 141 130 -51 65 66 129 152 131 +51 65 66 129 150 131 51 66 73 130 153 122 52 53 58 90 133 128 53 54 58 4294967295 135 132 @@ -137,125 +137,119 @@ 54 57 58 134 137 133 55 56 57 4294967295 4294967295 134 57 60 58 138 140 135 -57 61 60 4294967295 143 137 -58 59 64 140 142 141 +57 61 60 4294967295 144 137 +58 59 64 140 143 141 58 60 59 137 142 139 58 64 65 139 150 129 -59 60 64 140 144 139 -60 61 63 138 145 144 -60 63 64 143 148 142 -61 62 63 4294967295 146 143 -62 69 63 147 149 145 -62 78 69 4294967295 159 146 -63 68 64 149 151 144 -63 69 68 146 156 148 -64 67 65 151 152 141 -64 68 67 148 154 150 -65 67 66 150 153 130 -66 67 73 152 155 131 -67 68 72 151 157 155 -67 72 73 154 165 153 -68 69 71 149 158 157 -68 71 72 156 163 154 -69 70 71 159 160 156 -69 78 70 147 162 158 -70 76 71 161 164 158 -70 77 76 162 170 160 -70 78 77 159 172 161 -71 75 72 164 165 157 -71 76 75 160 169 163 -72 75 73 163 166 155 -73 75 74 165 167 124 -74 75 80 166 169 168 -74 80 81 167 178 125 -75 76 80 164 171 167 -76 77 79 161 172 171 -76 79 80 170 175 169 -77 78 79 162 173 170 -78 85 79 174 177 172 -78 86 85 4294967295 185 173 -79 83 80 176 178 171 -79 84 83 177 182 175 -79 85 84 173 183 176 -80 83 81 175 179 168 -81 83 82 178 180 126 -82 83 88 179 182 181 -82 88 89 180 190 127 -83 84 88 176 184 180 -84 85 87 177 185 184 -84 87 88 183 189 182 -85 86 87 174 186 183 -86 92 87 187 189 185 -86 93 92 188 196 186 -86 94 93 4294967295 198 187 -87 92 88 186 191 184 -88 91 89 191 192 181 -88 92 91 189 195 190 -89 91 90 190 193 117 -90 91 96 192 195 194 -90 96 97 193 203 118 -91 92 96 191 197 193 -92 93 95 187 198 197 -92 95 96 196 201 195 -93 94 95 188 199 196 -94 101 95 200 202 198 -94 102 101 4294967295 212 199 -95 100 96 202 204 197 -95 101 100 199 210 201 -96 99 97 204 205 194 -96 100 99 201 209 203 -97 99 98 203 206 119 -98 99 104 205 209 207 -98 104 105 206 215 208 -98 105 108 207 216 120 -99 100 104 204 211 206 -100 101 103 202 212 211 -100 103 104 210 214 209 -101 102 103 200 213 210 -102 106 103 2 214 212 -103 106 104 213 215 211 -104 106 105 214 216 207 -105 106 108 215 217 208 -106 107 108 3 4 216 -109 114 110 219 222 108 -109 115 114 220 14 218 -109 116 115 6 8 219 -110 113 111 222 223 109 -110 114 113 218 20 221 -111 113 112 221 25 106 -117 121 118 225 226 50 -117 124 121 52 232 224 -118 121 119 224 228 48 -119 120 136 228 230 45 -119 121 120 226 229 227 -120 121 122 228 231 230 -120 122 136 229 234 227 -121 123 122 232 233 229 -121 124 123 225 54 231 -122 123 125 231 60 234 -122 125 136 233 236 230 -125 126 127 66 237 236 -125 127 136 235 241 234 -126 128 127 70 238 235 -127 128 129 237 242 239 -127 129 134 238 246 240 -127 134 135 239 251 241 -127 135 136 240 41 236 -128 130 129 71 243 238 -129 130 131 242 72 244 -129 131 132 243 247 245 -129 132 133 244 37 246 -129 133 134 245 251 239 -131 138 132 248 250 244 -131 139 138 249 254 247 -131 140 139 76 254 248 -132 138 137 247 252 35 -133 135 134 40 240 246 -137 138 142 250 255 253 -137 142 143 252 104 33 -138 139 140 248 249 255 -138 140 142 254 256 252 -140 141 142 79 101 255 +59 60 63 140 145 143 +59 63 64 142 148 139 +60 61 62 138 4294967295 145 +60 62 63 144 146 142 +62 68 63 147 149 145 +62 69 68 4294967295 156 146 +63 67 64 149 151 143 +63 68 67 146 154 148 +64 66 65 151 130 141 +64 67 66 148 152 150 +66 67 72 151 155 153 +66 72 73 152 162 131 +67 68 71 149 157 155 +67 71 72 154 160 152 +68 69 70 147 4294967295 157 +68 70 71 156 158 154 +70 76 71 159 161 157 +70 77 76 4294967295 168 158 +71 75 72 161 163 155 +71 76 75 158 166 160 +72 74 73 163 124 153 +72 75 74 160 164 162 +74 75 80 163 167 165 +74 80 81 164 174 125 +75 76 79 161 169 167 +75 79 80 166 172 164 +76 77 78 159 4294967295 169 +76 78 79 168 170 166 +78 84 79 171 173 169 +78 85 84 4294967295 180 170 +79 83 80 173 175 167 +79 84 83 170 178 172 +80 82 81 175 126 165 +80 83 82 172 176 174 +82 83 88 175 179 177 +82 88 89 176 186 127 +83 84 87 173 181 179 +83 87 88 178 184 176 +84 85 86 171 4294967295 181 +84 86 87 180 182 178 +86 92 87 183 185 181 +86 93 92 4294967295 192 182 +87 91 88 185 187 179 +87 92 91 182 190 184 +88 90 89 187 117 177 +88 91 90 184 188 186 +90 91 96 187 191 189 +90 96 97 188 198 118 +91 92 95 185 193 191 +91 95 96 190 196 188 +92 93 94 183 4294967295 193 +92 94 95 192 194 190 +94 100 95 195 197 193 +94 101 100 4294967295 205 194 +95 99 96 197 199 191 +95 100 99 194 203 196 +96 98 97 199 119 189 +96 99 98 196 200 198 +98 99 104 199 204 201 +98 104 105 200 209 202 +98 105 108 201 210 120 +99 100 103 197 206 204 +99 103 104 203 208 200 +100 101 102 195 4294967295 206 +100 102 103 205 207 203 +102 106 103 2 208 206 +103 106 104 207 209 204 +104 106 105 208 210 201 +105 106 108 209 211 202 +106 107 108 3 4 210 +109 114 110 213 216 108 +109 115 114 214 14 212 +109 116 115 6 8 213 +110 113 111 216 217 109 +110 114 113 212 20 215 +111 113 112 215 25 106 +117 121 118 219 220 50 +117 124 121 52 226 218 +118 121 119 218 222 48 +119 120 136 222 224 45 +119 121 120 220 223 221 +120 121 122 222 225 224 +120 122 136 223 228 221 +121 123 122 226 227 223 +121 124 123 219 54 225 +122 123 125 225 60 228 +122 125 136 227 230 224 +125 126 127 66 231 230 +125 127 136 229 235 228 +126 128 127 70 232 229 +127 128 129 231 236 233 +127 129 134 232 240 234 +127 134 135 233 245 235 +127 135 136 234 41 230 +128 130 129 71 237 232 +129 130 131 236 72 238 +129 131 132 237 241 239 +129 132 133 238 37 240 +129 133 134 239 245 233 +131 138 132 242 244 238 +131 139 138 243 248 241 +131 140 139 76 248 242 +132 138 137 241 246 35 +133 135 134 40 234 240 +137 138 142 244 249 247 +137 142 143 246 104 33 +138 139 140 242 243 249 +138 140 142 248 250 246 +140 141 142 79 101 249 144 0 1 diff --git a/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_all.txt b/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_all.txt index ffb846b..479fce4 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_all.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_all.txt @@ -1,293 +1,293 @@ 289 0 1 57 4294967295 13 11 0 24 2 2 26 4294967295 -0 25 24 3 83 1 -0 26 25 4 85 2 -0 27 26 5 87 3 -0 28 27 6 88 4 -0 29 28 7 89 5 -0 30 29 8 90 6 -0 31 30 9 91 7 -0 40 31 10 94 8 -0 56 40 11 122 9 -0 57 56 0 165 10 +0 25 24 3 89 1 +0 26 25 4 91 2 +0 27 26 5 93 3 +0 28 27 6 94 4 +0 29 28 7 95 5 +0 30 29 8 96 6 +0 31 30 9 97 7 +0 40 31 10 100 8 +0 56 40 11 128 9 +0 57 56 0 171 10 1 2 64 4294967295 27 16 -1 58 57 14 166 0 -1 59 58 15 168 13 -1 60 59 16 168 14 -1 64 60 12 170 15 -2 4 105 18 33 31 -2 5 4 19 39 17 -2 17 5 20 42 18 -2 18 17 21 70 19 -2 19 18 22 74 20 -2 20 19 23 75 21 -2 21 20 24 76 22 -2 22 21 25 78 23 -2 23 22 26 79 24 -2 24 23 1 81 25 -2 65 64 28 177 12 -2 81 65 29 179 27 -2 89 81 30 206 28 -2 97 89 31 220 29 -2 105 97 17 232 30 -3 4 119 33 40 38 -3 105 4 34 17 32 -3 109 105 35 245 33 -3 110 109 36 249 34 -3 111 110 37 249 35 -3 112 111 38 145 36 -3 119 112 32 252 37 -4 5 118 18 41 40 -4 118 119 39 252 32 -5 6 118 42 46 39 -5 17 6 19 45 41 -6 7 117 44 47 46 -6 16 7 45 48 43 -6 17 16 42 70 44 -6 117 118 43 251 41 -7 8 117 48 52 43 -7 16 8 44 51 47 -8 9 116 50 53 52 -8 15 9 51 55 49 -8 16 15 48 68 50 -8 116 117 49 254 47 -9 10 116 54 57 49 -9 11 10 55 56 53 -9 15 11 50 61 54 -10 11 115 54 62 57 -10 115 116 56 255 53 -11 12 146 59 63 62 -11 13 12 60 63 58 -11 14 13 61 64 59 -11 15 14 55 66 60 -11 146 115 58 135 56 -12 13 146 59 65 58 -13 14 140 60 67 65 -13 140 146 64 285 63 -14 15 135 61 69 67 -14 135 140 66 282 64 -15 16 136 51 72 69 -15 136 135 68 277 66 -16 17 18 45 20 71 -16 18 139 70 74 73 -16 138 136 73 283 68 -16 139 138 71 273 72 -18 19 139 21 75 71 -19 20 139 22 77 74 -20 21 122 23 78 77 -20 122 139 76 259 75 -21 22 122 24 80 76 -22 23 121 25 82 80 -22 121 122 79 258 78 -23 24 120 26 84 82 -23 120 121 81 256 79 -24 25 127 2 86 84 -24 127 120 83 257 81 -25 26 126 3 87 86 -25 126 127 85 264 83 -26 27 126 4 88 85 -27 28 126 5 89 87 -28 29 126 6 90 88 -29 30 126 7 92 89 -30 31 128 8 93 92 -30 128 126 91 265 90 -31 32 128 94 98 91 -31 40 32 9 97 93 -32 33 129 96 102 98 -32 39 33 97 101 95 -32 40 39 94 118 96 -32 129 128 95 267 93 -33 34 134 100 108 104 -33 38 34 101 107 99 -33 39 38 96 117 100 -33 131 129 103 269 95 -33 133 131 104 274 102 -33 134 133 99 275 103 -34 35 143 106 111 108 -34 37 35 107 110 105 -34 38 37 100 115 106 -34 143 134 105 281 99 -35 36 144 110 114 111 -35 37 36 106 112 109 -35 144 143 109 288 105 -36 37 44 110 116 113 -36 44 45 112 130 114 -36 45 144 113 133 109 -37 38 43 107 117 116 -37 43 44 115 128 112 -38 39 43 101 119 115 -39 40 42 97 120 119 -39 42 43 118 127 117 -40 41 42 121 123 118 -40 55 41 122 126 120 -40 56 55 10 164 121 -41 48 42 124 127 120 -41 49 48 125 139 123 -41 52 49 126 144 124 -41 55 52 121 153 125 -42 48 43 123 129 119 -43 47 44 129 130 116 -43 48 47 127 137 128 -44 47 45 128 132 113 -45 46 145 132 136 133 -45 47 46 130 134 131 -45 145 144 131 288 114 -46 47 115 132 138 135 -46 115 146 134 62 136 -46 146 145 135 285 131 -47 48 114 129 141 138 -47 114 115 137 255 134 -48 49 112 124 145 140 -48 112 113 139 250 141 -48 113 114 140 253 137 -49 50 111 143 146 145 -49 51 50 144 146 142 -49 52 51 125 147 143 -49 111 112 142 37 139 -50 51 111 143 152 142 -51 52 53 144 153 148 -51 53 92 147 159 149 -51 92 93 148 224 150 -51 93 100 149 226 151 -51 100 101 150 237 152 -51 101 111 151 240 146 -52 55 53 126 155 147 -53 54 76 155 163 156 -53 55 54 153 160 154 -53 76 77 154 198 157 -53 77 84 156 200 158 -53 84 85 157 211 159 -53 85 92 158 213 148 -54 55 61 155 164 161 -54 61 68 160 173 162 -54 68 69 161 184 163 -54 69 76 162 185 154 -55 56 61 122 165 160 -56 57 61 11 167 164 -57 58 60 13 168 167 -57 60 61 166 169 165 -58 59 60 14 15 166 -60 63 61 170 172 167 -60 64 63 16 175 169 -61 62 67 172 174 173 -61 63 62 169 174 171 -61 67 68 171 182 161 -62 63 67 172 176 171 -63 64 66 170 177 176 -63 66 67 175 180 174 -64 65 66 27 178 175 -65 72 66 179 181 177 -65 81 72 28 191 178 -66 71 67 181 183 176 -66 72 71 178 188 180 -67 70 68 183 184 173 -67 71 70 180 186 182 -68 70 69 182 185 162 -69 70 76 184 187 163 -70 71 75 183 189 187 -70 75 76 186 197 185 -71 72 74 181 190 189 -71 74 75 188 195 186 -72 73 74 191 192 188 -72 81 73 179 194 190 -73 79 74 193 196 190 -73 80 79 194 202 192 -73 81 80 191 204 193 -74 78 75 196 197 189 -74 79 78 192 201 195 -75 78 76 195 198 187 -76 78 77 197 199 156 -77 78 83 198 201 200 -77 83 84 199 210 157 -78 79 83 196 203 199 -79 80 82 193 204 203 -79 82 83 202 207 201 -80 81 82 194 205 202 -81 88 82 206 209 204 -81 89 88 29 217 205 -82 86 83 208 210 203 -82 87 86 209 214 207 -82 88 87 205 215 208 -83 86 84 207 211 200 -84 86 85 210 212 158 -85 86 91 211 214 213 -85 91 92 212 222 159 -86 87 91 208 216 212 -87 88 90 209 217 216 -87 90 91 215 221 214 -88 89 90 206 218 215 -89 95 90 219 221 217 -89 96 95 220 228 218 -89 97 96 30 230 219 -90 95 91 218 223 216 -91 94 92 223 224 213 -91 95 94 221 227 222 -92 94 93 222 225 149 -93 94 99 224 227 226 -93 99 100 225 235 150 -94 95 99 223 229 225 -95 96 98 219 230 229 -95 98 99 228 233 227 -96 97 98 220 231 228 -97 104 98 232 234 230 -97 105 104 31 244 231 -98 103 99 234 236 229 -98 104 103 231 242 233 -99 102 100 236 237 226 -99 103 102 233 241 235 -100 102 101 235 238 151 -101 102 107 237 241 239 +1 58 57 14 172 0 +1 59 58 15 174 13 +1 60 59 16 174 14 +1 64 60 12 176 15 +2 4 105 18 39 37 +2 5 4 19 45 17 +2 17 5 20 48 18 +2 18 17 21 76 19 +2 19 18 22 80 20 +2 20 19 23 81 21 +2 21 20 24 82 22 +2 22 21 25 84 23 +2 23 22 26 85 24 +2 24 23 1 87 25 +2 65 64 28 182 12 +2 72 65 29 185 27 +2 73 72 30 194 28 +2 80 73 31 197 29 +2 81 80 32 206 30 +2 88 81 33 209 31 +2 89 88 34 218 32 +2 96 89 35 221 33 +2 97 96 36 230 34 +2 104 97 37 233 35 +2 105 104 17 243 36 +3 4 119 39 46 44 +3 105 4 40 17 38 +3 109 105 41 245 39 +3 110 109 42 249 40 +3 111 110 43 249 41 +3 112 111 44 151 42 +3 119 112 38 252 43 +4 5 118 18 47 46 +4 118 119 45 252 38 +5 6 118 48 52 45 +5 17 6 19 51 47 +6 7 117 50 53 52 +6 16 7 51 54 49 +6 17 16 48 76 50 +6 117 118 49 251 47 +7 8 117 54 58 49 +7 16 8 50 57 53 +8 9 116 56 59 58 +8 15 9 57 61 55 +8 16 15 54 74 56 +8 116 117 55 254 53 +9 10 116 60 63 55 +9 11 10 61 62 59 +9 15 11 56 67 60 +10 11 115 60 68 63 +10 115 116 62 255 59 +11 12 146 65 69 68 +11 13 12 66 69 64 +11 14 13 67 70 65 +11 15 14 61 72 66 +11 146 115 64 141 62 +12 13 146 65 71 64 +13 14 140 66 73 71 +13 140 146 70 285 69 +14 15 135 67 75 73 +14 135 140 72 282 70 +15 16 136 57 78 75 +15 136 135 74 277 72 +16 17 18 51 20 77 +16 18 139 76 80 79 +16 138 136 79 283 74 +16 139 138 77 273 78 +18 19 139 21 81 77 +19 20 139 22 83 80 +20 21 122 23 84 83 +20 122 139 82 259 81 +21 22 122 24 86 82 +22 23 121 25 88 86 +22 121 122 85 258 84 +23 24 120 26 90 88 +23 120 121 87 256 85 +24 25 127 2 92 90 +24 127 120 89 257 87 +25 26 126 3 93 92 +25 126 127 91 264 89 +26 27 126 4 94 91 +27 28 126 5 95 93 +28 29 126 6 96 94 +29 30 126 7 98 95 +30 31 128 8 99 98 +30 128 126 97 265 96 +31 32 128 100 104 97 +31 40 32 9 103 99 +32 33 129 102 108 104 +32 39 33 103 107 101 +32 40 39 100 124 102 +32 129 128 101 267 99 +33 34 134 106 114 110 +33 38 34 107 113 105 +33 39 38 102 123 106 +33 131 129 109 269 101 +33 133 131 110 274 108 +33 134 133 105 275 109 +34 35 143 112 117 114 +34 37 35 113 116 111 +34 38 37 106 121 112 +34 143 134 111 281 105 +35 36 144 116 120 117 +35 37 36 112 118 115 +35 144 143 115 288 111 +36 37 44 116 122 119 +36 44 45 118 136 120 +36 45 144 119 139 115 +37 38 43 113 123 122 +37 43 44 121 134 118 +38 39 43 107 125 121 +39 40 42 103 126 125 +39 42 43 124 133 123 +40 41 42 127 129 124 +40 55 41 128 132 126 +40 56 55 10 170 127 +41 48 42 130 133 126 +41 49 48 131 145 129 +41 52 49 132 150 130 +41 55 52 127 159 131 +42 48 43 129 135 125 +43 47 44 135 136 122 +43 48 47 133 143 134 +44 47 45 134 138 119 +45 46 145 138 142 139 +45 47 46 136 140 137 +45 145 144 137 288 120 +46 47 115 138 144 141 +46 115 146 140 68 142 +46 146 145 141 285 137 +47 48 114 135 147 144 +47 114 115 143 255 140 +48 49 112 130 151 146 +48 112 113 145 250 147 +48 113 114 146 253 143 +49 50 111 149 152 151 +49 51 50 150 152 148 +49 52 51 131 153 149 +49 111 112 148 43 145 +50 51 111 149 158 148 +51 52 53 150 159 154 +51 53 92 153 165 155 +51 92 93 154 224 156 +51 93 100 155 227 157 +51 100 101 156 236 158 +51 101 111 157 240 152 +52 55 53 132 161 153 +53 54 76 161 169 162 +53 55 54 159 166 160 +53 76 77 160 200 163 +53 77 84 162 203 164 +53 84 85 163 212 165 +53 85 92 164 215 154 +54 55 61 161 170 167 +54 61 68 166 179 168 +54 68 69 167 188 169 +54 69 76 168 191 160 +55 56 61 128 171 166 +56 57 61 11 173 170 +57 58 60 13 174 173 +57 60 61 172 175 171 +58 59 60 14 15 172 +60 63 61 176 178 173 +60 64 63 16 182 175 +61 62 67 178 181 179 +61 63 62 175 180 177 +61 67 68 177 188 167 +62 63 66 178 183 181 +62 66 67 180 186 177 +63 64 65 176 27 183 +63 65 66 182 184 180 +65 71 66 185 187 183 +65 72 71 28 194 184 +66 70 67 187 189 181 +66 71 70 184 192 186 +67 69 68 189 168 179 +67 70 69 186 190 188 +69 70 75 189 193 191 +69 75 76 190 200 169 +70 71 74 187 195 193 +70 74 75 192 198 190 +71 72 73 185 29 195 +71 73 74 194 196 192 +73 79 74 197 199 195 +73 80 79 30 206 196 +74 78 75 199 201 193 +74 79 78 196 204 198 +75 77 76 201 162 191 +75 78 77 198 202 200 +77 78 83 201 205 203 +77 83 84 202 212 163 +78 79 82 199 207 205 +78 82 83 204 210 202 +79 80 81 197 31 207 +79 81 82 206 208 204 +81 87 82 209 211 207 +81 88 87 32 218 208 +82 86 83 211 213 205 +82 87 86 208 216 210 +83 85 84 213 164 203 +83 86 85 210 214 212 +85 86 91 213 217 215 +85 91 92 214 224 165 +86 87 90 211 219 217 +86 90 91 216 222 214 +87 88 89 209 33 219 +87 89 90 218 220 216 +89 95 90 221 223 219 +89 96 95 34 230 220 +90 94 91 223 225 217 +90 95 94 220 228 222 +91 93 92 225 155 215 +91 94 93 222 226 224 +93 94 99 225 229 227 +93 99 100 226 236 156 +94 95 98 223 231 229 +94 98 99 228 234 226 +95 96 97 221 35 231 +95 97 98 230 232 228 +97 103 98 233 235 231 +97 104 103 36 243 232 +98 102 99 235 237 229 +98 103 102 232 241 234 +99 101 100 237 157 227 +99 102 101 234 238 236 +101 102 107 237 242 239 101 107 108 238 247 240 -101 108 111 239 248 152 -102 103 107 236 243 238 -103 104 106 234 244 243 -103 106 107 242 246 241 -104 105 106 232 245 242 -105 109 106 34 246 244 -106 109 107 245 247 243 +101 108 111 239 248 158 +102 103 106 235 244 242 +102 106 107 241 246 238 +103 104 105 233 37 244 +103 105 106 243 245 241 +105 109 106 40 246 244 +106 109 107 245 247 242 107 109 108 246 248 239 108 109 111 247 249 240 -109 110 111 35 36 248 -112 117 113 251 254 140 -112 118 117 252 46 250 -112 119 118 38 40 251 -113 116 114 254 255 141 -113 117 116 250 52 253 -114 116 115 253 57 138 -120 124 121 257 258 82 -120 127 124 84 264 256 -121 124 122 256 260 80 -122 123 139 260 262 77 +109 110 111 41 42 248 +112 117 113 251 254 146 +112 118 117 252 52 250 +112 119 118 44 46 251 +113 116 114 254 255 147 +113 117 116 250 58 253 +114 116 115 253 63 144 +120 124 121 257 258 88 +120 127 124 90 264 256 +121 124 122 256 260 86 +122 123 139 260 262 83 122 124 123 258 261 259 123 124 125 260 263 262 123 125 139 261 266 259 124 126 125 264 265 261 -124 127 126 257 86 263 -125 126 128 263 92 266 +124 127 126 257 92 263 +125 126 128 263 98 266 125 128 139 265 268 262 -128 129 130 98 269 268 +128 129 130 104 269 268 128 130 139 267 273 266 -129 131 130 102 270 267 +129 131 130 108 270 267 130 131 132 269 274 271 130 132 137 270 278 272 130 137 138 271 283 273 -130 138 139 272 73 268 -131 133 132 103 275 270 -132 133 134 274 104 276 +130 138 139 272 79 268 +131 133 132 109 275 270 +132 133 134 274 110 276 132 134 135 275 279 277 -132 135 136 276 69 278 +132 135 136 276 75 278 132 136 137 277 283 271 134 141 135 280 282 276 134 142 141 281 286 279 -134 143 142 108 286 280 -135 141 140 279 284 67 -136 138 137 72 272 278 +134 143 142 114 286 280 +135 141 140 279 284 73 +136 138 137 78 272 278 140 141 145 282 287 285 -140 145 146 284 136 65 +140 145 146 284 142 71 141 142 143 280 281 287 141 143 145 286 288 284 -143 144 145 111 133 287 +143 144 145 117 139 287 144 3 4 diff --git a/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_auto.txt b/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_auto.txt index e94af4b..68992a9 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_auto.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_auto.txt @@ -90,49 +90,49 @@ 51 52 58 4294967295 92 89 51 58 65 88 98 90 51 65 66 89 4294967295 91 -51 66 73 90 103 83 +51 66 73 90 104 83 52 53 58 4294967295 93 88 53 54 58 4294967295 95 92 54 55 57 4294967295 96 95 54 57 58 94 4294967295 93 55 56 57 4294967295 4294967295 94 -58 59 64 4294967295 99 98 +58 59 64 4294967295 100 98 58 64 65 97 4294967295 89 -59 60 64 4294967295 101 97 -60 61 63 4294967295 102 101 -60 63 64 100 4294967295 99 -61 62 63 4294967295 4294967295 100 -66 67 73 4294967295 105 91 -67 68 72 4294967295 107 105 -67 72 73 104 4294967295 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 104 -69 70 71 4294967295 4294967295 106 -74 75 80 4294967295 111 110 +59 60 63 4294967295 102 100 +59 63 64 99 4294967295 97 +60 61 62 4294967295 4294967295 102 +60 62 63 101 4294967295 99 +66 67 72 4294967295 106 104 +66 72 73 103 4294967295 91 +67 68 71 4294967295 108 106 +67 71 72 105 4294967295 103 +68 69 70 4294967295 4294967295 108 +68 70 71 107 4294967295 105 +74 75 80 4294967295 112 110 74 80 81 109 4294967295 85 -75 76 80 4294967295 113 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 111 -77 78 79 4294967295 4294967295 112 -82 83 88 4294967295 117 116 +75 76 79 4294967295 114 112 +75 79 80 111 4294967295 109 +76 77 78 4294967295 4294967295 114 +76 78 79 113 4294967295 111 +82 83 88 4294967295 118 116 82 88 89 115 4294967295 87 -83 84 88 4294967295 119 115 -84 85 87 4294967295 120 119 -84 87 88 118 4294967295 117 -85 86 87 4294967295 4294967295 118 -90 91 96 4294967295 123 122 +83 84 87 4294967295 120 118 +83 87 88 117 4294967295 115 +84 85 86 4294967295 4294967295 120 +84 86 87 119 4294967295 117 +90 91 96 4294967295 124 122 90 96 97 121 4294967295 80 -91 92 96 4294967295 125 121 -92 93 95 4294967295 126 125 -92 95 96 124 4294967295 123 -93 94 95 4294967295 4294967295 124 -98 99 104 4294967295 130 128 +91 92 95 4294967295 126 124 +91 95 96 123 4294967295 121 +92 93 94 4294967295 4294967295 126 +92 94 95 125 4294967295 123 +98 99 104 4294967295 131 128 98 104 105 127 4294967295 129 98 105 108 128 134 82 -99 100 104 4294967295 132 127 -100 101 103 4294967295 133 132 -100 103 104 131 4294967295 130 -101 102 103 4294967295 4294967295 131 +99 100 103 4294967295 133 131 +99 103 104 130 4294967295 127 +100 101 102 4294967295 4294967295 133 +100 102 103 132 4294967295 130 105 106 108 4294967295 135 129 106 107 108 4294967295 4294967295 134 119 120 136 4294967295 138 28 diff --git a/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_outer.txt b/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_outer.txt index e453f8b..790647e 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_outer.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_outer.txt @@ -90,49 +90,49 @@ 51 52 58 4294967295 92 89 51 58 65 88 98 90 51 65 66 89 4294967295 91 -51 66 73 90 103 83 +51 66 73 90 104 83 52 53 58 4294967295 93 88 53 54 58 4294967295 95 92 54 55 57 4294967295 96 95 54 57 58 94 4294967295 93 55 56 57 4294967295 4294967295 94 -58 59 64 4294967295 99 98 +58 59 64 4294967295 100 98 58 64 65 97 4294967295 89 -59 60 64 4294967295 101 97 -60 61 63 4294967295 102 101 -60 63 64 100 4294967295 99 -61 62 63 4294967295 4294967295 100 -66 67 73 4294967295 105 91 -67 68 72 4294967295 107 105 -67 72 73 104 4294967295 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 104 -69 70 71 4294967295 4294967295 106 -74 75 80 4294967295 111 110 +59 60 63 4294967295 102 100 +59 63 64 99 4294967295 97 +60 61 62 4294967295 4294967295 102 +60 62 63 101 4294967295 99 +66 67 72 4294967295 106 104 +66 72 73 103 4294967295 91 +67 68 71 4294967295 108 106 +67 71 72 105 4294967295 103 +68 69 70 4294967295 4294967295 108 +68 70 71 107 4294967295 105 +74 75 80 4294967295 112 110 74 80 81 109 4294967295 85 -75 76 80 4294967295 113 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 111 -77 78 79 4294967295 4294967295 112 -82 83 88 4294967295 117 116 +75 76 79 4294967295 114 112 +75 79 80 111 4294967295 109 +76 77 78 4294967295 4294967295 114 +76 78 79 113 4294967295 111 +82 83 88 4294967295 118 116 82 88 89 115 4294967295 87 -83 84 88 4294967295 119 115 -84 85 87 4294967295 120 119 -84 87 88 118 4294967295 117 -85 86 87 4294967295 4294967295 118 -90 91 96 4294967295 123 122 +83 84 87 4294967295 120 118 +83 87 88 117 4294967295 115 +84 85 86 4294967295 4294967295 120 +84 86 87 119 4294967295 117 +90 91 96 4294967295 124 122 90 96 97 121 4294967295 80 -91 92 96 4294967295 125 121 -92 93 95 4294967295 126 125 -92 95 96 124 4294967295 123 -93 94 95 4294967295 4294967295 124 -98 99 104 4294967295 130 128 +91 92 95 4294967295 126 124 +91 95 96 123 4294967295 121 +92 93 94 4294967295 4294967295 126 +92 94 95 125 4294967295 123 +98 99 104 4294967295 131 128 98 104 105 127 4294967295 129 98 105 108 128 134 82 -99 100 104 4294967295 132 127 -100 101 103 4294967295 133 132 -100 103 104 131 4294967295 130 -101 102 103 4294967295 4294967295 131 +99 100 103 4294967295 133 131 +99 103 104 130 4294967295 127 +100 101 102 4294967295 4294967295 133 +100 102 103 132 4294967295 130 105 106 108 4294967295 135 129 106 107 108 4294967295 4294967295 134 117 121 118 137 138 33 diff --git a/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_super.txt b/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_super.txt index 7e8c77f..245f97d 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_super.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_as-provided_resolve_super.txt @@ -1,30 +1,30 @@ -257 +251 0 1 116 1 8 6 0 102 1 2 4294967295 0 -0 106 102 3 213 1 -0 107 106 4 217 2 -0 108 107 5 217 3 +0 106 102 3 207 1 +0 107 106 4 211 2 +0 108 107 5 211 3 0 109 108 6 113 4 -0 116 109 0 220 5 +0 116 109 0 214 5 1 2 115 4294967295 9 8 -1 115 116 7 220 0 +1 115 116 7 214 0 2 3 115 10 14 7 2 14 3 4294967295 13 9 3 4 114 12 15 14 3 13 4 13 16 11 3 14 13 10 38 12 -3 114 115 11 219 9 +3 114 115 11 213 9 4 5 114 16 20 11 4 13 5 12 19 15 5 6 113 18 21 20 5 12 6 19 23 17 5 13 12 16 36 18 -5 113 114 17 222 15 +5 113 114 17 216 15 6 7 113 22 25 17 6 8 7 23 24 21 6 12 8 18 29 22 7 8 112 22 30 25 -7 112 113 24 223 21 +7 112 113 24 217 21 8 9 143 27 31 30 8 10 9 28 31 26 8 11 10 29 32 27 @@ -32,53 +32,53 @@ 8 143 112 26 103 24 9 10 143 27 33 26 10 11 137 28 35 33 -10 137 143 32 253 31 +10 137 143 32 247 31 11 12 132 29 37 35 -11 132 137 34 250 32 +11 132 137 34 244 32 12 13 133 19 40 37 -12 133 132 36 245 34 +12 133 132 36 239 34 13 14 15 13 4294967295 39 13 15 136 38 42 41 -13 135 133 41 251 36 -13 136 135 39 241 40 +13 135 133 41 245 36 +13 136 135 39 235 40 15 16 136 4294967295 43 39 16 17 136 4294967295 45 42 17 18 119 4294967295 46 45 -17 119 136 44 227 43 +17 119 136 44 221 43 18 19 119 4294967295 48 44 19 20 118 4294967295 50 48 -19 118 119 47 226 46 +19 118 119 47 220 46 20 21 117 4294967295 52 50 -20 117 118 49 224 47 +20 117 118 49 218 47 21 22 124 4294967295 54 52 -21 124 117 51 225 49 +21 124 117 51 219 49 22 23 123 4294967295 55 54 -22 123 124 53 232 51 +22 123 124 53 226 51 23 24 123 4294967295 56 53 24 25 123 4294967295 57 55 25 26 123 4294967295 58 56 26 27 123 4294967295 60 57 27 28 125 4294967295 61 60 -27 125 123 59 233 58 +27 125 123 59 227 58 28 29 125 62 66 59 28 37 29 4294967295 65 61 29 30 126 64 70 66 29 36 30 65 69 63 29 37 36 62 86 64 -29 126 125 63 235 61 +29 126 125 63 229 61 30 31 131 68 76 72 30 35 31 69 75 67 30 36 35 64 85 68 -30 128 126 71 237 63 -30 130 128 72 242 70 -30 131 130 67 243 71 +30 128 126 71 231 63 +30 130 128 72 236 70 +30 131 130 67 237 71 31 32 140 74 79 76 31 34 32 75 78 73 31 35 34 68 83 74 -31 140 131 73 249 67 +31 140 131 73 243 67 32 33 141 78 82 79 32 34 33 74 80 77 -32 141 140 77 256 73 +32 141 140 77 250 73 33 34 41 78 84 81 33 41 42 80 98 82 33 42 141 81 101 77 @@ -100,15 +100,15 @@ 41 44 42 96 100 81 42 43 142 100 104 101 42 44 43 98 102 99 -42 142 141 99 256 82 +42 142 141 99 250 82 43 44 112 100 106 103 43 112 143 102 30 104 -43 143 142 103 253 99 +43 143 142 103 247 99 44 45 111 97 109 106 -44 111 112 105 223 102 +44 111 112 105 217 102 45 46 109 92 113 108 -45 109 110 107 218 109 -45 110 111 108 221 105 +45 109 110 107 212 109 +45 110 111 108 215 105 46 47 108 111 114 113 46 48 47 112 114 110 46 49 48 93 115 111 @@ -116,20 +116,20 @@ 47 48 108 111 120 110 48 49 50 112 121 116 48 50 89 115 127 117 -48 89 90 116 192 118 -48 90 97 117 194 119 -48 97 98 118 205 120 -48 98 108 119 208 114 +48 89 90 116 186 118 +48 90 97 117 189 119 +48 97 98 118 198 120 +48 98 108 119 202 114 49 52 50 94 123 115 50 51 73 123 131 124 50 52 51 121 128 122 -50 73 74 122 166 125 -50 74 81 124 168 126 -50 81 82 125 179 127 -50 82 89 126 181 116 +50 73 74 122 162 125 +50 74 81 124 165 126 +50 81 82 125 174 127 +50 82 89 126 177 116 51 52 58 123 132 129 51 58 65 128 141 130 -51 65 66 129 152 131 +51 65 66 129 150 131 51 66 73 130 153 122 52 53 58 90 133 128 53 54 58 4294967295 135 132 @@ -137,125 +137,119 @@ 54 57 58 134 137 133 55 56 57 4294967295 4294967295 134 57 60 58 138 140 135 -57 61 60 4294967295 143 137 -58 59 64 140 142 141 +57 61 60 4294967295 144 137 +58 59 64 140 143 141 58 60 59 137 142 139 58 64 65 139 150 129 -59 60 64 140 144 139 -60 61 63 138 145 144 -60 63 64 143 148 142 -61 62 63 4294967295 146 143 -62 69 63 147 149 145 -62 78 69 4294967295 159 146 -63 68 64 149 151 144 -63 69 68 146 156 148 -64 67 65 151 152 141 -64 68 67 148 154 150 -65 67 66 150 153 130 -66 67 73 152 155 131 -67 68 72 151 157 155 -67 72 73 154 165 153 -68 69 71 149 158 157 -68 71 72 156 163 154 -69 70 71 159 160 156 -69 78 70 147 162 158 -70 76 71 161 164 158 -70 77 76 162 170 160 -70 78 77 159 172 161 -71 75 72 164 165 157 -71 76 75 160 169 163 -72 75 73 163 166 155 -73 75 74 165 167 124 -74 75 80 166 169 168 -74 80 81 167 178 125 -75 76 80 164 171 167 -76 77 79 161 172 171 -76 79 80 170 175 169 -77 78 79 162 173 170 -78 85 79 174 177 172 -78 86 85 4294967295 185 173 -79 83 80 176 178 171 -79 84 83 177 182 175 -79 85 84 173 183 176 -80 83 81 175 179 168 -81 83 82 178 180 126 -82 83 88 179 182 181 -82 88 89 180 190 127 -83 84 88 176 184 180 -84 85 87 177 185 184 -84 87 88 183 189 182 -85 86 87 174 186 183 -86 92 87 187 189 185 -86 93 92 188 196 186 -86 94 93 4294967295 198 187 -87 92 88 186 191 184 -88 91 89 191 192 181 -88 92 91 189 195 190 -89 91 90 190 193 117 -90 91 96 192 195 194 -90 96 97 193 203 118 -91 92 96 191 197 193 -92 93 95 187 198 197 -92 95 96 196 201 195 -93 94 95 188 199 196 -94 101 95 200 202 198 -94 102 101 4294967295 212 199 -95 100 96 202 204 197 -95 101 100 199 210 201 -96 99 97 204 205 194 -96 100 99 201 209 203 -97 99 98 203 206 119 -98 99 104 205 209 207 -98 104 105 206 215 208 -98 105 108 207 216 120 -99 100 104 204 211 206 -100 101 103 202 212 211 -100 103 104 210 214 209 -101 102 103 200 213 210 -102 106 103 2 214 212 -103 106 104 213 215 211 -104 106 105 214 216 207 -105 106 108 215 217 208 -106 107 108 3 4 216 -109 114 110 219 222 108 -109 115 114 220 14 218 -109 116 115 6 8 219 -110 113 111 222 223 109 -110 114 113 218 20 221 -111 113 112 221 25 106 -117 121 118 225 226 50 -117 124 121 52 232 224 -118 121 119 224 228 48 -119 120 136 228 230 45 -119 121 120 226 229 227 -120 121 122 228 231 230 -120 122 136 229 234 227 -121 123 122 232 233 229 -121 124 123 225 54 231 -122 123 125 231 60 234 -122 125 136 233 236 230 -125 126 127 66 237 236 -125 127 136 235 241 234 -126 128 127 70 238 235 -127 128 129 237 242 239 -127 129 134 238 246 240 -127 134 135 239 251 241 -127 135 136 240 41 236 -128 130 129 71 243 238 -129 130 131 242 72 244 -129 131 132 243 247 245 -129 132 133 244 37 246 -129 133 134 245 251 239 -131 138 132 248 250 244 -131 139 138 249 254 247 -131 140 139 76 254 248 -132 138 137 247 252 35 -133 135 134 40 240 246 -137 138 142 250 255 253 -137 142 143 252 104 33 -138 139 140 248 249 255 -138 140 142 254 256 252 -140 141 142 79 101 255 +59 60 63 140 145 143 +59 63 64 142 148 139 +60 61 62 138 4294967295 145 +60 62 63 144 146 142 +62 68 63 147 149 145 +62 69 68 4294967295 156 146 +63 67 64 149 151 143 +63 68 67 146 154 148 +64 66 65 151 130 141 +64 67 66 148 152 150 +66 67 72 151 155 153 +66 72 73 152 162 131 +67 68 71 149 157 155 +67 71 72 154 160 152 +68 69 70 147 4294967295 157 +68 70 71 156 158 154 +70 76 71 159 161 157 +70 77 76 4294967295 168 158 +71 75 72 161 163 155 +71 76 75 158 166 160 +72 74 73 163 124 153 +72 75 74 160 164 162 +74 75 80 163 167 165 +74 80 81 164 174 125 +75 76 79 161 169 167 +75 79 80 166 172 164 +76 77 78 159 4294967295 169 +76 78 79 168 170 166 +78 84 79 171 173 169 +78 85 84 4294967295 180 170 +79 83 80 173 175 167 +79 84 83 170 178 172 +80 82 81 175 126 165 +80 83 82 172 176 174 +82 83 88 175 179 177 +82 88 89 176 186 127 +83 84 87 173 181 179 +83 87 88 178 184 176 +84 85 86 171 4294967295 181 +84 86 87 180 182 178 +86 92 87 183 185 181 +86 93 92 4294967295 192 182 +87 91 88 185 187 179 +87 92 91 182 190 184 +88 90 89 187 117 177 +88 91 90 184 188 186 +90 91 96 187 191 189 +90 96 97 188 198 118 +91 92 95 185 193 191 +91 95 96 190 196 188 +92 93 94 183 4294967295 193 +92 94 95 192 194 190 +94 100 95 195 197 193 +94 101 100 4294967295 205 194 +95 99 96 197 199 191 +95 100 99 194 203 196 +96 98 97 199 119 189 +96 99 98 196 200 198 +98 99 104 199 204 201 +98 104 105 200 209 202 +98 105 108 201 210 120 +99 100 103 197 206 204 +99 103 104 203 208 200 +100 101 102 195 4294967295 206 +100 102 103 205 207 203 +102 106 103 2 208 206 +103 106 104 207 209 204 +104 106 105 208 210 201 +105 106 108 209 211 202 +106 107 108 3 4 210 +109 114 110 213 216 108 +109 115 114 214 14 212 +109 116 115 6 8 213 +110 113 111 216 217 109 +110 114 113 212 20 215 +111 113 112 215 25 106 +117 121 118 219 220 50 +117 124 121 52 226 218 +118 121 119 218 222 48 +119 120 136 222 224 45 +119 121 120 220 223 221 +120 121 122 222 225 224 +120 122 136 223 228 221 +121 123 122 226 227 223 +121 124 123 219 54 225 +122 123 125 225 60 228 +122 125 136 227 230 224 +125 126 127 66 231 230 +125 127 136 229 235 228 +126 128 127 70 232 229 +127 128 129 231 236 233 +127 129 134 232 240 234 +127 134 135 233 245 235 +127 135 136 234 41 230 +128 130 129 71 237 232 +129 130 131 236 72 238 +129 131 132 237 241 239 +129 132 133 238 37 240 +129 133 134 239 245 233 +131 138 132 242 244 238 +131 139 138 243 248 241 +131 140 139 76 248 242 +132 138 137 241 246 35 +133 135 134 40 234 240 +137 138 142 244 249 247 +137 142 143 246 104 33 +138 139 140 242 243 249 +138 140 142 248 250 246 +140 141 142 79 101 249 144 0 1 diff --git a/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_all.txt b/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_all.txt index a3275ca..a9290e8 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_all.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_all.txt @@ -1,293 +1,293 @@ 289 0 1 56 4294967295 15 13 0 21 2 2 26 4294967295 -0 22 21 3 78 1 -0 23 22 4 79 2 -0 24 23 5 81 3 -0 25 24 6 83 4 -0 26 25 7 85 5 -0 27 26 8 87 6 -0 28 27 9 88 7 -0 29 28 10 89 8 -0 30 29 11 90 9 -0 31 30 12 91 10 -0 40 31 13 94 11 -0 56 40 0 122 12 +0 22 21 3 84 1 +0 23 22 4 85 2 +0 24 23 5 87 3 +0 25 24 6 89 4 +0 26 25 7 91 5 +0 27 26 8 93 6 +0 28 27 9 94 7 +0 29 28 10 95 8 +0 30 29 11 96 9 +0 31 30 12 97 10 +0 40 31 13 100 11 +0 56 40 0 128 12 1 2 64 4294967295 27 19 -1 57 56 16 165 0 -1 58 57 17 166 15 -1 59 58 18 168 16 -1 60 59 19 168 17 -1 64 60 14 170 18 -2 4 105 21 33 31 -2 5 4 22 39 20 -2 17 5 23 42 21 -2 18 17 24 70 22 -2 19 18 25 74 23 -2 20 19 26 75 24 -2 21 20 1 76 25 -2 65 64 28 177 14 -2 81 65 29 179 27 -2 89 81 30 206 28 -2 97 89 31 220 29 -2 105 97 20 232 30 -3 4 119 33 40 38 -3 105 4 34 20 32 -3 109 105 35 245 33 -3 110 109 36 249 34 -3 111 110 37 249 35 -3 112 111 38 145 36 -3 119 112 32 252 37 -4 5 118 21 41 40 -4 118 119 39 252 32 -5 6 118 42 46 39 -5 17 6 22 45 41 -6 7 117 44 47 46 -6 16 7 45 48 43 -6 17 16 42 70 44 -6 117 118 43 251 41 -7 8 117 48 52 43 -7 16 8 44 51 47 -8 9 116 50 53 52 -8 15 9 51 55 49 -8 16 15 48 68 50 -8 116 117 49 254 47 -9 10 116 54 57 49 -9 11 10 55 56 53 -9 15 11 50 61 54 -10 11 115 54 62 57 -10 115 116 56 255 53 -11 12 146 59 63 62 -11 13 12 60 63 58 -11 14 13 61 64 59 -11 15 14 55 66 60 -11 146 115 58 135 56 -12 13 146 59 65 58 -13 14 140 60 67 65 -13 140 146 64 285 63 -14 15 135 61 69 67 -14 135 140 66 282 64 -15 16 136 51 72 69 -15 136 135 68 277 66 -16 17 18 45 23 71 -16 18 139 70 74 73 -16 138 136 73 283 68 -16 139 138 71 273 72 -18 19 139 24 75 71 -19 20 139 25 77 74 -20 21 122 26 78 77 -20 122 139 76 259 75 -21 22 122 2 80 76 -22 23 121 3 82 80 -22 121 122 79 258 78 -23 24 120 4 84 82 -23 120 121 81 256 79 -24 25 127 5 86 84 -24 127 120 83 257 81 -25 26 126 6 87 86 -25 126 127 85 264 83 -26 27 126 7 88 85 -27 28 126 8 89 87 -28 29 126 9 90 88 -29 30 126 10 92 89 -30 31 128 11 93 92 -30 128 126 91 265 90 -31 32 128 94 98 91 -31 40 32 12 97 93 -32 33 129 96 102 98 -32 39 33 97 101 95 -32 40 39 94 118 96 -32 129 128 95 267 93 -33 34 134 100 108 104 -33 38 34 101 107 99 -33 39 38 96 117 100 -33 131 129 103 269 95 -33 133 131 104 274 102 -33 134 133 99 275 103 -34 35 143 106 111 108 -34 37 35 107 110 105 -34 38 37 100 115 106 -34 143 134 105 281 99 -35 36 144 110 114 111 -35 37 36 106 112 109 -35 144 143 109 288 105 -36 37 44 110 116 113 -36 44 45 112 130 114 -36 45 144 113 133 109 -37 38 43 107 117 116 -37 43 44 115 128 112 -38 39 43 101 119 115 -39 40 42 97 120 119 -39 42 43 118 127 117 -40 41 42 121 123 118 -40 55 41 122 126 120 -40 56 55 13 164 121 -41 48 42 124 127 120 -41 49 48 125 139 123 -41 52 49 126 144 124 -41 55 52 121 153 125 -42 48 43 123 129 119 -43 47 44 129 130 116 -43 48 47 127 137 128 -44 47 45 128 132 113 -45 46 145 132 136 133 -45 47 46 130 134 131 -45 145 144 131 288 114 -46 47 115 132 138 135 -46 115 146 134 62 136 -46 146 145 135 285 131 -47 48 114 129 141 138 -47 114 115 137 255 134 -48 49 112 124 145 140 -48 112 113 139 250 141 -48 113 114 140 253 137 -49 50 111 143 146 145 -49 51 50 144 146 142 -49 52 51 125 147 143 -49 111 112 142 37 139 -50 51 111 143 152 142 -51 52 53 144 153 148 -51 53 92 147 159 149 -51 92 93 148 224 150 -51 93 100 149 226 151 -51 100 101 150 237 152 -51 101 111 151 240 146 -52 55 53 126 155 147 -53 54 76 155 163 156 -53 55 54 153 160 154 -53 76 77 154 198 157 -53 77 84 156 200 158 -53 84 85 157 211 159 -53 85 92 158 213 148 -54 55 61 155 164 161 -54 61 68 160 173 162 -54 68 69 161 184 163 -54 69 76 162 185 154 -55 56 61 122 165 160 -56 57 61 15 167 164 -57 58 60 16 168 167 -57 60 61 166 169 165 -58 59 60 17 18 166 -60 63 61 170 172 167 -60 64 63 19 175 169 -61 62 67 172 174 173 -61 63 62 169 174 171 -61 67 68 171 182 161 -62 63 67 172 176 171 -63 64 66 170 177 176 -63 66 67 175 180 174 -64 65 66 27 178 175 -65 72 66 179 181 177 -65 81 72 28 191 178 -66 71 67 181 183 176 -66 72 71 178 188 180 -67 70 68 183 184 173 -67 71 70 180 186 182 -68 70 69 182 185 162 -69 70 76 184 187 163 -70 71 75 183 189 187 -70 75 76 186 197 185 -71 72 74 181 190 189 -71 74 75 188 195 186 -72 73 74 191 192 188 -72 81 73 179 194 190 -73 79 74 193 196 190 -73 80 79 194 202 192 -73 81 80 191 204 193 -74 78 75 196 197 189 -74 79 78 192 201 195 -75 78 76 195 198 187 -76 78 77 197 199 156 -77 78 83 198 201 200 -77 83 84 199 210 157 -78 79 83 196 203 199 -79 80 82 193 204 203 -79 82 83 202 207 201 -80 81 82 194 205 202 -81 88 82 206 209 204 -81 89 88 29 217 205 -82 86 83 208 210 203 -82 87 86 209 214 207 -82 88 87 205 215 208 -83 86 84 207 211 200 -84 86 85 210 212 158 -85 86 91 211 214 213 -85 91 92 212 222 159 -86 87 91 208 216 212 -87 88 90 209 217 216 -87 90 91 215 221 214 -88 89 90 206 218 215 -89 95 90 219 221 217 -89 96 95 220 228 218 -89 97 96 30 230 219 -90 95 91 218 223 216 -91 94 92 223 224 213 -91 95 94 221 227 222 -92 94 93 222 225 149 -93 94 99 224 227 226 -93 99 100 225 235 150 -94 95 99 223 229 225 -95 96 98 219 230 229 -95 98 99 228 233 227 -96 97 98 220 231 228 -97 104 98 232 234 230 -97 105 104 31 244 231 -98 103 99 234 236 229 -98 104 103 231 242 233 -99 102 100 236 237 226 -99 103 102 233 241 235 -100 102 101 235 238 151 -101 102 107 237 241 239 +1 57 56 16 171 0 +1 58 57 17 172 15 +1 59 58 18 174 16 +1 60 59 19 174 17 +1 64 60 14 176 18 +2 4 105 21 39 37 +2 5 4 22 45 20 +2 17 5 23 48 21 +2 18 17 24 76 22 +2 19 18 25 80 23 +2 20 19 26 81 24 +2 21 20 1 82 25 +2 65 64 28 182 14 +2 72 65 29 184 27 +2 73 72 30 195 28 +2 80 73 31 196 29 +2 81 80 32 205 30 +2 88 81 33 209 31 +2 89 88 34 217 32 +2 96 89 35 221 33 +2 97 96 36 231 34 +2 104 97 37 232 35 +2 105 104 20 244 36 +3 4 119 39 46 44 +3 105 4 40 20 38 +3 109 105 41 245 39 +3 110 109 42 249 40 +3 111 110 43 249 41 +3 112 111 44 151 42 +3 119 112 38 252 43 +4 5 118 21 47 46 +4 118 119 45 252 38 +5 6 118 48 52 45 +5 17 6 22 51 47 +6 7 117 50 53 52 +6 16 7 51 54 49 +6 17 16 48 76 50 +6 117 118 49 251 47 +7 8 117 54 58 49 +7 16 8 50 57 53 +8 9 116 56 59 58 +8 15 9 57 61 55 +8 16 15 54 74 56 +8 116 117 55 254 53 +9 10 116 60 63 55 +9 11 10 61 62 59 +9 15 11 56 67 60 +10 11 115 60 68 63 +10 115 116 62 255 59 +11 12 146 65 69 68 +11 13 12 66 69 64 +11 14 13 67 70 65 +11 15 14 61 72 66 +11 146 115 64 141 62 +12 13 146 65 71 64 +13 14 140 66 73 71 +13 140 146 70 285 69 +14 15 135 67 75 73 +14 135 140 72 282 70 +15 16 136 57 78 75 +15 136 135 74 277 72 +16 17 18 51 23 77 +16 18 139 76 80 79 +16 138 136 79 283 74 +16 139 138 77 273 78 +18 19 139 24 81 77 +19 20 139 25 83 80 +20 21 122 26 84 83 +20 122 139 82 259 81 +21 22 122 2 86 82 +22 23 121 3 88 86 +22 121 122 85 258 84 +23 24 120 4 90 88 +23 120 121 87 256 85 +24 25 127 5 92 90 +24 127 120 89 257 87 +25 26 126 6 93 92 +25 126 127 91 264 89 +26 27 126 7 94 91 +27 28 126 8 95 93 +28 29 126 9 96 94 +29 30 126 10 98 95 +30 31 128 11 99 98 +30 128 126 97 265 96 +31 32 128 100 104 97 +31 40 32 12 103 99 +32 33 129 102 108 104 +32 39 33 103 107 101 +32 40 39 100 124 102 +32 129 128 101 267 99 +33 34 134 106 114 110 +33 38 34 107 113 105 +33 39 38 102 123 106 +33 131 129 109 269 101 +33 133 131 110 274 108 +33 134 133 105 275 109 +34 35 143 112 117 114 +34 37 35 113 116 111 +34 38 37 106 121 112 +34 143 134 111 281 105 +35 36 144 116 120 117 +35 37 36 112 118 115 +35 144 143 115 288 111 +36 37 44 116 122 119 +36 44 45 118 136 120 +36 45 144 119 139 115 +37 38 43 113 123 122 +37 43 44 121 134 118 +38 39 43 107 125 121 +39 40 42 103 126 125 +39 42 43 124 133 123 +40 41 42 127 129 124 +40 55 41 128 132 126 +40 56 55 13 170 127 +41 48 42 130 133 126 +41 49 48 131 145 129 +41 52 49 132 150 130 +41 55 52 127 159 131 +42 48 43 129 135 125 +43 47 44 135 136 122 +43 48 47 133 143 134 +44 47 45 134 138 119 +45 46 145 138 142 139 +45 47 46 136 140 137 +45 145 144 137 288 120 +46 47 115 138 144 141 +46 115 146 140 68 142 +46 146 145 141 285 137 +47 48 114 135 147 144 +47 114 115 143 255 140 +48 49 112 130 151 146 +48 112 113 145 250 147 +48 113 114 146 253 143 +49 50 111 149 152 151 +49 51 50 150 152 148 +49 52 51 131 153 149 +49 111 112 148 43 145 +50 51 111 149 158 148 +51 52 53 150 159 154 +51 53 92 153 165 155 +51 92 93 154 225 156 +51 93 100 155 227 157 +51 100 101 156 235 158 +51 101 111 157 240 152 +52 55 53 132 161 153 +53 54 76 161 169 162 +53 55 54 159 166 160 +53 76 77 160 199 163 +53 77 84 162 203 164 +53 84 85 163 211 165 +53 85 92 164 215 154 +54 55 61 161 170 167 +54 61 68 166 179 168 +54 68 69 167 188 169 +54 69 76 168 191 160 +55 56 61 128 171 166 +56 57 61 15 173 170 +57 58 60 16 174 173 +57 60 61 172 175 171 +58 59 60 17 18 172 +60 63 61 176 178 173 +60 64 63 19 182 175 +61 62 67 178 181 179 +61 63 62 175 180 177 +61 67 68 177 188 167 +62 63 66 178 183 181 +62 66 67 180 185 177 +63 64 65 176 27 183 +63 65 66 182 184 180 +65 72 66 28 187 183 +66 70 67 186 189 181 +66 71 70 187 192 185 +66 72 71 184 194 186 +67 69 68 189 168 179 +67 70 69 185 190 188 +69 70 75 189 193 191 +69 75 76 190 199 169 +70 71 74 186 194 193 +70 74 75 192 197 190 +71 72 74 187 195 192 +72 73 74 29 196 194 +73 80 74 30 198 195 +74 79 75 198 201 193 +74 80 79 196 205 197 +75 77 76 200 162 191 +75 78 77 201 202 199 +75 79 78 197 204 200 +77 78 83 200 204 203 +77 83 84 202 211 163 +78 79 83 201 207 202 +79 80 81 198 31 206 +79 81 82 205 208 207 +79 82 83 206 210 204 +81 87 82 209 210 206 +81 88 87 32 217 208 +82 87 83 208 213 207 +83 85 84 212 164 203 +83 86 85 213 214 211 +83 87 86 210 216 212 +85 86 91 212 216 215 +85 91 92 214 223 165 +86 87 91 213 219 214 +87 88 89 209 33 218 +87 89 90 217 220 219 +87 90 91 218 222 216 +89 95 90 221 222 218 +89 96 95 34 229 220 +90 95 91 220 224 219 +91 94 92 224 225 215 +91 95 94 222 228 223 +92 94 93 223 226 155 +93 94 99 225 228 227 +93 99 100 226 235 156 +94 95 99 224 230 226 +95 96 98 221 231 230 +95 98 99 229 233 228 +96 97 98 35 232 229 +97 104 98 36 234 231 +98 103 99 234 237 230 +98 104 103 232 242 233 +99 101 100 236 157 227 +99 102 101 237 238 235 +99 103 102 233 241 236 +101 102 107 236 241 239 101 107 108 238 247 240 -101 108 111 239 248 152 -102 103 107 236 243 238 +101 108 111 239 248 158 +102 103 107 237 243 238 103 104 106 234 244 243 103 106 107 242 246 241 -104 105 106 232 245 242 -105 109 106 34 246 244 +104 105 106 37 245 242 +105 109 106 40 246 244 106 109 107 245 247 243 107 109 108 246 248 239 108 109 111 247 249 240 -109 110 111 35 36 248 -112 117 113 251 254 140 -112 118 117 252 46 250 -112 119 118 38 40 251 -113 116 114 254 255 141 -113 117 116 250 52 253 -114 116 115 253 57 138 -120 124 121 257 258 82 -120 127 124 84 264 256 -121 124 122 256 260 80 -122 123 139 260 262 77 +109 110 111 41 42 248 +112 117 113 251 254 146 +112 118 117 252 52 250 +112 119 118 44 46 251 +113 116 114 254 255 147 +113 117 116 250 58 253 +114 116 115 253 63 144 +120 124 121 257 258 88 +120 127 124 90 264 256 +121 124 122 256 260 86 +122 123 139 260 262 83 122 124 123 258 261 259 123 124 125 260 263 262 123 125 139 261 266 259 124 126 125 264 265 261 -124 127 126 257 86 263 -125 126 128 263 92 266 +124 127 126 257 92 263 +125 126 128 263 98 266 125 128 139 265 268 262 -128 129 130 98 269 268 +128 129 130 104 269 268 128 130 139 267 273 266 -129 131 130 102 270 267 +129 131 130 108 270 267 130 131 132 269 274 271 130 132 137 270 278 272 130 137 138 271 283 273 -130 138 139 272 73 268 -131 133 132 103 275 270 -132 133 134 274 104 276 +130 138 139 272 79 268 +131 133 132 109 275 270 +132 133 134 274 110 276 132 134 135 275 279 277 -132 135 136 276 69 278 +132 135 136 276 75 278 132 136 137 277 283 271 134 141 135 280 282 276 134 142 141 281 286 279 -134 143 142 108 286 280 -135 141 140 279 284 67 -136 138 137 72 272 278 +134 143 142 114 286 280 +135 141 140 279 284 73 +136 138 137 78 272 278 140 141 145 282 287 285 -140 145 146 284 136 65 +140 145 146 284 142 71 141 142 143 280 281 287 141 143 145 286 288 284 -143 144 145 111 133 287 +143 144 145 117 139 287 144 3 4 diff --git a/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_auto.txt b/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_auto.txt index e94af4b..75a5d92 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_auto.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_auto.txt @@ -90,36 +90,36 @@ 51 52 58 4294967295 92 89 51 58 65 88 98 90 51 65 66 89 4294967295 91 -51 66 73 90 103 83 +51 66 73 90 104 83 52 53 58 4294967295 93 88 53 54 58 4294967295 95 92 54 55 57 4294967295 96 95 54 57 58 94 4294967295 93 55 56 57 4294967295 4294967295 94 -58 59 64 4294967295 99 98 +58 59 64 4294967295 100 98 58 64 65 97 4294967295 89 -59 60 64 4294967295 101 97 -60 61 63 4294967295 102 101 -60 63 64 100 4294967295 99 -61 62 63 4294967295 4294967295 100 -66 67 73 4294967295 105 91 -67 68 72 4294967295 107 105 -67 72 73 104 4294967295 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 104 -69 70 71 4294967295 4294967295 106 +59 60 63 4294967295 102 100 +59 63 64 99 4294967295 97 +60 61 62 4294967295 4294967295 102 +60 62 63 101 4294967295 99 +66 67 72 4294967295 106 104 +66 72 73 103 4294967295 91 +67 68 71 4294967295 107 106 +67 71 72 105 4294967295 103 +68 69 71 4294967295 108 105 +69 70 71 4294967295 4294967295 107 74 75 80 4294967295 111 110 74 80 81 109 4294967295 85 -75 76 80 4294967295 113 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 111 -77 78 79 4294967295 4294967295 112 +75 76 80 4294967295 114 109 +76 77 78 4294967295 4294967295 113 +76 78 79 112 4294967295 114 +76 79 80 113 4294967295 111 82 83 88 4294967295 117 116 82 88 89 115 4294967295 87 -83 84 88 4294967295 119 115 -84 85 87 4294967295 120 119 -84 87 88 118 4294967295 117 -85 86 87 4294967295 4294967295 118 +83 84 88 4294967295 120 115 +84 85 86 4294967295 4294967295 119 +84 86 87 118 4294967295 120 +84 87 88 119 4294967295 117 90 91 96 4294967295 123 122 90 96 97 121 4294967295 80 91 92 96 4294967295 125 121 diff --git a/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_outer.txt b/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_outer.txt index e453f8b..01b32ca 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_outer.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_outer.txt @@ -90,36 +90,36 @@ 51 52 58 4294967295 92 89 51 58 65 88 98 90 51 65 66 89 4294967295 91 -51 66 73 90 103 83 +51 66 73 90 104 83 52 53 58 4294967295 93 88 53 54 58 4294967295 95 92 54 55 57 4294967295 96 95 54 57 58 94 4294967295 93 55 56 57 4294967295 4294967295 94 -58 59 64 4294967295 99 98 +58 59 64 4294967295 100 98 58 64 65 97 4294967295 89 -59 60 64 4294967295 101 97 -60 61 63 4294967295 102 101 -60 63 64 100 4294967295 99 -61 62 63 4294967295 4294967295 100 -66 67 73 4294967295 105 91 -67 68 72 4294967295 107 105 -67 72 73 104 4294967295 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 104 -69 70 71 4294967295 4294967295 106 +59 60 63 4294967295 102 100 +59 63 64 99 4294967295 97 +60 61 62 4294967295 4294967295 102 +60 62 63 101 4294967295 99 +66 67 72 4294967295 106 104 +66 72 73 103 4294967295 91 +67 68 71 4294967295 107 106 +67 71 72 105 4294967295 103 +68 69 71 4294967295 108 105 +69 70 71 4294967295 4294967295 107 74 75 80 4294967295 111 110 74 80 81 109 4294967295 85 -75 76 80 4294967295 113 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 111 -77 78 79 4294967295 4294967295 112 +75 76 80 4294967295 114 109 +76 77 78 4294967295 4294967295 113 +76 78 79 112 4294967295 114 +76 79 80 113 4294967295 111 82 83 88 4294967295 117 116 82 88 89 115 4294967295 87 -83 84 88 4294967295 119 115 -84 85 87 4294967295 120 119 -84 87 88 118 4294967295 117 -85 86 87 4294967295 4294967295 118 +83 84 88 4294967295 120 115 +84 85 86 4294967295 4294967295 119 +84 86 87 118 4294967295 120 +84 87 88 119 4294967295 117 90 91 96 4294967295 123 122 90 96 97 121 4294967295 80 91 92 96 4294967295 125 121 diff --git a/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_super.txt b/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_super.txt index 7e8c77f..5ad2208 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_super.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_auto_ignore_super.txt @@ -1,30 +1,30 @@ -257 +251 0 1 116 1 8 6 0 102 1 2 4294967295 0 -0 106 102 3 213 1 -0 107 106 4 217 2 -0 108 107 5 217 3 +0 106 102 3 207 1 +0 107 106 4 211 2 +0 108 107 5 211 3 0 109 108 6 113 4 -0 116 109 0 220 5 +0 116 109 0 214 5 1 2 115 4294967295 9 8 -1 115 116 7 220 0 +1 115 116 7 214 0 2 3 115 10 14 7 2 14 3 4294967295 13 9 3 4 114 12 15 14 3 13 4 13 16 11 3 14 13 10 38 12 -3 114 115 11 219 9 +3 114 115 11 213 9 4 5 114 16 20 11 4 13 5 12 19 15 5 6 113 18 21 20 5 12 6 19 23 17 5 13 12 16 36 18 -5 113 114 17 222 15 +5 113 114 17 216 15 6 7 113 22 25 17 6 8 7 23 24 21 6 12 8 18 29 22 7 8 112 22 30 25 -7 112 113 24 223 21 +7 112 113 24 217 21 8 9 143 27 31 30 8 10 9 28 31 26 8 11 10 29 32 27 @@ -32,53 +32,53 @@ 8 143 112 26 103 24 9 10 143 27 33 26 10 11 137 28 35 33 -10 137 143 32 253 31 +10 137 143 32 247 31 11 12 132 29 37 35 -11 132 137 34 250 32 +11 132 137 34 244 32 12 13 133 19 40 37 -12 133 132 36 245 34 +12 133 132 36 239 34 13 14 15 13 4294967295 39 13 15 136 38 42 41 -13 135 133 41 251 36 -13 136 135 39 241 40 +13 135 133 41 245 36 +13 136 135 39 235 40 15 16 136 4294967295 43 39 16 17 136 4294967295 45 42 17 18 119 4294967295 46 45 -17 119 136 44 227 43 +17 119 136 44 221 43 18 19 119 4294967295 48 44 19 20 118 4294967295 50 48 -19 118 119 47 226 46 +19 118 119 47 220 46 20 21 117 4294967295 52 50 -20 117 118 49 224 47 +20 117 118 49 218 47 21 22 124 4294967295 54 52 -21 124 117 51 225 49 +21 124 117 51 219 49 22 23 123 4294967295 55 54 -22 123 124 53 232 51 +22 123 124 53 226 51 23 24 123 4294967295 56 53 24 25 123 4294967295 57 55 25 26 123 4294967295 58 56 26 27 123 4294967295 60 57 27 28 125 4294967295 61 60 -27 125 123 59 233 58 +27 125 123 59 227 58 28 29 125 62 66 59 28 37 29 4294967295 65 61 29 30 126 64 70 66 29 36 30 65 69 63 29 37 36 62 86 64 -29 126 125 63 235 61 +29 126 125 63 229 61 30 31 131 68 76 72 30 35 31 69 75 67 30 36 35 64 85 68 -30 128 126 71 237 63 -30 130 128 72 242 70 -30 131 130 67 243 71 +30 128 126 71 231 63 +30 130 128 72 236 70 +30 131 130 67 237 71 31 32 140 74 79 76 31 34 32 75 78 73 31 35 34 68 83 74 -31 140 131 73 249 67 +31 140 131 73 243 67 32 33 141 78 82 79 32 34 33 74 80 77 -32 141 140 77 256 73 +32 141 140 77 250 73 33 34 41 78 84 81 33 41 42 80 98 82 33 42 141 81 101 77 @@ -100,15 +100,15 @@ 41 44 42 96 100 81 42 43 142 100 104 101 42 44 43 98 102 99 -42 142 141 99 256 82 +42 142 141 99 250 82 43 44 112 100 106 103 43 112 143 102 30 104 -43 143 142 103 253 99 +43 143 142 103 247 99 44 45 111 97 109 106 -44 111 112 105 223 102 +44 111 112 105 217 102 45 46 109 92 113 108 -45 109 110 107 218 109 -45 110 111 108 221 105 +45 109 110 107 212 109 +45 110 111 108 215 105 46 47 108 111 114 113 46 48 47 112 114 110 46 49 48 93 115 111 @@ -116,20 +116,20 @@ 47 48 108 111 120 110 48 49 50 112 121 116 48 50 89 115 127 117 -48 89 90 116 192 118 -48 90 97 117 194 119 -48 97 98 118 205 120 -48 98 108 119 208 114 +48 89 90 116 187 118 +48 90 97 117 189 119 +48 97 98 118 197 120 +48 98 108 119 202 114 49 52 50 94 123 115 50 51 73 123 131 124 50 52 51 121 128 122 -50 73 74 122 166 125 -50 74 81 124 168 126 -50 81 82 125 179 127 -50 82 89 126 181 116 +50 73 74 122 161 125 +50 74 81 124 165 126 +50 81 82 125 173 127 +50 82 89 126 177 116 51 52 58 123 132 129 51 58 65 128 141 130 -51 65 66 129 152 131 +51 65 66 129 150 131 51 66 73 130 153 122 52 53 58 90 133 128 53 54 58 4294967295 135 132 @@ -137,125 +137,119 @@ 54 57 58 134 137 133 55 56 57 4294967295 4294967295 134 57 60 58 138 140 135 -57 61 60 4294967295 143 137 -58 59 64 140 142 141 +57 61 60 4294967295 144 137 +58 59 64 140 143 141 58 60 59 137 142 139 58 64 65 139 150 129 -59 60 64 140 144 139 -60 61 63 138 145 144 -60 63 64 143 148 142 -61 62 63 4294967295 146 143 -62 69 63 147 149 145 -62 78 69 4294967295 159 146 -63 68 64 149 151 144 +59 60 63 140 145 143 +59 63 64 142 147 139 +60 61 62 138 4294967295 145 +60 62 63 144 146 142 +62 69 63 4294967295 149 145 +63 67 64 148 151 143 +63 68 67 149 154 147 63 69 68 146 156 148 -64 67 65 151 152 141 -64 68 67 148 154 150 -65 67 66 150 153 130 -66 67 73 152 155 131 -67 68 72 151 157 155 -67 72 73 154 165 153 -68 69 71 149 158 157 -68 71 72 156 163 154 -69 70 71 159 160 156 -69 78 70 147 162 158 -70 76 71 161 164 158 -70 77 76 162 170 160 -70 78 77 159 172 161 -71 75 72 164 165 157 -71 76 75 160 169 163 -72 75 73 163 166 155 -73 75 74 165 167 124 -74 75 80 166 169 168 -74 80 81 167 178 125 -75 76 80 164 171 167 -76 77 79 161 172 171 -76 79 80 170 175 169 -77 78 79 162 173 170 -78 85 79 174 177 172 -78 86 85 4294967295 185 173 -79 83 80 176 178 171 -79 84 83 177 182 175 -79 85 84 173 183 176 -80 83 81 175 179 168 -81 83 82 178 180 126 -82 83 88 179 182 181 -82 88 89 180 190 127 -83 84 88 176 184 180 -84 85 87 177 185 184 -84 87 88 183 189 182 -85 86 87 174 186 183 -86 92 87 187 189 185 -86 93 92 188 196 186 -86 94 93 4294967295 198 187 -87 92 88 186 191 184 -88 91 89 191 192 181 -88 92 91 189 195 190 -89 91 90 190 193 117 -90 91 96 192 195 194 -90 96 97 193 203 118 -91 92 96 191 197 193 -92 93 95 187 198 197 -92 95 96 196 201 195 -93 94 95 188 199 196 -94 101 95 200 202 198 -94 102 101 4294967295 212 199 -95 100 96 202 204 197 -95 101 100 199 210 201 -96 99 97 204 205 194 -96 100 99 201 209 203 -97 99 98 203 206 119 -98 99 104 205 209 207 -98 104 105 206 215 208 -98 105 108 207 216 120 -99 100 104 204 211 206 -100 101 103 202 212 211 -100 103 104 210 214 209 -101 102 103 200 213 210 -102 106 103 2 214 212 -103 106 104 213 215 211 -104 106 105 214 216 207 -105 106 108 215 217 208 -106 107 108 3 4 216 -109 114 110 219 222 108 -109 115 114 220 14 218 -109 116 115 6 8 219 -110 113 111 222 223 109 -110 114 113 218 20 221 -111 113 112 221 25 106 -117 121 118 225 226 50 -117 124 121 52 232 224 -118 121 119 224 228 48 -119 120 136 228 230 45 -119 121 120 226 229 227 -120 121 122 228 231 230 -120 122 136 229 234 227 -121 123 122 232 233 229 -121 124 123 225 54 231 -122 123 125 231 60 234 -122 125 136 233 236 230 -125 126 127 66 237 236 -125 127 136 235 241 234 -126 128 127 70 238 235 -127 128 129 237 242 239 -127 129 134 238 246 240 -127 134 135 239 251 241 -127 135 136 240 41 236 -128 130 129 71 243 238 -129 130 131 242 72 244 -129 131 132 243 247 245 -129 132 133 244 37 246 -129 133 134 245 251 239 -131 138 132 248 250 244 -131 139 138 249 254 247 -131 140 139 76 254 248 -132 138 137 247 252 35 -133 135 134 40 240 246 -137 138 142 250 255 253 -137 142 143 252 104 33 -138 139 140 248 249 255 -138 140 142 254 256 252 -140 141 142 79 101 255 +64 66 65 151 130 141 +64 67 66 147 152 150 +66 67 72 151 155 153 +66 72 73 152 161 131 +67 68 71 148 156 155 +67 71 72 154 159 152 +68 69 71 149 157 154 +69 70 71 4294967295 158 156 +70 77 71 4294967295 160 157 +71 76 72 160 163 155 +71 77 76 158 167 159 +72 74 73 162 124 153 +72 75 74 163 164 161 +72 76 75 159 166 162 +74 75 80 162 166 165 +74 80 81 164 173 125 +75 76 80 163 169 164 +76 77 78 160 4294967295 168 +76 78 79 167 170 169 +76 79 80 168 172 166 +78 84 79 171 172 168 +78 85 84 4294967295 179 170 +79 84 80 170 175 169 +80 82 81 174 126 165 +80 83 82 175 176 173 +80 84 83 172 178 174 +82 83 88 174 178 177 +82 88 89 176 185 127 +83 84 88 175 181 176 +84 85 86 171 4294967295 180 +84 86 87 179 182 181 +84 87 88 180 184 178 +86 92 87 183 184 180 +86 93 92 4294967295 191 182 +87 92 88 182 186 181 +88 91 89 186 187 177 +88 92 91 184 190 185 +89 91 90 185 188 117 +90 91 96 187 190 189 +90 96 97 188 197 118 +91 92 96 186 192 188 +92 93 95 183 193 192 +92 95 96 191 195 190 +93 94 95 4294967295 194 191 +94 101 95 4294967295 196 193 +95 100 96 196 199 192 +95 101 100 194 204 195 +96 98 97 198 119 189 +96 99 98 199 200 197 +96 100 99 195 203 198 +98 99 104 198 203 201 +98 104 105 200 209 202 +98 105 108 201 210 120 +99 100 104 199 205 200 +100 101 103 196 206 205 +100 103 104 204 208 203 +101 102 103 4294967295 207 204 +102 106 103 2 208 206 +103 106 104 207 209 205 +104 106 105 208 210 201 +105 106 108 209 211 202 +106 107 108 3 4 210 +109 114 110 213 216 108 +109 115 114 214 14 212 +109 116 115 6 8 213 +110 113 111 216 217 109 +110 114 113 212 20 215 +111 113 112 215 25 106 +117 121 118 219 220 50 +117 124 121 52 226 218 +118 121 119 218 222 48 +119 120 136 222 224 45 +119 121 120 220 223 221 +120 121 122 222 225 224 +120 122 136 223 228 221 +121 123 122 226 227 223 +121 124 123 219 54 225 +122 123 125 225 60 228 +122 125 136 227 230 224 +125 126 127 66 231 230 +125 127 136 229 235 228 +126 128 127 70 232 229 +127 128 129 231 236 233 +127 129 134 232 240 234 +127 134 135 233 245 235 +127 135 136 234 41 230 +128 130 129 71 237 232 +129 130 131 236 72 238 +129 131 132 237 241 239 +129 132 133 238 37 240 +129 133 134 239 245 233 +131 138 132 242 244 238 +131 139 138 243 248 241 +131 140 139 76 248 242 +132 138 137 241 246 35 +133 135 134 40 234 240 +137 138 142 244 249 247 +137 142 143 246 104 33 +138 139 140 242 243 249 +138 140 142 248 250 246 +140 141 142 79 101 249 144 0 1 diff --git a/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_all.txt b/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_all.txt index a3275ca..a9290e8 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_all.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_all.txt @@ -1,293 +1,293 @@ 289 0 1 56 4294967295 15 13 0 21 2 2 26 4294967295 -0 22 21 3 78 1 -0 23 22 4 79 2 -0 24 23 5 81 3 -0 25 24 6 83 4 -0 26 25 7 85 5 -0 27 26 8 87 6 -0 28 27 9 88 7 -0 29 28 10 89 8 -0 30 29 11 90 9 -0 31 30 12 91 10 -0 40 31 13 94 11 -0 56 40 0 122 12 +0 22 21 3 84 1 +0 23 22 4 85 2 +0 24 23 5 87 3 +0 25 24 6 89 4 +0 26 25 7 91 5 +0 27 26 8 93 6 +0 28 27 9 94 7 +0 29 28 10 95 8 +0 30 29 11 96 9 +0 31 30 12 97 10 +0 40 31 13 100 11 +0 56 40 0 128 12 1 2 64 4294967295 27 19 -1 57 56 16 165 0 -1 58 57 17 166 15 -1 59 58 18 168 16 -1 60 59 19 168 17 -1 64 60 14 170 18 -2 4 105 21 33 31 -2 5 4 22 39 20 -2 17 5 23 42 21 -2 18 17 24 70 22 -2 19 18 25 74 23 -2 20 19 26 75 24 -2 21 20 1 76 25 -2 65 64 28 177 14 -2 81 65 29 179 27 -2 89 81 30 206 28 -2 97 89 31 220 29 -2 105 97 20 232 30 -3 4 119 33 40 38 -3 105 4 34 20 32 -3 109 105 35 245 33 -3 110 109 36 249 34 -3 111 110 37 249 35 -3 112 111 38 145 36 -3 119 112 32 252 37 -4 5 118 21 41 40 -4 118 119 39 252 32 -5 6 118 42 46 39 -5 17 6 22 45 41 -6 7 117 44 47 46 -6 16 7 45 48 43 -6 17 16 42 70 44 -6 117 118 43 251 41 -7 8 117 48 52 43 -7 16 8 44 51 47 -8 9 116 50 53 52 -8 15 9 51 55 49 -8 16 15 48 68 50 -8 116 117 49 254 47 -9 10 116 54 57 49 -9 11 10 55 56 53 -9 15 11 50 61 54 -10 11 115 54 62 57 -10 115 116 56 255 53 -11 12 146 59 63 62 -11 13 12 60 63 58 -11 14 13 61 64 59 -11 15 14 55 66 60 -11 146 115 58 135 56 -12 13 146 59 65 58 -13 14 140 60 67 65 -13 140 146 64 285 63 -14 15 135 61 69 67 -14 135 140 66 282 64 -15 16 136 51 72 69 -15 136 135 68 277 66 -16 17 18 45 23 71 -16 18 139 70 74 73 -16 138 136 73 283 68 -16 139 138 71 273 72 -18 19 139 24 75 71 -19 20 139 25 77 74 -20 21 122 26 78 77 -20 122 139 76 259 75 -21 22 122 2 80 76 -22 23 121 3 82 80 -22 121 122 79 258 78 -23 24 120 4 84 82 -23 120 121 81 256 79 -24 25 127 5 86 84 -24 127 120 83 257 81 -25 26 126 6 87 86 -25 126 127 85 264 83 -26 27 126 7 88 85 -27 28 126 8 89 87 -28 29 126 9 90 88 -29 30 126 10 92 89 -30 31 128 11 93 92 -30 128 126 91 265 90 -31 32 128 94 98 91 -31 40 32 12 97 93 -32 33 129 96 102 98 -32 39 33 97 101 95 -32 40 39 94 118 96 -32 129 128 95 267 93 -33 34 134 100 108 104 -33 38 34 101 107 99 -33 39 38 96 117 100 -33 131 129 103 269 95 -33 133 131 104 274 102 -33 134 133 99 275 103 -34 35 143 106 111 108 -34 37 35 107 110 105 -34 38 37 100 115 106 -34 143 134 105 281 99 -35 36 144 110 114 111 -35 37 36 106 112 109 -35 144 143 109 288 105 -36 37 44 110 116 113 -36 44 45 112 130 114 -36 45 144 113 133 109 -37 38 43 107 117 116 -37 43 44 115 128 112 -38 39 43 101 119 115 -39 40 42 97 120 119 -39 42 43 118 127 117 -40 41 42 121 123 118 -40 55 41 122 126 120 -40 56 55 13 164 121 -41 48 42 124 127 120 -41 49 48 125 139 123 -41 52 49 126 144 124 -41 55 52 121 153 125 -42 48 43 123 129 119 -43 47 44 129 130 116 -43 48 47 127 137 128 -44 47 45 128 132 113 -45 46 145 132 136 133 -45 47 46 130 134 131 -45 145 144 131 288 114 -46 47 115 132 138 135 -46 115 146 134 62 136 -46 146 145 135 285 131 -47 48 114 129 141 138 -47 114 115 137 255 134 -48 49 112 124 145 140 -48 112 113 139 250 141 -48 113 114 140 253 137 -49 50 111 143 146 145 -49 51 50 144 146 142 -49 52 51 125 147 143 -49 111 112 142 37 139 -50 51 111 143 152 142 -51 52 53 144 153 148 -51 53 92 147 159 149 -51 92 93 148 224 150 -51 93 100 149 226 151 -51 100 101 150 237 152 -51 101 111 151 240 146 -52 55 53 126 155 147 -53 54 76 155 163 156 -53 55 54 153 160 154 -53 76 77 154 198 157 -53 77 84 156 200 158 -53 84 85 157 211 159 -53 85 92 158 213 148 -54 55 61 155 164 161 -54 61 68 160 173 162 -54 68 69 161 184 163 -54 69 76 162 185 154 -55 56 61 122 165 160 -56 57 61 15 167 164 -57 58 60 16 168 167 -57 60 61 166 169 165 -58 59 60 17 18 166 -60 63 61 170 172 167 -60 64 63 19 175 169 -61 62 67 172 174 173 -61 63 62 169 174 171 -61 67 68 171 182 161 -62 63 67 172 176 171 -63 64 66 170 177 176 -63 66 67 175 180 174 -64 65 66 27 178 175 -65 72 66 179 181 177 -65 81 72 28 191 178 -66 71 67 181 183 176 -66 72 71 178 188 180 -67 70 68 183 184 173 -67 71 70 180 186 182 -68 70 69 182 185 162 -69 70 76 184 187 163 -70 71 75 183 189 187 -70 75 76 186 197 185 -71 72 74 181 190 189 -71 74 75 188 195 186 -72 73 74 191 192 188 -72 81 73 179 194 190 -73 79 74 193 196 190 -73 80 79 194 202 192 -73 81 80 191 204 193 -74 78 75 196 197 189 -74 79 78 192 201 195 -75 78 76 195 198 187 -76 78 77 197 199 156 -77 78 83 198 201 200 -77 83 84 199 210 157 -78 79 83 196 203 199 -79 80 82 193 204 203 -79 82 83 202 207 201 -80 81 82 194 205 202 -81 88 82 206 209 204 -81 89 88 29 217 205 -82 86 83 208 210 203 -82 87 86 209 214 207 -82 88 87 205 215 208 -83 86 84 207 211 200 -84 86 85 210 212 158 -85 86 91 211 214 213 -85 91 92 212 222 159 -86 87 91 208 216 212 -87 88 90 209 217 216 -87 90 91 215 221 214 -88 89 90 206 218 215 -89 95 90 219 221 217 -89 96 95 220 228 218 -89 97 96 30 230 219 -90 95 91 218 223 216 -91 94 92 223 224 213 -91 95 94 221 227 222 -92 94 93 222 225 149 -93 94 99 224 227 226 -93 99 100 225 235 150 -94 95 99 223 229 225 -95 96 98 219 230 229 -95 98 99 228 233 227 -96 97 98 220 231 228 -97 104 98 232 234 230 -97 105 104 31 244 231 -98 103 99 234 236 229 -98 104 103 231 242 233 -99 102 100 236 237 226 -99 103 102 233 241 235 -100 102 101 235 238 151 -101 102 107 237 241 239 +1 57 56 16 171 0 +1 58 57 17 172 15 +1 59 58 18 174 16 +1 60 59 19 174 17 +1 64 60 14 176 18 +2 4 105 21 39 37 +2 5 4 22 45 20 +2 17 5 23 48 21 +2 18 17 24 76 22 +2 19 18 25 80 23 +2 20 19 26 81 24 +2 21 20 1 82 25 +2 65 64 28 182 14 +2 72 65 29 184 27 +2 73 72 30 195 28 +2 80 73 31 196 29 +2 81 80 32 205 30 +2 88 81 33 209 31 +2 89 88 34 217 32 +2 96 89 35 221 33 +2 97 96 36 231 34 +2 104 97 37 232 35 +2 105 104 20 244 36 +3 4 119 39 46 44 +3 105 4 40 20 38 +3 109 105 41 245 39 +3 110 109 42 249 40 +3 111 110 43 249 41 +3 112 111 44 151 42 +3 119 112 38 252 43 +4 5 118 21 47 46 +4 118 119 45 252 38 +5 6 118 48 52 45 +5 17 6 22 51 47 +6 7 117 50 53 52 +6 16 7 51 54 49 +6 17 16 48 76 50 +6 117 118 49 251 47 +7 8 117 54 58 49 +7 16 8 50 57 53 +8 9 116 56 59 58 +8 15 9 57 61 55 +8 16 15 54 74 56 +8 116 117 55 254 53 +9 10 116 60 63 55 +9 11 10 61 62 59 +9 15 11 56 67 60 +10 11 115 60 68 63 +10 115 116 62 255 59 +11 12 146 65 69 68 +11 13 12 66 69 64 +11 14 13 67 70 65 +11 15 14 61 72 66 +11 146 115 64 141 62 +12 13 146 65 71 64 +13 14 140 66 73 71 +13 140 146 70 285 69 +14 15 135 67 75 73 +14 135 140 72 282 70 +15 16 136 57 78 75 +15 136 135 74 277 72 +16 17 18 51 23 77 +16 18 139 76 80 79 +16 138 136 79 283 74 +16 139 138 77 273 78 +18 19 139 24 81 77 +19 20 139 25 83 80 +20 21 122 26 84 83 +20 122 139 82 259 81 +21 22 122 2 86 82 +22 23 121 3 88 86 +22 121 122 85 258 84 +23 24 120 4 90 88 +23 120 121 87 256 85 +24 25 127 5 92 90 +24 127 120 89 257 87 +25 26 126 6 93 92 +25 126 127 91 264 89 +26 27 126 7 94 91 +27 28 126 8 95 93 +28 29 126 9 96 94 +29 30 126 10 98 95 +30 31 128 11 99 98 +30 128 126 97 265 96 +31 32 128 100 104 97 +31 40 32 12 103 99 +32 33 129 102 108 104 +32 39 33 103 107 101 +32 40 39 100 124 102 +32 129 128 101 267 99 +33 34 134 106 114 110 +33 38 34 107 113 105 +33 39 38 102 123 106 +33 131 129 109 269 101 +33 133 131 110 274 108 +33 134 133 105 275 109 +34 35 143 112 117 114 +34 37 35 113 116 111 +34 38 37 106 121 112 +34 143 134 111 281 105 +35 36 144 116 120 117 +35 37 36 112 118 115 +35 144 143 115 288 111 +36 37 44 116 122 119 +36 44 45 118 136 120 +36 45 144 119 139 115 +37 38 43 113 123 122 +37 43 44 121 134 118 +38 39 43 107 125 121 +39 40 42 103 126 125 +39 42 43 124 133 123 +40 41 42 127 129 124 +40 55 41 128 132 126 +40 56 55 13 170 127 +41 48 42 130 133 126 +41 49 48 131 145 129 +41 52 49 132 150 130 +41 55 52 127 159 131 +42 48 43 129 135 125 +43 47 44 135 136 122 +43 48 47 133 143 134 +44 47 45 134 138 119 +45 46 145 138 142 139 +45 47 46 136 140 137 +45 145 144 137 288 120 +46 47 115 138 144 141 +46 115 146 140 68 142 +46 146 145 141 285 137 +47 48 114 135 147 144 +47 114 115 143 255 140 +48 49 112 130 151 146 +48 112 113 145 250 147 +48 113 114 146 253 143 +49 50 111 149 152 151 +49 51 50 150 152 148 +49 52 51 131 153 149 +49 111 112 148 43 145 +50 51 111 149 158 148 +51 52 53 150 159 154 +51 53 92 153 165 155 +51 92 93 154 225 156 +51 93 100 155 227 157 +51 100 101 156 235 158 +51 101 111 157 240 152 +52 55 53 132 161 153 +53 54 76 161 169 162 +53 55 54 159 166 160 +53 76 77 160 199 163 +53 77 84 162 203 164 +53 84 85 163 211 165 +53 85 92 164 215 154 +54 55 61 161 170 167 +54 61 68 166 179 168 +54 68 69 167 188 169 +54 69 76 168 191 160 +55 56 61 128 171 166 +56 57 61 15 173 170 +57 58 60 16 174 173 +57 60 61 172 175 171 +58 59 60 17 18 172 +60 63 61 176 178 173 +60 64 63 19 182 175 +61 62 67 178 181 179 +61 63 62 175 180 177 +61 67 68 177 188 167 +62 63 66 178 183 181 +62 66 67 180 185 177 +63 64 65 176 27 183 +63 65 66 182 184 180 +65 72 66 28 187 183 +66 70 67 186 189 181 +66 71 70 187 192 185 +66 72 71 184 194 186 +67 69 68 189 168 179 +67 70 69 185 190 188 +69 70 75 189 193 191 +69 75 76 190 199 169 +70 71 74 186 194 193 +70 74 75 192 197 190 +71 72 74 187 195 192 +72 73 74 29 196 194 +73 80 74 30 198 195 +74 79 75 198 201 193 +74 80 79 196 205 197 +75 77 76 200 162 191 +75 78 77 201 202 199 +75 79 78 197 204 200 +77 78 83 200 204 203 +77 83 84 202 211 163 +78 79 83 201 207 202 +79 80 81 198 31 206 +79 81 82 205 208 207 +79 82 83 206 210 204 +81 87 82 209 210 206 +81 88 87 32 217 208 +82 87 83 208 213 207 +83 85 84 212 164 203 +83 86 85 213 214 211 +83 87 86 210 216 212 +85 86 91 212 216 215 +85 91 92 214 223 165 +86 87 91 213 219 214 +87 88 89 209 33 218 +87 89 90 217 220 219 +87 90 91 218 222 216 +89 95 90 221 222 218 +89 96 95 34 229 220 +90 95 91 220 224 219 +91 94 92 224 225 215 +91 95 94 222 228 223 +92 94 93 223 226 155 +93 94 99 225 228 227 +93 99 100 226 235 156 +94 95 99 224 230 226 +95 96 98 221 231 230 +95 98 99 229 233 228 +96 97 98 35 232 229 +97 104 98 36 234 231 +98 103 99 234 237 230 +98 104 103 232 242 233 +99 101 100 236 157 227 +99 102 101 237 238 235 +99 103 102 233 241 236 +101 102 107 236 241 239 101 107 108 238 247 240 -101 108 111 239 248 152 -102 103 107 236 243 238 +101 108 111 239 248 158 +102 103 107 237 243 238 103 104 106 234 244 243 103 106 107 242 246 241 -104 105 106 232 245 242 -105 109 106 34 246 244 +104 105 106 37 245 242 +105 109 106 40 246 244 106 109 107 245 247 243 107 109 108 246 248 239 108 109 111 247 249 240 -109 110 111 35 36 248 -112 117 113 251 254 140 -112 118 117 252 46 250 -112 119 118 38 40 251 -113 116 114 254 255 141 -113 117 116 250 52 253 -114 116 115 253 57 138 -120 124 121 257 258 82 -120 127 124 84 264 256 -121 124 122 256 260 80 -122 123 139 260 262 77 +109 110 111 41 42 248 +112 117 113 251 254 146 +112 118 117 252 52 250 +112 119 118 44 46 251 +113 116 114 254 255 147 +113 117 116 250 58 253 +114 116 115 253 63 144 +120 124 121 257 258 88 +120 127 124 90 264 256 +121 124 122 256 260 86 +122 123 139 260 262 83 122 124 123 258 261 259 123 124 125 260 263 262 123 125 139 261 266 259 124 126 125 264 265 261 -124 127 126 257 86 263 -125 126 128 263 92 266 +124 127 126 257 92 263 +125 126 128 263 98 266 125 128 139 265 268 262 -128 129 130 98 269 268 +128 129 130 104 269 268 128 130 139 267 273 266 -129 131 130 102 270 267 +129 131 130 108 270 267 130 131 132 269 274 271 130 132 137 270 278 272 130 137 138 271 283 273 -130 138 139 272 73 268 -131 133 132 103 275 270 -132 133 134 274 104 276 +130 138 139 272 79 268 +131 133 132 109 275 270 +132 133 134 274 110 276 132 134 135 275 279 277 -132 135 136 276 69 278 +132 135 136 276 75 278 132 136 137 277 283 271 134 141 135 280 282 276 134 142 141 281 286 279 -134 143 142 108 286 280 -135 141 140 279 284 67 -136 138 137 72 272 278 +134 143 142 114 286 280 +135 141 140 279 284 73 +136 138 137 78 272 278 140 141 145 282 287 285 -140 145 146 284 136 65 +140 145 146 284 142 71 141 142 143 280 281 287 141 143 145 286 288 284 -143 144 145 111 133 287 +143 144 145 117 139 287 144 3 4 diff --git a/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_auto.txt b/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_auto.txt index e94af4b..75a5d92 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_auto.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_auto.txt @@ -90,36 +90,36 @@ 51 52 58 4294967295 92 89 51 58 65 88 98 90 51 65 66 89 4294967295 91 -51 66 73 90 103 83 +51 66 73 90 104 83 52 53 58 4294967295 93 88 53 54 58 4294967295 95 92 54 55 57 4294967295 96 95 54 57 58 94 4294967295 93 55 56 57 4294967295 4294967295 94 -58 59 64 4294967295 99 98 +58 59 64 4294967295 100 98 58 64 65 97 4294967295 89 -59 60 64 4294967295 101 97 -60 61 63 4294967295 102 101 -60 63 64 100 4294967295 99 -61 62 63 4294967295 4294967295 100 -66 67 73 4294967295 105 91 -67 68 72 4294967295 107 105 -67 72 73 104 4294967295 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 104 -69 70 71 4294967295 4294967295 106 +59 60 63 4294967295 102 100 +59 63 64 99 4294967295 97 +60 61 62 4294967295 4294967295 102 +60 62 63 101 4294967295 99 +66 67 72 4294967295 106 104 +66 72 73 103 4294967295 91 +67 68 71 4294967295 107 106 +67 71 72 105 4294967295 103 +68 69 71 4294967295 108 105 +69 70 71 4294967295 4294967295 107 74 75 80 4294967295 111 110 74 80 81 109 4294967295 85 -75 76 80 4294967295 113 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 111 -77 78 79 4294967295 4294967295 112 +75 76 80 4294967295 114 109 +76 77 78 4294967295 4294967295 113 +76 78 79 112 4294967295 114 +76 79 80 113 4294967295 111 82 83 88 4294967295 117 116 82 88 89 115 4294967295 87 -83 84 88 4294967295 119 115 -84 85 87 4294967295 120 119 -84 87 88 118 4294967295 117 -85 86 87 4294967295 4294967295 118 +83 84 88 4294967295 120 115 +84 85 86 4294967295 4294967295 119 +84 86 87 118 4294967295 120 +84 87 88 119 4294967295 117 90 91 96 4294967295 123 122 90 96 97 121 4294967295 80 91 92 96 4294967295 125 121 diff --git a/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_outer.txt b/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_outer.txt index e453f8b..01b32ca 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_outer.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_outer.txt @@ -90,36 +90,36 @@ 51 52 58 4294967295 92 89 51 58 65 88 98 90 51 65 66 89 4294967295 91 -51 66 73 90 103 83 +51 66 73 90 104 83 52 53 58 4294967295 93 88 53 54 58 4294967295 95 92 54 55 57 4294967295 96 95 54 57 58 94 4294967295 93 55 56 57 4294967295 4294967295 94 -58 59 64 4294967295 99 98 +58 59 64 4294967295 100 98 58 64 65 97 4294967295 89 -59 60 64 4294967295 101 97 -60 61 63 4294967295 102 101 -60 63 64 100 4294967295 99 -61 62 63 4294967295 4294967295 100 -66 67 73 4294967295 105 91 -67 68 72 4294967295 107 105 -67 72 73 104 4294967295 103 -68 69 71 4294967295 108 107 -68 71 72 106 4294967295 104 -69 70 71 4294967295 4294967295 106 +59 60 63 4294967295 102 100 +59 63 64 99 4294967295 97 +60 61 62 4294967295 4294967295 102 +60 62 63 101 4294967295 99 +66 67 72 4294967295 106 104 +66 72 73 103 4294967295 91 +67 68 71 4294967295 107 106 +67 71 72 105 4294967295 103 +68 69 71 4294967295 108 105 +69 70 71 4294967295 4294967295 107 74 75 80 4294967295 111 110 74 80 81 109 4294967295 85 -75 76 80 4294967295 113 109 -76 77 79 4294967295 114 113 -76 79 80 112 4294967295 111 -77 78 79 4294967295 4294967295 112 +75 76 80 4294967295 114 109 +76 77 78 4294967295 4294967295 113 +76 78 79 112 4294967295 114 +76 79 80 113 4294967295 111 82 83 88 4294967295 117 116 82 88 89 115 4294967295 87 -83 84 88 4294967295 119 115 -84 85 87 4294967295 120 119 -84 87 88 118 4294967295 117 -85 86 87 4294967295 4294967295 118 +83 84 88 4294967295 120 115 +84 85 86 4294967295 4294967295 119 +84 86 87 118 4294967295 120 +84 87 88 119 4294967295 117 90 91 96 4294967295 123 122 90 96 97 121 4294967295 80 91 92 96 4294967295 125 121 diff --git a/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_super.txt b/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_super.txt index 7e8c77f..5ad2208 100644 --- a/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_super.txt +++ b/test/CDT.Tests/expected/guitar no box__f64_auto_resolve_super.txt @@ -1,30 +1,30 @@ -257 +251 0 1 116 1 8 6 0 102 1 2 4294967295 0 -0 106 102 3 213 1 -0 107 106 4 217 2 -0 108 107 5 217 3 +0 106 102 3 207 1 +0 107 106 4 211 2 +0 108 107 5 211 3 0 109 108 6 113 4 -0 116 109 0 220 5 +0 116 109 0 214 5 1 2 115 4294967295 9 8 -1 115 116 7 220 0 +1 115 116 7 214 0 2 3 115 10 14 7 2 14 3 4294967295 13 9 3 4 114 12 15 14 3 13 4 13 16 11 3 14 13 10 38 12 -3 114 115 11 219 9 +3 114 115 11 213 9 4 5 114 16 20 11 4 13 5 12 19 15 5 6 113 18 21 20 5 12 6 19 23 17 5 13 12 16 36 18 -5 113 114 17 222 15 +5 113 114 17 216 15 6 7 113 22 25 17 6 8 7 23 24 21 6 12 8 18 29 22 7 8 112 22 30 25 -7 112 113 24 223 21 +7 112 113 24 217 21 8 9 143 27 31 30 8 10 9 28 31 26 8 11 10 29 32 27 @@ -32,53 +32,53 @@ 8 143 112 26 103 24 9 10 143 27 33 26 10 11 137 28 35 33 -10 137 143 32 253 31 +10 137 143 32 247 31 11 12 132 29 37 35 -11 132 137 34 250 32 +11 132 137 34 244 32 12 13 133 19 40 37 -12 133 132 36 245 34 +12 133 132 36 239 34 13 14 15 13 4294967295 39 13 15 136 38 42 41 -13 135 133 41 251 36 -13 136 135 39 241 40 +13 135 133 41 245 36 +13 136 135 39 235 40 15 16 136 4294967295 43 39 16 17 136 4294967295 45 42 17 18 119 4294967295 46 45 -17 119 136 44 227 43 +17 119 136 44 221 43 18 19 119 4294967295 48 44 19 20 118 4294967295 50 48 -19 118 119 47 226 46 +19 118 119 47 220 46 20 21 117 4294967295 52 50 -20 117 118 49 224 47 +20 117 118 49 218 47 21 22 124 4294967295 54 52 -21 124 117 51 225 49 +21 124 117 51 219 49 22 23 123 4294967295 55 54 -22 123 124 53 232 51 +22 123 124 53 226 51 23 24 123 4294967295 56 53 24 25 123 4294967295 57 55 25 26 123 4294967295 58 56 26 27 123 4294967295 60 57 27 28 125 4294967295 61 60 -27 125 123 59 233 58 +27 125 123 59 227 58 28 29 125 62 66 59 28 37 29 4294967295 65 61 29 30 126 64 70 66 29 36 30 65 69 63 29 37 36 62 86 64 -29 126 125 63 235 61 +29 126 125 63 229 61 30 31 131 68 76 72 30 35 31 69 75 67 30 36 35 64 85 68 -30 128 126 71 237 63 -30 130 128 72 242 70 -30 131 130 67 243 71 +30 128 126 71 231 63 +30 130 128 72 236 70 +30 131 130 67 237 71 31 32 140 74 79 76 31 34 32 75 78 73 31 35 34 68 83 74 -31 140 131 73 249 67 +31 140 131 73 243 67 32 33 141 78 82 79 32 34 33 74 80 77 -32 141 140 77 256 73 +32 141 140 77 250 73 33 34 41 78 84 81 33 41 42 80 98 82 33 42 141 81 101 77 @@ -100,15 +100,15 @@ 41 44 42 96 100 81 42 43 142 100 104 101 42 44 43 98 102 99 -42 142 141 99 256 82 +42 142 141 99 250 82 43 44 112 100 106 103 43 112 143 102 30 104 -43 143 142 103 253 99 +43 143 142 103 247 99 44 45 111 97 109 106 -44 111 112 105 223 102 +44 111 112 105 217 102 45 46 109 92 113 108 -45 109 110 107 218 109 -45 110 111 108 221 105 +45 109 110 107 212 109 +45 110 111 108 215 105 46 47 108 111 114 113 46 48 47 112 114 110 46 49 48 93 115 111 @@ -116,20 +116,20 @@ 47 48 108 111 120 110 48 49 50 112 121 116 48 50 89 115 127 117 -48 89 90 116 192 118 -48 90 97 117 194 119 -48 97 98 118 205 120 -48 98 108 119 208 114 +48 89 90 116 187 118 +48 90 97 117 189 119 +48 97 98 118 197 120 +48 98 108 119 202 114 49 52 50 94 123 115 50 51 73 123 131 124 50 52 51 121 128 122 -50 73 74 122 166 125 -50 74 81 124 168 126 -50 81 82 125 179 127 -50 82 89 126 181 116 +50 73 74 122 161 125 +50 74 81 124 165 126 +50 81 82 125 173 127 +50 82 89 126 177 116 51 52 58 123 132 129 51 58 65 128 141 130 -51 65 66 129 152 131 +51 65 66 129 150 131 51 66 73 130 153 122 52 53 58 90 133 128 53 54 58 4294967295 135 132 @@ -137,125 +137,119 @@ 54 57 58 134 137 133 55 56 57 4294967295 4294967295 134 57 60 58 138 140 135 -57 61 60 4294967295 143 137 -58 59 64 140 142 141 +57 61 60 4294967295 144 137 +58 59 64 140 143 141 58 60 59 137 142 139 58 64 65 139 150 129 -59 60 64 140 144 139 -60 61 63 138 145 144 -60 63 64 143 148 142 -61 62 63 4294967295 146 143 -62 69 63 147 149 145 -62 78 69 4294967295 159 146 -63 68 64 149 151 144 +59 60 63 140 145 143 +59 63 64 142 147 139 +60 61 62 138 4294967295 145 +60 62 63 144 146 142 +62 69 63 4294967295 149 145 +63 67 64 148 151 143 +63 68 67 149 154 147 63 69 68 146 156 148 -64 67 65 151 152 141 -64 68 67 148 154 150 -65 67 66 150 153 130 -66 67 73 152 155 131 -67 68 72 151 157 155 -67 72 73 154 165 153 -68 69 71 149 158 157 -68 71 72 156 163 154 -69 70 71 159 160 156 -69 78 70 147 162 158 -70 76 71 161 164 158 -70 77 76 162 170 160 -70 78 77 159 172 161 -71 75 72 164 165 157 -71 76 75 160 169 163 -72 75 73 163 166 155 -73 75 74 165 167 124 -74 75 80 166 169 168 -74 80 81 167 178 125 -75 76 80 164 171 167 -76 77 79 161 172 171 -76 79 80 170 175 169 -77 78 79 162 173 170 -78 85 79 174 177 172 -78 86 85 4294967295 185 173 -79 83 80 176 178 171 -79 84 83 177 182 175 -79 85 84 173 183 176 -80 83 81 175 179 168 -81 83 82 178 180 126 -82 83 88 179 182 181 -82 88 89 180 190 127 -83 84 88 176 184 180 -84 85 87 177 185 184 -84 87 88 183 189 182 -85 86 87 174 186 183 -86 92 87 187 189 185 -86 93 92 188 196 186 -86 94 93 4294967295 198 187 -87 92 88 186 191 184 -88 91 89 191 192 181 -88 92 91 189 195 190 -89 91 90 190 193 117 -90 91 96 192 195 194 -90 96 97 193 203 118 -91 92 96 191 197 193 -92 93 95 187 198 197 -92 95 96 196 201 195 -93 94 95 188 199 196 -94 101 95 200 202 198 -94 102 101 4294967295 212 199 -95 100 96 202 204 197 -95 101 100 199 210 201 -96 99 97 204 205 194 -96 100 99 201 209 203 -97 99 98 203 206 119 -98 99 104 205 209 207 -98 104 105 206 215 208 -98 105 108 207 216 120 -99 100 104 204 211 206 -100 101 103 202 212 211 -100 103 104 210 214 209 -101 102 103 200 213 210 -102 106 103 2 214 212 -103 106 104 213 215 211 -104 106 105 214 216 207 -105 106 108 215 217 208 -106 107 108 3 4 216 -109 114 110 219 222 108 -109 115 114 220 14 218 -109 116 115 6 8 219 -110 113 111 222 223 109 -110 114 113 218 20 221 -111 113 112 221 25 106 -117 121 118 225 226 50 -117 124 121 52 232 224 -118 121 119 224 228 48 -119 120 136 228 230 45 -119 121 120 226 229 227 -120 121 122 228 231 230 -120 122 136 229 234 227 -121 123 122 232 233 229 -121 124 123 225 54 231 -122 123 125 231 60 234 -122 125 136 233 236 230 -125 126 127 66 237 236 -125 127 136 235 241 234 -126 128 127 70 238 235 -127 128 129 237 242 239 -127 129 134 238 246 240 -127 134 135 239 251 241 -127 135 136 240 41 236 -128 130 129 71 243 238 -129 130 131 242 72 244 -129 131 132 243 247 245 -129 132 133 244 37 246 -129 133 134 245 251 239 -131 138 132 248 250 244 -131 139 138 249 254 247 -131 140 139 76 254 248 -132 138 137 247 252 35 -133 135 134 40 240 246 -137 138 142 250 255 253 -137 142 143 252 104 33 -138 139 140 248 249 255 -138 140 142 254 256 252 -140 141 142 79 101 255 +64 66 65 151 130 141 +64 67 66 147 152 150 +66 67 72 151 155 153 +66 72 73 152 161 131 +67 68 71 148 156 155 +67 71 72 154 159 152 +68 69 71 149 157 154 +69 70 71 4294967295 158 156 +70 77 71 4294967295 160 157 +71 76 72 160 163 155 +71 77 76 158 167 159 +72 74 73 162 124 153 +72 75 74 163 164 161 +72 76 75 159 166 162 +74 75 80 162 166 165 +74 80 81 164 173 125 +75 76 80 163 169 164 +76 77 78 160 4294967295 168 +76 78 79 167 170 169 +76 79 80 168 172 166 +78 84 79 171 172 168 +78 85 84 4294967295 179 170 +79 84 80 170 175 169 +80 82 81 174 126 165 +80 83 82 175 176 173 +80 84 83 172 178 174 +82 83 88 174 178 177 +82 88 89 176 185 127 +83 84 88 175 181 176 +84 85 86 171 4294967295 180 +84 86 87 179 182 181 +84 87 88 180 184 178 +86 92 87 183 184 180 +86 93 92 4294967295 191 182 +87 92 88 182 186 181 +88 91 89 186 187 177 +88 92 91 184 190 185 +89 91 90 185 188 117 +90 91 96 187 190 189 +90 96 97 188 197 118 +91 92 96 186 192 188 +92 93 95 183 193 192 +92 95 96 191 195 190 +93 94 95 4294967295 194 191 +94 101 95 4294967295 196 193 +95 100 96 196 199 192 +95 101 100 194 204 195 +96 98 97 198 119 189 +96 99 98 199 200 197 +96 100 99 195 203 198 +98 99 104 198 203 201 +98 104 105 200 209 202 +98 105 108 201 210 120 +99 100 104 199 205 200 +100 101 103 196 206 205 +100 103 104 204 208 203 +101 102 103 4294967295 207 204 +102 106 103 2 208 206 +103 106 104 207 209 205 +104 106 105 208 210 201 +105 106 108 209 211 202 +106 107 108 3 4 210 +109 114 110 213 216 108 +109 115 114 214 14 212 +109 116 115 6 8 213 +110 113 111 216 217 109 +110 114 113 212 20 215 +111 113 112 215 25 106 +117 121 118 219 220 50 +117 124 121 52 226 218 +118 121 119 218 222 48 +119 120 136 222 224 45 +119 121 120 220 223 221 +120 121 122 222 225 224 +120 122 136 223 228 221 +121 123 122 226 227 223 +121 124 123 219 54 225 +122 123 125 225 60 228 +122 125 136 227 230 224 +125 126 127 66 231 230 +125 127 136 229 235 228 +126 128 127 70 232 229 +127 128 129 231 236 233 +127 129 134 232 240 234 +127 134 135 233 245 235 +127 135 136 234 41 230 +128 130 129 71 237 232 +129 130 131 236 72 238 +129 131 132 237 241 239 +129 132 133 238 37 240 +129 133 134 239 245 233 +131 138 132 242 244 238 +131 139 138 243 248 241 +131 140 139 76 248 242 +132 138 137 241 246 35 +133 135 134 40 234 240 +137 138 142 244 249 247 +137 142 143 246 104 33 +138 139 140 242 243 249 +138 140 142 248 250 246 +140 141 142 79 101 249 144 0 1 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_all.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_all.txt deleted file mode 100644 index f2ddb21..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_all.txt +++ /dev/null @@ -1,48 +0,0 @@ -25 -0 1 4 4294967295 5 2 -0 3 6 2 8 3 -0 4 3 0 7 1 -0 6 2 1 6 4294967295 -1 2 5 4294967295 6 5 -1 5 4 4 9 0 -2 6 5 3 11 4 -3 4 7 2 10 8 -3 7 6 7 13 1 -4 5 8 5 12 10 -4 8 7 9 15 7 -5 6 9 6 14 12 -5 9 8 11 17 9 -6 7 10 8 16 14 -6 10 9 13 19 11 -7 8 11 10 18 16 -7 11 10 15 21 13 -8 9 12 12 20 18 -8 12 11 17 23 15 -9 10 13 14 22 20 -9 13 12 19 23 17 -10 11 14 16 24 22 -10 14 13 21 24 19 -11 12 13 18 20 24 -11 13 14 23 22 21 - -12 -3 4 -3 6 -4 5 -5 6 -7 8 -7 10 -8 9 -9 10 -11 12 -11 14 -12 13 -13 14 - -4 -7 8 1 -7 10 1 -8 9 1 -9 10 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_auto.txt deleted file mode 100644 index fc61ec9..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_auto.txt +++ /dev/null @@ -1,33 +0,0 @@ -10 -0 1 4 4294967295 3 1 -0 4 3 0 6 4294967295 -1 2 5 4294967295 5 3 -1 5 4 2 4294967295 0 -2 3 6 4294967295 7 5 -2 6 5 4 4294967295 2 -3 4 7 1 4294967295 7 -3 7 6 6 4294967295 4 -8 9 10 4294967295 4294967295 9 -8 10 11 8 4294967295 4294967295 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_outer.txt deleted file mode 100644 index f9daeb7..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_outer.txt +++ /dev/null @@ -1,41 +0,0 @@ -18 -0 1 4 4294967295 3 1 -0 4 3 0 6 4294967295 -1 2 5 4294967295 5 3 -1 5 4 2 8 0 -2 3 6 4294967295 7 5 -2 6 5 4 10 2 -3 4 7 1 9 7 -3 7 6 6 12 4 -4 5 8 3 11 9 -4 8 7 8 14 6 -5 6 9 5 13 11 -5 9 8 10 16 8 -6 7 10 7 15 13 -6 10 9 12 16 10 -7 8 11 9 17 15 -7 11 10 14 17 12 -8 9 10 11 13 17 -8 10 11 16 15 14 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_super.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_super.txt deleted file mode 100644 index f9daeb7..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_ignore_super.txt +++ /dev/null @@ -1,41 +0,0 @@ -18 -0 1 4 4294967295 3 1 -0 4 3 0 6 4294967295 -1 2 5 4294967295 5 3 -1 5 4 2 8 0 -2 3 6 4294967295 7 5 -2 6 5 4 10 2 -3 4 7 1 9 7 -3 7 6 6 12 4 -4 5 8 3 11 9 -4 8 7 8 14 6 -5 6 9 5 13 11 -5 9 8 10 16 8 -6 7 10 7 15 13 -6 10 9 12 16 10 -7 8 11 9 17 15 -7 11 10 14 17 12 -8 9 10 11 13 17 -8 10 11 16 15 14 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_all.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_all.txt deleted file mode 100644 index f2ddb21..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_all.txt +++ /dev/null @@ -1,48 +0,0 @@ -25 -0 1 4 4294967295 5 2 -0 3 6 2 8 3 -0 4 3 0 7 1 -0 6 2 1 6 4294967295 -1 2 5 4294967295 6 5 -1 5 4 4 9 0 -2 6 5 3 11 4 -3 4 7 2 10 8 -3 7 6 7 13 1 -4 5 8 5 12 10 -4 8 7 9 15 7 -5 6 9 6 14 12 -5 9 8 11 17 9 -6 7 10 8 16 14 -6 10 9 13 19 11 -7 8 11 10 18 16 -7 11 10 15 21 13 -8 9 12 12 20 18 -8 12 11 17 23 15 -9 10 13 14 22 20 -9 13 12 19 23 17 -10 11 14 16 24 22 -10 14 13 21 24 19 -11 12 13 18 20 24 -11 13 14 23 22 21 - -12 -3 4 -3 6 -4 5 -5 6 -7 8 -7 10 -8 9 -9 10 -11 12 -11 14 -12 13 -13 14 - -4 -7 8 1 -7 10 1 -8 9 1 -9 10 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_auto.txt deleted file mode 100644 index fc61ec9..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_auto.txt +++ /dev/null @@ -1,33 +0,0 @@ -10 -0 1 4 4294967295 3 1 -0 4 3 0 6 4294967295 -1 2 5 4294967295 5 3 -1 5 4 2 4294967295 0 -2 3 6 4294967295 7 5 -2 6 5 4 4294967295 2 -3 4 7 1 4294967295 7 -3 7 6 6 4294967295 4 -8 9 10 4294967295 4294967295 9 -8 10 11 8 4294967295 4294967295 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_outer.txt deleted file mode 100644 index f9daeb7..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_outer.txt +++ /dev/null @@ -1,41 +0,0 @@ -18 -0 1 4 4294967295 3 1 -0 4 3 0 6 4294967295 -1 2 5 4294967295 5 3 -1 5 4 2 8 0 -2 3 6 4294967295 7 5 -2 6 5 4 10 2 -3 4 7 1 9 7 -3 7 6 6 12 4 -4 5 8 3 11 9 -4 8 7 8 14 6 -5 6 9 5 13 11 -5 9 8 10 16 8 -6 7 10 7 15 13 -6 10 9 12 16 10 -7 8 11 9 17 15 -7 11 10 14 17 12 -8 9 10 11 13 17 -8 10 11 16 15 14 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_super.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_super.txt deleted file mode 100644 index f9daeb7..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_as-provided_resolve_super.txt +++ /dev/null @@ -1,41 +0,0 @@ -18 -0 1 4 4294967295 3 1 -0 4 3 0 6 4294967295 -1 2 5 4294967295 5 3 -1 5 4 2 8 0 -2 3 6 4294967295 7 5 -2 6 5 4 10 2 -3 4 7 1 9 7 -3 7 6 6 12 4 -4 5 8 3 11 9 -4 8 7 8 14 6 -5 6 9 5 13 11 -5 9 8 10 16 8 -6 7 10 7 15 13 -6 10 9 12 16 10 -7 8 11 9 17 15 -7 11 10 14 17 12 -8 9 10 11 13 17 -8 10 11 16 15 14 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_all.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_all.txt deleted file mode 100644 index 3dd8353..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_all.txt +++ /dev/null @@ -1,48 +0,0 @@ -25 -0 1 4 4294967295 5 2 -0 3 6 2 10 3 -0 4 3 0 7 1 -0 6 2 1 6 4294967295 -1 2 5 4294967295 6 5 -1 5 4 4 11 0 -2 6 5 3 12 4 -3 4 8 2 11 9 -3 7 10 9 18 10 -3 8 7 7 15 8 -3 10 6 8 12 1 -4 5 8 5 13 7 -5 6 10 6 10 14 -5 9 8 14 19 11 -5 10 9 12 21 13 -7 8 12 9 20 17 -7 11 14 17 23 18 -7 12 11 15 23 16 -7 14 10 16 22 8 -8 9 13 13 21 20 -8 13 12 19 24 15 -9 10 13 14 22 19 -10 14 13 18 24 21 -11 12 14 17 24 16 -12 13 14 20 22 23 - -12 -3 4 -3 6 -4 5 -5 6 -7 8 -7 10 -8 9 -9 10 -11 12 -11 14 -12 13 -13 14 - -4 -7 8 1 -7 10 1 -8 9 1 -9 10 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_auto.txt deleted file mode 100644 index 101aba5..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_auto.txt +++ /dev/null @@ -1,33 +0,0 @@ -10 -0 1 5 4294967295 4 2 -0 4 7 2 4294967295 3 -0 5 4 0 4294967295 1 -0 7 3 1 5 4294967295 -1 2 5 4294967295 6 0 -2 3 7 4294967295 3 7 -2 6 5 7 4294967295 4 -2 7 6 5 4294967295 6 -8 9 11 4294967295 9 4294967295 -9 10 11 4294967295 4294967295 8 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_outer.txt deleted file mode 100644 index 3186cd9..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_outer.txt +++ /dev/null @@ -1,41 +0,0 @@ -18 -0 1 5 4294967295 4 2 -0 4 7 2 11 3 -0 5 4 0 8 1 -0 7 3 1 5 4294967295 -1 2 5 4294967295 6 0 -2 3 7 4294967295 3 7 -2 6 5 7 12 4 -2 7 6 5 14 6 -4 5 9 2 13 10 -4 8 11 10 16 11 -4 9 8 8 16 9 -4 11 7 9 15 1 -5 6 10 6 14 13 -5 10 9 12 17 8 -6 7 10 7 15 12 -7 11 10 11 17 14 -8 9 11 10 17 9 -9 10 11 13 15 16 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_super.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_super.txt deleted file mode 100644 index 3186cd9..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_ignore_super.txt +++ /dev/null @@ -1,41 +0,0 @@ -18 -0 1 5 4294967295 4 2 -0 4 7 2 11 3 -0 5 4 0 8 1 -0 7 3 1 5 4294967295 -1 2 5 4294967295 6 0 -2 3 7 4294967295 3 7 -2 6 5 7 12 4 -2 7 6 5 14 6 -4 5 9 2 13 10 -4 8 11 10 16 11 -4 9 8 8 16 9 -4 11 7 9 15 1 -5 6 10 6 14 13 -5 10 9 12 17 8 -6 7 10 7 15 12 -7 11 10 11 17 14 -8 9 11 10 17 9 -9 10 11 13 15 16 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_all.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_all.txt deleted file mode 100644 index 3dd8353..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_all.txt +++ /dev/null @@ -1,48 +0,0 @@ -25 -0 1 4 4294967295 5 2 -0 3 6 2 10 3 -0 4 3 0 7 1 -0 6 2 1 6 4294967295 -1 2 5 4294967295 6 5 -1 5 4 4 11 0 -2 6 5 3 12 4 -3 4 8 2 11 9 -3 7 10 9 18 10 -3 8 7 7 15 8 -3 10 6 8 12 1 -4 5 8 5 13 7 -5 6 10 6 10 14 -5 9 8 14 19 11 -5 10 9 12 21 13 -7 8 12 9 20 17 -7 11 14 17 23 18 -7 12 11 15 23 16 -7 14 10 16 22 8 -8 9 13 13 21 20 -8 13 12 19 24 15 -9 10 13 14 22 19 -10 14 13 18 24 21 -11 12 14 17 24 16 -12 13 14 20 22 23 - -12 -3 4 -3 6 -4 5 -5 6 -7 8 -7 10 -8 9 -9 10 -11 12 -11 14 -12 13 -13 14 - -4 -7 8 1 -7 10 1 -8 9 1 -9 10 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_auto.txt deleted file mode 100644 index 101aba5..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_auto.txt +++ /dev/null @@ -1,33 +0,0 @@ -10 -0 1 5 4294967295 4 2 -0 4 7 2 4294967295 3 -0 5 4 0 4294967295 1 -0 7 3 1 5 4294967295 -1 2 5 4294967295 6 0 -2 3 7 4294967295 3 7 -2 6 5 7 4294967295 4 -2 7 6 5 4294967295 6 -8 9 11 4294967295 9 4294967295 -9 10 11 4294967295 4294967295 8 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_outer.txt deleted file mode 100644 index 3186cd9..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_outer.txt +++ /dev/null @@ -1,41 +0,0 @@ -18 -0 1 5 4294967295 4 2 -0 4 7 2 11 3 -0 5 4 0 8 1 -0 7 3 1 5 4294967295 -1 2 5 4294967295 6 0 -2 3 7 4294967295 3 7 -2 6 5 7 12 4 -2 7 6 5 14 6 -4 5 9 2 13 10 -4 8 11 10 16 11 -4 9 8 8 16 9 -4 11 7 9 15 1 -5 6 10 6 14 13 -5 10 9 12 17 8 -6 7 10 7 15 12 -7 11 10 11 17 14 -8 9 11 10 17 9 -9 10 11 13 15 16 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_super.txt b/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_super.txt deleted file mode 100644 index 3186cd9..0000000 --- a/test/CDT.Tests/expected/issue-42-full-boundary-overlap__f32_auto_resolve_super.txt +++ /dev/null @@ -1,41 +0,0 @@ -18 -0 1 5 4294967295 4 2 -0 4 7 2 11 3 -0 5 4 0 8 1 -0 7 3 1 5 4294967295 -1 2 5 4294967295 6 0 -2 3 7 4294967295 3 7 -2 6 5 7 12 4 -2 7 6 5 14 6 -4 5 9 2 13 10 -4 8 11 10 16 11 -4 9 8 8 16 9 -4 11 7 9 15 1 -5 6 10 6 14 13 -5 10 9 12 17 8 -6 7 10 7 15 12 -7 11 10 11 17 14 -8 9 11 10 17 9 -9 10 11 13 15 16 - -12 -0 1 -0 3 -1 2 -2 3 -4 5 -4 7 -5 6 -6 7 -8 9 -8 11 -9 10 -10 11 - -4 -4 5 1 -4 7 1 -5 6 1 -6 7 1 - -0 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_all.txt deleted file mode 100644 index 6eb713d..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_all.txt +++ /dev/null @@ -1,96 +0,0 @@ -33 -0 1 16 4294967295 11 6 -0 3 6 3 14 2 -0 6 2 1 12 4294967295 -0 7 3 4 13 1 -0 11 7 5 19 3 -0 15 11 6 25 4 -0 16 15 0 31 5 -1 2 5 4294967295 12 9 -1 4 8 9 16 10 -1 5 4 7 15 8 -1 8 12 8 22 11 -1 12 16 10 28 0 -2 6 5 2 17 7 -3 7 10 3 20 14 -3 10 6 13 18 1 -4 5 9 9 17 16 -4 9 8 15 21 8 -5 6 9 12 18 15 -6 10 9 14 23 17 -7 11 14 4 26 20 -7 14 10 19 24 13 -8 9 13 16 23 22 -8 13 12 21 27 10 -9 10 13 18 24 21 -10 14 13 20 29 23 -11 15 18 5 32 26 -11 18 14 25 30 19 -12 13 17 22 29 28 -12 17 16 27 31 11 -13 14 17 24 30 27 -14 18 17 26 32 29 -15 16 17 6 28 32 -15 17 18 31 30 25 - -19 -3 6 -3 7 -4 5 -4 8 -5 6 -7 10 -7 11 -8 9 -8 12 -9 10 -11 14 -11 15 -12 13 -12 16 -13 14 -15 16 -15 18 -16 17 -17 18 - -8 -7 10 1 -7 11 2 -8 9 1 -8 12 2 -9 10 1 -11 15 3 -12 16 3 -15 16 4 - -7 -3 7 - 1 - 3 4 -4 8 - 1 - 3 4 -7 11 - 2 - 3 4 - 7 8 -8 12 - 2 - 3 4 - 7 8 -11 15 - 3 - 3 4 - 7 8 - 11 12 -12 16 - 3 - 3 4 - 7 8 - 11 12 -15 16 - 3 - 3 4 - 7 8 - 11 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_auto.txt deleted file mode 100644 index 9152bb3..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_auto.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_outer.txt deleted file mode 100644 index 9152bb3..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_outer.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_super.txt deleted file mode 100644 index 9152bb3..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_ignore_super.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_all.txt deleted file mode 100644 index 6eb713d..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_all.txt +++ /dev/null @@ -1,96 +0,0 @@ -33 -0 1 16 4294967295 11 6 -0 3 6 3 14 2 -0 6 2 1 12 4294967295 -0 7 3 4 13 1 -0 11 7 5 19 3 -0 15 11 6 25 4 -0 16 15 0 31 5 -1 2 5 4294967295 12 9 -1 4 8 9 16 10 -1 5 4 7 15 8 -1 8 12 8 22 11 -1 12 16 10 28 0 -2 6 5 2 17 7 -3 7 10 3 20 14 -3 10 6 13 18 1 -4 5 9 9 17 16 -4 9 8 15 21 8 -5 6 9 12 18 15 -6 10 9 14 23 17 -7 11 14 4 26 20 -7 14 10 19 24 13 -8 9 13 16 23 22 -8 13 12 21 27 10 -9 10 13 18 24 21 -10 14 13 20 29 23 -11 15 18 5 32 26 -11 18 14 25 30 19 -12 13 17 22 29 28 -12 17 16 27 31 11 -13 14 17 24 30 27 -14 18 17 26 32 29 -15 16 17 6 28 32 -15 17 18 31 30 25 - -19 -3 6 -3 7 -4 5 -4 8 -5 6 -7 10 -7 11 -8 9 -8 12 -9 10 -11 14 -11 15 -12 13 -12 16 -13 14 -15 16 -15 18 -16 17 -17 18 - -8 -7 10 1 -7 11 2 -8 9 1 -8 12 2 -9 10 1 -11 15 3 -12 16 3 -15 16 4 - -7 -3 7 - 1 - 3 4 -4 8 - 1 - 3 4 -7 11 - 2 - 3 4 - 7 8 -8 12 - 2 - 3 4 - 7 8 -11 15 - 3 - 3 4 - 7 8 - 11 12 -12 16 - 3 - 3 4 - 7 8 - 11 12 -15 16 - 3 - 3 4 - 7 8 - 11 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_auto.txt deleted file mode 100644 index 9152bb3..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_auto.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_outer.txt deleted file mode 100644 index 9152bb3..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_outer.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_super.txt deleted file mode 100644 index 9152bb3..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_as-provided_resolve_super.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_all.txt deleted file mode 100644 index c35c3d7..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_all.txt +++ /dev/null @@ -1,96 +0,0 @@ -33 -0 1 3 4294967295 6 1 -0 3 6 0 14 2 -0 6 2 1 12 4294967295 -1 2 5 4294967295 12 5 -1 4 8 5 16 7 -1 5 4 3 15 4 -1 7 3 8 13 0 -1 8 12 4 22 9 -1 11 7 10 19 6 -1 12 16 7 28 11 -1 15 11 11 25 8 -1 16 15 9 31 10 -2 6 5 2 17 3 -3 7 10 6 20 14 -3 10 6 13 18 1 -4 5 9 5 17 16 -4 9 8 15 21 4 -5 6 9 12 18 15 -6 10 9 14 23 17 -7 11 14 8 26 20 -7 14 10 19 23 13 -8 9 13 16 24 22 -8 13 12 21 27 7 -9 10 14 18 20 24 -9 14 13 23 29 21 -11 15 18 10 31 26 -11 18 14 25 30 19 -12 13 17 22 29 28 -12 17 16 27 32 9 -13 14 17 24 30 27 -14 18 17 26 32 29 -15 16 18 11 32 25 -16 17 18 28 30 31 - -19 -3 6 -3 7 -4 5 -4 8 -5 6 -7 10 -7 11 -8 9 -8 12 -9 10 -11 14 -11 15 -12 13 -12 16 -13 14 -15 16 -15 18 -16 17 -17 18 - -8 -7 10 1 -7 11 2 -8 9 1 -8 12 2 -9 10 1 -11 15 3 -12 16 3 -15 16 4 - -7 -3 7 - 1 - 3 4 -4 8 - 1 - 3 4 -7 11 - 2 - 3 4 - 7 8 -8 12 - 2 - 3 4 - 7 8 -11 15 - 3 - 3 4 - 7 8 - 11 12 -12 16 - 3 - 3 4 - 7 8 - 11 12 -15 16 - 3 - 3 4 - 7 8 - 11 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_auto.txt deleted file mode 100644 index 0229329..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_auto.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_outer.txt deleted file mode 100644 index 0229329..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_outer.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_super.txt deleted file mode 100644 index 0229329..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_ignore_super.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_all.txt deleted file mode 100644 index c35c3d7..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_all.txt +++ /dev/null @@ -1,96 +0,0 @@ -33 -0 1 3 4294967295 6 1 -0 3 6 0 14 2 -0 6 2 1 12 4294967295 -1 2 5 4294967295 12 5 -1 4 8 5 16 7 -1 5 4 3 15 4 -1 7 3 8 13 0 -1 8 12 4 22 9 -1 11 7 10 19 6 -1 12 16 7 28 11 -1 15 11 11 25 8 -1 16 15 9 31 10 -2 6 5 2 17 3 -3 7 10 6 20 14 -3 10 6 13 18 1 -4 5 9 5 17 16 -4 9 8 15 21 4 -5 6 9 12 18 15 -6 10 9 14 23 17 -7 11 14 8 26 20 -7 14 10 19 23 13 -8 9 13 16 24 22 -8 13 12 21 27 7 -9 10 14 18 20 24 -9 14 13 23 29 21 -11 15 18 10 31 26 -11 18 14 25 30 19 -12 13 17 22 29 28 -12 17 16 27 32 9 -13 14 17 24 30 27 -14 18 17 26 32 29 -15 16 18 11 32 25 -16 17 18 28 30 31 - -19 -3 6 -3 7 -4 5 -4 8 -5 6 -7 10 -7 11 -8 9 -8 12 -9 10 -11 14 -11 15 -12 13 -12 16 -13 14 -15 16 -15 18 -16 17 -17 18 - -8 -7 10 1 -7 11 2 -8 9 1 -8 12 2 -9 10 1 -11 15 3 -12 16 3 -15 16 4 - -7 -3 7 - 1 - 3 4 -4 8 - 1 - 3 4 -7 11 - 2 - 3 4 - 7 8 -8 12 - 2 - 3 4 - 7 8 -11 15 - 3 - 3 4 - 7 8 - 11 12 -12 16 - 3 - 3 4 - 7 8 - 11 12 -15 16 - 3 - 3 4 - 7 8 - 11 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_auto.txt deleted file mode 100644 index 0229329..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_auto.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_outer.txt deleted file mode 100644 index 0229329..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_outer.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_super.txt deleted file mode 100644 index 0229329..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f32_auto_resolve_super.txt +++ /dev/null @@ -1,83 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -8 -4 7 1 -4 8 2 -5 6 1 -5 9 2 -6 7 1 -8 12 3 -9 13 3 -12 13 4 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_all.txt index 8c71d00..6eb713d 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_all.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_all.txt @@ -19,17 +19,17 @@ 5 6 9 12 18 15 6 10 9 14 23 17 7 11 14 4 26 20 -7 14 10 19 23 13 -8 9 13 16 24 22 +7 14 10 19 24 13 +8 9 13 16 23 22 8 13 12 21 27 10 -9 10 14 18 20 24 -9 14 13 23 29 21 +9 10 13 18 24 21 +10 14 13 20 29 23 11 15 18 5 32 26 -11 18 14 25 29 19 -12 13 17 22 30 28 +11 18 14 25 30 19 +12 13 17 22 29 28 12 17 16 27 31 11 -13 14 18 24 26 30 -13 18 17 29 32 27 +13 14 17 24 30 27 +14 18 17 26 32 29 15 16 17 6 28 32 15 17 18 31 30 25 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_auto.txt index 12fe303..9152bb3 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_auto.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_auto.txt @@ -6,17 +6,17 @@ 2 3 6 4294967295 5 2 3 7 6 1 10 4 4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 +4 11 7 6 11 0 +5 6 10 3 10 9 5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 +6 7 10 5 11 8 +7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_outer.txt index 12fe303..9152bb3 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_outer.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_outer.txt @@ -6,17 +6,17 @@ 2 3 6 4294967295 5 2 3 7 6 1 10 4 4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 +4 11 7 6 11 0 +5 6 10 3 10 9 5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 +6 7 10 5 11 8 +7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_super.txt index 12fe303..9152bb3 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_super.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_ignore_super.txt @@ -6,17 +6,17 @@ 2 3 6 4294967295 5 2 3 7 6 1 10 4 4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 +4 11 7 6 11 0 +5 6 10 3 10 9 5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 +6 7 10 5 11 8 +7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_all.txt index 8c71d00..6eb713d 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_all.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_all.txt @@ -19,17 +19,17 @@ 5 6 9 12 18 15 6 10 9 14 23 17 7 11 14 4 26 20 -7 14 10 19 23 13 -8 9 13 16 24 22 +7 14 10 19 24 13 +8 9 13 16 23 22 8 13 12 21 27 10 -9 10 14 18 20 24 -9 14 13 23 29 21 +9 10 13 18 24 21 +10 14 13 20 29 23 11 15 18 5 32 26 -11 18 14 25 29 19 -12 13 17 22 30 28 +11 18 14 25 30 19 +12 13 17 22 29 28 12 17 16 27 31 11 -13 14 18 24 26 30 -13 18 17 29 32 27 +13 14 17 24 30 27 +14 18 17 26 32 29 15 16 17 6 28 32 15 17 18 31 30 25 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_auto.txt index 12fe303..9152bb3 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_auto.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_auto.txt @@ -6,17 +6,17 @@ 2 3 6 4294967295 5 2 3 7 6 1 10 4 4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 +4 11 7 6 11 0 +5 6 10 3 10 9 5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 +6 7 10 5 11 8 +7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_outer.txt index 12fe303..9152bb3 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_outer.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_outer.txt @@ -6,17 +6,17 @@ 2 3 6 4294967295 5 2 3 7 6 1 10 4 4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 +4 11 7 6 11 0 +5 6 10 3 10 9 5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 +6 7 10 5 11 8 +7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_super.txt index 12fe303..9152bb3 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_super.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_as-provided_resolve_super.txt @@ -6,17 +6,17 @@ 2 3 6 4294967295 5 2 3 7 6 1 10 4 4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 +4 11 7 6 11 0 +5 6 10 3 10 9 5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 +6 7 10 5 11 8 +7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_all.txt index 9561f49..c35c3d7 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_all.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_all.txt @@ -25,11 +25,11 @@ 9 10 14 18 20 24 9 14 13 23 29 21 11 15 18 10 31 26 -11 18 14 25 29 19 -12 13 17 22 30 28 +11 18 14 25 30 19 +12 13 17 22 29 28 12 17 16 27 32 9 -13 14 18 24 26 30 -13 18 17 29 32 27 +13 14 17 24 30 27 +14 18 17 26 32 29 15 16 18 11 32 25 16 17 18 28 30 31 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_auto.txt index 51566f9..0229329 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_auto.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_auto.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_outer.txt index 51566f9..0229329 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_outer.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_outer.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_super.txt index 51566f9..0229329 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_super.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_ignore_super.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_all.txt index 9561f49..c35c3d7 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_all.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_all.txt @@ -25,11 +25,11 @@ 9 10 14 18 20 24 9 14 13 23 29 21 11 15 18 10 31 26 -11 18 14 25 29 19 -12 13 17 22 30 28 +11 18 14 25 30 19 +12 13 17 22 29 28 12 17 16 27 32 9 -13 14 18 24 26 30 -13 18 17 29 32 27 +13 14 17 24 30 27 +14 18 17 26 32 29 15 16 18 11 32 25 16 17 18 28 30 31 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_auto.txt index 51566f9..0229329 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_auto.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_auto.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_outer.txt index 51566f9..0229329 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_outer.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_outer.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_super.txt index 51566f9..0229329 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_super.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps-conform-to-edge__f64_auto_resolve_super.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__conforming_f32_auto_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__conforming_f32_auto_ignore_auto.txt deleted file mode 100644 index 930df60..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__conforming_f32_auto_ignore_auto.txt +++ /dev/null @@ -1,116 +0,0 @@ -28 -0 4 17 4294967295 9 2 -0 7 3 2 7 4294967295 -0 17 7 0 15 1 -1 2 6 4294967295 6 4 -1 6 16 3 13 5 -1 16 5 4 10 4294967295 -2 3 6 4294967295 7 3 -3 7 6 1 12 6 -4 8 19 4294967295 16 9 -4 19 17 8 22 0 -5 16 18 5 20 11 -5 18 9 10 17 4294967295 -6 7 11 7 15 14 -6 10 16 14 20 4 -6 11 10 12 18 13 -7 17 11 2 22 12 -8 12 19 4294967295 25 8 -9 18 13 11 27 4294967295 -10 11 14 14 21 19 -10 14 18 18 27 20 -10 18 16 19 10 13 -11 15 14 23 26 18 -11 17 19 15 9 23 -11 19 15 22 25 21 -12 13 15 4294967295 26 25 -12 15 19 24 23 16 -13 14 15 27 21 24 -13 18 14 17 19 26 - -23 -0 3 -0 4 -1 2 -1 5 -2 3 -4 8 -4 17 -5 9 -5 16 -6 7 -6 16 -7 17 -8 12 -8 19 -9 13 -9 18 -10 11 -10 18 -11 19 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -15 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -4 17 - 1 - 4 7 -5 9 - 2 - 0 1 - 4 5 -5 16 - 1 - 5 6 -6 16 - 1 - 5 6 -7 17 - 1 - 4 7 -8 12 - 3 - 0 1 - 4 5 - 8 9 -8 19 - 1 - 8 11 -9 13 - 3 - 0 1 - 4 5 - 8 9 -9 18 - 1 - 9 10 -10 18 - 1 - 9 10 -11 19 - 1 - 8 11 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__conforming_f64_auto_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__conforming_f64_auto_ignore_auto.txt index ce98766..930df60 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__conforming_f64_auto_ignore_auto.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__conforming_f64_auto_ignore_auto.txt @@ -9,23 +9,23 @@ 3 7 6 1 12 6 4 8 19 4294967295 16 9 4 19 17 8 22 0 -5 16 18 5 21 11 +5 16 18 5 20 11 5 18 9 10 17 4294967295 6 7 11 7 15 14 -6 10 16 14 21 4 +6 10 16 14 20 4 6 11 10 12 18 13 7 17 11 2 22 12 8 12 19 4294967295 25 8 9 18 13 11 27 4294967295 -10 11 15 14 23 20 -10 14 18 20 27 21 -10 15 14 18 26 19 +10 11 14 14 21 19 +10 14 18 18 27 20 10 18 16 19 10 13 +11 15 14 23 26 18 11 17 19 15 9 23 -11 19 15 22 25 18 +11 19 15 22 25 21 12 13 15 4294967295 26 25 12 15 19 24 23 16 -13 14 15 27 20 24 +13 14 15 27 21 24 13 18 14 17 19 26 23 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_all.txt deleted file mode 100644 index 71cf9a4..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_all.txt +++ /dev/null @@ -1,93 +0,0 @@ -33 -0 1 16 4294967295 11 6 -0 3 6 3 14 2 -0 6 2 1 12 4294967295 -0 7 3 4 13 1 -0 11 7 5 19 3 -0 15 11 6 25 4 -0 16 15 0 31 5 -1 2 5 4294967295 12 9 -1 4 8 9 16 10 -1 5 4 7 15 8 -1 8 12 8 22 11 -1 12 16 10 28 0 -2 6 5 2 17 7 -3 7 10 3 20 14 -3 10 6 13 18 1 -4 5 9 9 17 16 -4 9 8 15 21 8 -5 6 9 12 18 15 -6 10 9 14 23 17 -7 11 14 4 26 20 -7 14 10 19 24 13 -8 9 13 16 23 22 -8 13 12 21 27 10 -9 10 13 18 24 21 -10 14 13 20 29 23 -11 15 18 5 32 26 -11 18 14 25 30 19 -12 13 17 22 29 28 -12 17 16 27 31 11 -13 14 17 24 30 27 -14 18 17 26 32 29 -15 16 17 6 28 32 -15 17 18 31 30 25 - -19 -3 6 -3 7 -4 5 -4 8 -5 6 -7 10 -7 11 -8 9 -8 12 -9 10 -11 14 -11 15 -12 13 -12 16 -13 14 -15 16 -15 18 -16 17 -17 18 - -5 -7 11 1 -8 12 1 -11 15 2 -12 16 2 -15 16 3 - -7 -3 7 - 1 - 3 4 -4 8 - 1 - 3 4 -7 11 - 2 - 3 4 - 7 8 -8 12 - 2 - 3 4 - 7 8 -11 15 - 3 - 3 4 - 7 8 - 11 12 -12 16 - 3 - 3 4 - 7 8 - 11 12 -15 16 - 3 - 3 4 - 7 8 - 11 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_auto.txt deleted file mode 100644 index a65970d..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_auto.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_outer.txt deleted file mode 100644 index a65970d..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_outer.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_super.txt deleted file mode 100644 index a65970d..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_ignore_super.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_all.txt deleted file mode 100644 index 71cf9a4..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_all.txt +++ /dev/null @@ -1,93 +0,0 @@ -33 -0 1 16 4294967295 11 6 -0 3 6 3 14 2 -0 6 2 1 12 4294967295 -0 7 3 4 13 1 -0 11 7 5 19 3 -0 15 11 6 25 4 -0 16 15 0 31 5 -1 2 5 4294967295 12 9 -1 4 8 9 16 10 -1 5 4 7 15 8 -1 8 12 8 22 11 -1 12 16 10 28 0 -2 6 5 2 17 7 -3 7 10 3 20 14 -3 10 6 13 18 1 -4 5 9 9 17 16 -4 9 8 15 21 8 -5 6 9 12 18 15 -6 10 9 14 23 17 -7 11 14 4 26 20 -7 14 10 19 24 13 -8 9 13 16 23 22 -8 13 12 21 27 10 -9 10 13 18 24 21 -10 14 13 20 29 23 -11 15 18 5 32 26 -11 18 14 25 30 19 -12 13 17 22 29 28 -12 17 16 27 31 11 -13 14 17 24 30 27 -14 18 17 26 32 29 -15 16 17 6 28 32 -15 17 18 31 30 25 - -19 -3 6 -3 7 -4 5 -4 8 -5 6 -7 10 -7 11 -8 9 -8 12 -9 10 -11 14 -11 15 -12 13 -12 16 -13 14 -15 16 -15 18 -16 17 -17 18 - -5 -7 11 1 -8 12 1 -11 15 2 -12 16 2 -15 16 3 - -7 -3 7 - 1 - 3 4 -4 8 - 1 - 3 4 -7 11 - 2 - 3 4 - 7 8 -8 12 - 2 - 3 4 - 7 8 -11 15 - 3 - 3 4 - 7 8 - 11 12 -12 16 - 3 - 3 4 - 7 8 - 11 12 -15 16 - 3 - 3 4 - 7 8 - 11 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_auto.txt deleted file mode 100644 index a65970d..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_auto.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_outer.txt deleted file mode 100644 index a65970d..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_outer.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_super.txt deleted file mode 100644 index a65970d..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_as-provided_resolve_super.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 11 0 -5 6 10 3 10 9 -5 10 9 8 14 4294967295 -6 7 10 5 11 8 -7 11 10 7 16 10 -8 12 15 4294967295 19 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 18 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 14 4294967295 15 19 -12 14 15 18 17 12 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_all.txt deleted file mode 100644 index 5761639..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_all.txt +++ /dev/null @@ -1,93 +0,0 @@ -33 -0 1 3 4294967295 6 1 -0 3 6 0 14 2 -0 6 2 1 12 4294967295 -1 2 5 4294967295 12 5 -1 4 8 5 16 7 -1 5 4 3 15 4 -1 7 3 8 13 0 -1 8 12 4 22 9 -1 11 7 10 19 6 -1 12 16 7 28 11 -1 15 11 11 25 8 -1 16 15 9 31 10 -2 6 5 2 17 3 -3 7 10 6 20 14 -3 10 6 13 18 1 -4 5 9 5 17 16 -4 9 8 15 21 4 -5 6 9 12 18 15 -6 10 9 14 23 17 -7 11 14 8 26 20 -7 14 10 19 23 13 -8 9 13 16 24 22 -8 13 12 21 27 7 -9 10 14 18 20 24 -9 14 13 23 29 21 -11 15 18 10 31 26 -11 18 14 25 30 19 -12 13 17 22 29 28 -12 17 16 27 32 9 -13 14 17 24 30 27 -14 18 17 26 32 29 -15 16 18 11 32 25 -16 17 18 28 30 31 - -19 -3 6 -3 7 -4 5 -4 8 -5 6 -7 10 -7 11 -8 9 -8 12 -9 10 -11 14 -11 15 -12 13 -12 16 -13 14 -15 16 -15 18 -16 17 -17 18 - -5 -7 11 1 -8 12 1 -11 15 2 -12 16 2 -15 16 3 - -7 -3 7 - 1 - 3 4 -4 8 - 1 - 3 4 -7 11 - 2 - 3 4 - 7 8 -8 12 - 2 - 3 4 - 7 8 -11 15 - 3 - 3 4 - 7 8 - 11 12 -12 16 - 3 - 3 4 - 7 8 - 11 12 -15 16 - 3 - 3 4 - 7 8 - 11 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_auto.txt deleted file mode 100644 index 5b85161..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_auto.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_outer.txt deleted file mode 100644 index 5b85161..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_outer.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_super.txt deleted file mode 100644 index 5b85161..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_ignore_super.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_all.txt deleted file mode 100644 index 5761639..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_all.txt +++ /dev/null @@ -1,93 +0,0 @@ -33 -0 1 3 4294967295 6 1 -0 3 6 0 14 2 -0 6 2 1 12 4294967295 -1 2 5 4294967295 12 5 -1 4 8 5 16 7 -1 5 4 3 15 4 -1 7 3 8 13 0 -1 8 12 4 22 9 -1 11 7 10 19 6 -1 12 16 7 28 11 -1 15 11 11 25 8 -1 16 15 9 31 10 -2 6 5 2 17 3 -3 7 10 6 20 14 -3 10 6 13 18 1 -4 5 9 5 17 16 -4 9 8 15 21 4 -5 6 9 12 18 15 -6 10 9 14 23 17 -7 11 14 8 26 20 -7 14 10 19 23 13 -8 9 13 16 24 22 -8 13 12 21 27 7 -9 10 14 18 20 24 -9 14 13 23 29 21 -11 15 18 10 31 26 -11 18 14 25 30 19 -12 13 17 22 29 28 -12 17 16 27 32 9 -13 14 17 24 30 27 -14 18 17 26 32 29 -15 16 18 11 32 25 -16 17 18 28 30 31 - -19 -3 6 -3 7 -4 5 -4 8 -5 6 -7 10 -7 11 -8 9 -8 12 -9 10 -11 14 -11 15 -12 13 -12 16 -13 14 -15 16 -15 18 -16 17 -17 18 - -5 -7 11 1 -8 12 1 -11 15 2 -12 16 2 -15 16 3 - -7 -3 7 - 1 - 3 4 -4 8 - 1 - 3 4 -7 11 - 2 - 3 4 - 7 8 -8 12 - 2 - 3 4 - 7 8 -11 15 - 3 - 3 4 - 7 8 - 11 12 -12 16 - 3 - 3 4 - 7 8 - 11 12 -15 16 - 3 - 3 4 - 7 8 - 11 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_auto.txt deleted file mode 100644 index 5b85161..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_auto.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_outer.txt deleted file mode 100644 index 5b85161..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_outer.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_super.txt deleted file mode 100644 index 5b85161..0000000 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f32_auto_resolve_super.txt +++ /dev/null @@ -1,80 +0,0 @@ -20 -0 4 7 4294967295 7 1 -0 7 3 0 5 4294967295 -1 2 6 4294967295 4 3 -1 6 5 2 8 4294967295 -2 3 6 4294967295 5 2 -3 7 6 1 10 4 -4 8 11 4294967295 13 7 -4 11 7 6 10 0 -5 6 10 3 11 9 -5 10 9 8 14 4294967295 -6 7 11 5 7 11 -6 11 10 10 16 8 -8 12 15 4294967295 18 13 -8 15 11 12 17 6 -9 10 14 9 16 15 -9 14 13 14 19 4294967295 -10 11 14 11 17 14 -11 15 14 13 19 16 -12 13 15 4294967295 19 12 -13 14 15 15 17 18 - -19 -0 3 -0 4 -1 2 -1 5 -2 3 -4 7 -4 8 -5 6 -5 9 -6 7 -8 11 -8 12 -9 10 -9 13 -10 11 -12 13 -12 15 -13 14 -14 15 - -5 -4 8 1 -5 9 1 -8 12 2 -9 13 2 -12 13 3 - -7 -0 4 - 1 - 0 1 -1 5 - 1 - 0 1 -4 8 - 2 - 0 1 - 4 5 -5 9 - 2 - 0 1 - 4 5 -8 12 - 3 - 0 1 - 4 5 - 8 9 -9 13 - 3 - 0 1 - 4 5 - 8 9 -12 13 - 3 - 0 1 - 4 5 - 8 9 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_all.txt index cf83552..71cf9a4 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_all.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_all.txt @@ -25,11 +25,11 @@ 9 10 13 18 24 21 10 14 13 20 29 23 11 15 18 5 32 26 -11 18 14 25 29 19 -12 13 17 22 30 28 +11 18 14 25 30 19 +12 13 17 22 29 28 12 17 16 27 31 11 -13 14 18 24 26 30 -13 18 17 29 32 27 +13 14 17 24 30 27 +14 18 17 26 32 29 15 16 17 6 28 32 15 17 18 31 30 25 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_auto.txt index 1d9860e..a65970d 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_auto.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_auto.txt @@ -12,11 +12,11 @@ 6 7 10 5 11 8 7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_outer.txt index 1d9860e..a65970d 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_outer.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_outer.txt @@ -12,11 +12,11 @@ 6 7 10 5 11 8 7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_super.txt index 1d9860e..a65970d 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_super.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_ignore_super.txt @@ -12,11 +12,11 @@ 6 7 10 5 11 8 7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_all.txt index cf83552..71cf9a4 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_all.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_all.txt @@ -25,11 +25,11 @@ 9 10 13 18 24 21 10 14 13 20 29 23 11 15 18 5 32 26 -11 18 14 25 29 19 -12 13 17 22 30 28 +11 18 14 25 30 19 +12 13 17 22 29 28 12 17 16 27 31 11 -13 14 18 24 26 30 -13 18 17 29 32 27 +13 14 17 24 30 27 +14 18 17 26 32 29 15 16 17 6 28 32 15 17 18 31 30 25 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_auto.txt index 1d9860e..a65970d 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_auto.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_auto.txt @@ -12,11 +12,11 @@ 6 7 10 5 11 8 7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_outer.txt index 1d9860e..a65970d 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_outer.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_outer.txt @@ -12,11 +12,11 @@ 6 7 10 5 11 8 7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_super.txt index 1d9860e..a65970d 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_super.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_as-provided_resolve_super.txt @@ -12,11 +12,11 @@ 6 7 10 5 11 8 7 11 10 7 16 10 8 12 15 4294967295 19 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 18 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 14 4294967295 15 19 12 14 15 18 17 12 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_all.txt index 36ad429..5761639 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_all.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_all.txt @@ -25,11 +25,11 @@ 9 10 14 18 20 24 9 14 13 23 29 21 11 15 18 10 31 26 -11 18 14 25 29 19 -12 13 17 22 30 28 +11 18 14 25 30 19 +12 13 17 22 29 28 12 17 16 27 32 9 -13 14 18 24 26 30 -13 18 17 29 32 27 +13 14 17 24 30 27 +14 18 17 26 32 29 15 16 18 11 32 25 16 17 18 28 30 31 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_auto.txt index 5d9dca3..5b85161 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_auto.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_auto.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_outer.txt index 5d9dca3..5b85161 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_outer.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_outer.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_super.txt index 5d9dca3..5b85161 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_super.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_ignore_super.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_all.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_all.txt index 36ad429..5761639 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_all.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_all.txt @@ -25,11 +25,11 @@ 9 10 14 18 20 24 9 14 13 23 29 21 11 15 18 10 31 26 -11 18 14 25 29 19 -12 13 17 22 30 28 +11 18 14 25 30 19 +12 13 17 22 29 28 12 17 16 27 32 9 -13 14 18 24 26 30 -13 18 17 29 32 27 +13 14 17 24 30 27 +14 18 17 26 32 29 15 16 18 11 32 25 16 17 18 28 30 31 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_auto.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_auto.txt index 5d9dca3..5b85161 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_auto.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_auto.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_outer.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_outer.txt index 5d9dca3..5b85161 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_outer.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_outer.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_super.txt b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_super.txt index 5d9dca3..5b85161 100644 --- a/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_super.txt +++ b/test/CDT.Tests/expected/issue-42-multiple-boundary-overlaps__f64_auto_resolve_super.txt @@ -12,11 +12,11 @@ 6 7 11 5 7 11 6 11 10 10 16 8 8 12 15 4294967295 18 13 -8 15 11 12 16 6 -9 10 14 9 17 15 +8 15 11 12 17 6 +9 10 14 9 16 15 9 14 13 14 19 4294967295 -10 11 15 11 13 17 -10 15 14 16 19 14 +10 11 14 11 17 14 +11 15 14 13 19 16 12 13 15 4294967295 19 12 13 14 15 15 17 18 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_all.txt b/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_all.txt deleted file mode 100644 index 70d8ed9..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_all.txt +++ /dev/null @@ -1,43 +0,0 @@ -17 -0 1 3 4294967295 8 1 -0 3 4 0 11 2 -0 4 5 1 11 3 -0 5 8 2 14 4 -0 8 9 3 15 5 -0 9 10 4 16 6 -0 10 2 5 7 4294967295 -1 2 10 4294967295 6 10 -1 6 3 9 12 0 -1 7 6 10 13 8 -1 10 7 7 16 9 -3 5 4 12 2 1 -3 6 5 8 13 11 -5 6 7 12 9 14 -5 7 8 13 15 3 -7 9 8 16 4 14 -7 10 9 10 5 15 - -9 -3 4 -3 6 -4 5 -5 6 -6 7 -7 8 -7 10 -8 9 -9 10 - -1 -6 7 1 - -3 -3 6 - 1 - 3 10 -6 7 - 1 - 3 10 -7 10 - 1 - 3 10 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_auto.txt b/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_auto.txt deleted file mode 100644 index cdd9222..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_auto.txt +++ /dev/null @@ -1,30 +0,0 @@ -4 -0 2 1 1 4294967295 4294967295 -0 3 2 4294967295 4294967295 0 -4 6 5 3 4294967295 4294967295 -4 7 6 4294967295 4294967295 2 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_outer.txt b/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_outer.txt deleted file mode 100644 index cdd9222..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_outer.txt +++ /dev/null @@ -1,30 +0,0 @@ -4 -0 2 1 1 4294967295 4294967295 -0 3 2 4294967295 4294967295 0 -4 6 5 3 4294967295 4294967295 -4 7 6 4294967295 4294967295 2 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_super.txt b/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_super.txt deleted file mode 100644 index 4ce475b..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_ignore_super.txt +++ /dev/null @@ -1,32 +0,0 @@ -6 -0 2 1 1 4294967295 4294967295 -0 3 2 4294967295 2 0 -2 3 4 1 4294967295 3 -2 4 5 2 4 4294967295 -4 6 5 5 4294967295 3 -4 7 6 4294967295 4294967295 4 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_all.txt b/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_all.txt deleted file mode 100644 index 70d8ed9..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_all.txt +++ /dev/null @@ -1,43 +0,0 @@ -17 -0 1 3 4294967295 8 1 -0 3 4 0 11 2 -0 4 5 1 11 3 -0 5 8 2 14 4 -0 8 9 3 15 5 -0 9 10 4 16 6 -0 10 2 5 7 4294967295 -1 2 10 4294967295 6 10 -1 6 3 9 12 0 -1 7 6 10 13 8 -1 10 7 7 16 9 -3 5 4 12 2 1 -3 6 5 8 13 11 -5 6 7 12 9 14 -5 7 8 13 15 3 -7 9 8 16 4 14 -7 10 9 10 5 15 - -9 -3 4 -3 6 -4 5 -5 6 -6 7 -7 8 -7 10 -8 9 -9 10 - -1 -6 7 1 - -3 -3 6 - 1 - 3 10 -6 7 - 1 - 3 10 -7 10 - 1 - 3 10 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_auto.txt b/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_auto.txt deleted file mode 100644 index cdd9222..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_auto.txt +++ /dev/null @@ -1,30 +0,0 @@ -4 -0 2 1 1 4294967295 4294967295 -0 3 2 4294967295 4294967295 0 -4 6 5 3 4294967295 4294967295 -4 7 6 4294967295 4294967295 2 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_outer.txt b/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_outer.txt deleted file mode 100644 index cdd9222..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_outer.txt +++ /dev/null @@ -1,30 +0,0 @@ -4 -0 2 1 1 4294967295 4294967295 -0 3 2 4294967295 4294967295 0 -4 6 5 3 4294967295 4294967295 -4 7 6 4294967295 4294967295 2 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_super.txt b/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_super.txt deleted file mode 100644 index 4ce475b..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_as-provided_resolve_super.txt +++ /dev/null @@ -1,32 +0,0 @@ -6 -0 2 1 1 4294967295 4294967295 -0 3 2 4294967295 2 0 -2 3 4 1 4294967295 3 -2 4 5 2 4 4294967295 -4 6 5 5 4294967295 3 -4 7 6 4294967295 4294967295 4 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_all.txt b/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_all.txt deleted file mode 100644 index 55104fa..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_all.txt +++ /dev/null @@ -1,43 +0,0 @@ -17 -0 1 3 4294967295 8 1 -0 3 4 0 11 2 -0 4 5 1 12 3 -0 5 8 2 14 4 -0 8 9 3 15 5 -0 9 10 4 16 6 -0 10 2 5 7 4294967295 -1 2 10 4294967295 6 10 -1 6 3 9 11 0 -1 7 6 10 13 8 -1 10 7 7 16 9 -3 6 4 8 12 1 -4 6 5 11 13 2 -5 6 7 12 9 14 -5 7 8 13 15 3 -7 9 8 16 4 14 -7 10 9 10 5 15 - -9 -3 4 -3 6 -4 5 -5 6 -6 7 -7 8 -7 10 -8 9 -9 10 - -1 -6 7 1 - -3 -3 6 - 1 - 3 10 -6 7 - 1 - 3 10 -7 10 - 1 - 3 10 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_auto.txt b/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_auto.txt deleted file mode 100644 index 7dada29..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_auto.txt +++ /dev/null @@ -1,30 +0,0 @@ -4 -0 3 1 4294967295 1 4294967295 -1 3 2 0 4294967295 4294967295 -4 6 5 3 4294967295 4294967295 -4 7 6 4294967295 4294967295 2 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_outer.txt b/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_outer.txt deleted file mode 100644 index 7dada29..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_outer.txt +++ /dev/null @@ -1,30 +0,0 @@ -4 -0 3 1 4294967295 1 4294967295 -1 3 2 0 4294967295 4294967295 -4 6 5 3 4294967295 4294967295 -4 7 6 4294967295 4294967295 2 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_super.txt b/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_super.txt deleted file mode 100644 index 7713817..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_auto_ignore_super.txt +++ /dev/null @@ -1,32 +0,0 @@ -6 -0 3 1 4294967295 1 4294967295 -1 3 2 0 2 4294967295 -2 3 4 1 4294967295 3 -2 4 5 2 4 4294967295 -4 6 5 5 4294967295 3 -4 7 6 4294967295 4294967295 4 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_all.txt b/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_all.txt deleted file mode 100644 index 55104fa..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_all.txt +++ /dev/null @@ -1,43 +0,0 @@ -17 -0 1 3 4294967295 8 1 -0 3 4 0 11 2 -0 4 5 1 12 3 -0 5 8 2 14 4 -0 8 9 3 15 5 -0 9 10 4 16 6 -0 10 2 5 7 4294967295 -1 2 10 4294967295 6 10 -1 6 3 9 11 0 -1 7 6 10 13 8 -1 10 7 7 16 9 -3 6 4 8 12 1 -4 6 5 11 13 2 -5 6 7 12 9 14 -5 7 8 13 15 3 -7 9 8 16 4 14 -7 10 9 10 5 15 - -9 -3 4 -3 6 -4 5 -5 6 -6 7 -7 8 -7 10 -8 9 -9 10 - -1 -6 7 1 - -3 -3 6 - 1 - 3 10 -6 7 - 1 - 3 10 -7 10 - 1 - 3 10 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_auto.txt b/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_auto.txt deleted file mode 100644 index 7dada29..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_auto.txt +++ /dev/null @@ -1,30 +0,0 @@ -4 -0 3 1 4294967295 1 4294967295 -1 3 2 0 4294967295 4294967295 -4 6 5 3 4294967295 4294967295 -4 7 6 4294967295 4294967295 2 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_outer.txt b/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_outer.txt deleted file mode 100644 index 7dada29..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_outer.txt +++ /dev/null @@ -1,30 +0,0 @@ -4 -0 3 1 4294967295 1 4294967295 -1 3 2 0 4294967295 4294967295 -4 6 5 3 4294967295 4294967295 -4 7 6 4294967295 4294967295 2 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_super.txt b/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_super.txt deleted file mode 100644 index 7713817..0000000 --- a/test/CDT.Tests/expected/overlapping constraints__f32_auto_resolve_super.txt +++ /dev/null @@ -1,32 +0,0 @@ -6 -0 3 1 4294967295 1 4294967295 -1 3 2 0 2 4294967295 -2 3 4 1 4294967295 3 -2 4 5 2 4 4294967295 -4 6 5 5 4294967295 3 -4 7 6 4294967295 4294967295 4 - -9 -0 1 -0 3 -1 2 -2 3 -3 4 -4 5 -4 7 -5 6 -6 7 - -1 -3 4 1 - -3 -0 3 - 1 - 0 7 -3 4 - 1 - 0 7 -4 7 - 1 - 0 7 diff --git a/test/CDT.Tests/inputs/Capital A.txt b/test/CDT.Tests/inputs/Capital A.txt index 385d793..a1803b8 100644 --- a/test/CDT.Tests/inputs/Capital A.txt +++ b/test/CDT.Tests/inputs/Capital A.txt @@ -1,33 +1,33 @@ 29 29 -0.200000 -0.776400 -0.220000 -0.773200 -0.245600 -0.756400 -0.277600 -0.702000 -0.488800 -0.207600 -0.504800 -0.207600 -0.740800 -0.7396 -0.756000 -0.761200 -0.774400 -0.7724 -0.800000 -0.776400 -0.800000 -0.792400 -0.579200 -0.792400 -0.579200 -0.776400 -0.621600 -0.771600 -0.633600 -0.762800 -0.639200 -0.744400 -0.620800 -0.684400 -0.587200 -0.604400 -0.360800 -0.604400 -0.319200 -0.706800 -0.312000 -0.739600 -0.318400 -0.761200 -0.334400 -0.771600 -0.371200 -0.776400 -0.371200 -0.792400 -0.374400 -0.570000 -0.574400 -0.5700 -0.473600 -0.330800 -0.200000 -0.792400 +200000 -776400 +220000 -773200 +245600 -756400 +277600 -702000 +488800 -207600 +504800 -207600 +740800 -739600 +756000 -761200 +774400 -772400 +800000 -776400 +800000 -792400 +579200 -792400 +579200 -776400 +621600 -771600 +633600 -762800 +639200 -744400 +620800 -684400 +587200 -604400 +360800 -604400 +319200 -706800 +312000 -739600 +318400 -761200 +334400 -771600 +371200 -776400 +371200 -792400 +374400 -570000 +574400 -570000 +473600 -330800 +200000 -792400 28 0 0 1 1 2 @@ -56,4 +56,4 @@ 24 28 25 26 26 27 -27 25 \ No newline at end of file +27 25 diff --git a/test/CDT.Tests/inputs/Constrained Sweden.txt b/test/CDT.Tests/inputs/Constrained Sweden.txt index ec794ca..91eec12 100644 --- a/test/CDT.Tests/inputs/Constrained Sweden.txt +++ b/test/CDT.Tests/inputs/Constrained Sweden.txt @@ -1,2623 +1,2623 @@ 2619 2619 -16.836666 56.826942 -16.828053 56.825272 -16.816944 56.825829 -16.808331 56.824165 -16.785 56.809998 -16.779442 56.805832 -16.770275 56.79583 -16.726665 56.702217 -16.635555 56.518883 -16.576664 56.406944 -16.570553 56.39444 -16.569443 56.388054 -16.570274 56.376938 -16.571941 56.371666 -16.575275 56.367218 -16.575554 56.361382 -16.571663 56.354996 -16.553055 56.326385 -16.496109 56.240829 -16.486385 56.231384 -16.47361 56.224442 -16.437222 56.211388 -16.429722 56.208885 -16.42083 56.211105 -16.416111 56.215271 -16.410831 56.224998 -16.403332 56.274162 -16.391666 56.464996 -16.39333 56.52916 -16.395832 56.535828 -16.420277 56.586388 -16.5425 56.776382 -16.611942 56.868332 -16.616665 56.873604 -16.629166 56.879166 -16.644997 56.883606 -16.749443 56.93972 -16.848053 57.064163 -16.899998 57.134995 -16.959442 57.22361 -16.963055 57.229439 -16.965553 57.241661 -16.960278 57.256943 -16.959164 57.274162 -16.960552 57.280273 -16.96611 57.29361 -16.973331 57.305275 -16.982777 57.315552 -16.993053 57.324715 -17.009998 57.337494 -17.022221 57.344994 -17.035553 57.351944 -17.056664 57.359161 -17.09861 57.350555 -17.105553 57.348328 -17.124165 57.320831 -17.050552 57.186661 -17.008888 57.131943 -16.961109 57.075272 -16.926666 57.038055 -16.880276 56.929718 -16.848331 56.843887 -16.84111 56.832222 -18.206108 56.911942 -18.168888 56.909996 -18.147778 56.911942 -18.140274 56.914993 -18.142498 56.920273 -18.158333 56.941666 -18.209164 56.989166 -18.256664 57.032219 -18.254444 57.079163 -18.173332 57.141937 -18.148331 57.235275 -18.158054 57.315826 -18.142498 57.409439 -18.115276 57.480827 -18.110275 57.496109 -18.109997 57.513054 -18.111385 57.51944 -18.119164 57.531105 -18.138611 57.551109 -18.179165 57.588333 -18.191441 57.596138 -18.211941 57.605827 -18.227776 57.611382 -18.242222 57.617493 -18.249165 57.620827 -18.276108 57.634163 -18.29472 57.645828 -18.338886 57.681664 -18.355831 57.695831 -18.381943 57.718605 -18.401665 57.738609 -18.41972 57.760277 -18.456387 57.802773 -18.461388 57.807777 -18.46722 57.811943 -18.48111 57.818604 -18.681942 57.913605 -18.689999 57.916107 -18.71611 57.921104 -18.724998 57.922775 -18.881943 57.919716 -18.902496 57.918327 -18.914165 57.917496 -19.004719 57.908607 -19.006107 57.90361 -19.003887 57.898888 -19.033333 57.826942 -18.929443 57.739716 -18.848888 57.721107 -18.809166 57.703606 -18.793331 57.659164 -18.75972 57.508049 -18.768055 57.472221 -18.769444 57.467216 -18.78833 57.448326 -18.714443 57.246941 -18.711941 57.241661 -18.658054 57.220833 -18.551941 57.182777 -18.514721 57.169441 -18.498333 57.165276 -18.455555 57.156944 -18.439442 57.152771 -18.417221 57.144165 -18.397221 57.134163 -18.391388 57.129997 -18.386665 57.124992 -18.345554 57.07972 -18.341389 57.073883 -18.339165 57.068604 -18.335552 57.023331 -18.335831 57.017494 -18.34333 57.014442 -18.346664 56.998604 -18.302498 56.937492 -18.294998 56.934715 -18.215553 56.913055 -19.334442 57.955826 -19.286663 57.937492 -19.277496 57.940277 -19.274441 57.945 -19.268055 57.948608 -19.256664 57.94944 -19.238052 57.946938 -19.170555 57.929443 -19.162777 57.926941 -19.150833 57.91861 -19.145832 57.913605 -19.141666 57.907776 -19.139999 57.901665 -19.12611 57.839722 -19.09333 57.851944 -19.077774 57.85833 -19.073055 57.862495 -19.037498 57.896385 -19.034443 57.901108 -19.034443 57.912498 -19.03611 57.91861 -19.088886 57.970276 -19.095833 57.97361 -19.104721 57.975273 -19.285831 57.976662 -19.296387 57.976662 -19.307499 57.974442 -19.332497 57.965271 -19.335552 57.960548 -11.594444 57.932495 -11.584999 57.930832 -11.57472 57.931664 -11.528055 57.948051 -11.522499 57.951942 -11.518125 57.98069 -11.509722 57.989716 -11.498333 58.006943 -11.497221 58.012772 -11.498055 58.031387 -11.501944 58.036659 -11.520555 58.047775 -11.529999 58.049164 -11.735884 58.041714 -11.74111 58.030548 -11.742222 58.024994 -11.736944 58.00444 -11.734165 57.998604 -11.729166 57.993889 -11.722776 57.990273 -11.659443 57.957497 -11.646111 57.950829 -16.816666 58.116104 -16.783333 58.096664 -16.77861 58.100555 -16.778053 58.106384 -16.781944 58.112221 -16.787777 58.116386 -16.801109 58.123329 -16.810833 58.124443 -16.818886 58.121384 -11.806389 58.120552 -11.800278 58.116943 -11.714722 58.101105 -11.676388 58.098885 -11.624722 58.107498 -11.62361 58.113052 -11.606667 58.118607 -11.583055 58.118889 -11.553333 58.115273 -11.467222 58.101387 -11.465832 58.095833 -11.46361 58.071663 -11.464998 58.066109 -11.454721 58.072495 -11.450554 58.076942 -11.40111 58.130272 -11.402777 58.13694 -11.410555 58.147499 -11.668888 58.284439 -11.6775 58.286659 -11.708887 58.285828 -11.721666 58.284721 -11.736666 58.281662 -11.786665 58.245552 -11.809999 58.224442 -11.812498 58.219162 -11.81361 58.213608 -11.815832 58.171944 -11.814722 58.147217 -11.81111 58.133606 -19.236942 58.337219 -19.226109 58.337219 -19.21833 58.340271 -19.187222 58.381386 -19.184166 58.386108 -19.186665 58.391388 -19.224998 58.389717 -19.261665 58.384163 -19.305832 58.375275 -19.324718 58.36972 -19.331108 58.366104 -19.327499 58.361664 -19.315277 58.353333 -19.302219 58.346107 -19.294167 58.343605 -19.285275 58.341942 -17.691387 58.916939 -17.706387 58.904442 -17.695831 58.905548 -17.676388 58.916382 -17.671387 58.920555 -17.664444 58.929993 -17.641109 58.965828 -17.639164 58.971107 -17.639164 58.976662 -17.641941 58.989166 -17.660553 59.039719 -17.667774 59.052216 -17.675831 59.054718 -17.68222 59.051109 -17.696388 59.039719 -17.718052 59.018051 -17.721664 59.007774 -17.720276 59.001663 -17.71611 58.995552 -17.704166 58.987221 -17.69611 58.975555 -17.690277 58.950829 -17.687775 58.926941 -17.688053 58.921387 -18.40583 59.023888 -18.377499 59.01944 -18.365555 59.020271 -18.360554 59.024437 -18.357498 59.02916 -18.35722 59.034996 -18.396942 59.080826 -18.407219 59.090828 -18.41333 59.094994 -18.444164 59.115829 -18.450554 59.11805 -18.459721 59.11972 -18.469719 59.120552 -18.479164 59.119995 -18.491665 59.102776 -18.490555 59.098053 -18.424164 59.036385 -18.53722 59.223885 -18.527222 59.223053 -18.515274 59.223885 -18.503887 59.22583 -18.435555 59.253609 -18.428886 59.257217 -18.389442 59.284721 -18.391941 59.290276 -18.466663 59.29277 -18.478886 59.291939 -18.49472 59.290833 -18.503609 59.288887 -18.601944 59.2575 -18.610275 59.254166 -18.571941 59.232216 -18.56361 59.229721 -17.786942 59.310555 -17.777775 59.308609 -17.754444 59.309441 -17.721664 59.316109 -17.686943 59.328049 -17.671944 59.334717 -17.661942 59.343048 -17.617496 59.397774 -17.605553 59.416664 -17.610554 59.421661 -17.61861 59.424438 -17.627777 59.426109 -17.638885 59.426109 -17.650555 59.424164 -17.737499 59.393326 -17.744164 59.389717 -17.773888 59.372772 -17.777222 59.36805 -17.789165 59.321388 -17.789165 59.315826 -17.734722 59.296104 -17.817497 59.277771 -17.758053 59.28083 -17.681942 59.289719 -17.658886 59.293884 -17.649166 59.296387 -17.639164 59.299164 -17.622776 59.305275 -17.610832 59.313049 -17.520554 59.406944 -17.518887 59.411942 -17.520275 59.418327 -17.523609 59.422775 -17.531666 59.425278 -17.539165 59.426666 -17.570553 59.428604 -17.622776 59.378609 -17.629719 59.369438 -17.636944 59.348885 -17.637218 59.343048 -17.635555 59.336937 -17.636108 59.325554 -17.637775 59.320549 -17.647778 59.317772 -17.266388 59.374443 -17.256386 59.373329 -17.23111 59.375549 -17.155552 59.383606 -17.147221 59.386665 -17.070274 59.453888 -17.07 59.459442 -17.089722 59.459999 -17.150555 59.456665 -17.236111 59.449715 -17.256943 59.446663 -17.266941 59.44416 -17.280277 59.436943 -17.316109 59.408051 -17.318054 59.403053 -17.317219 59.398048 -17.309719 59.394165 -18.575554 59.448326 -18.565277 59.447495 -18.553055 59.448326 -18.526665 59.468605 -18.521664 59.472771 -18.519997 59.483604 -18.519997 59.489441 -18.522778 59.49472 -18.528889 59.498886 -18.570274 59.526382 -18.610832 59.546661 -18.63361 59.555832 -18.643608 59.556664 -18.738888 59.548332 -18.746944 59.544998 -18.732498 59.53833 -18.724442 59.535828 -18.715275 59.534164 -18.668053 59.526665 -18.591389 59.501106 -18.588608 59.495552 -18.590275 59.490555 -18.606941 59.467216 -18.605274 59.461105 -18.583611 59.450829 -18.57 60.307777 -18.561665 60.305275 -18.549164 60.306107 -18.521111 60.315826 -18.512775 60.31916 -18.401108 60.365273 -18.394165 60.374718 -18.392498 60.379715 -18.381943 60.416382 -18.371666 60.494164 -18.374165 60.499718 -18.380554 60.503883 -18.389999 60.505554 -18.408886 60.499718 -18.422497 60.486664 -18.456108 60.427498 -18.507221 60.348053 -18.53722 60.342499 -18.572777 60.313332 -17.509163 62.363327 -17.484722 62.363052 -17.456665 62.365273 -17.444164 62.367493 -17.422222 62.372498 -17.416664 62.376663 -17.412777 62.381386 -17.369164 62.46666 -17.367222 62.471664 -17.373333 62.474442 -17.463055 62.461662 -17.472221 62.458328 -17.514442 62.414444 -17.5425 62.366104 -18.060833 62.67083 -18.049721 62.669998 -18.041664 62.672218 -18.03611 62.676384 -18.026665 62.685272 -18.023052 62.689995 -18.019165 62.700272 -18.022499 62.712494 -18.039165 62.73555 -18.04583 62.739716 -18.060276 62.743889 -18.070553 62.745552 -18.129719 62.740555 -18.141388 62.739166 -18.146942 62.734993 -18.153053 62.728882 -18.156944 62.71833 -18.154999 62.712219 -18.114166 62.686943 -18.10722 62.682777 -18.099442 62.679443 -20.885555 63.751663 -20.875832 63.749161 -20.840832 63.763054 -20.837498 63.767776 -20.838055 63.773331 -20.84222 63.779999 -20.8475 63.785828 -20.855 63.789993 -20.873333 63.795555 -20.884998 63.796104 -20.899998 63.794167 -20.91111 63.791382 -20.921944 63.782776 -20.928608 63.773331 -20.927219 63.768608 -21.809166 68.570541 -21.824718 68.570267 -21.864719 68.573608 -21.881386 68.572495 -21.897221 68.569992 -21.933887 68.555267 -21.959442 68.543884 -21.997776 68.523605 -22.003887 68.51944 -22.022499 68.506653 -22.035 68.498047 -22.038055 68.487778 -22.041943 68.483047 -22.050552 68.479156 -22.063889 68.476105 -22.150833 68.465546 -22.1675 68.464432 -22.371944 68.463608 -22.430553 68.45166 -22.5 68.440132 -22.581665 68.427216 -22.659721 68.422485 -22.673885 68.420822 -22.823608 68.388046 -22.82972 68.383881 -22.863609 68.357498 -22.899719 68.331665 -22.910275 68.328323 -22.936386 68.32222 -22.969444 68.317764 -23.048054 68.293884 -23.058609 68.290268 -23.066944 68.286377 -23.353333 68.083603 -23.367496 68.064713 -23.376942 68.055542 -23.394444 68.042496 -23.531666 67.992493 -23.638332 67.958054 -23.648888 67.954712 -23.656944 67.950821 -23.666111 67.941666 -23.667221 67.936386 -23.665554 67.929993 -23.659721 67.923599 -23.652775 67.918045 -23.644722 67.913055 -23.607777 67.897491 -23.596386 67.895264 -23.545555 67.889999 -23.511108 67.883606 -23.492496 67.875824 -23.486942 67.869156 -23.48333 67.863052 -23.471107 67.822769 -23.469997 67.81694 -23.491386 67.712494 -23.507774 67.665543 -23.471943 67.556381 -23.433331 67.491943 -23.429996 67.485825 -23.428886 67.47583 -23.43111 67.465546 -23.44833 67.452499 -23.464165 67.444717 -23.474442 67.441101 -23.486942 67.438049 -23.500553 67.436386 -23.511944 67.438599 -23.527496 67.448044 -23.536663 67.451935 -23.549164 67.453323 -23.581944 67.449997 -23.734997 67.426102 -23.761944 67.420273 -23.767776 67.416107 -23.768887 67.410828 -23.783054 67.332214 -23.781944 67.326385 -23.773331 67.314438 -23.749722 67.289444 -23.741665 67.284714 -23.731667 67.281662 -23.708054 67.278046 -23.683052 67.275543 -23.63583 67.2686 -23.624722 67.266388 -23.614441 67.263321 -23.605553 67.25943 -23.594444 67.246384 -23.586666 67.234985 -23.570553 67.161942 -23.571663 67.156662 -23.580555 67.147491 -23.68111 67.047485 -23.73111 67.008331 -23.744442 67.0 -23.757774 66.991943 -23.787777 66.981384 -23.866943 66.931107 -23.935833 66.884155 -23.941109 66.87999 -23.949997 66.870819 -24.00111 66.810272 -24.007774 66.800552 -24.006386 66.794998 -23.999722 66.791382 -23.987778 66.790268 -23.948055 66.788879 -23.936943 66.786942 -23.893608 66.749161 -23.889999 66.743042 -23.891109 66.737778 -23.900833 66.712494 -23.902775 66.680267 -23.891941 66.581665 -23.887497 66.569992 -23.884163 66.563889 -23.878609 66.55722 -23.871944 66.551666 -23.861942 66.548599 -23.826942 66.543884 -23.80722 66.537766 -23.725277 66.500824 -23.666386 66.465271 -23.658886 66.460541 -23.652222 66.454712 -23.646664 66.448318 -23.640274 66.436096 -23.639164 66.430542 -23.660831 66.317215 -23.661942 66.31221 -23.666386 66.302216 -23.684719 66.263321 -23.719166 66.204987 -23.722221 66.200272 -23.727776 66.195831 -23.735275 66.19194 -23.754719 66.184998 -23.808331 66.169708 -23.820274 66.166656 -23.848053 66.161377 -23.864166 66.159164 -23.879444 66.158051 -23.89333 66.155273 -23.912498 66.148331 -23.925552 66.139999 -23.930832 66.135544 -23.940277 66.121384 -23.948608 66.101379 -23.967777 66.072495 -24.031387 66.020264 -24.160553 65.839996 -24.166664 65.830551 -24.16861 65.819992 -24.167007 65.814026 -24.153053 65.805542 -24.144444 65.801666 -24.121109 65.798874 -24.10611 65.800278 -24.08083 65.806107 -24.052219 65.808044 -24.040276 65.806656 -23.986111 65.792496 -23.956108 65.784164 -23.951942 65.778885 -23.948608 65.772766 -23.943333 65.766388 -23.936943 65.760818 -23.928333 65.756943 -23.916664 65.757767 -23.773888 65.79277 -23.772778 65.797775 -23.653889 65.806381 -23.51833 65.800827 -23.434719 65.760544 -23.394444 65.767487 -23.249722 65.800827 -23.234444 65.763611 -23.141109 65.714722 -23.131664 65.711655 -23.081108 65.698883 -23.073608 65.702774 -23.000275 65.752777 -22.828888 65.815277 -22.826385 65.825546 -22.823055 65.830551 -22.790276 65.856384 -22.723331 65.886108 -22.675831 65.902222 -22.644722 65.905548 -22.637218 65.902771 -22.638611 65.897766 -22.649719 65.888885 -22.666943 65.881653 -22.674442 65.877777 -22.679996 65.873596 -22.683331 65.868881 -22.70472 65.807495 -22.684998 65.763885 -22.677776 65.759155 -22.669441 65.75499 -22.66 65.751938 -22.648609 65.750549 -22.651386 65.756653 -22.656387 65.763321 -22.657219 65.768875 -22.650555 65.77832 -22.608608 65.796936 -22.479164 65.851105 -22.451385 65.85611 -22.41861 65.859436 -22.375553 65.860825 -22.363888 65.859161 -22.357777 65.85582 -22.329166 65.829712 -22.257774 65.691101 -22.249054 65.632492 -22.27272 65.627655 -22.281054 65.626152 -22.289387 65.625992 -22.300554 65.629822 -22.316666 65.618042 -22.321388 65.62471 -22.32222 65.630264 -22.316666 65.63472 -22.309166 65.638611 -22.298054 65.647217 -22.286942 65.659988 -22.283607 65.664993 -22.289719 65.66832 -22.303608 65.665833 -22.323055 65.659164 -22.385555 65.628876 -22.423611 65.558884 -22.426388 65.548599 -22.423332 65.542221 -22.416386 65.537491 -22.40583 65.535263 -22.394165 65.53833 -22.379166 65.545822 -22.366108 65.554153 -22.241833 65.577271 -22.206329 65.578773 -22.07972 65.607208 -21.863888 65.666656 -21.854164 65.669998 -21.846386 65.673874 -21.840832 65.678055 -21.826942 65.69722 -21.821388 65.701385 -21.766941 65.722488 -21.76083 65.716934 -21.762497 65.711655 -21.773052 65.697495 -21.828053 65.665268 -21.84333 65.657776 -21.853054 65.654434 -22.022499 65.598053 -22.057777 65.589157 -22.116108 65.583054 -22.125832 65.579712 -22.199165 65.545273 -22.194164 65.540833 -22.184998 65.537766 -22.164165 65.533051 -22.053848 65.517441 -22.000275 65.513611 -21.987499 65.515274 -21.909164 65.526657 -21.899441 65.529999 -21.891666 65.533875 -21.887218 65.537216 -21.879997 65.536652 -21.859165 65.532211 -21.852497 65.529999 -21.858055 65.525833 -21.901108 65.496658 -21.914165 65.488602 -21.925831 65.48555 -21.93972 65.485275 -21.922497 65.506943 -21.925278 65.510818 -21.936943 65.508041 -21.979164 65.489716 -22.030277 65.462219 -22.031666 65.457214 -22.017498 65.428604 -22.010555 65.423874 -21.929443 65.398041 -21.675831 65.391098 -21.66222 65.391388 -21.647499 65.392487 -21.635555 65.395554 -21.628052 65.399155 -21.611385 65.412216 -21.601665 65.415543 -21.586941 65.416382 -21.54472 65.408051 -21.474163 65.386658 -21.46833 65.380829 -21.497276 65.35527 -21.506275 65.344604 -21.534277 65.327271 -21.54311 65.326775 -21.57972 65.314713 -21.587776 65.318878 -21.590275 65.324997 -21.586941 65.329712 -21.588886 65.332214 -21.612221 65.326385 -21.621944 65.323044 -21.69722 65.291382 -21.70472 65.287491 -21.704166 65.281937 -21.700832 65.270264 -21.695 65.264435 -21.663887 65.247498 -21.65472 65.244156 -21.588055 65.234711 -21.565277 65.231659 -21.553608 65.234711 -21.548054 65.238876 -21.541111 65.248322 -21.538055 65.258881 -21.493887 65.286713 -21.468887 65.310883 -21.464222 65.31321 -21.338055 65.36972 -21.324444 65.371933 -21.314163 65.36972 -21.266388 65.34111 -21.260555 65.337494 -21.266109 65.333328 -21.32111 65.323608 -21.336941 65.321655 -21.417221 65.306107 -21.505276 65.248596 -21.548054 65.219437 -21.559166 65.210831 -21.613609 65.162491 -21.620552 65.153046 -21.621944 65.147766 -21.621387 65.142212 -21.583885 65.062775 -21.577221 65.05777 -21.56583 65.056381 -21.533703 65.058746 -21.494164 65.061096 -21.483055 65.059708 -21.472775 65.05722 -21.46833 65.050552 -21.467499 65.044998 -21.470554 65.034439 -21.48 65.031097 -21.466663 65.007217 -21.373333 64.975555 -21.300831 64.954437 -21.254997 64.949432 -21.243889 64.947769 -21.205276 64.891663 -21.206665 64.886383 -21.208885 64.862488 -21.183052 64.829987 -21.131664 64.818878 -21.122776 64.818054 -21.109165 64.820267 -21.0975 64.823318 -21.091942 64.827499 -21.084999 64.836929 -21.086109 64.848328 -21.082497 64.853043 -21.073055 64.856384 -21.060555 64.85582 -21.044998 64.847763 -21.039444 64.841934 -21.036942 64.835831 -21.03611 64.824432 -21.039444 64.819717 -21.044998 64.815277 -21.082497 64.788605 -21.089996 64.784714 -21.0975 64.781097 -21.106941 64.777771 -21.125608 64.775826 -21.134275 64.775154 -21.159443 64.775543 -21.214996 64.782776 -21.229443 64.781937 -21.258331 64.777496 -21.292774 64.768875 -21.302219 64.765549 -21.307777 64.761383 -21.310833 64.750824 -21.304996 64.661942 -21.289719 64.663879 -21.278332 64.666656 -21.268608 64.669998 -21.238888 64.685272 -21.161942 64.722763 -21.143721 64.724442 -21.136221 64.725433 -21.121721 64.724602 -21.105 64.722763 -21.104443 64.716934 -21.111942 64.691101 -21.118889 64.681381 -21.133888 64.673874 -21.271385 64.615265 -21.356941 64.59082 -21.361385 64.597214 -21.366943 64.603043 -21.373333 64.60527 -21.465275 64.575546 -21.554165 64.532486 -21.584999 64.439713 -21.458054 64.361099 -21.390553 64.335266 -21.32222 64.309998 -21.313332 64.306931 -21.28611 64.298325 -21.276108 64.295822 -21.26722 64.294998 -21.25972 64.298599 -21.258331 64.303879 -21.254997 64.308609 -21.242775 64.310272 -21.234997 64.306107 -20.971664 64.148605 -20.957497 64.139435 -20.954166 64.134155 -20.904999 64.049438 -20.895554 64.002487 -20.793888 63.886383 -20.777775 63.869164 -20.770275 63.864998 -20.728611 63.848053 -20.638332 63.813332 -20.535 63.799164 -20.508053 63.820274 -20.499722 63.822777 -20.494164 63.81916 -20.447777 63.758331 -20.417774 63.697777 -20.413609 63.691109 -20.386944 63.674164 -20.379166 63.672493 -20.369999 63.675552 -20.316666 63.659996 -20.298611 63.646385 -20.263885 63.665833 -20.099998 63.65583 -20.011944 63.635826 -19.899441 63.609161 -19.893055 63.606384 -19.775276 63.533333 -19.749165 63.516663 -19.747219 63.510551 -19.748886 63.505272 -19.754166 63.501106 -19.761665 63.497215 -19.768887 63.487778 -19.779163 63.462494 -19.772644 63.457535 -19.704998 63.431938 -19.683052 63.429718 -19.668053 63.431389 -19.641109 63.442497 -19.63583 63.446663 -19.639999 63.45916 -19.643055 63.464439 -19.64333 63.469994 -19.639721 63.474716 -19.616386 63.49472 -19.501663 63.549438 -19.475555 63.559715 -19.463608 63.561104 -19.453053 63.559441 -19.428055 63.549438 -19.422775 63.54583 -19.424442 63.54055 -19.47361 63.453049 -19.44722 63.440277 -19.365833 63.434998 -19.351665 63.435272 -19.318333 63.449165 -19.312775 63.453331 -19.309185 63.463608 -19.296665 63.463608 -19.289444 63.459442 -19.283333 63.454437 -19.278332 63.448608 -19.274441 63.44194 -19.275833 63.419716 -19.277496 63.408882 -19.230553 63.327499 -19.158607 63.315277 -19.139999 63.310272 -19.058609 63.253609 -19.045555 63.244438 -19.040554 63.238609 -19.044167 63.22805 -19.049721 63.21833 -19.059719 63.216385 -19.085278 63.214165 -19.108608 63.213608 -19.110275 63.208328 -19.066666 63.178604 -19.058331 63.175278 -19.046944 63.174438 -19.036942 63.176384 -18.9725 63.209999 -18.966942 63.214439 -18.963333 63.218887 -18.964996 63.225273 -18.965275 63.230827 -18.956108 63.245277 -18.90361 63.272774 -18.889721 63.273605 -18.811554 63.251774 -18.806053 63.250275 -18.802887 63.248108 -18.801054 63.244942 -18.803387 63.242107 -18.810055 63.24044 -18.847219 63.234104 -18.883886 63.227104 -18.908054 63.210274 -18.915276 63.206665 -18.897499 63.191666 -18.784721 63.161942 -18.775833 63.162773 -18.761108 63.170273 -18.751942 63.184715 -18.748665 63.192436 -18.752163 63.195606 -18.757664 63.197105 -18.765331 63.197105 -18.78083 63.194439 -18.793999 63.195938 -18.791832 63.198772 -18.787331 63.200939 -18.780664 63.202606 -18.771832 63.203606 -18.736164 63.207607 -18.728664 63.207607 -18.722332 63.206604 -18.719831 63.203773 -18.720997 63.200775 -18.735554 63.172493 -18.739166 63.16777 -18.647221 63.140549 -18.566944 63.117493 -18.382221 63.051666 -18.289165 62.997215 -18.346664 62.988052 -18.367222 62.991386 -18.389999 62.993332 -18.402496 62.993332 -18.524998 62.985832 -18.539719 62.984444 -18.552498 62.982216 -18.561943 62.978882 -18.567497 62.974716 -18.576664 62.965828 -18.580276 62.955551 -18.576385 62.951111 -18.473888 62.862495 -18.466942 62.85833 -18.208611 62.77861 -18.199444 62.776108 -18.12611 62.765831 -18.082775 62.781105 -18.104443 62.804161 -18.129166 62.804443 -18.138332 62.806938 -18.145275 62.811104 -18.144997 62.816666 -18.137775 62.820549 -18.07333 62.836662 -18.03722 62.839165 -17.984997 62.82222 -17.978333 62.818054 -17.97472 62.811386 -17.927498 62.842499 -17.872219 62.91861 -17.862499 62.933052 -17.84333 62.962219 -17.828331 62.993332 -17.820274 62.995827 -17.701664 62.995552 -17.696663 62.991943 -17.702221 62.987778 -17.730553 62.972771 -17.752777 62.961937 -17.771385 62.955551 -17.79361 62.950554 -17.834721 62.933327 -17.881943 62.883606 -17.99472 62.730553 -18.004444 62.70472 -18.004719 62.693329 -17.996387 62.656662 -17.991386 62.653053 -17.979164 62.652771 -17.964443 62.660271 -17.956944 62.669441 -17.946388 62.669998 -17.879719 62.669441 -17.874165 62.664444 -17.877777 62.659721 -17.885277 62.656105 -17.966389 62.634438 -18.034721 62.626389 -18.045555 62.623604 -18.048054 62.601387 -18.04472 62.589165 -17.978054 62.555275 -17.84333 62.487221 -17.835552 62.483887 -17.825275 62.482216 -17.811943 62.482773 -17.789719 62.499443 -17.780552 62.502495 -17.76722 62.503326 -17.72361 62.498886 -17.693333 62.493607 -17.685555 62.490273 -17.658607 62.473328 -17.654163 62.467216 -17.661663 62.458054 -17.676388 62.450829 -17.671387 62.437775 -17.619164 62.434166 -17.605831 62.434998 -17.564163 62.440277 -17.54583 62.446388 -17.53833 62.449997 -17.528889 62.458885 -17.513885 62.477219 -17.504444 62.486107 -17.47472 62.506386 -17.437496 62.529999 -17.422497 62.537216 -17.409164 62.538055 -17.401386 62.534439 -17.334442 62.491943 -17.328888 62.486938 -17.325554 62.48027 -17.359722 62.360275 -17.371944 62.329163 -17.375832 62.32444 -17.465275 62.265549 -17.502497 62.258495 -17.552164 62.25016 -17.576998 62.247162 -17.623886 62.239441 -17.645554 62.234161 -17.65472 62.23111 -17.649719 62.227493 -17.599998 62.209442 -17.556664 62.195549 -17.545277 62.196938 -17.537777 62.200554 -17.535831 62.205551 -17.538609 62.211105 -17.555641 62.216953 -17.567001 62.226334 -17.557865 62.235104 -17.542677 62.231522 -17.532429 62.230038 -17.519958 62.230782 -17.509464 62.228928 -17.510036 62.204578 -17.508038 62.200584 -17.483253 62.125145 -17.463608 62.006386 -17.451664 61.996941 -17.445 61.992775 -17.437222 61.989441 -17.427498 61.987778 -17.418331 61.990829 -17.408607 61.992493 -17.399998 61.989998 -17.39333 61.98555 -17.354164 61.951111 -17.34972 61.945274 -17.345276 61.926384 -17.336388 61.818054 -17.385666 61.756496 -17.440277 61.726944 -17.469719 61.732216 -17.483887 61.730827 -17.49472 61.72805 -17.5 61.723885 -17.523609 61.70166 -17.523609 61.696106 -17.50111 61.639717 -17.498886 61.635826 -17.49361 61.630829 -17.487221 61.626389 -17.477219 61.624718 -17.445274 61.628883 -17.432777 61.631104 -17.421944 61.63916 -17.419998 61.64444 -17.414165 61.65416 -17.389999 61.687218 -17.386108 61.69194 -17.368111 61.700386 -17.354109 61.706551 -17.339443 61.712494 -17.326942 61.714439 -17.233887 61.722496 -17.220833 61.723053 -17.149998 61.721382 -17.140274 61.719719 -17.14222 61.714439 -17.149441 61.710831 -17.158333 61.707771 -17.183887 61.704994 -17.194721 61.706108 -17.207775 61.705276 -17.220276 61.703331 -17.26083 61.691109 -17.269722 61.688049 -17.271664 61.683052 -17.268608 61.676384 -17.263054 61.671104 -17.189999 61.636108 -17.18111 61.633331 -17.171387 61.63166 -17.158333 61.632217 -17.146111 61.634163 -17.128052 61.640549 -17.09861 61.602776 -17.117775 61.55555 -17.162777 61.52166 -17.168053 61.517494 -17.222775 61.44194 -17.219719 61.429443 -17.213333 61.425278 -17.171387 61.420555 -17.154163 61.428055 -17.150555 61.432777 -17.139721 61.431664 -17.109444 61.408051 -17.104164 61.403053 -17.102776 61.396942 -17.104721 61.391663 -17.144997 61.357773 -17.20472 61.328606 -17.213608 61.325554 -17.203609 61.278885 -17.18111 61.190277 -17.162754 61.046661 -17.150555 60.945 -17.154442 60.940552 -17.201664 60.916939 -17.241108 60.895828 -17.24472 60.891106 -17.276108 60.843048 -17.283607 60.77166 -17.285275 60.731941 -17.275276 60.676109 -17.359722 60.640549 -17.377098 60.618988 -17.397499 60.629166 -17.406109 60.63166 -17.520554 60.643051 -17.555275 60.643326 -17.578331 60.639999 -17.609165 60.632217 -17.63583 60.618607 -17.649719 60.611382 -17.656944 60.601944 -17.651665 60.596939 -17.644165 60.593605 -17.609444 60.58416 -17.602219 60.580551 -17.602497 60.574997 -17.607777 60.556107 -17.609722 60.550827 -17.629444 60.522499 -17.63472 60.518326 -17.65361 60.506943 -17.66222 60.503883 -17.682777 60.498604 -17.693054 60.496109 -17.73111 60.491661 -17.740555 60.493607 -17.740276 60.499161 -17.734997 60.508888 -17.727776 60.518326 -17.726109 60.523331 -17.725555 60.534721 -17.728886 60.541382 -17.733055 60.547493 -17.773052 60.571106 -17.842499 60.589996 -17.880554 60.596939 -17.891109 60.597771 -17.937222 60.598053 -17.949718 60.597221 -17.958332 60.594162 -17.965275 60.590553 -17.970554 60.586388 -17.993332 60.558884 -18.099998 60.453049 -18.214165 60.343048 -18.227776 60.330276 -18.234444 60.32666 -18.243889 60.328331 -18.25222 60.330826 -18.25861 60.334999 -18.266666 60.345276 -18.273052 60.349442 -18.282497 60.351387 -18.313889 60.353882 -18.431942 60.343887 -18.440277 60.340828 -18.44722 60.331383 -18.465832 60.299438 -18.574165 60.25 -18.601109 60.241104 -18.607777 60.237221 -18.60611 60.23111 -18.59861 60.227776 -18.579998 60.224442 -18.556942 60.224442 -18.531109 60.226944 -18.470833 60.234993 -18.448887 60.239716 -18.440552 60.242775 -18.425278 60.249718 -18.388332 60.266937 -18.374722 60.274162 -18.354164 60.290833 -18.325554 60.310829 -18.315277 60.313332 -18.31361 60.30722 -18.313889 60.301384 -18.396111 60.208054 -18.421665 60.187218 -18.507431 60.152657 -18.531666 60.153053 -18.62611 60.145828 -18.639442 60.144165 -18.711388 60.128052 -18.776665 60.110832 -18.816387 60.096382 -18.81472 60.090271 -18.81472 60.078888 -18.816387 60.073883 -18.823055 60.058884 -18.886665 59.962776 -18.89333 59.953331 -18.904999 59.939995 -18.909721 59.935829 -18.929722 59.924721 -18.95022 59.92033 -18.96372 59.92033 -19.007221 59.912773 -19.045555 59.899162 -19.070553 59.889717 -19.07 59.838608 -19.068333 59.832497 -19.065552 59.827217 -19.059166 59.823051 -19.050552 59.822777 -19.040554 59.825272 -19.025833 59.832222 -18.969221 59.865608 -18.936108 59.869995 -18.864719 59.79805 -18.934719 59.783607 -18.968609 59.783607 -19.073887 59.774162 -19.080555 59.770554 -19.082222 59.765274 -19.081944 59.75972 -19.075275 59.740555 -19.07 59.735832 -19.032219 59.719994 -18.991386 59.71666 -18.98 59.71666 -18.953609 59.719994 -18.841389 59.712494 -18.745552 59.689163 -18.71722 59.671387 -18.694443 59.645271 -18.699997 59.642494 -18.710278 59.643326 -18.728611 59.64666 -18.739998 59.64666 -18.74472 59.642494 -18.734165 59.6325 -18.666386 59.591385 -18.645554 59.580551 -18.37833 59.467499 -18.368332 59.466385 -18.317219 59.47361 -18.27972 59.476662 -18.270554 59.474998 -18.259443 59.448051 -18.259443 59.444717 -18.276665 59.41777 -18.281666 59.413605 -18.28833 59.409996 -18.299721 59.407776 -18.326111 59.404442 -18.335831 59.401939 -18.337498 59.39666 -18.331387 59.392494 -18.32222 59.390831 -18.311108 59.390831 -18.174999 59.405548 -18.164997 59.408051 -18.16 59.412216 -18.162498 59.417496 -18.176941 59.424438 -18.188053 59.424438 -18.198055 59.421661 -18.203777 59.427719 -18.199276 59.442551 -18.198277 59.445721 -18.195831 59.455276 -18.186943 59.45694 -18.124443 59.45472 -18.115555 59.453049 -18.089722 59.437218 -18.084721 59.431938 -18.05722 59.391388 -18.088886 59.367218 -18.091389 59.334442 -18.00736 59.344963 -17.941109 59.335548 -17.928886 59.336388 -17.9175 59.338608 -17.897778 59.343887 -17.859165 59.35611 -17.832775 59.364998 -17.816109 59.371109 -17.801388 59.377777 -17.782776 59.38916 -17.764442 59.400551 -17.757774 59.409996 -17.7575 59.421387 -17.758888 59.427498 -17.779999 59.48555 -17.78722 59.498329 -17.791386 59.504166 -17.801941 59.514717 -17.816387 59.52166 -17.841663 59.528328 -17.845276 59.533051 -17.822777 59.580826 -17.816109 59.590271 -17.809166 59.593887 -17.751942 59.638611 -17.71722 59.66333 -17.724163 59.653885 -17.722221 59.626106 -17.718052 59.620277 -17.710552 59.618889 -17.642498 59.637497 -17.603962 59.650627 -17.59222 59.656105 -17.598331 59.660271 -17.607498 59.661942 -17.628052 59.662216 -17.640274 59.66333 -17.648331 59.665833 -17.652496 59.671661 -17.653339 59.682129 -17.654163 59.718048 -17.631298 59.784073 -17.628052 59.788887 -17.594166 59.806938 -17.587776 59.804718 -17.588055 59.79361 -17.586666 59.787216 -17.583611 59.780548 -17.579441 59.774719 -17.574444 59.769722 -17.5425 59.749443 -17.534443 59.746941 -17.513885 59.744995 -17.448055 59.73555 -17.444721 59.676109 -17.510555 59.587219 -17.520832 59.579163 -17.527496 59.575554 -17.535831 59.57222 -17.543152 59.573006 -17.521664 59.611382 -17.515553 59.638329 -17.513332 59.654716 -17.508888 59.687775 -17.50861 59.693329 -17.509998 59.69944 -17.513054 59.706383 -17.537498 59.732216 -17.588886 59.736938 -17.599998 59.736938 -17.611664 59.734993 -17.618332 59.731384 -17.620277 59.726387 -17.616108 59.695549 -17.561171 59.668449 -17.589706 59.639427 -17.694164 59.607498 -17.742222 59.590553 -17.757221 59.583885 -17.767498 59.569717 -17.786663 59.535828 -17.785 59.529442 -17.737221 59.446938 -17.73111 59.442772 -17.719997 59.442772 -17.551941 59.488609 -17.543888 59.491661 -17.525276 59.503052 -17.520275 59.507217 -17.519089 59.510254 -17.51833 59.512215 -17.522499 59.518051 -17.546082 59.536987 -17.500275 59.539719 -17.490276 59.542496 -17.446941 59.55722 -17.43861 59.560272 -17.377777 59.604721 -17.372776 59.608887 -17.370831 59.614166 -17.370552 59.61972 -17.386108 59.651108 -17.38361 59.654999 -17.375553 59.652222 -17.344166 59.622772 -17.353333 59.60611 -17.370831 59.583054 -17.403332 59.553329 -17.406666 59.548607 -17.408607 59.543327 -17.419167 59.492775 -17.419441 59.487221 -17.418053 59.48111 -17.41 59.469162 -17.398888 59.469162 -17.325554 59.488052 -17.261944 59.50444 -17.255276 59.508049 -17.185276 59.538605 -17.117222 59.547775 -17.068054 59.54361 -17.061943 59.539444 -17.031387 59.536385 -17.019165 59.537216 -16.949718 59.54361 -16.93972 59.546104 -16.864964 59.584732 -16.826385 59.585274 -16.786942 59.558884 -16.661663 59.54805 -16.658054 59.552498 -16.623055 59.581665 -16.616386 59.585274 -16.565277 59.609161 -16.551941 59.61055 -16.541943 59.609444 -16.533886 59.606941 -16.501663 59.596382 -16.495552 59.591942 -16.497498 59.586937 -16.521664 59.571663 -16.542221 59.561104 -16.547497 59.556938 -16.546108 59.550827 -16.543331 59.543884 -16.53833 59.538887 -16.489166 59.502014 -16.4725 59.497498 -16.329998 59.467773 -16.178055 59.464996 -16.16861 59.465271 -16.101665 59.471107 -16.091663 59.473328 -16.066387 59.482498 -16.044167 59.492493 -16.035553 59.495552 -16.025555 59.497772 -16.020275 59.494995 -16.022221 59.489716 -16.026108 59.485275 -16.041664 59.473053 -16.066109 59.457771 -16.072777 59.454437 -16.081387 59.451385 -16.101387 59.446388 -16.113052 59.444443 -16.169167 59.439995 -16.181389 59.439438 -16.261387 59.442497 -16.276417 59.443985 -16.304722 59.450272 -16.313889 59.451942 -16.334999 59.453331 -16.659443 59.474159 -16.669998 59.473053 -16.679996 59.470551 -16.686665 59.467216 -16.690277 59.462494 -16.700554 59.454437 -16.75 59.424164 -16.80611 59.390549 -16.812775 59.38694 -16.822777 59.384438 -16.869999 59.381386 -16.881107 59.38166 -16.889999 59.383331 -16.893055 59.389999 -16.894165 59.396111 -16.89222 59.401382 -16.885555 59.404999 -16.862221 59.405273 -16.85083 59.407494 -16.84222 59.410553 -16.808887 59.422493 -16.792221 59.428604 -16.726665 59.453606 -16.697777 59.467216 -16.692776 59.471382 -16.693333 59.476105 -16.828888 59.491386 -16.840275 59.489441 -16.848888 59.486382 -16.897499 59.467499 -16.924442 59.453331 -16.935555 59.446388 -16.945831 59.438332 -16.954441 59.429718 -16.961388 59.420273 -17.111664 59.374443 -17.174442 59.373055 -17.280552 59.356667 -17.302219 59.351944 -17.310555 59.348885 -17.315552 59.344719 -17.317497 59.339722 -17.316109 59.333328 -17.311943 59.327499 -17.30611 59.323326 -17.298054 59.320831 -17.287777 59.319717 -17.263885 59.290833 -17.251942 59.269722 -17.253887 59.258888 -17.286942 59.259048 -17.291943 59.257217 -17.365276 59.248604 -17.375832 59.247498 -17.387775 59.246941 -17.398052 59.247772 -17.396111 59.252777 -17.386108 59.261108 -17.379444 59.264717 -17.364166 59.277222 -17.358887 59.286942 -17.355 59.297218 -17.349442 59.318329 -17.35083 59.32444 -17.361942 59.324715 -17.413055 59.312218 -17.442776 59.304718 -17.470833 59.296387 -17.585831 59.282219 -17.740276 59.26944 -17.847221 59.264442 -17.908054 59.297218 -17.940552 59.316666 -17.947498 59.32 -17.976387 59.331383 -17.984444 59.333885 -17.996666 59.333054 -18.016666 59.32222 -18.026386 59.319717 -18.052498 59.316383 -18.074718 59.316666 -18.13361 59.318054 -18.206944 59.329437 -18.242092 59.347084 -18.250832 59.354439 -18.272221 59.364441 -18.280277 59.366943 -18.289444 59.368607 -18.34861 59.373329 -18.39222 59.368607 -18.40361 59.366661 -18.43972 59.354996 -18.444721 59.35083 -18.441275 59.344772 -18.436943 59.342773 -18.432108 59.341278 -18.434998 59.336388 -18.45472 59.331108 -18.466663 59.330276 -18.474163 59.334442 -18.478611 59.340271 -18.478333 59.345833 -18.468609 59.365555 -18.450275 59.394165 -18.431389 59.421104 -18.428055 59.425827 -18.428055 59.431389 -18.434444 59.433609 -18.477219 59.435272 -18.498333 59.43055 -18.523052 59.421104 -18.52972 59.417496 -18.607777 59.371941 -18.612778 59.36805 -18.640274 59.338882 -18.648609 59.32444 -18.650276 59.31916 -18.646942 59.312492 -18.639721 59.309166 -18.630554 59.307495 -18.593052 59.301666 -18.522221 59.29583 -18.389164 59.301941 -18.37722 59.302498 -18.353611 59.30555 -18.343609 59.307495 -18.335278 59.310555 -18.337776 59.316109 -18.336498 59.322052 -18.328833 59.325054 -18.318886 59.328331 -18.277222 59.310829 -18.269444 59.268608 -18.309998 59.219719 -18.311386 59.1325 -18.230274 59.118607 -18.221386 59.116943 -18.140274 59.090828 -18.021385 59.041939 -17.895832 58.909721 -17.892776 58.903053 -17.891388 58.89666 -17.891941 58.874161 -17.894722 58.858887 -17.789444 58.943054 -17.756664 59.018326 -17.768887 59.096664 -17.76833 59.113609 -17.766666 59.118889 -17.764721 59.123886 -17.759163 59.126663 -17.66861 59.166382 -17.663887 59.168327 -17.624165 59.07444 -17.611664 59.04055 -17.610275 59.034439 -17.612221 59.029442 -17.617222 59.025276 -17.625553 59.016388 -17.628887 59.011665 -17.613609 58.974716 -17.578327 58.950508 -17.591389 58.943604 -17.630554 58.914993 -17.629166 58.908882 -17.62611 58.901939 -17.583332 58.849442 -17.578888 58.845551 -17.349998 58.75222 -17.271111 58.736938 -17.22361 58.730553 -17.156666 58.732773 -17.093609 58.762497 -17.083332 58.763611 -17.032776 58.750549 -17.02861 58.746941 -17.033607 58.742775 -17.082222 58.723053 -17.134163 58.702217 -17.145554 58.700272 -17.143055 58.694717 -17.138332 58.68972 -17.034443 58.637215 -16.915276 58.616943 -16.905277 58.616104 -16.89333 58.616661 -16.789719 58.623604 -16.736122 58.62899 -16.677776 58.63694 -16.461388 58.655548 -16.436386 58.657494 -16.412777 58.658882 -16.298332 58.663055 -16.242222 58.664719 -16.233608 58.663055 -16.193607 58.627495 -16.293331 58.613609 -16.370552 58.60527 -16.411663 58.613327 -16.432499 58.637772 -16.436665 58.641388 -16.649441 58.620552 -16.710831 58.606667 -16.727219 58.600555 -16.777496 58.581383 -16.928608 58.492493 -16.93861 58.484161 -16.834721 58.445 -16.826942 58.442215 -16.809166 58.438606 -16.754444 58.429443 -16.737778 58.428604 -16.600555 58.446938 -16.578053 58.450829 -16.568619 58.453239 -16.548885 58.458328 -16.532497 58.464439 -16.514721 58.469994 -16.496666 58.475273 -16.475555 58.479721 -16.435555 58.479996 -16.425552 58.479164 -16.416943 58.477219 -16.41333 58.474716 -16.573055 58.435829 -16.683609 58.410828 -16.693886 58.409721 -16.709999 58.40361 -16.769997 58.367218 -16.788887 58.32222 -16.824718 58.19944 -16.825832 58.176666 -16.802818 58.138672 -16.764471 58.125179 -16.742811 58.086124 -16.731806 58.049198 -16.750275 58.012772 -16.74361 58.009163 -16.639252 57.987495 -16.622498 57.988609 -16.613888 57.986938 -16.621944 57.983887 -16.655502 57.977745 -16.671944 57.98027 -16.725277 57.974159 -16.733055 57.971107 -16.739998 57.961937 -16.744164 57.953049 -16.742561 57.950333 -16.773331 57.923607 -16.778053 57.919441 -16.779999 57.914444 -16.770554 57.884438 -16.763885 57.881104 -16.749443 57.874992 -16.741665 57.872498 -16.732498 57.872772 -16.659164 57.883331 -16.622219 57.890274 -16.613609 57.89222 -16.602497 57.922775 -16.60611 57.925278 -16.602776 57.940277 -16.518608 57.996941 -16.510555 57.996384 -16.502777 57.993889 -16.498608 57.990273 -16.495552 57.98555 -16.494442 57.979439 -16.522331 57.877831 -16.564331 57.854164 -16.677219 57.765549 -16.693333 57.753883 -16.703331 57.745552 -16.700706 57.74015 -16.692219 57.738884 -16.684444 57.742218 -16.618889 57.771385 -16.615555 57.776108 -16.611385 57.786385 -16.602776 57.794716 -16.590553 57.802773 -16.561108 57.821388 -16.554722 57.824997 -16.41861 57.893326 -16.418888 57.887215 -16.42083 57.8825 -16.463421 57.849297 -16.469753 57.844627 -16.476418 57.839966 -16.593775 57.773163 -16.605442 57.76683 -16.660553 57.741104 -16.692219 57.721939 -16.701942 57.713882 -16.710278 57.705276 -16.712498 57.699997 -16.625553 57.61972 -16.6325 57.552216 -16.689163 57.485275 -16.693333 57.475273 -16.693333 57.469162 -16.671387 57.410828 -16.664719 57.407494 -16.65583 57.404999 -16.636944 57.403053 -16.632221 57.38166 -16.631107 57.376938 -16.624165 57.374443 -16.60083 57.377495 -16.566387 57.383331 -16.554996 57.383606 -16.546108 57.38166 -16.541943 57.376938 -16.472221 57.290276 -16.46722 57.276665 -16.464722 57.264442 -16.455555 57.205276 -16.455276 57.200554 -16.458054 57.178329 -16.460278 57.167496 -16.46722 57.158607 -16.513885 57.117218 -16.523331 57.116661 -16.530277 57.119438 -16.539997 57.120552 -16.546108 57.116943 -16.563332 57.093887 -16.584164 57.049438 -16.584721 57.043884 -16.501663 57.036659 -16.492775 57.039162 -16.454441 56.955276 -16.440552 56.893883 -16.426666 56.843605 -16.407776 56.795555 -16.374996 56.720833 -16.308052 56.654999 -16.300552 56.658333 -16.290554 56.659164 -16.272499 56.656662 -16.253609 56.646111 -16.21611 56.607216 -16.123886 56.461662 -16.117222 56.449715 -16.104164 56.425552 -16.090553 56.394997 -16.054722 56.313606 -16.043331 56.268883 -16.008331 56.217773 -15.99861 56.208328 -15.865555 56.092216 -15.78861 56.111938 -15.775833 56.147774 -15.658888 56.178886 -15.598055 56.194717 -15.375277 56.138054 -15.225832 56.151108 -15.088888 56.159996 -14.848055 56.161385 -14.717222 56.161659 -14.696665 56.16111 -14.690554 56.157776 -14.686666 56.152771 -14.679722 56.1325 -14.679443 56.120552 -14.681944 56.115555 -14.686666 56.111382 -14.692778 56.108055 -14.709999 56.102776 -14.714722 56.099159 -14.750832 56.059715 -14.767776 56.036385 -14.766666 56.030273 -14.738333 56.010826 -14.719999 56.000275 -14.635277 56.0075 -14.620832 56.029442 -14.603611 56.051941 -14.558887 56.05722 -14.551388 56.055275 -14.541388 56.051109 -14.511665 56.037498 -14.369444 55.958885 -14.330276 55.936943 -14.263611 55.886108 -14.24472 55.866943 -14.232777 55.851662 -14.217222 55.830276 -14.207777 55.812492 -14.202776 55.799721 -14.200554 55.79277 -14.196665 55.779716 -14.193333 55.766663 -14.190832 55.741661 -14.191111 55.731384 -14.192221 55.72583 -14.19611 55.715828 -14.203333 55.70694 -14.217777 55.694717 -14.276943 55.647217 -14.341389 55.578606 -14.363333 55.551941 -14.370277 55.54277 -14.372776 55.537773 -14.369165 55.531662 -14.361944 55.522774 -14.336666 55.501106 -14.312498 55.486664 -14.193546 55.386147 -14.163055 55.380272 -14.122499 55.37944 -14.058887 55.386108 -14.037498 55.389442 -14.004721 55.40583 -13.969444 55.421104 -13.935833 55.431389 -13.911943 55.433884 -13.891388 55.433609 -13.730555 55.425552 -13.710278 55.424164 -13.641666 55.417496 -13.632221 55.415833 -13.497776 55.382217 -13.465832 55.373604 -13.429722 55.356667 -13.418333 55.352493 -13.375555 55.339996 -13.344721 55.339165 -13.300833 55.340828 -13.289999 55.341942 -12.982222 55.400551 -12.918055 55.538605 -12.916388 55.544167 -12.914444 55.562218 -12.914721 55.565552 -12.916388 55.568329 -12.922499 55.574715 -12.93111 55.581108 -12.960278 55.59111 -12.981943 55.599159 -13.034721 55.623886 -13.040554 55.627495 -13.044998 55.6325 -13.058887 55.662773 -13.063332 55.68222 -13.062498 55.684998 -13.059721 55.693054 -12.928055 55.823051 -12.912777 55.838051 -12.681389 56.061943 -12.66361 56.078606 -12.633888 56.10305 -12.623888 56.107773 -12.615 56.109444 -12.609722 56.111664 -12.58111 56.141663 -12.453054 56.293327 -12.451666 56.297775 -12.461666 56.298332 -12.473888 56.297218 -12.629166 56.258888 -12.645277 56.253326 -12.718681 56.222778 -12.787222 56.222221 -12.794443 56.223053 -12.801943 56.225555 -12.813332 56.232773 -12.824165 56.241661 -12.830089 56.25 -12.831665 56.25222 -12.834721 56.258049 -12.834999 56.26416 -12.833055 56.269165 -12.740833 56.352219 -12.730555 56.359444 -12.723888 56.363052 -12.676109 56.379715 -12.663887 56.380272 -12.644722 56.38472 -12.636665 56.387772 -12.62611 56.395271 -12.622776 56.399994 -12.622221 56.411942 -12.626389 56.424721 -12.628611 56.431389 -12.631943 56.436943 -12.635555 56.442215 -12.641388 56.446106 -12.672777 56.463608 -12.679722 56.466385 -12.721943 56.467499 -12.732498 56.467499 -12.749166 56.464722 -12.785831 56.450272 -12.793333 56.447777 -12.812498 56.443329 -12.832777 56.43972 -12.85265 56.439919 -12.86861 56.441383 -12.87611 56.443604 -12.88361 56.446388 -12.90111 56.457222 -12.910831 56.466942 -12.918055 56.478333 -12.930277 56.501106 -12.937498 56.521111 -12.936943 56.532494 -12.933332 56.543327 -12.931389 56.548332 -12.917221 56.578606 -12.887499 56.638329 -12.876665 56.646385 -12.869165 56.648888 -12.821665 56.658333 -12.813332 56.656662 -12.785 56.643608 -12.758055 56.639999 -12.725277 56.639717 -12.718611 56.643326 -12.670832 56.676109 -12.613609 56.746941 -12.599998 56.777771 -12.598331 56.783333 -12.599165 56.79583 -12.601387 56.802498 -12.599998 56.808052 -12.5975 56.813332 -12.593332 56.817497 -12.579443 56.830276 -12.573889 56.833885 -12.484722 56.88166 -12.468332 56.887772 -12.418055 56.897217 -12.350277 56.914444 -12.3475 56.919167 -12.349998 56.969994 -12.28611 57.032494 -12.253611 57.04805 -12.237778 57.059715 -12.149443 57.183884 -12.146666 57.188332 -12.109999 57.25 -12.134722 57.275551 -12.148611 57.281105 -12.151388 57.287216 -12.145832 57.309166 -12.094999 57.426941 -12.058332 57.45472 -12.051388 57.457771 -12.043888 57.459717 -12.036943 57.45694 -12.011665 57.434166 -12.007776 57.428886 -12.005833 57.422218 -12.00861 57.411385 -12.007776 57.404999 -11.989443 57.347496 -11.986111 57.341385 -11.979166 57.343605 -11.942778 57.376106 -11.917776 57.402222 -11.904165 57.421944 -11.901388 57.426666 -11.906666 57.514999 -11.911112 57.526649 -11.913332 57.52861 -11.915833 57.534439 -11.922222 57.563889 -11.913332 57.613609 -11.910555 57.618607 -11.906387 57.623329 -11.897499 57.624443 -11.894444 57.618332 -11.862499 57.607773 -11.83 57.661385 -11.86861 57.68055 -11.887777 57.693886 -11.750555 57.688889 -11.741388 57.688606 -11.704443 57.693329 -11.698889 57.69722 -11.69972 57.715828 -11.723055 57.80722 -11.668055 57.845833 -11.688055 57.88166 -11.694166 57.885277 -11.702221 57.887215 -11.711666 57.88916 -11.741388 57.89222 -11.757221 57.897217 -11.795555 58.006104 -11.801388 58.026382 -11.800554 58.038055 -11.799166 58.043884 -11.79361 58.04805 -11.776667 58.053143 -11.776667 58.059441 -11.79611 58.095276 -11.837221 58.154716 -11.870277 58.191109 -11.880833 58.199997 -11.884722 58.205276 -11.88611 58.211937 -11.798054 58.318329 -11.734999 58.328331 -11.723331 58.328888 -11.622776 58.276108 -11.607498 58.262772 -11.594721 58.255272 -11.53611 58.23027 -11.526388 58.230553 -11.515833 58.231941 -11.495277 58.236107 -11.405554 58.261108 -11.384165 58.311943 -11.238333 58.346939 -11.201387 58.399437 -11.235554 58.505272 -11.254166 58.551109 -11.257221 58.556938 -11.266388 58.579437 -11.26111 58.632217 -11.259443 58.637772 -11.252222 58.653053 -11.247776 58.657494 -11.210278 58.679718 -11.180832 58.70916 -11.178055 58.713882 -11.176943 58.730827 -11.181665 58.747772 -11.200832 58.769997 -11.218054 58.784164 -11.229166 58.792221 -11.233889 58.796944 -11.236111 58.803604 -11.233055 58.833054 -11.231388 58.845276 -11.194166 58.917496 -11.166666 58.924438 -11.131943 58.935272 -11.123055 58.938332 -11.115833 58.941383 -11.106943 58.949997 -11.113333 59.003609 -11.119165 59.015831 -11.127499 59.026382 -11.166388 59.064438 -11.172499 59.068604 -11.186666 59.074997 -11.204166 59.079437 -11.265554 59.093887 -11.314999 59.101387 -11.324999 59.099159 -11.338333 59.091942 -11.349998 59.084442 -11.373333 59.050827 -11.401667 59.012772 -11.419443 58.989716 -11.427082 58.985786 -11.429192 58.98764 -11.423054 58.926666 -11.422777 58.920273 -11.424999 58.903053 -11.426109 58.897217 -11.427776 58.893051 -11.431944 58.888611 -11.439165 58.885277 -11.450832 58.883888 -11.463055 58.883606 -11.496666 58.88472 -11.585833 58.89666 -11.599968 58.899185 -11.621387 58.904716 -11.626665 58.909164 -11.75111 59.090271 -11.753054 59.097221 -11.751944 59.102776 -11.746387 59.112778 -11.742222 59.117493 -11.739443 59.122498 -11.739443 59.12722 -11.750832 59.174438 -11.754444 59.188049 -11.759165 59.200829 -11.764721 59.211662 -11.769547 59.217537 -11.784721 59.23027 -11.792288 59.236641 -11.795277 59.239166 -11.798332 59.245277 -11.798887 59.257774 -11.796944 59.275276 -11.790833 59.303329 -11.783054 59.324715 -11.739166 59.429718 -11.667776 59.59166 -11.666248 59.595482 -11.756388 59.635551 -11.764166 59.638329 -11.781666 59.642776 -11.811666 59.646942 -11.820555 59.648888 -11.828333 59.651939 -11.896387 59.695 -11.900833 59.701111 -11.902777 59.707771 -11.903332 59.720276 -11.903055 59.738327 -11.898848 59.772469 -11.896387 59.784721 -11.891109 59.794716 -11.886665 59.799164 -11.881109 59.803886 -11.869444 59.811661 -11.81596 59.8461 -11.852777 59.861382 -11.875832 59.869995 -11.956944 59.896942 -11.968054 59.897774 -11.98 59.896111 -11.998055 59.890549 -12.008333 59.888611 -12.034166 59.886108 -12.107222 59.885826 -12.129721 59.88694 -12.139999 59.888329 -12.163055 59.896942 -12.191944 59.910271 -12.310276 59.968887 -12.32361 59.976387 -12.461943 60.063606 -12.476944 60.076385 -12.489166 60.098328 -12.494165 60.111107 -12.496387 60.11805 -12.498333 60.124718 -12.502777 60.144722 -12.5075 60.169441 -12.508055 60.175552 -12.508333 60.181938 -12.507776 60.193604 -12.504444 60.210548 -12.527777 60.33416 -12.537777 60.343887 -12.571943 60.378052 -12.589722 60.399162 -12.5975 60.424995 -12.602777 60.442772 -12.607498 60.462494 -12.608055 60.468605 -12.605833 60.479996 -12.594444 60.516937 -12.5875 60.526665 -12.505833 60.629997 -12.424999 60.710274 -12.38611 60.750832 -12.378887 60.760277 -12.364721 60.779442 -12.353611 60.799721 -12.35111 60.804718 -12.336111 60.835831 -12.308611 60.887215 -12.271944 60.946106 -12.245554 60.973053 -12.23361 60.980827 -12.217222 60.99305 -12.212776 60.997498 -12.209999 61.002495 -12.215555 61.006943 -12.2225 61.010826 -12.247776 61.018608 -12.294167 61.029442 -12.388054 61.050552 -12.407776 61.053886 -12.432499 61.054443 -12.458055 61.053886 -12.500277 61.050827 -12.567221 61.04805 -12.602221 61.049721 -12.621944 61.053055 -12.637825 61.057541 -12.670277 61.087776 -12.772221 61.200829 -12.796665 61.244995 -12.83111 61.312218 -12.85611 61.362495 -12.773888 61.414719 -12.529999 61.566109 -12.523054 61.567215 -12.481388 61.569443 -12.468332 61.569717 -12.444721 61.568604 -12.430277 61.569443 -12.406666 61.573326 -12.392776 61.580551 -12.144444 61.717499 -12.124443 61.728607 -12.159443 61.844444 -12.169998 61.878609 -12.181665 61.912498 -12.200277 61.963333 -12.214998 62.006104 -12.25861 62.142494 -12.294617 62.258217 -12.295832 62.261665 -12.291666 62.272499 -12.271387 62.308052 -12.256388 62.327217 -12.245344 62.337982 -12.209999 62.389999 -12.19972 62.404716 -12.184444 62.423882 -12.172222 62.437775 -12.149166 62.460274 -12.084721 62.52916 -12.047499 62.589996 -12.046665 62.665276 -12.072777 62.715828 -12.089443 62.749443 -12.066666 62.803055 -12.050278 62.838882 -12.028889 62.892494 -12.058332 62.91861 -12.113333 62.967216 -12.15111 62.999443 -12.16861 63.015831 -12.144165 63.045273 -12.036943 63.173882 -12.027491 63.182449 -11.936388 63.272217 -11.998888 63.323883 -12.078333 63.388329 -12.13722 63.436661 -12.195 63.485275 -12.17861 63.512215 -12.139444 63.58416 -12.153889 63.594994 -12.346666 63.728882 -12.473055 63.833328 -12.530832 63.872772 -12.633888 63.942772 -12.681944 63.967216 -12.794443 64.007217 -12.846943 64.025269 -12.938055 64.053329 -12.988333 64.064438 -13.032221 64.071106 -13.135555 64.083603 -13.193609 64.089996 -13.23 64.093048 -13.291388 64.086655 -13.981667 64.013046 -13.988333 64.018051 -14.146666 64.173874 -14.154722 64.185822 -14.151388 64.333603 -14.149721 64.344986 -14.116388 64.470551 -14.032499 64.488052 -13.900833 64.507492 -13.820276 64.529434 -13.68222 64.571106 -13.663332 64.577209 -13.662498 64.582764 -13.664999 64.589722 -13.676943 64.607773 -13.696943 64.62944 -13.707499 64.639709 -13.725571 64.652267 -13.832777 64.733322 -13.879166 64.771103 -13.955832 64.835541 -14.091389 64.949158 -14.235277 65.048874 -14.296438 65.102127 -14.308832 65.115234 -14.319443 65.12999 -14.329166 65.149719 -14.35611 65.208603 -14.368889 65.246658 -14.493055 65.313599 -14.494444 65.358887 -14.49361 65.376389 -14.495277 65.446381 -14.497221 65.516098 -14.500555 65.585831 -14.532221 65.696106 -14.535 65.702774 -14.539444 65.708878 -14.565277 65.736374 -14.588055 65.756943 -14.603888 65.773331 -14.621387 65.797211 -14.631666 65.816666 -14.634722 65.826935 -14.608889 65.876389 -14.580276 65.931107 -14.569443 65.949432 -14.540554 66.007492 -14.534721 66.025269 -14.519165 66.078888 -14.509165 66.114716 -14.504999 66.132492 -14.717777 66.140549 -14.981388 66.149155 -15.025276 66.149994 -15.468054 66.283875 -15.446854 66.321381 -15.400555 66.406937 -15.371387 66.461655 -15.362778 66.479996 -15.527777 66.558044 -15.625832 66.60582 -15.73111 66.684998 -16.009998 66.890823 -16.353886 67.017776 -16.40583 67.16333 -16.399166 67.177765 -16.361385 67.237778 -16.337498 67.260818 -16.261944 67.305542 -16.220554 67.329987 -16.20472 67.337494 -16.161663 67.35582 -16.138611 67.367493 -16.111111 67.383606 -16.104164 67.387772 -16.089722 67.401657 -16.086941 67.406662 -16.085831 67.411652 -16.192219 67.5 -16.206108 67.501663 -16.3825 67.515549 -16.403332 67.529999 -16.508331 67.609161 -16.570274 67.656937 -16.576942 67.665543 -16.588055 67.68222 -16.620277 67.732208 -16.684719 67.832214 -16.726944 67.899155 -17.188332 68.030273 -17.234547 68.062103 -17.252583 68.07457 -17.273609 68.090546 -17.592499 68.029709 -17.648888 68.01416 -17.680275 68.00444 -17.743332 67.984711 -17.801941 67.964157 -17.82 67.95694 -17.831108 67.953598 -17.858055 67.948608 -17.884163 67.945541 -17.93972 67.997772 -18.135555 68.150269 -18.155277 68.166107 -18.103886 68.280823 -18.085831 68.317764 -18.069443 68.354431 -18.053333 68.391098 -18.04583 68.409439 -18.058052 68.439987 -18.081665 68.490829 -18.090832 68.507767 -18.099541 68.508926 -18.149441 68.515274 -18.358055 68.539154 -18.611942 68.475266 -18.952221 68.487778 -19.41333 68.419434 -19.543888 68.399719 -19.71722 68.372772 -19.860554 68.349991 -19.898331 68.341385 -19.923885 68.336655 -19.937775 68.337494 -19.948055 68.34082 -19.956665 68.344711 -19.964165 68.349716 -19.976665 68.361374 -20.006664 68.381104 -20.030277 68.394989 -20.048054 68.40332 -20.075832 68.414719 -20.167221 68.443878 -20.175831 68.448044 -20.198608 68.462769 -20.208611 68.47583 -20.211109 68.482208 -20.088055 68.501663 -19.956387 68.543884 -20.063053 68.583054 -20.177219 68.646942 -20.202499 68.662216 -20.238331 68.691376 -20.313889 68.754715 -20.350277 68.786652 -20.31472 68.928329 -20.238888 68.968597 -20.096943 69.042221 -20.535275 69.056381 -20.580929 69.060303 -20.604164 69.053055 -20.650063 69.043793 -20.744164 69.031097 -20.791664 69.023331 -20.846386 69.011932 -20.866665 69.00499 -20.884441 68.997498 -20.908886 68.98555 -20.928608 68.973053 -20.932777 68.968323 -20.938889 68.958328 -20.938332 68.952774 -20.93111 68.946381 -20.915554 68.939438 -20.888885 68.925827 -20.883053 68.91333 -20.882774 68.907776 -20.888611 68.898041 -20.895275 68.8936 -20.904163 68.889999 -20.915276 68.886658 -20.944721 68.881378 -20.959442 68.87999 -20.990833 68.87944 -21.024719 68.877487 -21.058887 68.873322 -21.081387 68.866653 -21.207775 68.819717 -21.216663 68.816101 -21.420555 68.724152 -21.448608 68.691101 -21.452774 68.686661 -21.465553 68.678055 -21.487499 68.671387 -21.500832 68.66832 -21.550552 68.661652 -21.585278 68.6586 -21.601109 68.656097 -21.623055 68.649429 -21.642776 68.642487 -21.701664 68.620819 -21.710278 68.617218 -21.714165 68.612488 -21.711109 68.606384 -21.710552 68.600555 -21.71833 68.59111 -21.735554 68.583603 -21.7575 68.576935 -21.773331 68.574432 +16836666 56826942 +16828053 56825272 +16816944 56825829 +16808331 56824165 +16785000 56809998 +16779442 56805832 +16770275 56795830 +16726665 56702217 +16635555 56518883 +16576664 56406944 +16570553 56394440 +16569443 56388054 +16570274 56376938 +16571941 56371666 +16575275 56367218 +16575554 56361382 +16571663 56354996 +16553055 56326385 +16496109 56240829 +16486385 56231384 +16473610 56224442 +16437222 56211388 +16429722 56208885 +16420830 56211105 +16416111 56215271 +16410831 56224998 +16403332 56274162 +16391666 56464996 +16393330 56529160 +16395832 56535828 +16420277 56586388 +16542500 56776382 +16611942 56868332 +16616665 56873604 +16629166 56879166 +16644997 56883606 +16749443 56939720 +16848053 57064163 +16899998 57134995 +16959442 57223610 +16963055 57229439 +16965553 57241661 +16960278 57256943 +16959164 57274162 +16960552 57280273 +16966110 57293610 +16973331 57305275 +16982777 57315552 +16993053 57324715 +17009998 57337494 +17022221 57344994 +17035553 57351944 +17056664 57359161 +17098610 57350555 +17105553 57348328 +17124165 57320831 +17050552 57186661 +17008888 57131943 +16961109 57075272 +16926666 57038055 +16880276 56929718 +16848331 56843887 +16841110 56832222 +18206108 56911942 +18168888 56909996 +18147778 56911942 +18140274 56914993 +18142498 56920273 +18158333 56941666 +18209164 56989166 +18256664 57032219 +18254444 57079163 +18173332 57141937 +18148331 57235275 +18158054 57315826 +18142498 57409439 +18115276 57480827 +18110275 57496109 +18109997 57513054 +18111385 57519440 +18119164 57531105 +18138611 57551109 +18179165 57588333 +18191441 57596138 +18211941 57605827 +18227776 57611382 +18242222 57617493 +18249165 57620827 +18276108 57634163 +18294720 57645828 +18338886 57681664 +18355831 57695831 +18381943 57718605 +18401665 57738609 +18419720 57760277 +18456387 57802773 +18461388 57807777 +18467220 57811943 +18481110 57818604 +18681942 57913605 +18689999 57916107 +18716110 57921104 +18724998 57922775 +18881943 57919716 +18902496 57918327 +18914165 57917496 +19004719 57908607 +19006107 57903610 +19003887 57898888 +19033333 57826942 +18929443 57739716 +18848888 57721107 +18809166 57703606 +18793331 57659164 +18759720 57508049 +18768055 57472221 +18769444 57467216 +18788330 57448326 +18714443 57246941 +18711941 57241661 +18658054 57220833 +18551941 57182777 +18514721 57169441 +18498333 57165276 +18455555 57156944 +18439442 57152771 +18417221 57144165 +18397221 57134163 +18391388 57129997 +18386665 57124992 +18345554 57079720 +18341389 57073883 +18339165 57068604 +18335552 57023331 +18335831 57017494 +18343330 57014442 +18346664 56998604 +18302498 56937492 +18294998 56934715 +18215553 56913055 +19334442 57955826 +19286663 57937492 +19277496 57940277 +19274441 57945000 +19268055 57948608 +19256664 57949440 +19238052 57946938 +19170555 57929443 +19162777 57926941 +19150833 57918610 +19145832 57913605 +19141666 57907776 +19139999 57901665 +19126110 57839722 +19093330 57851944 +19077774 57858330 +19073055 57862495 +19037498 57896385 +19034443 57901108 +19034443 57912498 +19036110 57918610 +19088886 57970276 +19095833 57973610 +19104721 57975273 +19285831 57976662 +19296387 57976662 +19307499 57974442 +19332497 57965271 +19335552 57960548 +11594444 57932495 +11584999 57930832 +11574720 57931664 +11528055 57948051 +11522499 57951942 +11518125 57980690 +11509722 57989716 +11498333 58006943 +11497221 58012772 +11498055 58031387 +11501944 58036659 +11520555 58047775 +11529999 58049164 +11735884 58041714 +11741110 58030548 +11742222 58024994 +11736944 58004440 +11734165 57998604 +11729166 57993889 +11722776 57990273 +11659443 57957497 +11646111 57950829 +16816666 58116104 +16783333 58096664 +16778610 58100555 +16778053 58106384 +16781944 58112221 +16787777 58116386 +16801109 58123329 +16810833 58124443 +16818886 58121384 +11806389 58120552 +11800278 58116943 +11714722 58101105 +11676388 58098885 +11624722 58107498 +11623610 58113052 +11606667 58118607 +11583055 58118889 +11553333 58115273 +11467222 58101387 +11465832 58095833 +11463610 58071663 +11464998 58066109 +11454721 58072495 +11450554 58076942 +11401110 58130272 +11402777 58136940 +11410555 58147499 +11668888 58284439 +11677500 58286659 +11708887 58285828 +11721666 58284721 +11736666 58281662 +11786665 58245552 +11809999 58224442 +11812498 58219162 +11813610 58213608 +11815832 58171944 +11814722 58147217 +11811110 58133606 +19236942 58337219 +19226109 58337219 +19218330 58340271 +19187222 58381386 +19184166 58386108 +19186665 58391388 +19224998 58389717 +19261665 58384163 +19305832 58375275 +19324718 58369720 +19331108 58366104 +19327499 58361664 +19315277 58353333 +19302219 58346107 +19294167 58343605 +19285275 58341942 +17691387 58916939 +17706387 58904442 +17695831 58905548 +17676388 58916382 +17671387 58920555 +17664444 58929993 +17641109 58965828 +17639164 58971107 +17639164 58976662 +17641941 58989166 +17660553 59039719 +17667774 59052216 +17675831 59054718 +17682220 59051109 +17696388 59039719 +17718052 59018051 +17721664 59007774 +17720276 59001663 +17716110 58995552 +17704166 58987221 +17696110 58975555 +17690277 58950829 +17687775 58926941 +17688053 58921387 +18405830 59023888 +18377499 59019440 +18365555 59020271 +18360554 59024437 +18357498 59029160 +18357220 59034996 +18396942 59080826 +18407219 59090828 +18413330 59094994 +18444164 59115829 +18450554 59118050 +18459721 59119720 +18469719 59120552 +18479164 59119995 +18491665 59102776 +18490555 59098053 +18424164 59036385 +18537220 59223885 +18527222 59223053 +18515274 59223885 +18503887 59225830 +18435555 59253609 +18428886 59257217 +18389442 59284721 +18391941 59290276 +18466663 59292770 +18478886 59291939 +18494720 59290833 +18503609 59288887 +18601944 59257500 +18610275 59254166 +18571941 59232216 +18563610 59229721 +17786942 59310555 +17777775 59308609 +17754444 59309441 +17721664 59316109 +17686943 59328049 +17671944 59334717 +17661942 59343048 +17617496 59397774 +17605553 59416664 +17610554 59421661 +17618610 59424438 +17627777 59426109 +17638885 59426109 +17650555 59424164 +17737499 59393326 +17744164 59389717 +17773888 59372772 +17777222 59368050 +17789165 59321388 +17789165 59315826 +17734722 59296104 +17817497 59277771 +17758053 59280830 +17681942 59289719 +17658886 59293884 +17649166 59296387 +17639164 59299164 +17622776 59305275 +17610832 59313049 +17520554 59406944 +17518887 59411942 +17520275 59418327 +17523609 59422775 +17531666 59425278 +17539165 59426666 +17570553 59428604 +17622776 59378609 +17629719 59369438 +17636944 59348885 +17637218 59343048 +17635555 59336937 +17636108 59325554 +17637775 59320549 +17647778 59317772 +17266388 59374443 +17256386 59373329 +17231110 59375549 +17155552 59383606 +17147221 59386665 +17070274 59453888 +17070000 59459442 +17089722 59459999 +17150555 59456665 +17236111 59449715 +17256943 59446663 +17266941 59444160 +17280277 59436943 +17316109 59408051 +17318054 59403053 +17317219 59398048 +17309719 59394165 +18575554 59448326 +18565277 59447495 +18553055 59448326 +18526665 59468605 +18521664 59472771 +18519997 59483604 +18519997 59489441 +18522778 59494720 +18528889 59498886 +18570274 59526382 +18610832 59546661 +18633610 59555832 +18643608 59556664 +18738888 59548332 +18746944 59544998 +18732498 59538330 +18724442 59535828 +18715275 59534164 +18668053 59526665 +18591389 59501106 +18588608 59495552 +18590275 59490555 +18606941 59467216 +18605274 59461105 +18583611 59450829 +18570000 60307777 +18561665 60305275 +18549164 60306107 +18521111 60315826 +18512775 60319160 +18401108 60365273 +18394165 60374718 +18392498 60379715 +18381943 60416382 +18371666 60494164 +18374165 60499718 +18380554 60503883 +18389999 60505554 +18408886 60499718 +18422497 60486664 +18456108 60427498 +18507221 60348053 +18537220 60342499 +18572777 60313332 +17509163 62363327 +17484722 62363052 +17456665 62365273 +17444164 62367493 +17422222 62372498 +17416664 62376663 +17412777 62381386 +17369164 62466660 +17367222 62471664 +17373333 62474442 +17463055 62461662 +17472221 62458328 +17514442 62414444 +17542500 62366104 +18060833 62670830 +18049721 62669998 +18041664 62672218 +18036110 62676384 +18026665 62685272 +18023052 62689995 +18019165 62700272 +18022499 62712494 +18039165 62735550 +18045830 62739716 +18060276 62743889 +18070553 62745552 +18129719 62740555 +18141388 62739166 +18146942 62734993 +18153053 62728882 +18156944 62718330 +18154999 62712219 +18114166 62686943 +18107220 62682777 +18099442 62679443 +20885555 63751663 +20875832 63749161 +20840832 63763054 +20837498 63767776 +20838055 63773331 +20842220 63779999 +20847500 63785828 +20855000 63789993 +20873333 63795555 +20884998 63796104 +20899998 63794167 +20911110 63791382 +20921944 63782776 +20928608 63773331 +20927219 63768608 +21809166 68570541 +21824718 68570267 +21864719 68573608 +21881386 68572495 +21897221 68569992 +21933887 68555267 +21959442 68543884 +21997776 68523605 +22003887 68519440 +22022499 68506653 +22035000 68498047 +22038055 68487778 +22041943 68483047 +22050552 68479156 +22063889 68476105 +22150833 68465546 +22167500 68464432 +22371944 68463608 +22430553 68451660 +22500000 68440132 +22581665 68427216 +22659721 68422485 +22673885 68420822 +22823608 68388046 +22829720 68383881 +22863609 68357498 +22899719 68331665 +22910275 68328323 +22936386 68322220 +22969444 68317764 +23048054 68293884 +23058609 68290268 +23066944 68286377 +23353333 68083603 +23367496 68064713 +23376942 68055542 +23394444 68042496 +23531666 67992493 +23638332 67958054 +23648888 67954712 +23656944 67950821 +23666111 67941666 +23667221 67936386 +23665554 67929993 +23659721 67923599 +23652775 67918045 +23644722 67913055 +23607777 67897491 +23596386 67895264 +23545555 67889999 +23511108 67883606 +23492496 67875824 +23486942 67869156 +23483330 67863052 +23471107 67822769 +23469997 67816940 +23491386 67712494 +23507774 67665543 +23471943 67556381 +23433331 67491943 +23429996 67485825 +23428886 67475830 +23431110 67465546 +23448330 67452499 +23464165 67444717 +23474442 67441101 +23486942 67438049 +23500553 67436386 +23511944 67438599 +23527496 67448044 +23536663 67451935 +23549164 67453323 +23581944 67449997 +23734997 67426102 +23761944 67420273 +23767776 67416107 +23768887 67410828 +23783054 67332214 +23781944 67326385 +23773331 67314438 +23749722 67289444 +23741665 67284714 +23731667 67281662 +23708054 67278046 +23683052 67275543 +23635830 67268600 +23624722 67266388 +23614441 67263321 +23605553 67259430 +23594444 67246384 +23586666 67234985 +23570553 67161942 +23571663 67156662 +23580555 67147491 +23681110 67047485 +23731110 67008331 +23744442 67000000 +23757774 66991943 +23787777 66981384 +23866943 66931107 +23935833 66884155 +23941109 66879990 +23949997 66870819 +24001110 66810272 +24007774 66800552 +24006386 66794998 +23999722 66791382 +23987778 66790268 +23948055 66788879 +23936943 66786942 +23893608 66749161 +23889999 66743042 +23891109 66737778 +23900833 66712494 +23902775 66680267 +23891941 66581665 +23887497 66569992 +23884163 66563889 +23878609 66557220 +23871944 66551666 +23861942 66548599 +23826942 66543884 +23807220 66537766 +23725277 66500824 +23666386 66465271 +23658886 66460541 +23652222 66454712 +23646664 66448318 +23640274 66436096 +23639164 66430542 +23660831 66317215 +23661942 66312210 +23666386 66302216 +23684719 66263321 +23719166 66204987 +23722221 66200272 +23727776 66195831 +23735275 66191940 +23754719 66184998 +23808331 66169708 +23820274 66166656 +23848053 66161377 +23864166 66159164 +23879444 66158051 +23893330 66155273 +23912498 66148331 +23925552 66139999 +23930832 66135544 +23940277 66121384 +23948608 66101379 +23967777 66072495 +24031387 66020264 +24160553 65839996 +24166664 65830551 +24168610 65819992 +24167007 65814026 +24153053 65805542 +24144444 65801666 +24121109 65798874 +24106110 65800278 +24080830 65806107 +24052219 65808044 +24040276 65806656 +23986111 65792496 +23956108 65784164 +23951942 65778885 +23948608 65772766 +23943333 65766388 +23936943 65760818 +23928333 65756943 +23916664 65757767 +23773888 65792770 +23772778 65797775 +23653889 65806381 +23518330 65800827 +23434719 65760544 +23394444 65767487 +23249722 65800827 +23234444 65763611 +23141109 65714722 +23131664 65711655 +23081108 65698883 +23073608 65702774 +23000275 65752777 +22828888 65815277 +22826385 65825546 +22823055 65830551 +22790276 65856384 +22723331 65886108 +22675831 65902222 +22644722 65905548 +22637218 65902771 +22638611 65897766 +22649719 65888885 +22666943 65881653 +22674442 65877777 +22679996 65873596 +22683331 65868881 +22704720 65807495 +22684998 65763885 +22677776 65759155 +22669441 65754990 +22660000 65751938 +22648609 65750549 +22651386 65756653 +22656387 65763321 +22657219 65768875 +22650555 65778320 +22608608 65796936 +22479164 65851105 +22451385 65856110 +22418610 65859436 +22375553 65860825 +22363888 65859161 +22357777 65855820 +22329166 65829712 +22257774 65691101 +22249054 65632492 +22272720 65627655 +22281054 65626152 +22289387 65625992 +22300554 65629822 +22316666 65618042 +22321388 65624710 +22322220 65630264 +22316666 65634720 +22309166 65638611 +22298054 65647217 +22286942 65659988 +22283607 65664993 +22289719 65668320 +22303608 65665833 +22323055 65659164 +22385555 65628876 +22423611 65558884 +22426388 65548599 +22423332 65542221 +22416386 65537491 +22405830 65535263 +22394165 65538330 +22379166 65545822 +22366108 65554153 +22241833 65577271 +22206329 65578773 +22079720 65607208 +21863888 65666656 +21854164 65669998 +21846386 65673874 +21840832 65678055 +21826942 65697220 +21821388 65701385 +21766941 65722488 +21760830 65716934 +21762497 65711655 +21773052 65697495 +21828053 65665268 +21843330 65657776 +21853054 65654434 +22022499 65598053 +22057777 65589157 +22116108 65583054 +22125832 65579712 +22199165 65545273 +22194164 65540833 +22184998 65537766 +22164165 65533051 +22053848 65517441 +22000275 65513611 +21987499 65515274 +21909164 65526657 +21899441 65529999 +21891666 65533875 +21887218 65537216 +21879997 65536652 +21859165 65532211 +21852497 65529999 +21858055 65525833 +21901108 65496658 +21914165 65488602 +21925831 65485550 +21939720 65485275 +21922497 65506943 +21925278 65510818 +21936943 65508041 +21979164 65489716 +22030277 65462219 +22031666 65457214 +22017498 65428604 +22010555 65423874 +21929443 65398041 +21675831 65391098 +21662220 65391388 +21647499 65392487 +21635555 65395554 +21628052 65399155 +21611385 65412216 +21601665 65415543 +21586941 65416382 +21544720 65408051 +21474163 65386658 +21468330 65380829 +21497276 65355270 +21506275 65344604 +21534277 65327271 +21543110 65326775 +21579720 65314713 +21587776 65318878 +21590275 65324997 +21586941 65329712 +21588886 65332214 +21612221 65326385 +21621944 65323044 +21697220 65291382 +21704720 65287491 +21704166 65281937 +21700832 65270264 +21695000 65264435 +21663887 65247498 +21654720 65244156 +21588055 65234711 +21565277 65231659 +21553608 65234711 +21548054 65238876 +21541111 65248322 +21538055 65258881 +21493887 65286713 +21468887 65310883 +21464222 65313210 +21338055 65369720 +21324444 65371933 +21314163 65369720 +21266388 65341110 +21260555 65337494 +21266109 65333328 +21321110 65323608 +21336941 65321655 +21417221 65306107 +21505276 65248596 +21548054 65219437 +21559166 65210831 +21613609 65162491 +21620552 65153046 +21621944 65147766 +21621387 65142212 +21583885 65062775 +21577221 65057770 +21565830 65056381 +21533703 65058746 +21494164 65061096 +21483055 65059708 +21472775 65057220 +21468330 65050552 +21467499 65044998 +21470554 65034439 +21480000 65031097 +21466663 65007217 +21373333 64975555 +21300831 64954437 +21254997 64949432 +21243889 64947769 +21205276 64891663 +21206665 64886383 +21208885 64862488 +21183052 64829987 +21131664 64818878 +21122776 64818054 +21109165 64820267 +21097500 64823318 +21091942 64827499 +21084999 64836929 +21086109 64848328 +21082497 64853043 +21073055 64856384 +21060555 64855820 +21044998 64847763 +21039444 64841934 +21036942 64835831 +21036110 64824432 +21039444 64819717 +21044998 64815277 +21082497 64788605 +21089996 64784714 +21097500 64781097 +21106941 64777771 +21125608 64775826 +21134275 64775154 +21159443 64775543 +21214996 64782776 +21229443 64781937 +21258331 64777496 +21292774 64768875 +21302219 64765549 +21307777 64761383 +21310833 64750824 +21304996 64661942 +21289719 64663879 +21278332 64666656 +21268608 64669998 +21238888 64685272 +21161942 64722763 +21143721 64724442 +21136221 64725433 +21121721 64724602 +21105000 64722763 +21104443 64716934 +21111942 64691101 +21118889 64681381 +21133888 64673874 +21271385 64615265 +21356941 64590820 +21361385 64597214 +21366943 64603043 +21373333 64605270 +21465275 64575546 +21554165 64532486 +21584999 64439713 +21458054 64361099 +21390553 64335266 +21322220 64309998 +21313332 64306931 +21286110 64298325 +21276108 64295822 +21267220 64294998 +21259720 64298599 +21258331 64303879 +21254997 64308609 +21242775 64310272 +21234997 64306107 +20971664 64148605 +20957497 64139435 +20954166 64134155 +20904999 64049438 +20895554 64002487 +20793888 63886383 +20777775 63869164 +20770275 63864998 +20728611 63848053 +20638332 63813332 +20535000 63799164 +20508053 63820274 +20499722 63822777 +20494164 63819160 +20447777 63758331 +20417774 63697777 +20413609 63691109 +20386944 63674164 +20379166 63672493 +20369999 63675552 +20316666 63659996 +20298611 63646385 +20263885 63665833 +20099998 63655830 +20011944 63635826 +19899441 63609161 +19893055 63606384 +19775276 63533333 +19749165 63516663 +19747219 63510551 +19748886 63505272 +19754166 63501106 +19761665 63497215 +19768887 63487778 +19779163 63462494 +19772644 63457535 +19704998 63431938 +19683052 63429718 +19668053 63431389 +19641109 63442497 +19635830 63446663 +19639999 63459160 +19643055 63464439 +19643330 63469994 +19639721 63474716 +19616386 63494720 +19501663 63549438 +19475555 63559715 +19463608 63561104 +19453053 63559441 +19428055 63549438 +19422775 63545830 +19424442 63540550 +19473610 63453049 +19447220 63440277 +19365833 63434998 +19351665 63435272 +19318333 63449165 +19312775 63453331 +19309185 63463608 +19296665 63463608 +19289444 63459442 +19283333 63454437 +19278332 63448608 +19274441 63441940 +19275833 63419716 +19277496 63408882 +19230553 63327499 +19158607 63315277 +19139999 63310272 +19058609 63253609 +19045555 63244438 +19040554 63238609 +19044167 63228050 +19049721 63218330 +19059719 63216385 +19085278 63214165 +19108608 63213608 +19110275 63208328 +19066666 63178604 +19058331 63175278 +19046944 63174438 +19036942 63176384 +18972500 63209999 +18966942 63214439 +18963333 63218887 +18964996 63225273 +18965275 63230827 +18956108 63245277 +18903610 63272774 +18889721 63273605 +18811554 63251774 +18806053 63250275 +18802887 63248108 +18801054 63244942 +18803387 63242107 +18810055 63240440 +18847219 63234104 +18883886 63227104 +18908054 63210274 +18915276 63206665 +18897499 63191666 +18784721 63161942 +18775833 63162773 +18761108 63170273 +18751942 63184715 +18748665 63192436 +18752163 63195606 +18757664 63197105 +18765331 63197105 +18780830 63194439 +18793999 63195938 +18791832 63198772 +18787331 63200939 +18780664 63202606 +18771832 63203606 +18736164 63207607 +18728664 63207607 +18722332 63206604 +18719831 63203773 +18720997 63200775 +18735554 63172493 +18739166 63167770 +18647221 63140549 +18566944 63117493 +18382221 63051666 +18289165 62997215 +18346664 62988052 +18367222 62991386 +18389999 62993332 +18402496 62993332 +18524998 62985832 +18539719 62984444 +18552498 62982216 +18561943 62978882 +18567497 62974716 +18576664 62965828 +18580276 62955551 +18576385 62951111 +18473888 62862495 +18466942 62858330 +18208611 62778610 +18199444 62776108 +18126110 62765831 +18082775 62781105 +18104443 62804161 +18129166 62804443 +18138332 62806938 +18145275 62811104 +18144997 62816666 +18137775 62820549 +18073330 62836662 +18037220 62839165 +17984997 62822220 +17978333 62818054 +17974720 62811386 +17927498 62842499 +17872219 62918610 +17862499 62933052 +17843330 62962219 +17828331 62993332 +17820274 62995827 +17701664 62995552 +17696663 62991943 +17702221 62987778 +17730553 62972771 +17752777 62961937 +17771385 62955551 +17793610 62950554 +17834721 62933327 +17881943 62883606 +17994720 62730553 +18004444 62704720 +18004719 62693329 +17996387 62656662 +17991386 62653053 +17979164 62652771 +17964443 62660271 +17956944 62669441 +17946388 62669998 +17879719 62669441 +17874165 62664444 +17877777 62659721 +17885277 62656105 +17966389 62634438 +18034721 62626389 +18045555 62623604 +18048054 62601387 +18044720 62589165 +17978054 62555275 +17843330 62487221 +17835552 62483887 +17825275 62482216 +17811943 62482773 +17789719 62499443 +17780552 62502495 +17767220 62503326 +17723610 62498886 +17693333 62493607 +17685555 62490273 +17658607 62473328 +17654163 62467216 +17661663 62458054 +17676388 62450829 +17671387 62437775 +17619164 62434166 +17605831 62434998 +17564163 62440277 +17545830 62446388 +17538330 62449997 +17528889 62458885 +17513885 62477219 +17504444 62486107 +17474720 62506386 +17437496 62529999 +17422497 62537216 +17409164 62538055 +17401386 62534439 +17334442 62491943 +17328888 62486938 +17325554 62480270 +17359722 62360275 +17371944 62329163 +17375832 62324440 +17465275 62265549 +17502497 62258495 +17552164 62250160 +17576998 62247162 +17623886 62239441 +17645554 62234161 +17654720 62231110 +17649719 62227493 +17599998 62209442 +17556664 62195549 +17545277 62196938 +17537777 62200554 +17535831 62205551 +17538609 62211105 +17555641 62216953 +17567001 62226334 +17557865 62235104 +17542677 62231522 +17532429 62230038 +17519958 62230782 +17509464 62228928 +17510036 62204578 +17508038 62200584 +17483253 62125145 +17463608 62006386 +17451664 61996941 +17445000 61992775 +17437222 61989441 +17427498 61987778 +17418331 61990829 +17408607 61992493 +17399998 61989998 +17393330 61985550 +17354164 61951111 +17349720 61945274 +17345276 61926384 +17336388 61818054 +17385666 61756496 +17440277 61726944 +17469719 61732216 +17483887 61730827 +17494720 61728050 +17500000 61723885 +17523609 61701660 +17523609 61696106 +17501110 61639717 +17498886 61635826 +17493610 61630829 +17487221 61626389 +17477219 61624718 +17445274 61628883 +17432777 61631104 +17421944 61639160 +17419998 61644440 +17414165 61654160 +17389999 61687218 +17386108 61691940 +17368111 61700386 +17354109 61706551 +17339443 61712494 +17326942 61714439 +17233887 61722496 +17220833 61723053 +17149998 61721382 +17140274 61719719 +17142220 61714439 +17149441 61710831 +17158333 61707771 +17183887 61704994 +17194721 61706108 +17207775 61705276 +17220276 61703331 +17260830 61691109 +17269722 61688049 +17271664 61683052 +17268608 61676384 +17263054 61671104 +17189999 61636108 +17181110 61633331 +17171387 61631660 +17158333 61632217 +17146111 61634163 +17128052 61640549 +17098610 61602776 +17117775 61555550 +17162777 61521660 +17168053 61517494 +17222775 61441940 +17219719 61429443 +17213333 61425278 +17171387 61420555 +17154163 61428055 +17150555 61432777 +17139721 61431664 +17109444 61408051 +17104164 61403053 +17102776 61396942 +17104721 61391663 +17144997 61357773 +17204720 61328606 +17213608 61325554 +17203609 61278885 +17181110 61190277 +17162754 61046661 +17150555 60945000 +17154442 60940552 +17201664 60916939 +17241108 60895828 +17244720 60891106 +17276108 60843048 +17283607 60771660 +17285275 60731941 +17275276 60676109 +17359722 60640549 +17377098 60618988 +17397499 60629166 +17406109 60631660 +17520554 60643051 +17555275 60643326 +17578331 60639999 +17609165 60632217 +17635830 60618607 +17649719 60611382 +17656944 60601944 +17651665 60596939 +17644165 60593605 +17609444 60584160 +17602219 60580551 +17602497 60574997 +17607777 60556107 +17609722 60550827 +17629444 60522499 +17634720 60518326 +17653610 60506943 +17662220 60503883 +17682777 60498604 +17693054 60496109 +17731110 60491661 +17740555 60493607 +17740276 60499161 +17734997 60508888 +17727776 60518326 +17726109 60523331 +17725555 60534721 +17728886 60541382 +17733055 60547493 +17773052 60571106 +17842499 60589996 +17880554 60596939 +17891109 60597771 +17937222 60598053 +17949718 60597221 +17958332 60594162 +17965275 60590553 +17970554 60586388 +17993332 60558884 +18099998 60453049 +18214165 60343048 +18227776 60330276 +18234444 60326660 +18243889 60328331 +18252220 60330826 +18258610 60334999 +18266666 60345276 +18273052 60349442 +18282497 60351387 +18313889 60353882 +18431942 60343887 +18440277 60340828 +18447220 60331383 +18465832 60299438 +18574165 60250000 +18601109 60241104 +18607777 60237221 +18606110 60231110 +18598610 60227776 +18579998 60224442 +18556942 60224442 +18531109 60226944 +18470833 60234993 +18448887 60239716 +18440552 60242775 +18425278 60249718 +18388332 60266937 +18374722 60274162 +18354164 60290833 +18325554 60310829 +18315277 60313332 +18313610 60307220 +18313889 60301384 +18396111 60208054 +18421665 60187218 +18507431 60152657 +18531666 60153053 +18626110 60145828 +18639442 60144165 +18711388 60128052 +18776665 60110832 +18816387 60096382 +18814720 60090271 +18814720 60078888 +18816387 60073883 +18823055 60058884 +18886665 59962776 +18893330 59953331 +18904999 59939995 +18909721 59935829 +18929722 59924721 +18950220 59920330 +18963720 59920330 +19007221 59912773 +19045555 59899162 +19070553 59889717 +19070000 59838608 +19068333 59832497 +19065552 59827217 +19059166 59823051 +19050552 59822777 +19040554 59825272 +19025833 59832222 +18969221 59865608 +18936108 59869995 +18864719 59798050 +18934719 59783607 +18968609 59783607 +19073887 59774162 +19080555 59770554 +19082222 59765274 +19081944 59759720 +19075275 59740555 +19070000 59735832 +19032219 59719994 +18991386 59716660 +18980000 59716660 +18953609 59719994 +18841389 59712494 +18745552 59689163 +18717220 59671387 +18694443 59645271 +18699997 59642494 +18710278 59643326 +18728611 59646660 +18739998 59646660 +18744720 59642494 +18734165 59632500 +18666386 59591385 +18645554 59580551 +18378330 59467499 +18368332 59466385 +18317219 59473610 +18279720 59476662 +18270554 59474998 +18259443 59448051 +18259443 59444717 +18276665 59417770 +18281666 59413605 +18288330 59409996 +18299721 59407776 +18326111 59404442 +18335831 59401939 +18337498 59396660 +18331387 59392494 +18322220 59390831 +18311108 59390831 +18174999 59405548 +18164997 59408051 +18160000 59412216 +18162498 59417496 +18176941 59424438 +18188053 59424438 +18198055 59421661 +18203777 59427719 +18199276 59442551 +18198277 59445721 +18195831 59455276 +18186943 59456940 +18124443 59454720 +18115555 59453049 +18089722 59437218 +18084721 59431938 +18057220 59391388 +18088886 59367218 +18091389 59334442 +18007360 59344963 +17941109 59335548 +17928886 59336388 +17917500 59338608 +17897778 59343887 +17859165 59356110 +17832775 59364998 +17816109 59371109 +17801388 59377777 +17782776 59389160 +17764442 59400551 +17757774 59409996 +17757500 59421387 +17758888 59427498 +17779999 59485550 +17787220 59498329 +17791386 59504166 +17801941 59514717 +17816387 59521660 +17841663 59528328 +17845276 59533051 +17822777 59580826 +17816109 59590271 +17809166 59593887 +17751942 59638611 +17717220 59663330 +17724163 59653885 +17722221 59626106 +17718052 59620277 +17710552 59618889 +17642498 59637497 +17603962 59650627 +17592220 59656105 +17598331 59660271 +17607498 59661942 +17628052 59662216 +17640274 59663330 +17648331 59665833 +17652496 59671661 +17653339 59682129 +17654163 59718048 +17631298 59784073 +17628052 59788887 +17594166 59806938 +17587776 59804718 +17588055 59793610 +17586666 59787216 +17583611 59780548 +17579441 59774719 +17574444 59769722 +17542500 59749443 +17534443 59746941 +17513885 59744995 +17448055 59735550 +17444721 59676109 +17510555 59587219 +17520832 59579163 +17527496 59575554 +17535831 59572220 +17543152 59573006 +17521664 59611382 +17515553 59638329 +17513332 59654716 +17508888 59687775 +17508610 59693329 +17509998 59699440 +17513054 59706383 +17537498 59732216 +17588886 59736938 +17599998 59736938 +17611664 59734993 +17618332 59731384 +17620277 59726387 +17616108 59695549 +17561171 59668449 +17589706 59639427 +17694164 59607498 +17742222 59590553 +17757221 59583885 +17767498 59569717 +17786663 59535828 +17785000 59529442 +17737221 59446938 +17731110 59442772 +17719997 59442772 +17551941 59488609 +17543888 59491661 +17525276 59503052 +17520275 59507217 +17519089 59510254 +17518330 59512215 +17522499 59518051 +17546082 59536987 +17500275 59539719 +17490276 59542496 +17446941 59557220 +17438610 59560272 +17377777 59604721 +17372776 59608887 +17370831 59614166 +17370552 59619720 +17386108 59651108 +17383610 59654999 +17375553 59652222 +17344166 59622772 +17353333 59606110 +17370831 59583054 +17403332 59553329 +17406666 59548607 +17408607 59543327 +17419167 59492775 +17419441 59487221 +17418053 59481110 +17410000 59469162 +17398888 59469162 +17325554 59488052 +17261944 59504440 +17255276 59508049 +17185276 59538605 +17117222 59547775 +17068054 59543610 +17061943 59539444 +17031387 59536385 +17019165 59537216 +16949718 59543610 +16939720 59546104 +16864964 59584732 +16826385 59585274 +16786942 59558884 +16661663 59548050 +16658054 59552498 +16623055 59581665 +16616386 59585274 +16565277 59609161 +16551941 59610550 +16541943 59609444 +16533886 59606941 +16501663 59596382 +16495552 59591942 +16497498 59586937 +16521664 59571663 +16542221 59561104 +16547497 59556938 +16546108 59550827 +16543331 59543884 +16538330 59538887 +16489166 59502014 +16472500 59497498 +16329998 59467773 +16178055 59464996 +16168610 59465271 +16101665 59471107 +16091663 59473328 +16066387 59482498 +16044167 59492493 +16035553 59495552 +16025555 59497772 +16020275 59494995 +16022221 59489716 +16026108 59485275 +16041664 59473053 +16066109 59457771 +16072777 59454437 +16081387 59451385 +16101387 59446388 +16113052 59444443 +16169167 59439995 +16181389 59439438 +16261387 59442497 +16276417 59443985 +16304722 59450272 +16313889 59451942 +16334999 59453331 +16659443 59474159 +16669998 59473053 +16679996 59470551 +16686665 59467216 +16690277 59462494 +16700554 59454437 +16750000 59424164 +16806110 59390549 +16812775 59386940 +16822777 59384438 +16869999 59381386 +16881107 59381660 +16889999 59383331 +16893055 59389999 +16894165 59396111 +16892220 59401382 +16885555 59404999 +16862221 59405273 +16850830 59407494 +16842220 59410553 +16808887 59422493 +16792221 59428604 +16726665 59453606 +16697777 59467216 +16692776 59471382 +16693333 59476105 +16828888 59491386 +16840275 59489441 +16848888 59486382 +16897499 59467499 +16924442 59453331 +16935555 59446388 +16945831 59438332 +16954441 59429718 +16961388 59420273 +17111664 59374443 +17174442 59373055 +17280552 59356667 +17302219 59351944 +17310555 59348885 +17315552 59344719 +17317497 59339722 +17316109 59333328 +17311943 59327499 +17306110 59323326 +17298054 59320831 +17287777 59319717 +17263885 59290833 +17251942 59269722 +17253887 59258888 +17286942 59259048 +17291943 59257217 +17365276 59248604 +17375832 59247498 +17387775 59246941 +17398052 59247772 +17396111 59252777 +17386108 59261108 +17379444 59264717 +17364166 59277222 +17358887 59286942 +17355000 59297218 +17349442 59318329 +17350830 59324440 +17361942 59324715 +17413055 59312218 +17442776 59304718 +17470833 59296387 +17585831 59282219 +17740276 59269440 +17847221 59264442 +17908054 59297218 +17940552 59316666 +17947498 59320000 +17976387 59331383 +17984444 59333885 +17996666 59333054 +18016666 59322220 +18026386 59319717 +18052498 59316383 +18074718 59316666 +18133610 59318054 +18206944 59329437 +18242092 59347084 +18250832 59354439 +18272221 59364441 +18280277 59366943 +18289444 59368607 +18348610 59373329 +18392220 59368607 +18403610 59366661 +18439720 59354996 +18444721 59350830 +18441275 59344772 +18436943 59342773 +18432108 59341278 +18434998 59336388 +18454720 59331108 +18466663 59330276 +18474163 59334442 +18478611 59340271 +18478333 59345833 +18468609 59365555 +18450275 59394165 +18431389 59421104 +18428055 59425827 +18428055 59431389 +18434444 59433609 +18477219 59435272 +18498333 59430550 +18523052 59421104 +18529720 59417496 +18607777 59371941 +18612778 59368050 +18640274 59338882 +18648609 59324440 +18650276 59319160 +18646942 59312492 +18639721 59309166 +18630554 59307495 +18593052 59301666 +18522221 59295830 +18389164 59301941 +18377220 59302498 +18353611 59305550 +18343609 59307495 +18335278 59310555 +18337776 59316109 +18336498 59322052 +18328833 59325054 +18318886 59328331 +18277222 59310829 +18269444 59268608 +18309998 59219719 +18311386 59132500 +18230274 59118607 +18221386 59116943 +18140274 59090828 +18021385 59041939 +17895832 58909721 +17892776 58903053 +17891388 58896660 +17891941 58874161 +17894722 58858887 +17789444 58943054 +17756664 59018326 +17768887 59096664 +17768330 59113609 +17766666 59118889 +17764721 59123886 +17759163 59126663 +17668610 59166382 +17663887 59168327 +17624165 59074440 +17611664 59040550 +17610275 59034439 +17612221 59029442 +17617222 59025276 +17625553 59016388 +17628887 59011665 +17613609 58974716 +17578327 58950508 +17591389 58943604 +17630554 58914993 +17629166 58908882 +17626110 58901939 +17583332 58849442 +17578888 58845551 +17349998 58752220 +17271111 58736938 +17223610 58730553 +17156666 58732773 +17093609 58762497 +17083332 58763611 +17032776 58750549 +17028610 58746941 +17033607 58742775 +17082222 58723053 +17134163 58702217 +17145554 58700272 +17143055 58694717 +17138332 58689720 +17034443 58637215 +16915276 58616943 +16905277 58616104 +16893330 58616661 +16789719 58623604 +16736122 58628990 +16677776 58636940 +16461388 58655548 +16436386 58657494 +16412777 58658882 +16298332 58663055 +16242222 58664719 +16233608 58663055 +16193607 58627495 +16293331 58613609 +16370552 58605270 +16411663 58613327 +16432499 58637772 +16436665 58641388 +16649441 58620552 +16710831 58606667 +16727219 58600555 +16777496 58581383 +16928608 58492493 +16938610 58484161 +16834721 58445000 +16826942 58442215 +16809166 58438606 +16754444 58429443 +16737778 58428604 +16600555 58446938 +16578053 58450829 +16568619 58453239 +16548885 58458328 +16532497 58464439 +16514721 58469994 +16496666 58475273 +16475555 58479721 +16435555 58479996 +16425552 58479164 +16416943 58477219 +16413330 58474716 +16573055 58435829 +16683609 58410828 +16693886 58409721 +16709999 58403610 +16769997 58367218 +16788887 58322220 +16824718 58199440 +16825832 58176666 +16802818 58138672 +16764471 58125179 +16742811 58086124 +16731806 58049198 +16750275 58012772 +16743610 58009163 +16639252 57987495 +16622498 57988609 +16613888 57986938 +16621944 57983887 +16655502 57977745 +16671944 57980270 +16725277 57974159 +16733055 57971107 +16739998 57961937 +16744164 57953049 +16742561 57950333 +16773331 57923607 +16778053 57919441 +16779999 57914444 +16770554 57884438 +16763885 57881104 +16749443 57874992 +16741665 57872498 +16732498 57872772 +16659164 57883331 +16622219 57890274 +16613609 57892220 +16602497 57922775 +16606110 57925278 +16602776 57940277 +16518608 57996941 +16510555 57996384 +16502777 57993889 +16498608 57990273 +16495552 57985550 +16494442 57979439 +16522331 57877831 +16564331 57854164 +16677219 57765549 +16693333 57753883 +16703331 57745552 +16700706 57740150 +16692219 57738884 +16684444 57742218 +16618889 57771385 +16615555 57776108 +16611385 57786385 +16602776 57794716 +16590553 57802773 +16561108 57821388 +16554722 57824997 +16418610 57893326 +16418888 57887215 +16420830 57882500 +16463421 57849297 +16469753 57844627 +16476418 57839966 +16593775 57773163 +16605442 57766830 +16660553 57741104 +16692219 57721939 +16701942 57713882 +16710278 57705276 +16712498 57699997 +16625553 57619720 +16632500 57552216 +16689163 57485275 +16693333 57475273 +16693333 57469162 +16671387 57410828 +16664719 57407494 +16655830 57404999 +16636944 57403053 +16632221 57381660 +16631107 57376938 +16624165 57374443 +16600830 57377495 +16566387 57383331 +16554996 57383606 +16546108 57381660 +16541943 57376938 +16472221 57290276 +16467220 57276665 +16464722 57264442 +16455555 57205276 +16455276 57200554 +16458054 57178329 +16460278 57167496 +16467220 57158607 +16513885 57117218 +16523331 57116661 +16530277 57119438 +16539997 57120552 +16546108 57116943 +16563332 57093887 +16584164 57049438 +16584721 57043884 +16501663 57036659 +16492775 57039162 +16454441 56955276 +16440552 56893883 +16426666 56843605 +16407776 56795555 +16374996 56720833 +16308052 56654999 +16300552 56658333 +16290554 56659164 +16272499 56656662 +16253609 56646111 +16216110 56607216 +16123886 56461662 +16117222 56449715 +16104164 56425552 +16090553 56394997 +16054722 56313606 +16043331 56268883 +16008331 56217773 +15998610 56208328 +15865555 56092216 +15788610 56111938 +15775833 56147774 +15658888 56178886 +15598055 56194717 +15375277 56138054 +15225832 56151108 +15088888 56159996 +14848055 56161385 +14717222 56161659 +14696665 56161110 +14690554 56157776 +14686666 56152771 +14679722 56132500 +14679443 56120552 +14681944 56115555 +14686666 56111382 +14692778 56108055 +14709999 56102776 +14714722 56099159 +14750832 56059715 +14767776 56036385 +14766666 56030273 +14738333 56010826 +14719999 56000275 +14635277 56007500 +14620832 56029442 +14603611 56051941 +14558887 56057220 +14551388 56055275 +14541388 56051109 +14511665 56037498 +14369444 55958885 +14330276 55936943 +14263611 55886108 +14244720 55866943 +14232777 55851662 +14217222 55830276 +14207777 55812492 +14202776 55799721 +14200554 55792770 +14196665 55779716 +14193333 55766663 +14190832 55741661 +14191111 55731384 +14192221 55725830 +14196110 55715828 +14203333 55706940 +14217777 55694717 +14276943 55647217 +14341389 55578606 +14363333 55551941 +14370277 55542770 +14372776 55537773 +14369165 55531662 +14361944 55522774 +14336666 55501106 +14312498 55486664 +14193546 55386147 +14163055 55380272 +14122499 55379440 +14058887 55386108 +14037498 55389442 +14004721 55405830 +13969444 55421104 +13935833 55431389 +13911943 55433884 +13891388 55433609 +13730555 55425552 +13710278 55424164 +13641666 55417496 +13632221 55415833 +13497776 55382217 +13465832 55373604 +13429722 55356667 +13418333 55352493 +13375555 55339996 +13344721 55339165 +13300833 55340828 +13289999 55341942 +12982222 55400551 +12918055 55538605 +12916388 55544167 +12914444 55562218 +12914721 55565552 +12916388 55568329 +12922499 55574715 +12931110 55581108 +12960278 55591110 +12981943 55599159 +13034721 55623886 +13040554 55627495 +13044998 55632500 +13058887 55662773 +13063332 55682220 +13062498 55684998 +13059721 55693054 +12928055 55823051 +12912777 55838051 +12681389 56061943 +12663610 56078606 +12633888 56103050 +12623888 56107773 +12615000 56109444 +12609722 56111664 +12581110 56141663 +12453054 56293327 +12451666 56297775 +12461666 56298332 +12473888 56297218 +12629166 56258888 +12645277 56253326 +12718681 56222778 +12787222 56222221 +12794443 56223053 +12801943 56225555 +12813332 56232773 +12824165 56241661 +12830089 56250000 +12831665 56252220 +12834721 56258049 +12834999 56264160 +12833055 56269165 +12740833 56352219 +12730555 56359444 +12723888 56363052 +12676109 56379715 +12663887 56380272 +12644722 56384720 +12636665 56387772 +12626110 56395271 +12622776 56399994 +12622221 56411942 +12626389 56424721 +12628611 56431389 +12631943 56436943 +12635555 56442215 +12641388 56446106 +12672777 56463608 +12679722 56466385 +12721943 56467499 +12732498 56467499 +12749166 56464722 +12785831 56450272 +12793333 56447777 +12812498 56443329 +12832777 56439720 +12852650 56439919 +12868610 56441383 +12876110 56443604 +12883610 56446388 +12901110 56457222 +12910831 56466942 +12918055 56478333 +12930277 56501106 +12937498 56521111 +12936943 56532494 +12933332 56543327 +12931389 56548332 +12917221 56578606 +12887499 56638329 +12876665 56646385 +12869165 56648888 +12821665 56658333 +12813332 56656662 +12785000 56643608 +12758055 56639999 +12725277 56639717 +12718611 56643326 +12670832 56676109 +12613609 56746941 +12599998 56777771 +12598331 56783333 +12599165 56795830 +12601387 56802498 +12599998 56808052 +12597500 56813332 +12593332 56817497 +12579443 56830276 +12573889 56833885 +12484722 56881660 +12468332 56887772 +12418055 56897217 +12350277 56914444 +12347500 56919167 +12349998 56969994 +12286110 57032494 +12253611 57048050 +12237778 57059715 +12149443 57183884 +12146666 57188332 +12109999 57250000 +12134722 57275551 +12148611 57281105 +12151388 57287216 +12145832 57309166 +12094999 57426941 +12058332 57454720 +12051388 57457771 +12043888 57459717 +12036943 57456940 +12011665 57434166 +12007776 57428886 +12005833 57422218 +12008610 57411385 +12007776 57404999 +11989443 57347496 +11986111 57341385 +11979166 57343605 +11942778 57376106 +11917776 57402222 +11904165 57421944 +11901388 57426666 +11906666 57514999 +11911112 57526649 +11913332 57528610 +11915833 57534439 +11922222 57563889 +11913332 57613609 +11910555 57618607 +11906387 57623329 +11897499 57624443 +11894444 57618332 +11862499 57607773 +11830000 57661385 +11868610 57680550 +11887777 57693886 +11750555 57688889 +11741388 57688606 +11704443 57693329 +11698889 57697220 +11699720 57715828 +11723055 57807220 +11668055 57845833 +11688055 57881660 +11694166 57885277 +11702221 57887215 +11711666 57889160 +11741388 57892220 +11757221 57897217 +11795555 58006104 +11801388 58026382 +11800554 58038055 +11799166 58043884 +11793610 58048050 +11776667 58053143 +11776667 58059441 +11796110 58095276 +11837221 58154716 +11870277 58191109 +11880833 58199997 +11884722 58205276 +11886110 58211937 +11798054 58318329 +11734999 58328331 +11723331 58328888 +11622776 58276108 +11607498 58262772 +11594721 58255272 +11536110 58230270 +11526388 58230553 +11515833 58231941 +11495277 58236107 +11405554 58261108 +11384165 58311943 +11238333 58346939 +11201387 58399437 +11235554 58505272 +11254166 58551109 +11257221 58556938 +11266388 58579437 +11261110 58632217 +11259443 58637772 +11252222 58653053 +11247776 58657494 +11210278 58679718 +11180832 58709160 +11178055 58713882 +11176943 58730827 +11181665 58747772 +11200832 58769997 +11218054 58784164 +11229166 58792221 +11233889 58796944 +11236111 58803604 +11233055 58833054 +11231388 58845276 +11194166 58917496 +11166666 58924438 +11131943 58935272 +11123055 58938332 +11115833 58941383 +11106943 58949997 +11113333 59003609 +11119165 59015831 +11127499 59026382 +11166388 59064438 +11172499 59068604 +11186666 59074997 +11204166 59079437 +11265554 59093887 +11314999 59101387 +11324999 59099159 +11338333 59091942 +11349998 59084442 +11373333 59050827 +11401667 59012772 +11419443 58989716 +11427082 58985786 +11429192 58987640 +11423054 58926666 +11422777 58920273 +11424999 58903053 +11426109 58897217 +11427776 58893051 +11431944 58888611 +11439165 58885277 +11450832 58883888 +11463055 58883606 +11496666 58884720 +11585833 58896660 +11599968 58899185 +11621387 58904716 +11626665 58909164 +11751110 59090271 +11753054 59097221 +11751944 59102776 +11746387 59112778 +11742222 59117493 +11739443 59122498 +11739443 59127220 +11750832 59174438 +11754444 59188049 +11759165 59200829 +11764721 59211662 +11769547 59217537 +11784721 59230270 +11792288 59236641 +11795277 59239166 +11798332 59245277 +11798887 59257774 +11796944 59275276 +11790833 59303329 +11783054 59324715 +11739166 59429718 +11667776 59591660 +11666248 59595482 +11756388 59635551 +11764166 59638329 +11781666 59642776 +11811666 59646942 +11820555 59648888 +11828333 59651939 +11896387 59695000 +11900833 59701111 +11902777 59707771 +11903332 59720276 +11903055 59738327 +11898848 59772469 +11896387 59784721 +11891109 59794716 +11886665 59799164 +11881109 59803886 +11869444 59811661 +11815960 59846100 +11852777 59861382 +11875832 59869995 +11956944 59896942 +11968054 59897774 +11980000 59896111 +11998055 59890549 +12008333 59888611 +12034166 59886108 +12107222 59885826 +12129721 59886940 +12139999 59888329 +12163055 59896942 +12191944 59910271 +12310276 59968887 +12323610 59976387 +12461943 60063606 +12476944 60076385 +12489166 60098328 +12494165 60111107 +12496387 60118050 +12498333 60124718 +12502777 60144722 +12507500 60169441 +12508055 60175552 +12508333 60181938 +12507776 60193604 +12504444 60210548 +12527777 60334160 +12537777 60343887 +12571943 60378052 +12589722 60399162 +12597500 60424995 +12602777 60442772 +12607498 60462494 +12608055 60468605 +12605833 60479996 +12594444 60516937 +12587500 60526665 +12505833 60629997 +12424999 60710274 +12386110 60750832 +12378887 60760277 +12364721 60779442 +12353611 60799721 +12351110 60804718 +12336111 60835831 +12308611 60887215 +12271944 60946106 +12245554 60973053 +12233610 60980827 +12217222 60993050 +12212776 60997498 +12209999 61002495 +12215555 61006943 +12222500 61010826 +12247776 61018608 +12294167 61029442 +12388054 61050552 +12407776 61053886 +12432499 61054443 +12458055 61053886 +12500277 61050827 +12567221 61048050 +12602221 61049721 +12621944 61053055 +12637825 61057541 +12670277 61087776 +12772221 61200829 +12796665 61244995 +12831110 61312218 +12856110 61362495 +12773888 61414719 +12529999 61566109 +12523054 61567215 +12481388 61569443 +12468332 61569717 +12444721 61568604 +12430277 61569443 +12406666 61573326 +12392776 61580551 +12144444 61717499 +12124443 61728607 +12159443 61844444 +12169998 61878609 +12181665 61912498 +12200277 61963333 +12214998 62006104 +12258610 62142494 +12294617 62258217 +12295832 62261665 +12291666 62272499 +12271387 62308052 +12256388 62327217 +12245344 62337982 +12209999 62389999 +12199720 62404716 +12184444 62423882 +12172222 62437775 +12149166 62460274 +12084721 62529160 +12047499 62589996 +12046665 62665276 +12072777 62715828 +12089443 62749443 +12066666 62803055 +12050278 62838882 +12028889 62892494 +12058332 62918610 +12113333 62967216 +12151110 62999443 +12168610 63015831 +12144165 63045273 +12036943 63173882 +12027491 63182449 +11936388 63272217 +11998888 63323883 +12078333 63388329 +12137220 63436661 +12195000 63485275 +12178610 63512215 +12139444 63584160 +12153889 63594994 +12346666 63728882 +12473055 63833328 +12530832 63872772 +12633888 63942772 +12681944 63967216 +12794443 64007217 +12846943 64025269 +12938055 64053329 +12988333 64064438 +13032221 64071106 +13135555 64083603 +13193609 64089996 +13230000 64093048 +13291388 64086655 +13981667 64013046 +13988333 64018051 +14146666 64173874 +14154722 64185822 +14151388 64333603 +14149721 64344986 +14116388 64470551 +14032499 64488052 +13900833 64507492 +13820276 64529434 +13682220 64571106 +13663332 64577209 +13662498 64582764 +13664999 64589722 +13676943 64607773 +13696943 64629440 +13707499 64639709 +13725571 64652267 +13832777 64733322 +13879166 64771103 +13955832 64835541 +14091389 64949158 +14235277 65048874 +14296438 65102127 +14308832 65115234 +14319443 65129990 +14329166 65149719 +14356110 65208603 +14368889 65246658 +14493055 65313599 +14494444 65358887 +14493610 65376389 +14495277 65446381 +14497221 65516098 +14500555 65585831 +14532221 65696106 +14535000 65702774 +14539444 65708878 +14565277 65736374 +14588055 65756943 +14603888 65773331 +14621387 65797211 +14631666 65816666 +14634722 65826935 +14608889 65876389 +14580276 65931107 +14569443 65949432 +14540554 66007492 +14534721 66025269 +14519165 66078888 +14509165 66114716 +14504999 66132492 +14717777 66140549 +14981388 66149155 +15025276 66149994 +15468054 66283875 +15446854 66321381 +15400555 66406937 +15371387 66461655 +15362778 66479996 +15527777 66558044 +15625832 66605820 +15731110 66684998 +16009998 66890823 +16353886 67017776 +16405830 67163330 +16399166 67177765 +16361385 67237778 +16337498 67260818 +16261944 67305542 +16220554 67329987 +16204720 67337494 +16161663 67355820 +16138611 67367493 +16111111 67383606 +16104164 67387772 +16089722 67401657 +16086941 67406662 +16085831 67411652 +16192219 67500000 +16206108 67501663 +16382500 67515549 +16403332 67529999 +16508331 67609161 +16570274 67656937 +16576942 67665543 +16588055 67682220 +16620277 67732208 +16684719 67832214 +16726944 67899155 +17188332 68030273 +17234547 68062103 +17252583 68074570 +17273609 68090546 +17592499 68029709 +17648888 68014160 +17680275 68004440 +17743332 67984711 +17801941 67964157 +17820000 67956940 +17831108 67953598 +17858055 67948608 +17884163 67945541 +17939720 67997772 +18135555 68150269 +18155277 68166107 +18103886 68280823 +18085831 68317764 +18069443 68354431 +18053333 68391098 +18045830 68409439 +18058052 68439987 +18081665 68490829 +18090832 68507767 +18099541 68508926 +18149441 68515274 +18358055 68539154 +18611942 68475266 +18952221 68487778 +19413330 68419434 +19543888 68399719 +19717220 68372772 +19860554 68349991 +19898331 68341385 +19923885 68336655 +19937775 68337494 +19948055 68340820 +19956665 68344711 +19964165 68349716 +19976665 68361374 +20006664 68381104 +20030277 68394989 +20048054 68403320 +20075832 68414719 +20167221 68443878 +20175831 68448044 +20198608 68462769 +20208611 68475830 +20211109 68482208 +20088055 68501663 +19956387 68543884 +20063053 68583054 +20177219 68646942 +20202499 68662216 +20238331 68691376 +20313889 68754715 +20350277 68786652 +20314720 68928329 +20238888 68968597 +20096943 69042221 +20535275 69056381 +20580929 69060303 +20604164 69053055 +20650063 69043793 +20744164 69031097 +20791664 69023331 +20846386 69011932 +20866665 69004990 +20884441 68997498 +20908886 68985550 +20928608 68973053 +20932777 68968323 +20938889 68958328 +20938332 68952774 +20931110 68946381 +20915554 68939438 +20888885 68925827 +20883053 68913330 +20882774 68907776 +20888611 68898041 +20895275 68893600 +20904163 68889999 +20915276 68886658 +20944721 68881378 +20959442 68879990 +20990833 68879440 +21024719 68877487 +21058887 68873322 +21081387 68866653 +21207775 68819717 +21216663 68816101 +21420555 68724152 +21448608 68691101 +21452774 68686661 +21465553 68678055 +21487499 68671387 +21500832 68668320 +21550552 68661652 +21585278 68658600 +21601109 68656097 +21623055 68649429 +21642776 68642487 +21701664 68620819 +21710278 68617218 +21714165 68612488 +21711109 68606384 +21710552 68600555 +21718330 68591110 +21735554 68583603 +21757500 68576935 +21773331 68574432 0 1 1 2 2 3 @@ -5236,4 +5236,4 @@ 2615 2616 2616 2617 2617 2618 -2618 458 \ No newline at end of file +2618 458 diff --git a/test/CDT.Tests/inputs/Hanging.txt b/test/CDT.Tests/inputs/Hanging.txt index 83a6cb0..1de7531 100644 --- a/test/CDT.Tests/inputs/Hanging.txt +++ b/test/CDT.Tests/inputs/Hanging.txt @@ -1,9 +1,9 @@ 7 1 -725.0 415.0 -855.0 390.0 -945.0 455.0 -1100.0 373.0 -1215.0 410.0 -1250.0 510.0 -943.0 540.0 -0 4 \ No newline at end of file +725000000 415000000 +855000000 390000000 +945000000 455000000 +1100000000 373000000 +1215000000 410000000 +1250000000 510000000 +943000000 540000000 +0 4 diff --git a/test/CDT.Tests/inputs/Hanging2.txt b/test/CDT.Tests/inputs/Hanging2.txt index 3e248e7..74ad328 100644 --- a/test/CDT.Tests/inputs/Hanging2.txt +++ b/test/CDT.Tests/inputs/Hanging2.txt @@ -1,17 +1,17 @@ 13 9 -111 344 -157 282 -151 306 -272 304 -266 340 -362 301 -341 328 -380 330 -370 236 -426 344 -269 422 -248 356 -288 356 +111000000 344000000 +157000000 282000000 +151000000 306000000 +272000000 304000000 +266000000 340000000 +362000000 301000000 +341000000 328000000 +380000000 330000000 +370000000 236000000 +426000000 344000000 +269000000 422000000 +248000000 356000000 +288000000 356000000 0 1 1 2 2 3 @@ -20,4 +20,4 @@ 6 7 7 8 8 9 -0 9 \ No newline at end of file +0 9 diff --git a/test/CDT.Tests/inputs/HangingIntersection.txt b/test/CDT.Tests/inputs/HangingIntersection.txt index a006e50..0842e6e 100644 --- a/test/CDT.Tests/inputs/HangingIntersection.txt +++ b/test/CDT.Tests/inputs/HangingIntersection.txt @@ -1,10 +1,10 @@ 7 2 -725.0 415.0 -855.0 390.0 -945.0 455.0 -1100.0 373.0 -1215.0 410.0 -1250.0 510.0 -943.0 540.0 +725000000 415000000 +855000000 390000000 +945000000 455000000 +1100000000 373000000 +1215000000 410000000 +1250000000 510000000 +943000000 540000000 3 5 -0 4 \ No newline at end of file +0 4 diff --git a/test/CDT.Tests/inputs/Letter u.txt b/test/CDT.Tests/inputs/Letter u.txt index 7dccc01..4043a0c 100644 --- a/test/CDT.Tests/inputs/Letter u.txt +++ b/test/CDT.Tests/inputs/Letter u.txt @@ -1,12 +1,12 @@ 8 8 0 0 -4 0 -4 1 -2 1 -2 2 -4 2 -4 3 -0 3 +4000000 0 +4000000 1000000 +2000000 1000000 +2000000 2000000 +4000000 2000000 +4000000 3000000 +0 3000000 0 1 1 2 2 3 @@ -14,4 +14,4 @@ 4 5 5 6 6 7 -7 0 \ No newline at end of file +7 0 diff --git a/test/CDT.Tests/inputs/OnEdge.txt b/test/CDT.Tests/inputs/OnEdge.txt index 50f382c..6d307e4 100644 --- a/test/CDT.Tests/inputs/OnEdge.txt +++ b/test/CDT.Tests/inputs/OnEdge.txt @@ -1,21 +1,21 @@ 20 0 -0 0 -1 0 -1 1 -0 1 -0.01 0.01 -0.03 0.03 -0.06 0.06 -0.12 0.12 -0.24 0.24 -0.5 0.5 -0.96 0.96 -0.001 0.001 -0.02 0.02 -0.4 0.4 -0.8 0.8 -0.9 0.1 -0.8 0.2 -0.6 0.4 -0.3 0.7 -0.1 0.9 \ No newline at end of file +0 0 +1000000 0 +1000000 1000000 +0 1000000 +10000 10000 +30000 30000 +60000 60000 +120000 120000 +240000 240000 +500000 500000 +960000 960000 +1000 1000 +20000 20000 +400000 400000 +800000 800000 +900000 100000 +800000 200000 +600000 400000 +300000 700000 +100000 900000 diff --git a/test/CDT.Tests/inputs/ProblematicCase1.txt b/test/CDT.Tests/inputs/ProblematicCase1.txt index 254faba..7908699 100644 --- a/test/CDT.Tests/inputs/ProblematicCase1.txt +++ b/test/CDT.Tests/inputs/ProblematicCase1.txt @@ -1,10 +1,10 @@ 8 1 -0 0 -6 2 -8 1 -10 2 -16 0 -10 -2 -8 -1 -6 -2 -0 4 \ No newline at end of file +0 0 +6000000 2000000 +8000000 1000000 +10000000 2000000 +16000000 0 +10000000 -2000000 +8000000 -1000000 +6000000 -2000000 +0 4 diff --git a/test/CDT.Tests/inputs/cdt.txt b/test/CDT.Tests/inputs/cdt.txt index 9aa25ca..05e5d3f 100644 --- a/test/CDT.Tests/inputs/cdt.txt +++ b/test/CDT.Tests/inputs/cdt.txt @@ -1,105 +1,105 @@ 101 103 -765 1970 -640.016 1942.47 -530.875 1900.5 -433.547 1842.03 -344 1765 -269.5 1681.12 -216 1589 -147.75 1407.25 -123 1197 -129.445 982.248 -166.875 795.422 -234.305 637.541 -330.75 509.625 -455.227 412.693 -606.75 347.766 -784.336 315.861 -987 318 -1148.38 339.875 -1258 370 -1276.5 390 -1280 455 -1279.23 504.359 -1268.62 525.875 -1168 509 -937.375 482.375 -730 494 -619.781 533.922 -526.25 593.625 -449.594 673.016 -390 772 -332.375 951.125 -322 1179 -330.75 1317.5 -350 1405 -397.844 1521 -461.25 1619 -539.281 1697.5 -631 1755 -759 1800 -863.391 1810.11 -977.625 1805.12 -1091.3 1786.08 -1194 1754 -1257 1730 -1300 1809 -1339 1888 -1267 1914 -1125 1955 -940.875 1974.12 -3080 1875 -3080 1790 -3335 1790 -3590 1790 -3590 1065 -3590 340 -3685 340 -3780 340 -3780 1065 -3780 1790 -4035 1790 -4290 1790 -4290 1875 -4290 1960 -3685 1960 -3080 1960 -1630 1141 -1630 330 -1883 330 -2196.38 338.875 -2389 371 -2527.62 424.547 -2651.25 503.875 -2753.5 604.016 -2828 720 -2896.5 915.625 -2914 1160 -2909.38 1317.38 -2892 1414 -2819.53 1595.61 -2711.25 1740.38 -2566.59 1848.95 -2385 1922 -2265 1941 -1968 1948 -1630 1952 -2320 1767 -2458.41 1708.47 -2567.75 1622.75 -2648.22 1509.66 -2700 1369 -2721 1150 -2700 931 -2644.95 783.922 -2558.12 665.625 -2439.98 576.766 -2291 518 -2018 493 -1820 487 -1820 1140 -1820 1792 -2043 1787 +765000000 1970000000 +640016000 1942470000 +530875000 1900500000 +433547000 1842030000 +344000000 1765000000 +269500000 1681120000 +216000000 1589000000 +147750000 1407250000 +123000000 1197000000 +129445000 982248000 +166875000 795422000 +234305000 637541000 +330750000 509625000 +455227000 412693000 +606750000 347766000 +784336000 315861000 +987000000 318000000 +1148380000 339875000 +1258000000 370000000 +1276500000 390000000 +1280000000 455000000 +1279230000 504359000 +1268620000 525875000 +1168000000 509000000 +937375000 482375000 +730000000 494000000 +619781000 533922000 +526250000 593625000 +449594000 673016000 +390000000 772000000 +332375000 951125000 +322000000 1179000000 +330750000 1317500000 +350000000 1405000000 +397844000 1521000000 +461250000 1619000000 +539281000 1697500000 +631000000 1755000000 +759000000 1800000000 +863391000 1810110000 +977625000 1805120000 +1091300000 1786080000 +1194000000 1754000000 +1257000000 1730000000 +1300000000 1809000000 +1339000000 1888000000 +1267000000 1914000000 +1125000000 1955000000 +940875000 1974120000 +3080000000 1875000000 +3080000000 1790000000 +3335000000 1790000000 +3590000000 1790000000 +3590000000 1065000000 +3590000000 340000000 +3685000000 340000000 +3780000000 340000000 +3780000000 1065000000 +3780000000 1790000000 +4035000000 1790000000 +4290000000 1790000000 +4290000000 1875000000 +4290000000 1960000000 +3685000000 1960000000 +3080000000 1960000000 +1630000000 1141000000 +1630000000 330000000 +1883000000 330000000 +2196380000 338875000 +2389000000 371000000 +2527620000 424547000 +2651250000 503875000 +2753500000 604016000 +2828000000 720000000 +2896500000 915625000 +2914000000 1160000000 +2909380000 1317380000 +2892000000 1414000000 +2819530000 1595610000 +2711250000 1740380000 +2566590000 1848950000 +2385000000 1922000000 +2265000000 1941000000 +1968000000 1948000000 +1630000000 1952000000 +2320000000 1767000000 +2458410000 1708470000 +2567750000 1622750000 +2648220000 1509660000 +2700000000 1369000000 +2721000000 1150000000 +2700000000 931000000 +2644950000 783922000 +2558120000 665625000 +2439980000 576766000 +2291000000 518000000 +2018000000 493000000 +1820000000 487000000 +1820000000 1140000000 +1820000000 1792000000 +2043000000 1787000000 0 1 1 2 2 3 @@ -202,4 +202,4 @@ 97 98 98 99 99 100 -85 100 \ No newline at end of file +85 100 diff --git a/test/CDT.Tests/inputs/corner cases.txt b/test/CDT.Tests/inputs/corner cases.txt index 600fb72..af58f99 100644 --- a/test/CDT.Tests/inputs/corner cases.txt +++ b/test/CDT.Tests/inputs/corner cases.txt @@ -1,19 +1,19 @@ 12 6 -0 1 -2 2 -4 2 -2 0 -4 0 -6 1 -8 1 -10 2 -12 2 -10 0 -12 0 -14 1 +0 1000000 +2000000 2000000 +4000000 2000000 +2000000 0 +4000000 0 +6000000 1000000 +8000000 1000000 +10000000 2000000 +12000000 2000000 +10000000 0 +12000000 0 +14000000 1000000 0 11 0 6 1 3 2 4 7 9 -8 10 \ No newline at end of file +8 10 diff --git a/test/CDT.Tests/inputs/crossing-edges.txt b/test/CDT.Tests/inputs/crossing-edges.txt index f5dcfef..56d1991 100644 --- a/test/CDT.Tests/inputs/crossing-edges.txt +++ b/test/CDT.Tests/inputs/crossing-edges.txt @@ -1,7 +1,7 @@ 4 2 -0 0.2 -1 0 -1 1 -0 1 +0 200000 +1000000 0 +1000000 1000000 +0 1000000 0 2 -1 3 \ No newline at end of file +1 3 diff --git a/test/CDT.Tests/inputs/debug2.txt b/test/CDT.Tests/inputs/debug2.txt index 0febdff..bb8144c 100644 --- a/test/CDT.Tests/inputs/debug2.txt +++ b/test/CDT.Tests/inputs/debug2.txt @@ -1,20001 +1,20001 @@ -10000 10000 -1.7978594 0.0 -2.169727 0.0013632799 -2.0489786 0.0025748236 -1.6864972 0.0031789762 -1.0627707 0.00267104 -1.6071618 0.005049064 -1.6630353 0.006269525 -1.6853083 0.007412421 -2.3962605 0.01204502 -2.69772 0.01525541 -1.8586487 0.011678387 -1.2379591 0.008556296 -0.99997157 0.007539751 -0.9999666 0.00816805 -0.9999613 0.008796346 -1.094976 0.010320211 -0.99994946 0.010052927 -1.6568905 0.017698608 -0.99993604 0.011309492 -1.1163418 0.01332758 -1.8877816 0.02372381 -2.2771854 0.030048497 -1.6972358 0.023462398 -2.6236942 0.0379185 -2.1719406 0.032754574 -2.360686 0.03708462 -1.4552166 0.023774944 -1.4864751 0.025219876 -1.76546 0.031062799 -2.5270119 0.04605038 -3.2688243 0.061623186 -3.4130046 0.066486485 -2.6731117 0.053753342 -2.2180197 0.04599615 -3.164733 0.06761794 -3.9363818 0.08657952 -3.3517597 0.07582795 -4.044233 0.0940364 -3.7059002 0.08849928 -4.0557427 0.09940354 -4.361124 0.10963009 -4.0949254 0.10551296 -4.6946487 0.12391763 -4.998175 0.13507205 -4.655135 0.12872873 -3.7623806 0.106407166 -3.1308353 0.09051465 -3.2166011 0.09501698 -3.5193026 0.10617186 -4.3538027 0.13408554 -3.9907873 0.12541555 -4.7500095 0.15226258 -4.866436 0.15905555 -4.9972277 0.16647364 -4.9971223 0.16961345 -4.9970145 0.1727532 -4.9969053 0.17589289 -4.1949663 0.15030344 -3.4655058 0.12634754 -3.3054788 0.12259288 -3.9340208 0.14837939 -3.8695972 0.14838438 -3.068128 0.11958172 -3.946806 0.15631229 -3.8481493 0.15482672 -4.718885 0.19282982 -4.9957013 0.20728569 -4.3171177 0.18184662 -4.2851877 0.18319896 -4.636052 0.20111732 -3.843115 0.1691381 -4.362732 0.19475336 -4.594191 0.20797822 -4.9947414 0.22925586 -4.9945965 0.2323941 -4.8435216 0.22841468 -4.9943004 0.23867032 -4.7408743 0.22954512 -3.9247332 0.19250078 -4.220373 0.20965958 -3.699524 0.18611513 -4.1924624 0.21355477 -3.2451725 0.16734627 -3.4447136 0.17980635 -3.5150497 0.18569241 -3.6776235 0.19659807 -3.592833 0.19432932 -3.3920538 0.18560717 -3.2720444 0.18110257 -3.7714345 0.21112004 -4.365902 0.24714944 -4.3015323 0.24621701 -3.7550535 0.21730411 -3.7551496 0.21967708 -2.968291 0.17551716 -2.7835357 0.1663476 -2.0111475 0.12145689 -1.3024743 0.0794802 -2.0550237 0.1266987 -1.2980847 0.08084976 -0.9980267 0.06279052 -1.6367681 0.10400925 -2.5889218 0.16614762 -2.7922206 0.1809563 -2.8847034 0.18877007 -2.8067324 0.18543893 -2.543304 0.16963944 -1.6103534 0.1084276 -2.3174198 0.15749823 -2.7633264 0.18954761 -3.5593708 0.24639851 -3.5086868 0.24510513 -3.6978762 0.26065615 -2.8584502 0.20329167 -3.46055 0.24829815 -3.6293004 0.26269835 -3.513185 0.2565127 -4.1487064 0.30553558 -4.3572793 0.32364884 -4.105765 0.30756098 -4.4923887 0.33936146 -3.7916536 0.28882298 -4.734978 0.3636717 -3.9604273 0.30668524 -2.9980001 0.23405246 -2.008754 0.15809236 -2.0184345 0.16013038 -1.0236973 0.081861235 -1.493009 0.12033446 -1.6629218 0.13508089 -2.1296542 0.17434105 -1.6722152 0.13795125 -1.16575 0.096907325 -0.9965104 0.08346914 -1.1110308 0.09376455 -1.6951773 0.14413588 -1.8663319 0.15986983 -2.419661 0.20879953 -3.3382773 0.2901828 -2.9300597 0.25655314 -3.5598826 0.31395382 -2.7737353 0.24637821 -2.417626 0.21627775 -2.6684914 0.24041003 -3.2134857 0.29154533 -2.953762 0.26985303 -3.2648394 0.30034137 -3.1519868 0.2919571 -3.81286 0.35558775 -3.301635 0.31000352 -2.3776062 0.22474995 -1.4221512 0.13533446 -1.6646197 0.15946366 -1.1452565 0.11043706 -1.9464625 0.18893176 -2.335352 0.22816026 -1.7261636 0.16973852 -1.908468 0.18887581 -1.5438403 0.1537692 -2.1087697 0.21137536 -2.815288 0.28398097 -2.909063 0.2952867 -2.1796808 0.2226339 -2.2038903 0.22650595 -2.9517286 0.30523977 -2.4489138 0.25479868 -3.0541894 0.31971484 -3.604426 0.37960368 -3.5199506 0.3729434 -3.4725618 0.37012905 -4.338221 0.46515378 -3.7667542 0.40627387 -4.255329 0.46167552 -4.4500594 0.48563167 -4.9701486 0.54554886 -4.4272385 0.48877168 -4.0468373 0.44934887 -3.1114953 0.3474705 -2.8025632 0.31475407 -2.3611517 0.2666818 -2.0342784 0.23105745 -2.209237 0.25233573 -1.4970498 0.17194374 -2.0685868 0.23890463 -2.812904 0.3266582 -1.8440902 0.21532574 -1.5586461 0.18298852 -1.8387069 0.21703959 -2.2585914 0.26804143 -3.0188284 0.36018726 -3.3462064 0.40138048 -2.8746135 0.34664476 -3.8334138 0.4647087 -2.973372 0.36234525 -2.1962414 0.269042 -2.7351553 0.33680403 -2.4315257 0.30096644 -2.7863553 0.34666383 -3.1124835 0.38922504 -3.4862185 0.4381866 -3.401166 0.42966717 -3.164649 0.40180844 -4.0720315 0.5196167 -3.3039744 0.42371777 -3.6049 0.4646124 -3.9105535 0.50650424 -3.6513877 0.47526935 -3.0658374 0.4010125 -2.3510714 0.3090235 -2.2356977 0.29528797 -2.051136 0.27222267 -1.4195482 0.18930729 -1.5313287 0.20519342 -1.1483685 0.15461247 -1.1887667 0.16081208 -1.9749589 0.26842904 -2.1299717 0.29086095 -3.0370753 0.4166756 -3.2544174 0.4485776 -3.0264945 0.41909942 -2.6480925 0.36839542 -2.995139 0.41859403 -2.4384887 0.34236002 -2.5218391 0.35567823 -2.3373678 0.3311585 -2.9618657 0.4215359 -3.7591395 0.5374148 -3.5042036 0.50321555 -3.2728717 0.4720945 -2.6581032 0.38512242 -2.5648456 0.3732562 -3.4547172 0.504974 -2.8496995 0.4183679 -3.2387965 0.47757074 -3.4215693 0.506718 -3.3476143 0.49791527 -2.6557877 0.3967206 -1.9565938 0.29353216 -1.7260344 0.2600522 -1.3675108 0.20691422 -0.98865175 0.1502256 -1.4348994 0.21895538 -2.3353188 0.35785457 -2.310307 0.3555077 -2.7435153 0.42393416 -1.8700575 0.29016864 -1.3502214 0.21037684 -1.9542744 0.30575165 -2.8409932 0.44631016 -2.3778741 0.37508687 -1.7225031 0.2728177 -0.98758984 0.15705502 -0.98749095 0.1576755 -1.7092874 0.27402827 -1.4915646 0.24008493 -0.98719203 0.1595366 -1.471602 0.23876926 -1.9423537 0.316402 -2.2024422 0.3601901 -1.52263 0.24999517 -1.6398091 0.2702926 -2.169337 0.3589758 -3.1275113 0.5195509 -3.3453982 0.5579071 -2.5238473 0.42252833 -1.7089231 0.28720227 -2.5076237 0.42305243 -2.368479 0.4011085 -3.2069638 0.5451812 -2.5432236 0.43399027 -1.9066827 0.32660028 -2.7750745 0.4771442 -2.3823018 0.41115242 -1.8909991 0.32758403 -1.3251514 0.23041807 -1.8546113 0.3236815 -1.0022409 0.17556801 -1.8663952 0.32815546 -2.5136034 0.44357798 -2.3740668 0.4204921 -2.6883235 0.47789523 -3.2369087 0.57751393 -2.7310317 0.4890285 -3.6290631 0.6521869 -4.3791394 0.78982544 -3.6309483 0.6572369 -3.1841025 0.57841986 -2.3923588 0.43614566 -1.9028279 0.34813583 -1.7964793 0.3298453 -2.1843839 0.40248603 -1.91568 0.35422036 -2.0612435 0.38247547 -2.288435 0.4261197 -2.2109392 0.413127 -2.0968287 0.39316842 -2.26562 0.4262916 -2.2647018 0.42759237 -2.8728158 0.5442784 -2.2691731 0.43139043 -3.1297777 0.597037 -3.2370496 0.6196084 -3.4137802 0.65566045 -3.5809062 0.6900924 -3.3848536 0.6545162 -4.174081 0.8098471 -4.7632465 0.9272618 -4.907268 0.9584991 -3.9453518 0.7731892 -3.879609 0.7628368 -3.019923 0.5957702 -2.2460012 0.44455728 -3.142536 0.624063 -3.5244336 0.7022045 -4.4598913 0.891498 -4.7694073 0.95648474 -4.315288 0.86823386 -3.9150803 0.790272 -3.609739 0.73099864 -3.557117 0.7226692 -4.2731667 0.8709391 -3.9823153 0.8142654 -4.8624544 0.997411 -4.3784466 0.9009961 -3.9309776 0.81149083 -2.9527123 0.6114773 -2.14933 0.44651335 -2.6959157 0.5618313 -2.1077273 0.4406343 -2.5878174 0.5426976 -1.9436481 0.40888235 -0.9784514 0.20647743 -0.97832143 0.20709217 -0.97819114 0.20770682 -1.1636518 0.24785133 -0.97792935 0.20893589 -0.97779787 0.2095503 -0.977666 0.21016462 -1.5163323 0.32695627 -2.4749475 0.53528345 -1.5372257 0.3334835 -1.1757843 0.25584656 -1.0587689 0.23108123 -0.9768668 0.21384884 -1.0292624 0.22599672 -0.97659725 0.21507624 -0.97646195 0.21568981 -0.9763262 0.21630329 -0.9761901 0.2169167 -1.1959568 0.26653916 -1.9829297 0.4432373 -1.8061746 0.40491956 -0.97564185 0.21936944 -1.0991518 0.24786584 -1.2951998 0.29293123 -1.2490584 0.28332064 -1.0841316 0.24662705 -1.807471 0.4123728 -1.7709599 0.4052136 -1.0186008 0.23373984 -0.9745269 0.22427076 -1.605955 0.37064585 -1.9085783 0.44175294 -0.9741024 0.2261073 -0.97396016 0.2267193 -0.97381747 0.22733122 -1.1999203 0.28090855 -0.97353107 0.22855477 -1.1219231 0.26413646 -1.1970744 0.28262344 -1.0431523 0.24697527 -1.5585235 0.37002814 -1.1337168 0.26992217 -1.7079694 0.40777785 -1.6279383 0.38975173 -0.9723699 0.23344536 -0.97222304 0.23405628 -1.4879118 0.35919416 -1.0101056 0.24451956 -1.7490194 0.42455435 -2.6311376 0.6404293 -2.7688339 0.67578816 -2.316097 0.56683105 -2.4760728 0.607632 -1.885832 0.46404243 -1.9268844 0.47542834 -2.6793559 0.662875 -2.1001904 0.52098954 -1.5351951 0.38185656 -0.97243726 0.24252795 -1.4979419 0.3745898 -1.3776293 0.34542316 -0.969821 0.24381813 -0.9696676 0.24442744 -0.96951383 0.24503666 -1.515931 0.3841526 -1.6917683 0.429843 -1.4225403 0.36238948 -1.6172713 0.4130791 -0.9687392 0.24808125 -1.32757 0.34086204 -1.8165203 0.46761993 -2.3618917 0.6095955 -2.2278407 0.57649064 -1.4268856 0.370187 -0.9677971 0.25173154 -1.189134 0.31010085 -1.2229975 0.31975254 -1.9383314 0.5080778 -2.7298617 0.7173881 -2.285532 0.60215694 -2.0891106 0.5518108 -2.4027889 0.63628006 -2.646619 0.7026283 -3.0643604 0.81559235 -3.930643 1.0488021 -3.3861978 0.90580887 -3.1714125 0.8504894 -3.1441312 0.8452912 -4.0889444 1.102057 -4.2228537 1.1409949 -3.5391355 0.958644 -3.5459704 0.96288717 -3.2266219 0.8783472 -2.3974903 0.6542603 -2.6669226 0.72958744 -1.7332101 0.47532335 -2.0662954 0.5680663 -1.2359722 0.34062913 -0.9638912 0.26629642 -1.6107224 0.44608745 -1.3820707 0.38369778 -1.4907835 0.41488826 -1.1619334 0.32415533 -2.0359986 0.56938046 -2.986793 0.8373002 -3.915106 1.1001918 -3.4092553 0.96035326 -2.7529624 0.7773494 -2.0575368 0.5823794 -2.0706255 0.5874896 -1.2820276 0.36461464 -1.4607663 0.41644102 -1.1652926 0.33299804 -0.96133864 0.2753689 -1.1682689 0.33543712 -0.96099186 0.27657676 -0.9608179 0.2771805 -0.96064353 0.27778414 -0.96046877 0.2783877 -1.2909551 0.37505713 -1.1271492 0.32823527 -0.95994234 0.28019762 -1.5557005 0.45515448 -1.108276 0.32500666 -1.7281823 0.5079763 -1.8342141 0.5403952 -2.3484 0.6934883 -2.1278443 0.62981147 -2.7856095 0.8264045 -2.9875348 0.88835216 -2.9213316 0.8706647 -2.9576478 0.8835121 -2.9189067 0.8739373 -3.519893 1.0562863 -4.3827176 1.318214 -3.658694 1.1029528 -3.548141 1.0720578 -3.8746955 1.1733824 -4.571144 1.3874255 -4.7807264 1.4543188 -4.2728057 1.3027407 -3.5578845 1.0872113 -2.7211077 0.8333804 -3.0184896 0.926533 -3.9577606 1.2175661 -4.289314 1.3225158 -4.777114 1.476206 -4.7761855 1.4792072 -4.775255 1.4822078 -4.7743225 1.4852079 -4.7733884 1.4882075 -4.269101 1.3339286 -4.1581864 1.3021402 -3.4188561 1.0729775 -4.2682214 1.3424897 -3.4481142 1.0869216 -4.3052626 1.360088 -4.1099696 1.3012332 -3.9496782 1.2532152 -4.5472355 1.4459629 -3.7598891 1.1981986 -3.2544775 1.0393873 -3.0284321 0.9692922 -2.2257023 0.7139093 -2.9584422 0.9509911 -3.141587 1.0120413 -2.4778132 0.79992986 -2.1899364 0.70851225 -3.1379118 1.01739 -3.4305053 1.1146387 -3.7503629 1.2211725 -2.8050103 0.9153017 -1.8742265 0.6128813 -2.5472276 0.834728 -3.3059897 1.0856755 -4.117569 1.3550621 -4.677414 1.5425608 -4.03874 1.3347473 -3.6831825 1.219808 -3.9631345 1.3152871 -4.396915 1.462318 -3.9418855 1.3137364 -3.2063816 1.0708494 -2.5352135 0.84846735 -2.629554 0.88187826 -2.9117227 0.9785453 -2.4636118 0.82967144 -2.4242506 0.818112 -1.7266248 0.58389294 -1.0385877 0.35194665 -1.3951782 0.47376212 -2.308482 0.7855117 -2.1035564 0.7172563 -2.5601642 0.87474334 -2.1819015 0.74703187 -1.6913478 0.58026534 -2.558827 0.8796763 -3.4778833 1.1980745 -4.10909 1.4184036 -3.3727376 1.1665968 -2.6437325 0.91630137 -2.8932164 1.0048076 -3.183496 1.1078631 -3.9439282 1.3752738 -4.6397095 1.6211677 -4.0762677 1.4271692 -4.718081 1.6552073 -4.505009 1.5836366 -4.715997 1.661135 -4.1207705 1.4543868 -4.7139063 1.6670599 -4.7128577 1.6700214 -4.7118077 1.6729822 -4.7107553 1.6759424 -4.42769 1.5783713 -4.708646 1.6818608 -4.707588 1.684819 -4.2440753 1.5219393 -4.348868 1.5626029 -4.340696 1.5627466 -3.870543 1.396229 -3.468687 1.2537303 -3.6389868 1.3178695 -3.1226826 1.1331084 -2.6496017 0.96332884 -3.3357477 1.2151679 -3.929802 1.4343714 -4.5872283 1.6775978 -4.4900208 1.6452472 -3.9029922 1.4329287 -3.9661381 1.4589404 -4.130899 1.5224948 -3.6131608 1.3342552 -3.8965902 1.4417018 -3.1698172 1.1750674 -2.5272985 0.93868905 -2.2999072 0.85587615 -1.7086034 0.6370538 -1.7243489 0.64415884 -2.1950116 0.82155466 -1.3649942 0.5118716 -1.7505327 0.65770304 -0.93588746 0.35229906 -1.7160228 0.6471991 -2.2986014 0.8685691 -1.7687538 0.6696267 -1.3869529 0.5260785 -2.304934 0.8759306 -2.2646096 0.86223507 -2.7306697 1.0416493 -2.8227773 1.0788171 -2.2458112 0.8599282 -2.2310796 0.85589516 -1.9119325 0.7348411 -2.1168745 0.81513643 -2.366108 0.91281533 -2.7656474 1.0689496 -2.3264747 0.9008856 -3.1644244 1.2276535 -3.0518215 1.1861752 -3.5498362 1.3823106 -3.468015 1.3529594 -3.343269 1.3067138 -3.7198324 1.4565881 -3.2378404 1.2701998 -2.3080647 0.907124 -2.0463448 0.8057466 -1.8714985 0.73825955 -2.7892187 1.102303 -2.2052078 0.8731035 -1.89721 0.75253785 -1.7970448 0.7141139 -1.0208031 0.406392 -0.9288483 0.37046018 -0.9286154 0.3710437 -1.2137998 0.48587853 -1.5194892 0.6093526 -1.5682077 0.63003397 -1.8151246 0.73055875 -1.2874146 0.51910406 -1.173059 0.47385132 -0.9269745 0.37512437 -0.9574809 0.38816988 -0.92650235 0.37628895 -1.7473938 0.71096456 -1.662899 0.6778041 -0.92579144 0.37803468 -1.6704122 0.68331563 -1.1589345 0.47493562 -0.9250772 0.3797791 -0.9248384 0.38036028 -1.0153565 0.41833395 -0.9243597 0.38152215 -1.4366477 0.5940217 -0.9238795 0.38268343 -1.6714215 0.6935562 -2.239308 0.9308503 -2.9039066 1.2092553 -2.3752859 0.99087685 -2.071595 0.8657174 -2.1031287 0.880448 -2.2424738 0.94043934 -2.7706454 1.1639893 -2.4689934 1.0390865 -1.5904393 0.67051977 -1.0954818 0.46265948 -0.92096794 0.38963836 -0.92072296 0.39021695 -1.4533303 0.61702186 -1.0232942 0.43520597 -1.0152315 0.43253037 -1.828848 0.7805225 -1.3762673 0.58839095 -1.7584302 0.753083 -2.0018003 0.85879993 -1.6088858 0.69143146 -2.3997042 1.0330787 -1.5769618 0.6800608 -0.918004 0.39657116 -1.7136126 0.74154633 -1.071171 0.4643364 -0.9172548 0.39830086 -0.9170044 0.3988771 -1.4550998 0.63402456 -2.006214 0.87565947 -1.6271213 0.711413 -0.9562896 0.4188266 -1.3462148 0.59061074 -0.96599144 0.4245233 -1.3272212 0.5842678 -0.91498786 0.40348142 -1.2580457 0.55570376 -0.935957 0.41413382 -0.9142257 0.4052054 -1.4789567 0.6566191 -0.9304905 0.41381413 -1.5800515 0.70388085 -2.096393 0.9354796 -1.4349637 0.64140946 -1.5701797 0.7030332 -2.4310076 1.090295 -3.328631 1.4953874 -3.9792604 1.7906885 -3.4711866 1.564676 -2.7058342 1.2217311 -2.055824 0.9297957 -1.2999138 0.5889012 -1.0418243 0.47276792 -0.9103662 0.41380367 -1.7347316 0.7898316 -1.8038285 0.82266045 -1.2330812 0.5632996 -0.9093233 0.41609034 -1.1145065 0.5108257 -1.7096679 0.7849138 -2.0457432 0.9407637 -2.3898022 1.1008037 -2.3623104 1.08994 -1.7584624 0.81267273 -0.9074844 0.42008573 -0.9841163 0.45631063 -0.90695584 0.4212258 -1.2739191 0.5926313 -0.9064258 0.42236516 -0.90616024 0.4229346 -1.5739856 0.73583525 -1.8023695 0.84398466 -2.620792 1.2292309 -2.8305428 1.3297807 -2.5558875 1.2027093 -2.0153499 0.9498988 -2.781071 1.3129438 -3.5513093 1.6793029 -2.8122807 1.3320022 -3.120871 1.4805638 -2.2361488 1.0625669 -1.4778477 0.703378 -1.8559327 0.8847574 -2.635857 1.2585949 -3.4783714 1.6635716 -3.1908507 1.5285257 -3.0440784 1.460569 -3.3543944 1.6120543 -3.8541152 1.8551918 -3.0609953 1.4757904 -3.306596 1.5967627 -3.2540731 1.5739212 -2.7140832 1.3148453 -2.8334954 1.3748937 -2.1109688 1.0259421 -1.4724158 0.716746 -0.89885527 0.43824565 -0.8985797 0.43881032 -0.8983038 0.43937483 -0.8980276 0.43993917 -0.897751 0.44050333 -1.2299082 0.60444343 -1.1978995 0.5896474 -0.8969191 0.44219476 -1.1177208 0.5519267 -0.89636266 0.44332153 -1.3721923 0.67972994 -0.8958049 0.44444758 -0.89552546 0.44501033 -0.8952457 0.4455729 -1.0535387 0.5251832 -1.519475 0.75864214 -0.8944042 0.44725963 -1.426163 0.7142937 -1.3225026 0.6634152 -1.6976193 0.8529228 -1.2603624 0.63422704 -0.89299464 0.45006728 -1.5825158 0.79883164 -1.1279798 0.57027787 -0.89214474 0.4517497 -0.89186066 0.45231017 -0.89157635 0.45287046 -0.8912916 0.45343056 -0.8910065 0.4539905 -1.114321 0.5686571 -1.6921301 0.8648635 -2.500839 1.2801846 -2.0879452 1.0704796 -2.7103324 1.3917259 -2.5724864 1.3229867 -3.220882 1.6590054 -3.4974222 1.8042266 -3.1304405 1.6174017 -2.9286013 1.5154498 -2.7701728 1.4356759 -2.0285754 1.0529515 -2.4801552 1.2893271 -2.6549516 1.382316 -3.2794027 1.7100599 -3.8415852 2.0062838 -3.5335345 1.8482296 -3.881661 2.0334258 -3.8043938 1.9959964 -4.1566577 2.1841452 -3.7682106 1.9830555 -3.9232051 2.0677714 -4.421765 2.3340943 -4.420297 2.336872 -4.3379364 2.296819 -4.256645 2.257203 -4.4158845 2.3452 -4.41441 2.3479743 -4.412934 2.3507473 -4.0087924 2.1386979 -3.7601042 2.0090582 -4.408495 2.3590615 -3.800802 2.0369475 -4.1985803 2.2535238 -4.4040403 2.367367 -4.402552 2.3701336 -3.918058 2.1124804 -3.9575863 2.1370032 -3.2237618 1.7433723 -3.1257467 1.6929061 -3.9693415 2.1530242 -3.7410421 2.0322347 -2.9518816 1.6059444 -2.9781113 1.6226403 -3.3260956 1.8149526 -3.284658 1.7950206 -3.0883856 1.6902813 -3.168912 1.7369419 -4.0198665 2.2066524 -3.3618097 1.8481706 -4.2213783 2.3241775 -3.361082 1.8532745 -4.166711 2.3009071 -4.375466 2.4197729 -4.3669696 2.4186585 -4.13807 2.2952807 -4.370897 2.428016 -3.7231703 2.0712688 -3.1246142 1.7408527 -3.5136647 1.9605029 -2.7712493 1.548545 -2.178269 1.2189904 -2.4612024 1.3793554 -1.9134221 1.073938 -1.1737542 0.65975803 -1.0335116 0.58178365 -0.871111 0.4910862 -0.8708022 0.49163345 -1.3040606 0.7373214 -1.6048046 0.9086944 -0.869874 0.493274 -1.6040796 0.9109478 -1.5713996 0.89369524 -1.8402959 1.0481544 -1.8153397 1.0354515 -2.070515 1.1827257 -1.7682629 1.0115465 -1.2059673 0.69088763 -2.0020537 1.1486295 -1.6048021 0.9220569 -2.3045058 1.326006 -1.6598548 0.9564644 -1.8877786 1.0893824 -1.4103254 0.81503963 -1.0093496 0.5841584 -1.0867001 0.6298366 -1.8567394 1.0777001 -2.387558 1.3878074 -2.914767 1.6967074 -3.4585385 2.0161512 -3.6284137 2.1182353 -3.6363704 2.125945 -3.9323137 2.30228 -3.5932891 2.1068218 -2.7855825 1.6355989 -2.2502267 1.3231583 -1.7506571 1.0308865 -0.88992035 0.5247891 -1.5221841 0.89892673 -2.225589 1.3162097 -1.5977887 0.9462851 -1.4520203 0.86118704 -1.5340043 0.9111148 -1.1920197 0.7090082 -0.8591386 0.511743 -1.3038596 0.77774984 -0.8584948 0.5128222 -1.2362045 0.73950154 -0.8578497 0.51390064 -0.85752666 0.5144395 -1.3910952 0.8357221 -2.0826216 1.252949 -2.5299358 1.5242283 -2.2090771 1.3328109 -2.3378963 1.4125363 -2.382626 1.4416058 -1.5520866 0.9404214 -0.87345135 0.5299816 -1.171591 0.71189046 -0.85427743 0.51981735 -0.869193 0.5296419 -0.8536235 0.5208905 -0.9993737 0.61069083 -0.8529683 0.5219627 -0.85264015 0.52249855 -0.96086633 0.58965045 -0.8519829 0.5235696 -0.85165375 0.52410483 -0.8513243 0.52463984 -1.2336671 0.7613336 -0.8506643 0.5257092 -1.0791866 0.667873 -1.6254963 1.0073792 -1.3940661 0.86516625 -2.16277 1.3441117 -2.8365436 1.7653182 -2.7924933 1.7403387 -2.1424913 1.3371139 -2.351822 1.4698097 -1.873582 1.1725636 -1.2860074 0.8059605 -1.5322478 0.96162444 -1.0408278 0.65412575 -1.0120251 0.6369116 -0.8460071 0.5331716 -0.84567195 0.5337031 -0.99252564 0.6272547 -1.3838509 0.87578106 -1.4028668 0.8890504 -2.0208602 1.2824769 -2.8454282 1.8082726 -3.582145 2.2796178 -3.9256334 2.501675 -3.9344838 2.5107925 -3.328603 2.1270936 -3.5935364 2.2995765 -4.2098155 2.6976757 -4.2081194 2.7003202 -3.7577164 2.4146345 -4.003587 2.5761814 -4.203022 2.7082477 -4.0929065 2.6409347 -3.8120565 2.463111 -3.9963377 2.5857425 -4.1962023 2.7188025 -4.1944933 2.7214384 -3.5218787 2.2881837 -2.9080763 1.8919923 -2.391494 1.5580438 -2.3000958 1.5005579 -2.8543937 1.8647338 -2.5914962 1.695311 -2.3892677 1.5651611 -3.1815293 2.0870137 -2.5245826 1.6583407 -1.889886 1.2431235 -1.4209831 0.93596965 -1.3901759 0.9169307 -1.201744 0.79372895 -1.5409954 1.0191892 -1.4501168 0.96039385 -0.98181313 0.65113014 -0.83303714 0.5532171 -0.83268934 0.5537404 -0.83234125 0.5542635 -0.83199286 0.5547863 -1.0285753 0.6868047 -1.424756 0.95263916 -1.460165 0.9776429 -2.1555653 1.4452055 -1.8631268 1.2508367 -2.686381 1.80599 -2.932774 1.9743108 -3.3343117 2.247667 -3.2857752 2.2179525 -3.9908228 2.6975229 -3.4661698 2.3460677 -3.993195 2.7064433 -3.909818 2.6535199 -3.5846207 2.4361057 -3.354467 2.2827759 -3.943907 2.6875277 -3.9362729 2.6859488 -3.5062773 2.395768 -4.126553 2.8233948 -4.1247783 2.825987 -4.123002 2.828578 -4.121224 2.8311682 -3.458125 2.3788369 -2.91048 2.0048082 -3.3954132 2.3419888 -3.420969 2.3627894 -3.4276493 2.3705857 -3.6627555 2.5365906 -4.108732 2.8492668 -3.3387108 2.3183908 -2.8500233 1.9817032 -3.0148258 2.0991063 -2.6420565 1.8420274 -2.364812 1.650943 -2.6781573 1.8722025 -2.1223786 1.4856639 -2.6856246 1.8824513 -2.4286509 1.7046056 -3.0023167 2.1100636 -3.7412488 2.6329072 -3.8369756 2.7038813 -3.6211998 2.5552328 -2.9313366 2.0712037 -2.491012 1.7624298 -2.9616017 2.098173 -2.2590654 1.6025876 -1.4877988 1.0568547 -1.8596044 1.3227247 -2.2111075 1.5748397 -2.9804876 2.1256473 -3.2258937 2.303727 -3.6300287 2.5957801 -4.0653005 2.9108987 -3.723731 2.6698637 -2.9658284 2.1292808 -2.6380186 1.8964466 -2.8246162 2.033283 -2.6087956 1.8804154 -3.0123816 2.174197 -2.992567 2.162757 -3.1223862 2.2595663 -2.702701 1.9584428 -2.237624 1.6235818 -1.6666157 1.2108672 -1.8218614 1.3254095 -2.2220566 1.6186888 -2.538928 1.8519611 -2.510145 1.8333836 -2.5252042 1.8468168 -2.0736353 1.5185611 -1.7741346 1.3009446 -2.1673265 1.5913608 -2.6119158 1.9203279 -2.1475303 1.5809828 -2.0752592 1.5297894 -1.5992464 1.1804454 -1.9290835 1.42578 -2.290591 1.6951957 -2.6107626 1.9346848 -2.3130462 1.7163168 -1.7363796 1.2901137 -1.3328755 0.9916143 -1.108827 0.8260126 -1.4086615 1.0507491 -1.7679226 1.3204589 -1.6147411 1.2076291 -1.3044006 0.9768109 -1.370609 1.0277363 -1.0176797 0.7640955 -0.7993072 0.6009226 -1.1796039 0.88799185 -1.1670997 0.8797282 -0.7981731 0.60242814 -0.79779446 0.60292953 -0.79741544 0.6034307 -1.5320954 1.160902 -1.3497285 1.0240542 -0.8903745 0.6764191 -1.6462171 1.252266 -1.1334765 0.86335266 -0.90216017 0.6880585 -1.0100831 0.7713733 -0.7943722 0.6074313 -0.9542167 0.7306099 -1.5941595 1.222181 -1.9977447 1.5335883 -1.7450275 1.3413309 -2.0089703 1.5462217 -2.5310278 1.9505616 -2.0556276 1.5862494 -2.1673498 1.6746349 -1.5657048 1.2113369 -2.2392933 1.7347214 -2.8645444 2.2219684 -3.06327 2.3792002 -3.3278196 2.5880258 -3.1370432 2.442825 -3.7318227 2.90975 -3.0674312 2.3948162 -3.047767 2.3825474 -2.6280653 2.0571134 -2.3490043 1.8410604 -2.1922643 1.7204381 -1.4947642 1.1745746 -1.6868064 1.3271952 -2.077668 1.6368432 -2.3455048 1.8502419 -3.0910645 2.441526 -3.2117088 2.5400975 -2.7576265 2.1837878 -2.684448 2.1285827 -3.2457604 2.5769882 -2.8933287 2.3001387 -2.9759297 2.3688579 -3.004834 2.3949516 -3.7634218 3.00344 -3.8995273 3.116073 -3.9041154 3.123761 -3.902152 3.1262133 -3.5099556 2.8156276 -3.8982205 3.1311145 -3.8962524 3.133563 -3.870094 3.1165318 -3.1017447 2.5010052 -2.9951372 2.4181523 -2.3534782 1.9025468 -2.7951953 2.2625353 -3.1254117 2.533077 -3.2722514 2.6554954 -3.4205616 2.7794185 -3.8784702 3.1555457 -3.8764868 3.1579819 -3.227223 2.6324341 -2.6975665 2.2032192 -2.9503536 2.4127734 -2.5915496 2.1220653 -2.080479 1.7057649 -1.4172858 1.163509 -1.7783313 1.4617777 -2.4764588 2.0382428 -2.9715905 2.4488933 -3.1228583 2.57685 -3.2930615 2.7207742 -3.1591153 2.6134474 -2.89422 2.3973718 -2.3425288 1.9428718 -2.2802672 1.8936522 -1.9328476 1.60719 -1.7174869 1.4299407 -2.0711687 1.7266128 -1.4011773 1.169573 -0.921033 0.76977545 -0.76689637 0.6417709 -1.2345463 1.0344394 -1.4649453 1.2290608 -0.80646044 0.67746854 -1.0802625 0.90863484 -0.8040733 0.6771885 -1.4272584 1.2035671 -1.4351081 1.2117302 -1.4942706 1.2632931 -2.1567898 1.825728 -1.999086 1.6943887 -2.0740693 1.7601837 -2.0288093 1.7239672 -2.1371088 1.8183078 -2.6279428 2.23877 -2.889041 2.4643364 -3.0737903 2.6252651 -3.5300138 3.0187545 -3.2856183 2.8133316 -2.8595393 2.4516144 -3.324984 2.854288 -3.236296 2.781689 -2.9102783 2.5046484 -3.2390778 2.7911649 -3.654085 3.1527863 -3.5254965 3.0457048 -3.3320768 2.8822663 -3.2247112 2.7929385 -3.0655444 2.658456 -2.650014 2.301025 -2.6854355 2.3347425 -3.3849676 2.9466588 -3.0047708 2.619013 -3.06376 2.6738183 -2.4857316 2.1721117 -2.102052 1.8391708 -2.171673 1.9024956 -1.6168164 1.4182094 -1.6036425 1.4084377 -2.3182194 2.0386136 -2.7124684 2.3883352 -3.3832362 2.982724 -2.7765768 2.450984 -3.0726116 2.7157412 -3.4197354 3.0263777 -3.1536717 2.7944536 -3.4026341 3.0188766 -3.7380633 3.3206751 -3.5137482 3.125359 -3.199602 2.8495393 -2.90264 2.5883398 -2.4042823 2.1466582 -2.1715105 1.9412817 -2.3579023 2.1105788 -1.9701841 1.7657598 -1.3621117 1.2223245 -1.9207443 1.7258073 -2.1310353 1.9171771 -2.239307 2.0171304 -2.139016 1.9292258 -1.4412057 1.3014984 -1.9886774 1.7981693 -2.7080116 2.4516883 -3.022158 2.7395566 -2.9733405 2.6987095 -3.0739217 2.793525 -3.6981554 3.3650625 -3.6960404 3.3673856 -3.693924 3.369707 -3.6918058 3.3720274 -3.6896865 3.3743465 -3.6875656 3.376664 -3.6854432 3.3789804 -3.4186242 3.1383045 -2.9260545 2.6895142 -2.890012 2.6597373 -2.5571408 2.3563583 -2.597348 2.396428 -2.3825955 2.201061 -2.2380722 2.0701568 -2.2006419 2.0381021 -2.1517644 1.9953479 -1.7856477 1.657933 -1.7553356 1.6318437 -1.2957007 1.2060637 -0.85376924 0.79570705 -0.81245655 0.7581584 -0.83340305 0.7786852 -0.7450814 0.6970397 -0.7298283 0.6836305 -1.2643405 1.1858007 -1.2079283 1.1343201 -0.7285384 0.685005 -0.7281078 0.6854626 -1.1494004 1.0834432 -0.94426733 0.8912026 -0.72681445 0.68683386 -0.7263828 0.6872904 -0.7259508 0.68774664 -1.2408897 1.1770664 -1.1466435 1.0890373 -1.144574 1.0884404 -1.1664368 1.1106275 -1.4226317 1.3562697 -2.0864997 1.9916742 -1.4420837 1.3782778 -1.1225103 1.0741944 -1.6976573 1.6266303 -2.0107632 1.929061 -2.4647257 2.367554 -1.7916914 1.7232198 -1.8728042 1.8034992 -2.18542 2.1071947 -2.1309416 2.0572515 -2.100414 2.030331 -1.5798849 1.5290912 -1.7367224 1.683001 -1.7028834 1.6522847 -1.3778745 1.3386148 -1.4912698 1.4506017 -0.9427044 0.91814953 -1.1047618 1.0773393 -1.5746007 1.5374472 -2.028844 1.9834641 -2.152725 2.1072211 -2.2557466 2.2108421 -1.8788813 1.843795 -1.9106051 1.8772842 -1.9680116 1.9361215 -2.394869 2.359025 -1.8973619 1.8713142 -1.8002565 1.7777747 -2.283471 2.2577906 -2.1406868 2.1192737 -2.4876971 2.46591 -2.8751519 2.8535552 -3.220457 3.2002857 -3.5444086 3.526637 -3.542192 3.5288632 -3.504816 3.4960184 -3.5377545 3.5333118 -3.1716843 3.1716843 -2.774709 2.778198 -2.566618 2.5730767 -1.8804818 1.8875846 -2.5803833 2.5933864 -2.6286771 2.6452458 -2.1407564 2.1569586 -2.477466 2.4993553 -3.0334225 3.0640721 -2.3960295 2.4232824 -1.9842918 2.009385 -1.9117408 1.9383512 -2.536894 2.575441 -3.008452 3.0580046 -3.1596699 3.2157524 -2.6235206 2.6734447 -3.2010243 3.2660406 -3.4975684 3.573096 -3.0240269 3.0932143 -3.171197 3.2478313 -3.1339877 3.21376 -2.9663024 3.0456328 -3.486326 3.5840664 -3.1913822 3.2849808 -2.8773842 2.9654994 -3.0686147 3.1665647 -3.3469572 3.4581368 -3.385456 3.5023158 -3.4727895 3.597184 -2.858571 2.9646897 -3.22535 3.3492937 -3.466003 3.6037235 -3.463738 3.6059005 -3.4614716 3.6080763 -3.406177 3.5549083 -3.456935 3.6124232 -3.4546645 3.6145945 -3.4523926 3.6167645 -2.8486197 2.9880018 -3.026127 3.1781907 -3.1729443 3.336581 -3.443292 3.6254299 -2.9001505 3.0574033 -3.1158855 3.2889721 -3.436452 3.631914 -3.4341693 3.6340723 -2.9839256 3.161597 -3.320941 3.523111 -3.0319407 3.2205691 -2.7698421 2.9458709 -3.4187682 3.6406183 -3.4204447 3.646993 -3.4181526 3.6491413 -3.415859 3.6512883 -3.4135642 3.6534338 -3.0709443 3.2908807 -2.4333827 2.6109447 -2.2393677 2.4058018 -2.4485037 2.6337974 -2.922772 3.1479206 -3.399767 3.6662767 -3.0934112 3.3401124 -3.3402843 3.6112227 -3.3928502 3.6726787 -3.3905418 3.6748097 -3.3861866 3.6747193 -3.2365968 3.5168147 -3.2113242 3.493757 -2.581181 2.8117375 -2.4392781 2.660513 -1.9880546 2.171102 -1.4282458 1.5617186 -1.8769286 2.0549228 -2.246378 2.4625134 -2.8914084 3.1736083 -2.4842727 2.73018 -2.6742196 2.942641 -3.2640564 3.5962193 -2.941901 3.2453752 -3.0516977 3.370752 -2.6292932 2.9078553 -2.3995507 2.6571267 -2.4533439 2.7201283 -2.4879618 2.761998 -1.8783275 2.0878522 -1.9683876 2.190725 -1.789277 1.9939017 -1.1377871 1.2695101 -1.4477501 1.6174015 -1.2616621 1.4112906 -1.0419742 1.1670233 -1.5764364 1.767862 -1.996154 2.241379 -2.2556355 2.5359437 -2.3174858 2.6087794 -1.9569268 2.20569 -2.0061677 2.2640543 -1.7605743 1.9894074 -1.7835349 2.0179057 -1.8702629 2.1187117 -2.3353717 2.6489592 -2.2057483 2.5051017 -2.2315836 2.5376563 -1.8950047 2.1576462 -2.5038233 2.85446 -2.994268 3.4179165 -2.9747715 3.3999693 -2.3830779 2.7271578 -2.1571686 2.4717636 -2.243586 2.5740466 -2.8512592 3.2753775 -3.1596591 3.6342597 -3.278187 3.7753794 -2.6583405 3.065411 -2.2955868 2.6504717 -2.2742412 2.6291625 -2.053397 2.3768697 -1.9322903 2.239528 -1.8396915 2.1349163 -1.3728074 1.5951346 -1.4467871 1.6832333 -1.2252754 1.4273335 -1.6012143 1.867641 -1.8767155 2.1917684 -2.2148004 2.5899012 -2.0563781 2.4077094 -2.5602567 3.0014923 -2.2455974 2.635957 -2.4047534 2.8263752 -1.871606 2.2025542 -2.3303914 2.7459595 -2.9712543 3.505567 -3.2304866 3.8162751 -2.6807876 3.1709363 -2.9099991 3.4464462 -3.2232873 3.8223577 -3.0996048 3.6803777 -2.5922554 3.0818942 -3.1736872 3.777966 -3.2136707 3.8304465 -3.0362618 3.6236105 -3.1823974 3.8028662 -3.037627 3.634508 -2.496561 2.990942 -2.5317917 3.0370257 -2.201598 2.6443164 -2.6057887 3.1337876 -2.8584888 3.4420884 -2.7230637 3.2832096 -2.9162984 3.5206928 -3.18712 3.8525662 -3.1846986 3.854568 -3.1822762 3.8565683 -3.1798525 3.858567 -3.1774273 3.8605642 -2.615319 3.1816766 -2.252396 2.7436736 -2.857967 3.485791 -2.225784 2.718215 -2.5158145 3.076353 -1.9064295 2.3341846 -1.3045124 1.5992622 -1.3991094 1.717435 -0.9578494 1.1772894 -1.145601 1.4098629 -0.9887125 1.2183473 -0.6296459 0.7768823 -0.7491021 0.9254603 -0.6286691 0.7776729 -1.0564902 1.3085748 -1.4727576 1.8265127 -1.1868753 1.4738561 -1.8055731 2.245038 -1.3945854 1.7362512 -0.8843284 1.1024021 -1.2126175 1.5135942 -0.7357983 0.91960996 -0.75424874 0.9438847 -1.3031043 1.6328381 -1.2783469 1.6038821 -1.0763401 1.3521758 -1.2905864 1.6234196 -1.8666109 2.351028 -1.3869716 1.74917 -0.8313622 1.0498211 -1.36189 1.7219788 -0.94752264 1.1995996 -0.61934066 0.7851224 -1.0791442 1.3697728 -0.951633 1.2094835 -0.64274514 0.81795776 -0.8569778 1.092002 -0.8902411 1.1358564 -1.1195142 1.4302354 -0.85156184 1.0893223 -0.61538637 0.7882256 -0.64568573 0.8281071 -1.0451281 1.3421395 -1.4275135 1.8355718 -1.3147254 1.6927365 -1.1015428 1.4201005 -0.68828046 0.888478 -1.1913874 1.5399193 -1.0633335 1.3761898 -0.61091924 0.7916929 -0.6104217 0.7920766 -0.6099239 0.79246 -0.60942584 0.79284304 -0.60892755 0.7932258 -1.020379 1.3309377 -0.6405245 0.8365602 -0.6074313 0.7943722 -0.60693204 0.79475373 -0.73011714 0.95730615 -1.0058233 1.3205229 -0.6054329 0.79589635 -0.6049327 0.79627657 -0.6044323 0.79665655 -1.0953702 1.44561 -0.6034307 0.79741544 -0.60292953 0.79779446 -0.60242814 0.7981731 -0.6019265 0.7985515 -0.6014247 0.7989295 -0.92419714 1.2293056 -1.0713164 1.4268595 -0.59991765 0.80006176 -0.5994148 0.8004385 -1.191861 1.5936574 -1.0112176 1.3538889 -1.0740272 1.4398688 -1.1683106 1.5683229 -1.6202326 2.177831 -2.159926 2.9070706 -1.891113 2.5486155 -1.5123839 2.0408883 -1.4030088 1.8957807 -0.9314976 1.2603182 -1.0770642 1.4591873 -1.0552334 1.431493 -0.8606975 1.1691296 -0.5923507 0.8056802 -0.5918444 0.80605227 -0.5913378 0.80642396 -0.7814907 1.0671462 -0.5903239 0.8071664 -0.76243335 1.0438722 -0.9337501 1.2801155 -1.3276631 1.8225508 -0.8054395 1.1071287 -1.36132 1.8736963 -1.5958747 2.1994379 -1.4556069 2.0087745 -1.7210038 2.3781726 -1.1481605 1.5886886 -1.3123071 1.8182206 -0.8423571 1.1686447 -1.1240345 1.5614974 -0.68453115 0.952205 -1.0674658 1.4868497 -0.74448776 1.0383573 -1.1769415 1.6436921 -1.0186635 1.4245343 -1.3747869 1.9251049 -1.775383 2.4893627 -1.9948071 2.8007503 -1.4321995 2.0135138 -1.9343654 2.7231243 -1.9531552 2.7532382 -1.5888646 2.2427056 -1.1912792 1.6837499 -1.007489 1.4258807 -0.82161474 1.1643679 -0.9682999 1.3740778 -0.90429753 1.2849683 -0.72530776 1.0320085 -1.1871866 1.6914537 -1.3018028 1.8572346 -1.7090282 2.4414709 -2.1843913 3.1247385 -1.893463 2.7121975 -1.5764381 2.2611165 -2.0300899 2.9157012 -1.7154261 2.467072 -1.7426271 2.5095544 -1.2679819 1.8284698 -1.636525 2.3630898 -1.8499234 2.6748192 -1.5855504 2.2956421 -1.5059466 2.18332 -1.5954052 2.3161292 -1.3584889 1.9748411 -0.9598363 1.3971972 -1.132764 1.6511434 -1.3086532 1.9100955 -1.121379 1.6389596 -1.3965672 2.0439177 -0.8475161 1.2420396 -1.0595295 1.5548439 -0.56260294 0.8267273 -0.56208336 0.82708055 -0.5615636 0.8274336 -0.5610436 0.82778627 -0.5605234 0.8281386 -0.5600029 0.8284906 -0.6608057 0.97894746 -0.5589614 0.8291937 -0.55844027 0.8295447 -0.5579189 0.82989544 -1.0784895 1.6064149 -1.1884799 1.7726518 -1.2602503 1.8822552 -1.444232 2.1599767 -1.1449158 1.7146535 -0.93885255 1.4079629 -0.57985914 0.87077844 -0.6784455 1.0202153 -0.91533315 1.3783133 -0.6116436 0.922273 -0.5521698 0.83373165 -0.9249087 1.398445 -0.8542078 1.2933118 -0.8117148 1.2306563 -1.3425186 2.038203 -1.1929635 1.813629 -1.0698413 1.6286777 -1.1045699 1.6838516 -1.408971 2.1508384 -1.9191043 2.9335928 -1.4116055 2.160779 -1.4397174 2.2068377 -1.2568011 1.9291064 -1.6670411 2.5623162 -1.7844911 2.7466156 -1.3533655 2.0859125 -1.2117977 1.8702898 -1.5030302 2.3229752 -1.3340229 2.0646129 -1.5404327 2.3873544 -1.5532178 2.4104917 -1.5877863 2.4675436 -1.0706129 1.6661154 -0.8978995 1.3992668 -1.1681696 1.8229687 -1.1384106 1.7789882 -1.2371991 1.9360429 -0.7475013 1.171356 -0.53741735 0.84331644 -0.63190275 0.99295914 -0.9984188 1.5710735 -1.2381856 1.9510684 -1.2533435 1.9776988 -1.0806892 1.7076331 -1.0618438 1.6801901 -1.4587235 2.3114004 -1.814246 2.8787448 -2.0820308 3.308257 -1.5977023 2.542222 -1.8972543 3.0230758 -2.108432 3.3642585 -2.5077436 4.007001 -2.4090025 3.854611 -2.2996457 3.6847801 -2.5861228 4.149612 -2.6015897 4.1802793 -2.6392276 4.246702 -2.3598466 3.8024857 -2.5453413 4.107136 -2.631218 4.2516694 -2.628546 4.2533216 -2.5397353 4.115394 -2.6231992 4.2566214 -2.1290119 3.459577 -2.113366 3.4389918 -2.249323 3.6653898 -2.2720459 3.7076418 -2.6098137 4.2648416 -2.6071334 4.2664804 -2.6044521 4.268118 -2.1345196 3.5029507 -1.7511722 2.8779087 -1.8777752 3.0903413 -1.8436484 3.0384777 -2.0886722 3.4471781 -1.7663091 2.9192822 -1.92031 3.1783154 -2.1570683 3.5752485 -2.4582233 4.080194 -2.5775836 4.2843976 -2.537957 4.224538 -2.5721977 4.2876334 -2.569503 4.2892485 -2.5668077 4.290862 -2.1769211 3.6442952 -2.1948745 3.6795998 -1.7846085 2.996086 -1.836931 3.0883393 -1.9343029 3.2567015 -2.015202 3.3977683 -2.4174137 4.081768 -2.545207 4.30371 -2.5425024 4.3053083 -2.095033 3.5526888 -1.8489013 3.139814 -1.6734437 2.845939 -1.5696487 2.673263 -1.798896 3.0681067 -1.3211436 2.2565246 -0.9709517 1.660786 -1.1959795 2.048643 -1.1241429 1.928373 -1.3611047 2.3382366 -1.4874257 2.5589395 -1.0345968 1.7824779 -1.335812 2.3047674 -1.0699723 1.8487726 -0.9260284 1.6023778 -0.9211401 1.5962334 -0.71583515 1.2422651 -0.4987298 0.8667575 -0.4981851 0.8670707 -0.6847103 1.1934456 -0.4970951 0.86769605 -0.68099815 1.1904384 -1.1281816 1.9750284 -0.70984584 1.2444923 -1.114684 1.9571053 -1.4455817 2.541791 -1.5956029 2.8096824 -1.2257986 2.1616592 -1.426978 2.520122 -1.8473455 3.2673006 -1.5729707 2.7861133 -1.3881208 2.4623115 -1.0628916 1.8881776 -1.1981425 2.1315765 -1.2217771 2.176825 -1.0613539 1.8937881 -1.505257 2.6898115 -1.4642884 2.620465 -1.0690261 1.9159366 -1.1900407 2.1359751 -1.6037576 2.8828044 -2.0534906 3.6966789 -1.7686024 3.1885428 -1.8690721 3.374673 -1.9271841 3.48476 -2.0203884 3.6587198 -2.275921 4.12759 -2.411521 4.380019 -2.3470778 4.2693186 -2.406015 4.383046 -2.2531686 4.1107264 -1.8364779 3.3555076 -2.11156 3.863885 -1.9274555 3.5322692 -1.5607336 2.864491 -1.4630494 2.6892266 -1.5621337 2.875656 -1.8221778 3.3593888 -1.9168087 3.5391557 -1.4863888 2.74856 -1.2328721 2.2831962 -1.0760967 1.9958572 -1.4385507 2.6721256 -1.3606659 2.5312629 -1.3040065 2.4295175 -1.2671722 2.364455 -1.5016658 2.8062375 -1.3915492 2.6043894 -1.6974072 3.1816337 -1.9382166 3.6385117 -1.7121546 3.21901 -1.9592468 3.6891553 -2.2799213 4.299487 -2.339649 4.418828 -2.2877488 4.3273783 -2.3340943 4.421765 -1.9982151 3.7912352 -2.328536 4.4246945 -2.2995079 4.376205 -2.322974 4.427617 -2.3201914 4.4290757 -2.317408 4.4305325 -1.9425725 3.7195923 -1.5730274 3.0166137 -1.8950708 3.6397767 -2.2991977 4.422747 -2.238978 4.313528 -2.223051 4.2894335 -2.2978992 4.4406824 -2.1046455 4.073488 -2.2923172 4.4435663 -2.190735 4.2532105 -2.2867315 4.4464436 -2.1529243 4.192737 -2.2253015 4.340398 -2.278346 4.450746 -2.2755492 4.4521766 -2.0743437 4.0648127 -2.2249312 4.3666735 -2.2671528 4.456458 -2.2643523 4.4578815 -1.8713195 3.6898491 -1.8157396 3.5858407 -1.9315505 3.8205059 -1.898079 3.7601666 -1.6175588 3.2094564 -1.8738364 3.7237659 -2.0226388 4.0257697 -1.8315876 3.6512268 -1.7482415 3.4905488 -1.800997 3.6015306 -1.7574941 3.520063 -2.0859632 4.1845264 -1.8142216 3.6451364 -1.6859248 3.3927042 -1.2622188 2.5440612 -1.4551362 2.9375293 -1.7082968 3.4540472 -2.0612462 4.1742826 -2.2109737 4.4845953 -2.2081556 4.4859834 -2.106255 4.2857614 -2.2025166 4.4887547 -2.1688757 4.427226 -2.1968741 4.491519 -2.1940517 4.4928985 -2.1912282 4.494276 -1.810199 3.7187033 -1.5312724 3.1507316 -1.1418866 2.353295 -1.3507661 2.7882302 -1.5495882 3.2037647 -1.4844304 3.0739772 -1.8635929 3.865352 -1.8455952 3.8341784 -1.7238319 3.5869837 -1.7374661 3.6211798 -1.4187008 2.9615877 -1.6250994 3.3979297 -2.048328 4.2897835 -2.1516101 4.513377 -2.148774 4.514728 -2.145937 4.5160775 -2.1359038 4.5022583 -2.1402602 4.5187707 -2.111058 4.4643645 -2.13458 4.5214562 -1.8367294 3.8968914 -1.5066378 3.2017684 -1.2698334 2.7029405 -1.5487319 3.3019872 -1.6157986 3.450615 -1.6466227 3.5222018 -1.624773 3.4811637 -1.4395885 3.08946 -1.5604255 3.3542879 -1.2147514 2.615523 -1.5433445 3.3285012 -1.5606664 3.3714085 -1.3486943 2.9183068 -1.4748279 3.1965075 -1.37836 2.9923663 -1.1496289 2.4999323 -1.5108222 3.2908127 -1.6418619 3.5821722 -1.4501797 3.1692207 -1.669875 3.6554112 -1.4113809 3.0947022 -1.4212743 3.121589 -1.0887289 2.3951986 -1.3648746 3.007733 -1.4813018 3.269758 -1.1637309 2.5730662 -0.8514114 1.8856672 -0.5797278 1.2861087 -0.41036874 0.91191965 -0.68561757 1.5261382 -0.59377056 1.3239176 -0.6809952 1.5209593 -1.0709338 2.3958974 -0.9753917 2.1858354 -1.0636187 2.3875806 -0.8386036 1.8856599 -1.122433 2.5281475 -1.1112132 2.5071225 -1.4667547 3.3149173 -1.3974665 3.163694 -1.7238386 3.9092042 -2.0119832 4.5704155 -2.0116565 4.577471 -2.00878 4.578734 -1.7383454 3.9690924 -1.9990659 4.5722003 -1.9959599 4.5729218 -1.997266 4.583768 -1.7933292 4.1228004 -1.410726 3.2487884 -1.0358337 2.38955 -0.9841058 2.2741344 -1.0832714 2.507614 -1.3440595 3.1166775 -1.011436 2.3494308 -0.8561455 1.9921573 -0.9608926 2.239771 -1.1954645 2.7913804 -0.98968506 2.3149083 -1.2050307 2.823516 -0.83966434 1.9708527 -1.14952 2.7028515 -0.7850089 1.8490062 -0.47947034 1.1313176 -0.38963836 0.92096794 -0.38905963 0.92121255 -0.67765784 1.6073704 -0.9579811 2.2762775 -1.1724988 2.7909005 -0.79319423 1.8913685 -0.7326963 1.750194 -0.50489277 1.2081693 -0.3850042 0.9229148 -0.57634866 1.384044 -0.75051266 1.8054774 -0.9557466 2.303282 -0.66042405 1.5944048 -0.7698978 1.862006 -1.1331275 2.7453644 -1.3481774 3.2722204 -1.0036514 2.4403584 -1.3473605 3.2819407 -1.4874957 3.629776 -1.3858917 3.387908 -1.3016757 3.18775 -1.3368253 3.2797167 -1.4348873 3.5266364 -1.459223 3.5929134 -1.1986357 2.9566197 -1.5046065 3.7180517 -1.5529859 3.8445477 -1.1866267 2.9429176 -1.5219402 3.7813675 -1.4165325 3.5258691 -1.3168726 3.28377 -1.0608432 2.6501508 -0.95651966 2.393893 -1.1359453 2.848136 -1.377366 3.4597616 -1.1170069 2.8109121 -0.99857277 2.5174844 -1.1082232 2.7990522 -1.3792164 3.489908 -1.249748 3.168129 -1.5964067 4.054374 -1.5730245 4.002366 -1.5682325 3.9975498 -1.8150954 4.6353874 -1.5108445 3.865544 -1.7435392 4.469181 -1.5560658 3.9960475 -1.8113768 4.6603556 -1.8084483 4.661493 -1.805519 4.662628 -1.7488381 4.524694 -1.7996584 4.664893 -1.5149716 3.9343166 -1.1787539 3.0669184 -1.3876173 3.617131 -1.2127266 3.1671891 -1.1936214 3.1231682 -1.032508 2.7067058 -1.2199408 3.2041025 -0.9386081 2.4698644 -1.0097362 2.6620677 -0.6621241 1.7489364 -0.7229326 1.9131856 -0.55258894 1.4651678 -0.35229906 0.93588746 -0.35171095 0.93610865 -0.3511227 0.9363295 -0.5084334 1.3584212 -0.79984856 2.1411147 -0.7510721 2.014405 -0.63520646 1.7069244 -0.49760187 1.3397285 -0.83171386 2.2435997 -0.5148309 1.3914702 -0.7110542 1.9255337 -0.5572266 1.5118912 -0.73105276 1.9873713 -0.574274 1.5641999 -0.78201336 2.1341815 -1.0872693 2.9730322 -0.8581847 2.3512015 -1.0669087 2.9287624 -0.7876515 2.1664073 -0.653624 1.8012931 -0.81329286 2.245717 -0.6601287 1.8263736 -0.83785355 2.3226478 -0.83536804 2.320324 -0.8977491 2.4985187 -1.0002327 2.7892458 -1.2831054 3.5851514 -1.3124678 3.6744692 -1.0960968 3.0748003 -1.040357 2.9242458 -0.8629761 2.4304962 -0.969333 2.735491 -0.87786096 2.4823067 -0.8532788 2.417628 -1.034688 2.9375012 -1.2346413 3.512214 -1.2952347 3.6919982 -1.0133305 2.8942652 -1.0222969 2.925768 -0.91025496 2.610375 -1.0901128 3.13249 -1.4004283 4.0323563 -1.6374089 4.7242875 -1.5734134 4.5488815 -1.3950727 4.0415 -1.2234081 3.5514243 -1.0318234 3.001397 -0.97871864 2.852753 -0.7689037 2.245784 -1.0818149 3.166213 -1.343743 3.9409049 -1.031877 3.0325067 -1.1964864 3.523523 -1.4961708 4.4151707 -1.3752903 4.0668592 -1.2212249 3.6187649 -1.3148694 3.90435 -1.4899828 4.433537 -1.5898331 4.7405095 -1.4303969 4.274014 -1.5838748 4.7425036 -1.5808947 4.743498 -1.3077997 3.9323075 -1.5749326 4.7454805 -1.3436986 4.0572677 -1.3546095 4.09884 -1.2326814 3.737785 -1.0963548 3.3314464 -0.9289621 2.8287818 -1.2156078 3.7095075 -0.93747824 2.8668628 -1.1501883 3.524838 -1.1577075 3.5554545 -0.95881224 2.9509206 -0.76087296 2.3467424 -0.73863417 2.28304 -0.78064215 2.418069 -0.5927187 1.8399223 -0.7821331 2.433141 -0.8249242 2.5718052 -0.97555465 3.0479982 -0.8105759 2.5380344 -1.0545249 3.309048 -1.1230502 3.5317461 -0.8905643 2.8067346 -0.79982156 2.5262516 -1.0836942 3.4303572 -1.3761979 4.3658047 -1.1192217 3.558378 -0.92021954 2.9321194 -0.72678274 2.3208697 -0.7184326 2.2992697 -0.4830799 1.5494668 -0.5697992 1.8316664 -0.6622063 2.1334414 -0.70368207 2.2721064 -0.9435739 3.0534763 -1.0262264 3.3283584 -1.0422518 3.3878925 -1.0984248 3.5784845 -0.9698094 3.166568 -1.1627301 3.8050191 -1.2122831 3.9761178 -1.4042253 4.6160564 -1.4521749 4.7844734 -1.4491684 4.785385 -1.2548078 4.1529803 -1.1977569 3.9731762 -0.9120226 3.032237 -0.90715 3.0229216 -0.753527 2.5167422 -0.72782165 2.436458 -0.58419687 1.9601493 -0.4762083 1.6014918 -0.28441694 0.95870066 -0.30200756 1.0203451 -0.53164333 1.800335 -0.69296104 2.3520544 -0.93433267 3.1786861 -1.0678263 3.6412985 -1.0679452 3.6501958 -1.1731635 4.019197 -1.2221146 4.196702 -1.2302324 4.2344875 -1.3919384 4.802344 -1.3889208 4.8032174 -1.3859025 4.8040895 -1.3828838 4.8049593 -1.3798645 4.805827 -1.2676355 4.425434 -1.3738241 4.807557 -1.2650062 4.4373116 -1.1714375 4.118911 -1.03592 3.6511328 -1.0521207 3.7171252 -1.2756019 4.5175104 -1.3556904 4.812702 -1.3526661 4.8135533 -1.3496414 4.814402 -1.3011693 4.6527395 -1.3435905 4.8160944 -1.3405641 4.8169374 -1.3375373 4.817779 -1.33451 4.8186183 -1.331482 4.819456 -1.3284537 4.8202915 -1.3254247 4.8211255 -1.3223952 4.821957 -1.3193653 4.8227873 -1.1058335 4.052248 -1.2181642 4.474945 -1.0290502 3.7896254 -0.98488224 3.6360025 -1.1608154 4.29621 -1.2188311 4.522209 -0.972968 3.6190357 -1.0313317 3.84576 -0.80434865 3.0069075 -0.71235 2.669706 -0.6429403 2.4156685 -0.6956962 2.6205075 -0.70437765 2.6599462 -0.64886576 2.4565527 -0.6236026 2.3669307 -0.58848196 2.239338 -0.75743383 2.8896315 -0.82760525 3.1654453 -0.6512567 2.4973538 -0.5604388 2.1546407 -0.4861638 1.8739182 -0.69702685 2.6936512 -0.5544416 2.1481967 -0.70053476 2.7213032 -0.4824273 1.8789303 -0.51680094 2.01807 -0.6107063 2.3910139 -0.7334488 2.879114 -0.97287726 3.8290327 -0.77186704 3.0459177 -1.0072263 3.9851992 -0.86774886 3.4424446 -0.94512594 3.7593715 -1.0069366 4.015901 -0.8070418 3.227268 -0.8385283 3.3621533 -0.9901143 3.9806013 -1.0191853 4.108495 -0.91773176 3.7094927 -0.8928095 3.618507 -0.7191213 2.9224522 -0.7599499 3.0967617 -0.9932894 4.058625 -1.1054741 4.52934 -1.182495 4.8581586 -1.088631 4.4847894 -1.1641384 4.809034 -0.9976479 4.1326175 -0.84102064 3.4934318 -0.7422419 3.09166 -0.8014513 3.3475497 -0.6462743 2.706907 -0.7086089 2.9762723 -0.608423 2.5626204 -0.42460027 1.7933892 -0.32602152 1.3808904 -0.4465167 1.8965853 -0.65471935 2.7887828 -0.5207663 2.2244895 -0.4597184 1.9692932 -0.3044873 1.3080425 -0.23996621 1.0338086 -0.34719437 1.5000412 -0.27207407 1.1788577 -0.22427076 0.9745269 -0.4008407 1.7467997 -0.2593498 1.1334715 -0.22243342 0.97494787 -0.2218208 0.97508746 -0.2212081 0.97522664 -0.2205953 0.9753654 -0.21998242 0.97550386 -0.34876886 1.5511436 -0.32030332 1.4287374 -0.43632105 1.9519881 -0.53749776 2.4117436 -0.40679902 1.8307174 -0.34201622 1.5437554 -0.21568981 0.97646195 -0.21507624 0.97659725 -0.24277273 1.1056658 -0.25884023 1.1823885 -0.3695258 1.6930946 -0.37624973 1.7291166 -0.2120071 0.9772681 -0.21139303 0.97740114 -0.3051501 1.4152013 -0.47706652 2.2192683 -0.35407567 1.6521782 -0.28272536 1.3233027 -0.3079063 1.4456074 -0.24003597 1.1304445 -0.36215255 1.7108402 -0.39515972 1.8725754 -0.5797689 2.755968 -0.65139765 3.1061463 -0.65783197 3.1466691 -0.69251186 3.322979 -0.86140114 4.146427 -0.8705927 4.2039332 -0.70426166 3.4115443 -0.78060395 3.7933936 -0.6872982 3.3506308 -0.6751955 3.3021686 -0.78060967 3.8299754 -0.93112504 4.5831766 -0.9923925 4.900526 -0.98931324 4.901149 -0.8502913 4.2261105 -0.98315346 4.902388 -0.98007303 4.9030046 -0.9769922 4.90362 -0.97033817 4.8862414 -0.9708293 4.9048433 -0.91519207 4.639053 -0.87108564 4.430137 -0.81913865 4.179818 -0.7961998 4.076338 -0.8396877 4.3133874 -0.95233166 4.9084687 -0.8011742 4.1433005 -0.6823798 3.5408854 -0.5488951 2.857893 -0.5344948 2.7923868 -0.40227947 2.1088228 -0.29200497 1.5359863 -0.29323593 1.547761 -0.33671838 1.7833966 -0.35665706 1.8955319 -0.28748316 1.5331925 -0.3391257 1.8149049 -0.25597215 1.374674 -0.18244146 0.9832167 -0.18182364 0.98333114 -0.18120576 0.9834452 -0.18058781 0.9835589 -0.27994227 1.5300981 -0.17935169 0.98378503 -0.33952245 1.8690131 -0.23487145 1.2975627 -0.1916157 1.0624018 -0.20783576 1.1564924 -0.32917696 1.8383237 -0.4235365 2.3738806 -0.5237041 2.946014 -0.66891414 3.7766387 -0.66092 3.7452059 -0.5828266 3.3148458 -0.5984842 3.4164844 -0.6216494 3.5618904 -0.6271431 3.6067464 -0.6525241 3.766736 -0.7143864 4.139302 -0.8472636 4.9276915 -0.84416723 4.928223 -0.8410706 4.9287524 -0.8379736 4.92928 -0.83487624 4.9298053 -0.75040716 4.4480033 -0.7618563 4.53323 -0.8255823 4.9313703 -0.82248366 4.931888 -0.73374027 4.416855 -0.6295044 3.8041759 -0.5661563 3.434753 -0.57028776 3.4734163 -0.62557894 3.8252063 -0.6045092 3.711009 -0.6112744 3.7674558 -0.63183326 3.9097028 -0.6514308 4.0471144 -0.79147965 4.936959 -0.7883775 4.9374547 -0.6793255 4.2717195 -0.7678791 4.848198 -0.6639372 4.209049 -0.7062833 4.4958553 -0.6864128 4.387348 -0.7697582 4.940392 -0.7384734 4.7592587 -0.6474971 4.1903167 -0.733145 4.7644258 -0.6937771 4.5275116 -0.7542337 4.9427857 -0.75112796 4.943259 -0.74802184 4.94373 -0.7449155 4.9441986 -0.618129 4.120255 -0.5060476 3.3876617 -0.59456927 3.9974444 -0.732487 4.9460554 -0.7293792 4.9465146 -0.72627103 4.946972 -0.62679476 4.2881384 -0.6458497 4.4379835 -0.683568 4.7179656 -0.5394047 3.7395105 -0.6503142 4.5285435 -0.70761627 4.9496746 -0.5807565 4.080608 -0.5767167 4.0705557 -0.46318716 3.284102 -0.5364607 3.8209872 -0.5457341 3.9048557 -0.41879255 3.0103562 -0.484247 3.4969528 -0.5403065 3.9199076 -0.53161395 3.8748405 -0.46958718 3.4387822 -0.51561856 3.793649 -0.57560444 4.255025 -0.6447322 4.7886834 -0.6529048 4.872534 -0.66093594 4.956124 -0.5663193 4.2670875 -0.6547074 4.9569507 -0.6462981 4.917079 -0.6484778 4.9577694 -0.5817924 4.4697804 -0.64224714 4.9585805 -0.6391314 4.958983 -0.5456247 4.254554 -0.46311396 3.6292415 -0.4156848 3.2739391 -0.51768243 4.097878 -0.55356556 4.4041753 -0.60063493 4.803047 -0.58415884 4.695252 -0.6141969 4.962133 -0.611079 4.9625177 -0.60068804 4.9035316 -0.5182163 4.2524357 -0.5008638 4.1316595 -0.5651671 4.686749 -0.58985007 4.9174294 -0.5146395 4.313335 -0.5264615 4.4361105 -0.579533 4.9096637 -0.583007 4.9658937 -0.57988673 4.9662595 -0.55954885 4.8183613 -0.5736455 4.9669843 -0.5705245 4.9673433 -0.5674033 4.967701 -0.56428194 4.9680567 -0.5525303 4.8920016 -0.51533175 4.5885024 -0.40640828 3.6392655 -0.41169962 3.707768 -0.42280492 3.829719 -0.4665034 4.250016 -0.4926091 4.513997 -0.5393027 4.97083 -0.53617936 4.971168 -0.51858276 4.8365226 -0.45216507 4.2422266 -0.52680796 4.97217 -0.52134544 4.950297 -0.5205594 4.972828 -0.5174347 4.973154 -0.48729506 4.7122393 -0.5111849 4.9738 -0.4213666 4.125359 -0.37304282 3.67509 -0.40776134 4.0424037 -0.4603602 4.5927477 -0.4955567 4.975382 -0.4924305 4.9756923 -0.4346115 4.4198017 -0.48617747 4.976307 -0.48305067 4.9766116 -0.47992367 4.976914 -0.4767965 4.977215 -0.45789123 4.8117123 -0.47054157 4.97781 -0.45913574 4.8899403 -0.4642859 4.9783974 -0.39390483 4.2526207 -0.3560773 3.870713 -0.41652915 4.5592523 -0.41325542 4.555005 -0.35177606 3.9046266 -0.4204179 4.6995735 -0.35591215 4.0068727 -0.31881803 3.6150374 -0.23752233 2.7127113 -0.27240938 3.1338112 -0.31128398 3.6072962 -0.30856758 3.60224 -0.256409 3.0156178 -0.30724016 3.6405365 -0.26364255 3.1475408 -0.2302679 2.7700155 -0.23021719 2.7906427 -0.2406707 2.9399004 -0.2908637 3.5806959 -0.23043267 2.8590152 -0.19279353 2.410936 -0.14597534 1.840011 -0.19326623 2.4556801 -0.21356194 2.7355351 -0.19834553 2.5613658 -0.162287 2.1129646 -0.13163133 1.7280493 -0.16159667 2.1391795 -0.09043528 1.2072597 -0.12855126 1.7306836 -0.11185575 1.5188304 -0.11469841 1.5709037 -0.13058989 1.8041601 -0.09408646 1.3112901 -0.10655664 1.4982753 -0.12301127 1.745136 -0.13965662 1.9991883 -0.16040248 2.3171077 -0.20354104 2.9673302 -0.2012328 2.9609277 -0.14879744 2.2099211 -0.12626629 1.8930359 -0.11722986 1.7743461 -0.12324644 1.8833994 -0.13993555 2.1592557 -0.0791708 1.233644 -0.108307436 1.7044077 -0.08043041 1.2784048 -0.062163427 0.998066 -0.069552526 1.128126 -0.081186384 1.3304342 -0.06028201 0.9981814 -0.05965482 0.9982191 -0.05902761 0.9982563 -0.07724332 1.3203936 -0.09401728 1.6246353 -0.057145838 0.9983658 -0.071223296 1.2581617 -0.06888751 1.2306019 -0.06451778 1.1656656 -0.11029713 2.0157292 -0.12721363 2.3519728 -0.08314495 1.5553348 -0.09537794 1.805449 -0.14028658 2.6875973 -0.09340937 1.8113909 -0.05718451 1.1226343 -0.050244316 0.998737 -0.054818835 1.1034838 -0.04898923 0.9987993 -0.06901514 1.4253935 -0.06562835 1.3733075 -0.047106452 0.99888986 -0.066092744 1.4204602 -0.08396617 1.8293505 -0.09084883 2.00683 -0.11997825 2.6876707 -0.08810363 2.0018694 -0.09489986 2.1875823 -0.08564193 2.0032413 -0.063971505 1.5187113 -0.04145714 0.99914026 -0.06975337 1.7069879 -0.07655389 1.9027128 -0.1100607 2.778977 -0.13736467 3.5243883 -0.1203153 3.1376061 -0.14062811 3.7285094 -0.16156213 4.356209 -0.1800908 4.939595 -0.16213256 4.5251164 -0.13550204 3.8494499 -0.10038565 2.9037294 -0.13163029 3.8780687 -0.10430447 3.1310253 -0.097730435 2.9901435 -0.12097541 3.7739697 -0.13828824 4.400403 -0.110373005 3.5838487 -0.10921794 3.6202717 -0.1002888 3.3950677 -0.09399312 3.251153 -0.09985701 3.530778 -0.075989455 2.7479582 -0.09328635 3.4519467 -0.10461179 3.9632425 -0.08903525 3.4554305 -0.0663768 2.6404927 -0.07736586 3.1565883 -0.06484384 2.7153308 -0.07115218 3.060049 -0.07247153 3.2033985 -0.07294136 3.3163161 -0.053828225 2.5193307 -0.03771548 1.8187104 -0.020104839 0.9997979 -0.02827934 1.4516864 -0.024162782 1.2817236 -0.01822023 0.999834 -0.019618796 1.115038 -0.016963787 0.9998561 -0.030819234 1.8863834 -0.0316215 2.0129218 -0.02115695 1.4029075 -0.024611935 1.7029732 -0.013822568 0.99990445 -0.018978415 1.4382539 -0.018469512 1.4696798 -0.011937768 0.9999287 -0.011309492 0.99993604 -0.010681212 0.99994296 -0.01761934 1.7525691 -0.013938056 1.47883 -0.008796346 0.9999613 -0.00816805 0.9999666 -0.007539751 0.99997157 -0.0069114487 0.9999761 -0.006283144 0.9999803 -0.0056548365 0.999984 -0.0062720166 1.2477676 -0.0067817112 1.5419085 -0.0065855714 1.7468688 -0.0051465444 1.6381905 -0.0042002285 1.6712143 -0.00428081 2.2710376 -0.0029636493 2.358396 -8.658769E-4 1.3780857 -1.2682258E-16 2.0711699 --9.595922E-4 1.5272381 --0.0020427802 1.625592 --0.0018899165 1.0026307 --0.0025132715 0.99999684 --0.00525245 1.6719011 --0.006739233 1.7876287 --0.011316271 2.5728981 --0.017828446 3.5468266 --0.023311198 4.122281 --0.026326848 4.189993 --0.02359119 3.4132679 --0.029267523 3.8816524 --0.03777699 4.6248164 --0.04398173 4.9998064 --0.047123194 4.999778 --0.050264634 4.9997473 --0.047786567 4.473635 --0.056085847 4.958866 --0.05410502 4.531933 --0.059153188 4.707013 --0.056681238 4.295512 --0.05776255 4.1784587 --0.06036576 4.176887 --0.06730425 4.4629135 --0.062165204 3.9572344 --0.07653357 4.6844664 --0.068018116 4.00903 --0.07491733 4.257941 --0.07297372 4.004429 --0.06960046 3.691982 --0.06351027 3.260224 --0.062974416 3.1316686 --0.076826476 3.7047153 --0.08316763 3.8925076 --0.0661278 3.006534 --0.060234357 2.6624892 --0.08514169 3.6616971 --0.07549321 3.1612723 --0.074726485 3.0488997 --0.08585094 3.4151812 --0.07031451 2.7288845 --0.08704553 3.2977405 --0.09167031 3.3921473 --0.11522974 4.1669793 --0.10831159 3.829718 --0.13013668 4.5013323 --0.14763339 4.99782 --0.13409325 4.4448195 --0.15383305 4.9950113 --0.1296202 4.124582 --0.1601938 4.997433 --0.14841746 4.540955 --0.14876178 4.465551 --0.14893676 4.387949 --0.16397925 4.7432213 --0.13850842 3.9348576 --0.15541244 4.3375583 --0.16056876 4.4041376 --0.18224369 4.913847 --0.18350413 4.865292 --0.19159023 4.996328 --0.15856345 4.0682883 --0.14310266 3.6132698 --0.16021624 3.9821033 --0.17504878 4.283752 --0.20728569 4.9957013 --0.21042454 4.99557 --0.21356331 4.995437 --0.182516 4.207264 --0.17414309 3.9568372 --0.17754006 3.9771314 --0.1903266 4.204271 --0.22925586 4.9947414 --0.2323941 4.9945965 --0.19426349 4.119347 --0.16434057 3.438912 --0.17205015 3.553411 --0.12545076 2.5577078 --0.10891655 2.1924517 --0.13936333 2.7702098 --0.19068655 3.7435186 --0.19780938 3.8359122 --0.16699748 3.1993225 --0.14521661 2.7488663 --0.16258033 3.0412772 --0.12283313 2.270985 --0.09036955 1.651544 --0.11886448 2.1475666 --0.089799404 1.6041707 --0.12012855 2.1220744 --0.12096765 2.1133642 --0.0820887 1.4185075 --0.058400374 0.9982932 --0.05902761 0.9982563 --0.071522616 1.1968058 --0.06028201 0.9981814 --0.060909174 0.9981433 --0.065704465 1.0657113 --0.062163427 0.998066 --0.06279052 0.9980267 --0.06341758 0.9979871 --0.064044625 0.99794704 --0.10696937 1.6505756 --0.10844456 1.6572033 --0.12318781 1.8645234 --0.12022781 1.8025047 --0.06717945 0.9977409 --0.06780633 0.9976985 --0.068433195 0.9976557 --0.117138304 1.6921314 --0.1234918 1.7677886 --0.083582856 1.185773 --0.07094036 0.9974806 --0.07156708 0.9974358 --0.07219377 0.9973906 --0.07414599 1.0154997 --0.12571394 1.7070034 --0.11909864 1.6034231 --0.07470026 0.99720603 --0.07532681 0.9971589 --0.0819535 1.0758815 --0.07657981 0.99706346 --0.07720627 0.9970151 --0.0778327 0.9969664 --0.14966442 1.9016666 --0.15616927 1.9685048 --0.21147479 2.6445503 --0.1978884 2.455233 --0.15594678 1.9197927 --0.12554578 1.5335981 --0.18914269 2.2927468 --0.10861949 1.3066418 --0.10155907 1.2124801 --0.17097011 2.0258515 --0.19473949 2.2903247 --0.18450516 2.1539266 --0.21184385 2.45494 --0.17927736 2.0624156 --0.15709417 1.7941519 --0.16175465 1.8341155 --0.2226217 2.5062835 --0.30560747 3.4161835 --0.2326091 2.581903 --0.15303795 1.6868227 --0.12386073 1.3557569 --0.0916059 0.99579537 --0.16822198 1.8161348 --0.20558691 2.2044463 --0.19293338 2.0548012 --0.22415292 2.3712902 --0.20367344 2.1402857 --0.12623909 1.317793 --0.095984735 0.9953828 --0.14978783 1.5431834 --0.12766668 1.3067422 --0.20415497 2.0761635 --0.23131612 2.3373 --0.32185662 3.2314355 --0.40128893 4.0034275 --0.33936033 3.3642998 --0.38354456 3.7785497 --0.43825993 4.2907515 --0.40515745 3.9421597 --0.35236385 3.407428 --0.3996916 3.8415048 --0.43146613 4.121733 --0.43004042 4.0833344 --0.4416172 4.1681137 --0.38268107 3.5903254 --0.404835 3.7756627 --0.45220348 4.192589 --0.39861244 3.6740677 --0.37541464 3.4400916 --0.45964745 4.187556 --0.39475384 3.5756357 --0.3340389 3.0083554 --0.29178974 2.6128905 --0.37193877 3.3117344 --0.41025707 3.6323407 --0.5196796 4.5753684 --0.4787125 4.1911993 --0.55399877 4.82346 --0.45682472 3.9554763 --0.5576221 4.8017697 --0.57988673 4.9662595 --0.52399015 4.463205 --0.44709578 3.7876873 --0.53189194 4.4818687 --0.5461135 4.5771275 --0.44245917 3.6886692 --0.3465259 2.873628 --0.35118645 2.896961 --0.46896708 3.848301 --0.46833727 3.8231268 --0.43962467 3.5701525 --0.51831746 4.187517 --0.49097517 3.9462764 --0.59443337 4.7534556 --0.6235492 4.960966 --0.6266662 4.9605737 --0.62978286 4.960179 --0.5217305 4.088596 --0.41112593 3.2057884 --0.39918995 3.097291 --0.5179924 3.9992497 --0.56156474 4.314376 --0.6373038 4.8723416 --0.5945804 4.5236073 --0.5515301 4.1757703 --0.6314741 4.7580137 --0.55704665 4.177095 --0.5010291 3.7391074 --0.6192805 4.5996437 --0.5813802 4.297721 --0.5014848 3.68966 --0.42058042 3.079906 --0.44637784 3.2535698 --0.52420825 3.8031151 --0.6403899 4.624527 --0.58946043 4.237148 --0.6920629 4.9518733 --0.69517416 4.9514375 --0.5889504 4.1757917 --0.6509018 4.594166 --0.6414811 4.507281 --0.70761627 4.9496746 --0.58649963 4.0841627 --0.5904227 4.093201 --0.53204864 3.6721838 --0.39839107 2.737561 --0.31644472 2.1649172 --0.38286743 2.6078892 --0.4488899 3.0442884 --0.5269982 3.55851 --0.48592424 3.2669954 --0.6083745 4.0726733 --0.7418088 4.944666 --0.6412046 4.255842 --0.5461904 3.609811 --0.6615499 4.3537354 --0.6276918 4.1135073 --0.70601165 4.607353 --0.7604444 4.941834 --0.7467822 4.8328457 --0.7666539 4.9408746 --0.69130474 4.436869 --0.7728622 4.939907 --0.63080525 4.015399 --0.730657 4.632021 --0.67631835 4.270106 --0.73847777 4.643679 --0.787703 4.9332304 --0.79147965 4.936959 --0.7945815 4.9364605 --0.797683 4.9359603 --0.7810431 4.813788 --0.73870814 4.5348406 --0.6845806 4.1859818 --0.70323426 4.283145 --0.8131858 4.9334297 --0.81628543 4.9329176 --0.79358983 4.777128 --0.822028 4.9291553 --0.7576309 4.5254827 --0.82868063 4.9308505 --0.8317786 4.930329 --0.83487624 4.9298053 --0.7031722 4.136327 --0.8410706 4.9287524 --0.68616164 4.005791 --0.7246348 4.214482 --0.60428214 3.5013351 --0.7191965 4.151606 --0.61253446 3.5227313 --0.7542011 4.3213778 --0.6119963 3.4936187 --0.6961373 3.9593046 --0.5455695 3.091554 --0.6324265 3.5706322 --0.52019984 2.9263012 --0.36435568 2.042178 --0.50979954 2.8470297 --0.528542 2.9410472 --0.47550872 2.6364295 --0.3953221 2.1839828 --0.27572456 1.5178165 --0.22467306 1.2323831 --0.21777676 1.1903161 --0.18058781 0.9835589 --0.18120576 0.9834452 --0.25203246 1.3630316 --0.20236288 1.0905776 --0.28399765 1.5251822 --0.26649383 1.4261997 --0.38851014 2.0719852 --0.47239566 2.51065 --0.6155251 3.2600696 --0.7674559 4.0507936 --0.86722356 4.561715 --0.9369066 4.911436 --0.91939145 4.8032203 --0.94307774 4.910255 --0.9383641 4.869194 --0.94924736 4.909066 --0.95233166 4.9084687 --0.95541555 4.9078693 --0.9584991 4.907268 --0.83827937 4.2774873 --0.8196871 4.1687365 --0.8678309 4.398982 --0.9326608 4.712008 --0.93852395 4.7260375 --0.9769922 4.90362 --0.98007303 4.9030046 --0.9753944 4.8636985 --0.9772777 4.8572574 --0.98931324 4.901149 --0.9923925 4.900526 --0.9954714 4.899902 --0.905276 4.441637 --1.001628 4.898647 --0.913101 4.4514365 --0.8777249 4.265359 --0.72147167 3.494912 --0.57759464 2.789099 --0.38499033 1.8531835 --0.3923087 1.8824712 --0.3419872 1.6358593 --0.2052477 0.97871006 --0.40948814 1.9465278 --0.51949185 2.4617584 --0.68323946 3.2276828 --0.5858898 2.7592363 --0.50323737 2.362679 --0.444044 2.0783584 --0.38210768 1.7829803 --0.21016462 0.977666 --0.21077888 0.97753376 --0.39075494 1.8067025 --0.38863042 1.7914311 --0.22807479 1.0481547 --0.22798528 1.0445838 --0.21384884 0.9768668 --0.21446258 0.9767322 --0.21507624 0.97659725 --0.34822303 1.5764608 --0.21630329 0.9763262 --0.2169167 0.9761901 --0.4204684 1.8866348 --0.41130206 1.8400595 --0.5547889 2.474678 --0.4055017 1.8034619 --0.6080576 2.696409 --0.7509461 3.3203194 --0.85950994 3.789269 --1.0228944 4.496474 --1.025455 4.4946713 --1.1152298 4.8740396 --0.94884336 4.1349077 --1.0365523 4.504145 --1.1244152 4.8719287 --1.1274761 4.8712215 --1.1305366 4.870512 --1.1335965 4.8698006 --1.136656 4.8690877 --0.9280559 3.964255 --1.0237898 4.3608418 --0.91761565 3.8975842 --0.93855226 3.9753137 --1.131452 4.778927 --1.155004 4.864768 --1.1580604 4.8640413 --1.0756075 4.505161 --0.96623814 4.035841 --0.7621622 3.174634 --0.9600278 3.987764 --1.0704848 4.4343343 --0.9164859 3.7859855 --1.0767872 4.435997 --0.96433586 3.9618745 --1.0306426 4.2227407 --0.9478515 3.8729637 --1.0994425 4.4801784 --1.0760516 4.372989 --1.1977515 4.8544197 --1.2008014 4.8536663 --1.2038507 4.852911 --1.2068998 4.8521533 --1.2099482 4.851394 --0.9799777 3.918819 --0.80094564 3.1943607 --0.63037884 2.5074205 --0.64031416 2.540189 --0.7357421 2.9110427 --0.88094324 3.4763505 --0.74114436 2.9169827 --0.9545926 3.747202 --0.80518574 3.1524322 --0.7615133 2.9736538 --0.94221073 3.6696687 --1.0869509 4.2223787 --1.1936002 4.624632 --1.0600493 4.0965466 --1.255617 4.8397756 --1.2586577 4.8389854 --1.2170036 4.6668057 --1.1954079 4.572226 --1.134609 4.3285656 --1.1602403 4.4150376 --1.2738537 4.8350077 --1.2768914 4.834206 --1.2799284 4.8334026 --1.2829652 4.8325977 --1.2860013 4.8317904 --1.289037 4.8309817 --1.1091379 4.146305 --0.9241649 3.4461432 --1.126688 4.19081 --0.87999874 3.2650454 --0.9135245 3.3809795 --0.8709738 3.2154737 --1.0820961 3.9849744 --1.2522446 4.6001396 --1.3163347 4.823615 --1.3193653 4.8227873 --1.3223952 4.821957 --1.2933934 4.7046137 --1.1649987 4.2271957 --1.3266853 4.8020935 --1.2894623 4.655961 --1.0281836 3.7034938 --1.2838705 4.613225 --1.1958482 4.286513 --1.3466163 4.815249 --1.1049033 3.941379 --0.9452122 3.363601 --0.9941986 3.5294063 --0.80418587 2.848003 --0.6652374 2.350273 --0.50468475 1.7787772 --0.43710834 1.5369239 --0.27590787 0.9678127 --0.45920545 1.6069425 --0.48263696 1.6849308 --0.49472833 1.7230525 --0.68794113 2.390316 --0.49016666 1.6991127 --0.49639174 1.7166405 --0.5500707 1.8978058 --0.46211964 1.5906262 --0.27959442 0.9601182 --0.28019762 0.95994234 --0.35790598 1.2233089 --0.46100223 1.5720223 --0.66136134 2.2500126 --0.7006224 2.3780587 --0.816388 2.7645824 --0.65144515 2.2009346 --0.46156138 1.5558116 --0.28501925 0.9585218 --0.28562146 0.9583425 --0.28622356 0.95816284 --0.39885524 1.3321565 --0.30676264 1.0222338 --0.28802913 0.95762163 --0.28863078 0.9574405 --0.46061298 1.5244699 --0.607242 2.00521 --0.4477503 1.4752008 --0.62890476 2.0673747 --0.71772623 2.3540409 --0.51518387 1.6859324 --0.61026275 1.9925961 --0.46071166 1.5009216 --0.31099072 1.0108912 --0.38977098 1.2641437 --0.53820026 1.7416568 --0.40912986 1.321032 --0.44629312 1.4378304 --0.3257501 1.0471505 --0.2976415 0.9546777 --0.29824126 0.95449054 --0.36297908 1.1591183 --0.29944047 0.954115 --0.30003992 0.9539266 --0.3006392 0.9537379 --0.34074616 1.0786078 --0.51964784 1.6413175 --0.52789897 1.6637453 --0.30303526 0.9529793 --0.33678472 1.0568142 --0.30423257 0.9525978 --0.30483106 0.95240647 --0.3054294 0.9522147 --0.30602765 0.9520226 --0.45808336 1.4219861 --0.3711941 1.1497879 --0.30782163 0.9514441 --0.30841938 0.9512505 --0.5472467 1.6842523 --0.33794168 1.0378582 --0.3102119 0.95066744 --0.31080914 0.95047235 --0.31140628 0.95027685 --0.55660236 1.6949095 --0.3126002 0.9498848 --0.31319696 0.9496882 --0.3137936 0.9494912 --0.5099316 1.539727 --0.80267435 2.418564 --0.92185533 2.7718453 --1.1122425 3.3372998 --1.204485 3.6065192 --0.91102576 2.7221375 --1.1534014 3.439172 --1.2801231 3.8090863 --1.1434501 3.3953407 --1.1156117 3.305809 --0.81823874 2.419607 --1.0519323 3.1042318 --1.0228195 3.0120928 --0.76945335 2.2612891 --0.8795785 2.5796118 --0.6460486 1.8908296 --0.6560984 1.9163067 --0.8030177 2.3406227 --0.9113347 2.6509159 --1.1986026 3.4794164 --1.1404101 3.3037472 --1.3781925 3.9844801 --1.4431673 4.163858 --1.4884255 4.285733 --1.4045533 4.0360494 --1.1993959 3.4395561 --1.2727757 3.642627 --1.1766381 3.3607032 --1.3605341 3.8781307 --1.3629965 3.877349 --1.5755236 4.472945 --1.6640977 4.7149525 --1.4103571 3.988034 --1.2279235 3.4652426 --1.2041552 3.3913975 --1.2841195 3.6094158 --1.4098979 3.955084 --1.3077602 3.6612897 --1.5122786 4.225489 --1.5232548 4.2477436 --1.3205849 3.6753097 --1.5185764 4.218008 --1.6966451 4.7033386 --1.403122 3.882008 --1.1136202 3.0750003 --1.2751211 3.514049 --0.97522396 2.6823187 --0.7277741 1.9978068 --0.8320809 2.2796838 --1.0434976 2.8533428 --0.7809355 2.13124 --0.6102713 1.6622488 --0.34523267 0.93851715 --0.3458223 0.9383 --0.48720056 1.3193383 --0.34700114 0.9378647 --0.34759033 0.9376465 --0.3481794 0.93742794 --0.38958097 1.0468805 --0.34935713 0.93698967 --0.3499458 0.93676996 --0.35053432 0.9365499 --0.54611784 1.4563177 --0.37741393 1.0045193 --0.47530073 1.2626432 --0.5541121 1.4692062 --0.38975444 1.0314552 --0.35406253 0.93522173 --0.61578715 1.6234607 --0.5646037 1.4857048 --0.35582474 0.93455267 --0.36044064 0.9448903 --0.6182265 1.6176198 --0.38597447 1.0080211 --0.6499598 1.6942637 --0.4669995 1.2150538 --0.3593454 0.93320465 --0.35993168 0.9329787 --0.3983472 1.0306268 --0.6392991 1.6509457 --0.7821406 2.0160613 --0.7018653 1.8057766 --0.5211781 1.3384091 --0.36344635 0.9316151 --0.36403164 0.9313866 --0.61124074 1.5609856 --0.6442316 1.6421977 --0.5439386 1.3839844 --0.8241848 2.093172 --0.993049 2.5173934 --0.665766 1.6846247 --0.83977836 2.1210382 --0.9718182 2.450034 --0.89974856 2.2641885 --1.2645322 3.1763382 --1.432571 3.5918605 --1.2932014 3.2365103 --1.1563611 2.8887694 --1.3748596 3.4283671 --1.005499 2.502772 --0.97244877 2.4161174 --0.88911825 2.205076 --0.5873503 1.4540353 --0.8053589 1.9901325 --0.7509142 1.8522458 --0.53325033 1.3129742 --0.37687102 0.9262658 --0.7522145 1.8454547 --0.6557484 1.605901 --0.77338433 1.8905914 --0.99319655 2.423591 --0.789135 1.9221984 --0.60000014 1.4588884 --0.45087242 1.0943321 --0.6684289 1.6194834 --0.8299445 2.0072296 --1.206941 2.9138134 --1.3333966 3.2133918 --1.3781257 3.3153 --1.152667 2.7680151 --0.87332296 2.0934908 --0.830587 1.9875307 --0.9385946 2.2420237 --0.8153492 1.9441968 --0.6094499 1.4506745 --0.3879017 0.9217008 --0.38848075 0.9214568 --0.38905963 0.92121255 --0.38963836 0.92096794 --0.39021695 0.92072296 --0.51492906 1.2128614 --0.7072355 1.6629137 --0.5573287 1.3081571 --0.9087339 2.129261 --0.7333205 1.7152625 --0.9244534 2.1585758 --1.0810987 2.5199625 --0.92335016 2.1485353 --0.84269476 1.9574677 --0.94893265 2.2004364 --0.8381915 1.9402901 --0.5218073 1.2058256 --0.51364046 1.1849098 --0.65508604 1.5086105 --0.83907855 1.9290121 --0.57974267 1.3305217 --0.8530605 1.9544376 --1.133425 2.5923338 --0.7741569 1.7676007 --0.9222403 2.1021183 --0.9096707 2.0699315 --0.52862805 1.2008301 --0.70001 1.5874352 --0.74262714 1.6812174 --0.7744578 1.750302 --1.1395648 2.5710895 --0.81775326 1.8418924 --0.6874069 1.5456833 --0.85083574 1.9099317 --1.0201668 2.2861757 --0.74989784 1.6776743 --0.61212516 1.3671424 --0.8582712 1.9136691 --1.2266394 2.730416 --1.2394719 2.7543492 --1.5091817 3.3480744 --1.226204 2.715741 --1.4297174 3.1611757 --1.3949178 3.0790782 --1.3941038 3.0721443 --1.4451002 3.1792138 --1.7670075 3.8809335 --2.0747366 4.549227 --1.954038 4.2774534 --1.9524645 4.266913 --1.9983488 4.3599463 --1.6978688 3.6982303 --1.4474106 3.147475 --1.1896427 2.582668 --1.3034652 2.8251002 --1.5181552 3.2849865 --1.5685133 3.3883593 --1.8589561 4.009175 --1.8922414 4.07425 --1.5165056 3.259878 --1.7738096 3.806722 --1.6374032 3.508225 --1.2796746 2.737283 --1.6110615 3.4404984 --1.8479872 3.9400165 --1.6985482 3.6154933 --1.3473426 2.8632488 --1.7633711 3.741251 --1.7010369 3.6031277 --1.7676518 3.7381454 --1.8324134 3.8688083 --2.0330625 4.2854795 --2.145937 4.5160775 --2.148774 4.514728 --2.1516101 4.513377 --2.1544456 4.5120244 --1.8238691 3.8135386 --1.7913337 3.7394717 --1.6853397 3.5125396 --1.2794863 2.6623805 --1.5240444 3.1661646 --1.5652858 3.2466214 --1.7303337 3.5831966 --1.79467 3.7104697 --1.9590434 4.0438266 --1.7448889 3.596012 --1.6199033 3.3330977 --2.041972 4.1948357 --2.0849988 4.2763963 --1.7755245 3.635854 --1.4227748 2.9088695 --1.2896471 2.6324973 --1.6460559 3.3546815 --1.5718937 3.1984544 --1.3495058 2.7415915 --1.0785587 2.1876783 --1.0935752 2.2146273 --0.6599713 1.3344121 --0.44388464 0.89608395 --0.44444758 0.8958049 --0.44501033 0.89552546 --0.58139324 1.168136 --0.44613534 0.8949655 --0.44669756 0.89468503 --0.8496784 1.6991382 --1.0915262 2.1793475 --0.79010546 1.5750568 --0.9421186 1.8751507 --0.54949 1.0919694 --0.45006728 0.89299464 --0.73084176 1.4478253 --0.9678079 1.9142734 --0.69903994 1.3805095 --0.9770309 1.9264997 --1.0232761 2.0145466 --1.0212822 2.0074964 --0.88927966 1.7453096 --1.2053373 2.3619375 --1.2344239 2.4151855 --0.7807713 1.5252358 --0.56898713 1.1097959 --0.8943608 1.7417331 --1.1948711 2.3233716 --0.9586843 1.861241 --1.1855334 2.2981098 --0.8535919 1.6521057 --0.4837415 0.93482876 --0.4601378 0.8878475 --0.46069556 0.8875582 --0.70575976 1.3576026 --0.46181053 0.88697857 --0.68184906 1.3075902 --0.4840037 0.926759 --0.60264486 1.1521654 --0.5153963 0.9838538 --0.46459478 0.8855234 --0.51833355 0.98644316 --0.46570718 0.8849389 --0.5033914 0.95509 --0.46681887 0.8843529 --0.89639306 1.6955673 --1.0568185 1.9959826 --1.4894876 2.8088837 --1.2368625 2.3289452 --1.1836776 2.225424 --0.85901546 1.6125844 --0.54718554 1.025649 --0.7858962 1.470864 --0.6495067 1.2137654 --0.83005 1.5488155 --1.1258605 2.0976107 --0.8581789 1.5964804 --0.57767564 1.0730395 --0.4745799 0.8802124 --0.47513285 0.87991405 --0.47568563 0.87961537 --0.4762382 0.87931633 --0.7558013 1.3934045 --0.4773428 0.8787172 --0.9296406 1.7087697 --0.6054631 1.1112361 --0.4789983 0.87781584 --0.75058186 1.3734688 --0.5523003 1.0091316 --0.6097811 1.1124969 --0.5139707 0.93630224 --0.8275395 1.5052888 --0.5410248 0.9826575 --0.4828545 0.8757006 --0.8089865 1.464993 --0.9338553 1.6886097 --1.0045048 1.8136674 --1.4683155 2.6471674 --1.4464967 2.603973 --1.3054503 2.346588 --1.1160483 2.003168 --1.2732303 2.2819169 --0.9813359 1.7561817 --1.2867901 2.2994235 --1.1149235 1.9893728 --0.6981599 1.2439028 --0.8427696 1.4993441 --0.9674839 1.7186902 --1.1028142 1.9562218 --1.5563992 2.756761 --1.291267 2.2837946 --0.8684105 1.5336611 --0.50066674 0.88291085 --0.76273185 1.3430876 --0.54094094 0.9511457 --0.70094156 1.2306775 --0.49545866 0.86863154 --0.49600434 0.86832005 --0.90697366 1.5854615 --1.0148678 1.7714854 --0.9404728 1.6392378 --0.94688904 1.6480215 --0.7449298 1.2946359 --0.6314003 1.0957363 --0.49981862 0.8661301 --0.63393205 1.0969411 --0.50090665 0.86550134 --0.50145036 0.86518645 --0.50199383 0.8648712 --0.5025372 0.8645556 --0.5030803 0.8642397 --0.7485358 1.2840505 --0.73123455 1.2525622 --0.6456961 1.1044453 --0.50525075 0.86297256 --0.50579286 0.8626549 --0.85749936 1.460404 --1.0193326 1.7335263 --1.248696 2.120542 --1.3272067 2.250634 --0.9400402 1.591803 --0.70886254 1.1986212 --1.0479363 1.7694253 --0.7384809 1.2451293 --0.72729355 1.2245123 --0.5112031 0.85945994 --0.53372663 0.89604574 --0.5122827 0.85881686 --0.83913887 1.4047683 --1.0920142 1.8254902 --0.7878877 1.3152139 --1.1406354 1.9013416 --1.3634261 2.269481 --1.1393238 1.8937566 --1.6009172 2.6572251 --1.3162163 2.1815724 --1.8301352 3.0290666 --1.8423717 3.044995 --1.661816 2.7426877 --1.4037617 2.31351 --1.163337 1.9145573 --0.8456453 1.3897492 --0.520354 0.8539507 --0.5208905 0.8536235 --0.5214267 0.8532961 --0.5219627 0.8529683 --1.0108945 1.6496298 --1.3126069 2.138962 --1.7182567 2.7960472 --1.5277219 2.4824998 --1.8740431 3.0409784 --1.9660074 3.185724 --1.8023401 2.9164155 --2.0763109 3.355019 --2.5117605 4.05295 --2.2051792 3.5532658 --2.5702622 4.1357317 --2.6074204 4.189648 --2.644562 4.243382 --2.5719101 4.121036 --2.6498923 4.2400556 --2.652556 4.2383895 --2.5650883 4.092909 --2.6351721 4.1988707 --2.6605403 4.233382 --2.2890313 3.637172 --2.665858 4.2300353 --2.6685154 4.2283597 --2.6711717 4.226682 --2.4026046 3.7964356 --2.3917933 3.7741027 --2.679134 4.2216396 --2.681786 4.2199554 --2.684437 4.21827 --2.6870868 4.2165823 --2.6897357 4.214893 --2.4372714 3.8139875 --2.3706934 3.7046704 --2.2450814 3.5035267 --2.220231 3.459959 --2.6964643 4.196307 --2.5303183 3.9323118 --2.2675183 3.5190392 --2.59479 4.021392 --2.6561275 4.1107802 --2.585104 3.9953506 --2.5837302 3.9877317 --2.08825 3.2185736 --2.50617 3.8573947 --2.25406 3.4645903 --1.8720447 2.8734646 --1.685355 2.5833576 --2.1462405 3.285303 --1.8290267 2.7958977 --1.9701402 3.007481 --1.9690853 3.0017543 --1.475725 2.2465768 --1.35414 2.0586612 --0.82585937 1.2538143 --0.88590723 1.3431407 --0.71801215 1.0871052 --0.5516459 0.83407843 --0.5521698 0.83373165 --0.55269355 0.8333846 --1.014423 1.5275234 --1.3046658 1.9618965 --1.160574 1.742842 --1.106697 1.6596731 --1.2510897 1.8736621 --1.7496051 2.616689 --1.405783 2.0996165 --1.415027 2.1105533 --1.0846401 1.6155761 --1.5540142 2.3115711 --2.052254 3.048556 --1.7518528 2.5987937 --1.2405845 1.837858 --1.7509892 2.5904832 --1.340547 1.9805753 --1.7385174 2.5650785 --1.9724426 2.9062874 --1.5557501 2.2892168 --1.0529279 1.5472442 --0.6948328 1.0196568 --0.56364137 0.8260196 --0.5641603 0.8256653 --0.56467897 0.82531065 --0.64509463 0.94157284 --0.77879524 1.1351904 --1.3011845 1.894085 --1.3836793 2.0114603 --1.5776073 2.290291 --1.8018447 2.6123128 --1.5365746 2.2247324 --1.5043316 2.1751254 --1.0486672 1.5142418 --1.4965725 2.1581044 --1.4222733 2.0482132 --1.1243854 1.6170558 --1.6312367 2.3428514 --1.5936996 2.2858748 --2.021382 2.8954291 --1.9108561 2.7334507 --2.2469208 3.2098892 --1.7807955 2.5405962 --1.9445894 2.7705696 --1.9227836 2.7358444 --1.5231061 2.164269 --1.3760263 1.9526668 --1.5429946 2.186686 --1.0802333 1.5288345 --0.92984 1.3142327 --1.2676344 1.7892846 --1.4110966 1.9891328 --1.8648268 2.6252303 --2.1446867 3.0151918 --2.4435437 3.4307857 --2.06074 2.8894775 --2.2611887 3.1663275 --1.933117 2.703338 --1.8496176 2.5831375 --2.3431897 3.26811 --1.9206327 2.6752071 --1.4578317 2.0278912 --1.18327 1.6437867 --1.619864 2.2473195 --1.7248478 2.3898017 --1.5042497 2.0814028 --1.1708078 1.6178832 --0.6417747 0.8856654 --1.0519993 1.4498677 --0.65031993 0.89508855 --0.7294945 1.0027375 --0.58880144 0.8082777 --0.8241412 1.1298482 --0.5898167 0.8075372 --0.5927384 0.8104677 --0.9630513 1.3150721 --1.3565483 1.8499631 --1.0654845 1.4511184 --0.91292876 1.2417114 --0.59391767 0.80674887 --0.5933627 0.8049352 --0.5938683 0.8045623 --0.80545837 1.0897869 --0.5948789 0.8038153 --0.73775864 0.9955692 --0.7848135 1.0576775 --1.0179096 1.3700169 --0.66847736 0.8985319 --0.8885347 1.1927557 --0.8007975 1.07357 --0.80993104 1.0843923 --0.9131592 1.2210004 --0.5994148 0.8004385 --0.86655045 1.1556485 --0.60042024 0.79968464 --0.6047829 0.804442 --0.6014247 0.7989295 --1.0485022 1.3910053 --1.0746661 1.4238538 --1.0499591 1.3893025 --1.0646114 1.4068519 --1.4899241 1.9663209 --1.9412857 2.5586622 --2.4702342 3.251584 --2.7294154 3.5880637 --3.0296643 3.9775789 --3.032163 3.9756746 --3.0163198 3.9497523 --3.0371566 3.9718611 --3.0396514 3.969952 --3.0421453 3.9680414 --2.8803644 3.7521367 --2.7058775 3.520258 --3.0328975 3.9405735 --2.9489295 3.8264995 --2.9150615 3.777641 --3.0477297 3.9444396 --3.0595682 3.954623 --3.0620522 3.9527 --2.6313524 3.3923192 --2.7796137 3.5788112 --2.8489516 3.6633313 --2.2950087 2.9472194 --2.2164564 2.8426573 --2.3128386 2.9624293 --1.7802567 2.2773137 --1.8660364 2.3839548 --2.0280209 2.5875466 --1.8708578 2.3839364 --1.3049233 1.660646 --1.7425523 2.2147071 --2.3111444 2.9335678 --1.7846209 2.2623186 --1.4438776 1.8280038 --1.465189 1.8525904 --1.8348631 2.317014 --1.2808963 1.6153938 --1.2948042 1.6308279 --1.5425367 1.9403464 --1.2199538 1.5325937 --1.3196125 1.6556561 --1.876468 2.351284 --1.4362166 1.7973154 --1.9066912 2.3830066 --1.6965183 2.1176012 --2.0633633 2.5721848 --2.4838128 3.0923333 --2.4093428 2.9957612 --2.1843686 2.7125385 --2.414196 2.9940836 --2.5988302 3.218926 --2.6352265 3.2598138 --2.3383412 2.8888478 --2.8106496 3.467892 --2.2263217 2.7433994 --2.589083 3.1863203 --2.5354648 3.1163309 --2.9881659 3.6680343 --3.160417 3.8745017 --3.1628509 3.8725152 --3.1652834 3.8705273 --3.1677146 3.8685377 --3.1701448 3.8665466 --3.1725736 3.864554 --3.151468 3.8339305 --2.999704 3.6446307 --3.1563299 3.8300238 --3.1822762 3.8565683 --2.6674652 3.2285397 --2.7744224 3.3537006 --2.8479831 3.4382195 --3.147375 3.7948036 --2.6569865 3.1994467 --3.0429337 3.6595097 --2.7063909 3.2506177 --3.0577993 3.6680014 --3.2040336 3.8385112 --3.2064447 3.8364973 --3.0260086 3.6159868 --2.9981728 3.5781534 --3.2136707 3.8304465 --2.9391448 3.4987662 --3.2184815 3.826405 --3.220885 3.824382 --3.2232873 3.8223577 --3.2256885 3.8203316 --3.2280881 3.818304 --2.8483226 3.3648126 --2.6552165 3.1326969 --2.3684142 2.790763 --2.19515 2.5833092 --1.8095572 2.1268241 --1.8396467 2.1594386 --2.4209585 2.8381872 --3.0637796 3.587225 --2.6104243 3.0525284 --2.0824535 2.4320445 --2.1261644 2.4799378 --2.5777466 3.0028386 --2.3099294 2.6874378 --2.3105905 2.6847925 --1.9501579 2.26311 --2.4168262 2.801106 --3.042256 3.5215044 --3.0396817 3.5140588 --3.2734401 3.779496 --3.2758143 3.7774384 --2.6330194 3.032361 --3.1527557 3.6263192 --2.6688583 3.0658448 --3.1192899 3.5787342 --2.8533244 3.2694447 --3.063316 3.5056124 --2.4942946 2.8508158 --2.882597 3.2904458 --3.2971227 3.7588537 --3.2994838 3.7567813 --3.0689034 3.4898186 --2.908 3.3026593 --3.1244278 3.5439677 --3.3089151 3.748477 --3.3112698 3.7463973 --2.80233 3.1665668 --3.315975 3.7422333 --3.3000872 3.719592 --3.1349144 3.5289538 --2.938336 3.303484 --2.6496723 2.9751813 --2.9659412 3.3260932 --3.3300593 3.7297058 --3.3324022 3.7276127 --3.1218162 3.4876392 --3.1297872 3.4921267 --3.333933 3.7152073 --2.8196313 3.1381202 --2.6664484 2.9638867 --2.1825466 2.4229429 --2.1580563 2.3927302 --1.6015699 1.7734878 --2.2461395 2.4841082 --1.841389 2.0339057 --2.0995986 2.3161845 --2.7178972 2.9944808 --3.3627384 3.700269 --3.2245235 3.5437052 --2.567102 2.8176496 --2.6962013 2.9556167 --2.1034997 2.3029802 --1.5456839 1.6901314 --0.95787007 1.0460646 --1.5700856 1.7124875 --1.5116091 1.646629 --1.0496454 1.1419607 --1.6150678 1.7548971 --1.6285036 1.7672664 --1.9240093 2.085321 --2.4577243 2.6604273 --2.4926345 2.694818 --2.812454 3.036749 --2.4798565 2.6742542 --2.515484 2.709258 --2.900832 3.1203563 --2.8789108 3.092877 --2.3183334 2.4875004 --2.9294672 3.1392713 --3.4135642 3.6534338 --3.415859 3.6512883 --3.4181526 3.6491413 --2.8505666 3.0393698 --3.228196 3.4376793 --2.5802448 2.7442243 --2.9802542 3.1656668 --2.4446166 2.5934384 --2.4544132 2.600556 --2.3410482 2.4773207 --2.6161532 2.7649574 --2.8991716 3.0602198 --2.4130316 2.5438716 --1.9819634 2.0868022 --1.8842574 1.9814334 --1.390207 1.4600654 --1.4888929 1.561744 --2.1072302 2.2075574 --2.6173174 2.7384837 --3.1958454 3.3395903 --3.459204 3.6102505 --2.984333 3.1107292 --2.88316 3.0014942 --2.5061092 2.6056888 --1.8504263 1.9215345 --1.6634117 1.7251626 --1.119604 1.1597079 --1.0047263 1.0394076 --0.69546145 0.71856344 --0.6959128 0.7181263 --0.69636387 0.7176889 --0.69681466 0.71725124 --0.8511017 0.8749626 --0.69771546 0.716375 --1.1141834 1.1425438 --0.69861513 0.7154977 --0.69906455 0.71505857 --1.1937685 1.219547 --0.8500107 0.86727536 --1.0085655 1.027758 --0.7008595 0.7132994 --1.268217 1.289106 --0.8494173 0.8623238 --0.70220274 0.711977 --1.2366036 1.2522417 --0.9384002 0.94907373 --0.95395404 0.96359277 --1.3727771 1.3849062 --1.0275193 1.035296 --0.70488185 0.7093247 --0.8177372 0.821858 --0.70577264 0.7084384 --0.70621765 0.7079948 --0.70666236 0.70755094 --0.70710677 0.70710677 --0.70755094 0.70666236 --0.7079948 0.70621765 --0.81966436 0.8165801 --0.7088817 0.7053274 --0.7468286 0.74215084 --0.70976746 0.704436 --0.71020997 0.7039899 --0.7106521 0.70354354 --1.3281058 1.3131695 --1.2929311 1.2767849 --1.8474187 1.8220567 --1.7886187 1.7618483 --2.5013938 2.4608605 --3.11125 3.05699 --3.568698 3.5020556 --3.5708978 3.4998128 --3.0593956 2.9947267 --3.2973464 3.223593 --3.5774884 3.4930756 --2.8970814 2.8251696 --2.2637355 2.2047718 --1.6727302 1.6271135 --2.0563455 1.9977542 --2.2548337 2.1878347 --2.633899 2.5524256 --2.654943 2.569586 --3.1835625 3.0773387 --3.597184 3.4727895 --3.5993652 3.4705288 --3.1649337 3.0478122 --3.274836 3.1496842 --2.8688269 2.7557232 --3.11953 2.992776 --3.2222655 3.0874515 --3.0908968 2.9578562 --3.5075448 3.3523512 --3.056124 2.9172318 --3.4611187 3.299667 --3.4758818 3.3095748 --3.6148305 3.4375474 --3.6254299 3.443292 --3.6275926 3.441013 --3.629754 3.4387333 --3.631914 3.436452 --3.6340723 3.4341693 --3.6362293 3.4318852 --3.3638918 3.1708581 --2.9835715 2.808824 --2.6673617 2.507975 --3.1363804 2.9452572 --3.315541 3.1095822 --3.2805161 3.072861 --3.6512883 3.415859 --3.6534338 3.4135642 --3.655578 3.411268 --3.5867195 3.342798 --3.6598618 3.4066715 --3.6620016 3.4043715 --3.63916 3.3788764 --3.4199054 3.1713047 --2.7005177 2.501057 --2.3872392 2.2081325 --2.8792691 2.659892 --3.4333663 3.1677754 --2.8199565 2.5985382 --2.9202414 2.687558 --3.5182605 3.2338467 --3.6833193 3.3812952 --3.6854432 3.3789804 --3.3823788 3.0972078 --2.653367 2.4265962 --3.3851974 3.091977 --3.5303085 3.2204523 --3.280338 2.9886477 --3.6981554 3.3650625 --3.5278096 3.20601 --2.8328485 2.571194 --2.4131927 2.1875355 --2.639892 2.3900163 --2.6420252 2.3889287 --2.2808332 2.0597343 --2.0355208 1.8358812 --1.6294878 1.4678154 --1.4222461 1.2795179 --1.8860567 1.69464 --1.8745363 1.6821615 --2.3879156 2.1401482 --1.7966439 1.6081915 --1.5141803 1.3536433 --2.0702279 1.8483983 --1.9678767 1.7547933 --2.6886199 2.394463 --3.1929214 2.8399944 --3.2437558 2.8815615 --2.920873 2.5914497 --2.3472295 2.079869 --3.0221624 2.6745358 --2.3619382 2.0876095 --1.9459177 1.7177315 --2.647372 2.3339725 --2.1970806 1.934535 --2.408873 2.1183333 --2.5004034 2.1960394 --3.1423151 2.7563186 --3.0992064 2.7150617 --3.4349442 3.0053723 --3.476172 3.0375903 --3.4261563 2.9900906 --3.2172287 2.8041952 --3.1343372 2.7284818 --2.405556 2.0914128 --1.9012183 1.6508405 --1.3404596 1.1624537 --1.2422081 1.0758826 --1.6440114 1.4220796 --1.5776718 1.3629633 --1.7176594 1.4820161 --0.99566364 0.85797924 --0.7579522 0.6523101 --0.75836194 0.6518337 --0.9481392 0.8139174 --1.2486161 1.070496 --1.1176276 0.95697576 --0.7599977 0.6499257 --1.0159446 0.86769867 --1.177037 1.0040063 --1.4853863 1.2654151 --1.0377197 0.88291895 --1.6401787 1.393731 --0.98317647 0.8343845 --0.8844917 0.74967897 --0.98441696 0.8333115 --0.7734608 0.65390277 --0.7792146 0.65792817 --1.1845279 0.99887925 --0.7648764 0.644177 --0.9781127 0.82271415 --1.3664584 1.1478959 --2.0866327 1.7506446 --1.964479 1.6460578 --1.2848166 1.0751882 --1.5634964 1.3067296 --0.9073191 0.7573459 --1.602202 1.3356626 --2.0331626 1.6927652 --2.711688 2.2548068 --2.5381072 2.107776 --2.900868 2.4059532 --2.951396 2.4447322 --2.356721 1.9496491 --2.4493876 2.0237188 --2.3906322 1.972648 --2.8207223 2.3245628 --3.4524126 2.8414993 --3.5767055 2.9400306 --3.864554 3.1725736 --3.8665466 3.1701448 --3.8685377 3.1677146 --3.2229724 2.6357186 --2.7507608 2.2466652 --2.7359974 2.231743 --3.0100791 2.4521625 --2.4298406 1.9769323 --2.485128 2.0193205 --1.8149401 1.4728591 --1.5358497 1.2447721 --1.3926617 1.1272724 --0.9094576 0.73520356 --0.77806777 0.6281804 --1.1430734 0.9216854 --1.411254 1.1364629 --0.9572691 0.76988417 --1.0845948 0.8711643 --1.3068119 1.0483025 --1.7512788 1.4030389 --1.1013359 0.88120085 --1.2945627 1.034472 --0.78160757 0.6237705 --1.0698588 0.85271275 --0.8257834 0.65732855 --0.78278196 0.6222961 --0.7831728 0.6218041 --0.7835634 0.6213119 --0.78395355 0.62081945 --1.5307977 1.2106874 --2.164076 1.7093296 --2.0254319 1.5977539 --1.4772038 1.1637814 --1.5376021 1.2097996 --2.2856398 1.7960389 --1.8628548 1.4619253 --1.5352294 1.2032546 --2.09277 1.6381121 --2.4916298 1.9477953 --2.8110647 2.1946647 --3.2397923 2.5261075 --3.8942926 3.0324974 --3.9469209 3.0694976 --3.9488487 3.067017 --3.9507751 3.0645354 --3.635038 2.815968 --3.3060155 2.557761 --2.5762823 1.9906026 --2.236101 1.7255138 --1.4872823 1.1461889 --1.119981 0.8620034 --1.7479932 1.3436105 --1.8119456 1.3909577 --1.1324542 0.86820924 --0.8671829 0.6639712 --1.5082787 1.153333 --1.2332941 0.9418336 --0.7951349 0.60643256 --0.9163382 0.69796157 --0.79589635 0.6054329 --1.0750589 0.8167241 --0.9814305 0.74462235 --0.7970362 0.6039316 --0.79741544 0.6034307 --1.2646383 0.95574474 --0.7981731 0.60242814 --1.2038604 0.90743744 --0.7989295 0.6014247 --0.7993072 0.6009226 --1.5943906 1.1971023 --1.5252184 1.1436685 --1.4985124 1.1221731 --2.0372646 1.5236251 --2.5728781 1.9216789 --2.3083746 1.7218632 --1.7876891 1.331726 --2.0241516 1.5059003 --2.6646702 1.9798248 --3.1377587 2.3282666 --3.8187158 2.829829 --3.2244165 2.386291 --2.5973008 1.9196576 --1.9925506 1.4707534 --1.4485481 1.0678056 --0.80530787 0.5928568 --1.215722 0.8938208 --0.96587145 0.7091917 --1.5963075 1.1705468 --0.95406455 0.6986789 --1.2130282 0.8871524 --1.8549174 1.3548123 --1.1762136 0.85796136 --1.3132354 0.9566451 --0.8086475 0.58829343 --0.809017 0.58778524 --0.80938613 0.5872768 --0.9993482 0.724152 --0.8101235 0.58625925 --0.8104917 0.5857501 --0.81085956 0.5852408 --0.81122714 0.58473116 --1.4813093 1.0663116 --1.4363247 1.0325602 --1.4689837 1.0546391 --1.1609097 0.83235615 --1.014934 0.7267285 --0.8134258 0.58166873 --0.81379104 0.58115757 --0.81415606 0.5806461 --0.8145207 0.58013445 --0.873994 0.6216663 --1.5205103 1.0800912 --1.5873078 1.1260408 --2.2754712 1.6120776 --2.3509185 1.6633114 --2.07872 1.4687678 --2.7942019 1.9716768 --2.7771156 1.9570078 --2.772745 1.9513216 --3.2599173 2.2911081 --3.566122 2.5029666 --3.1993132 2.242514 --2.5359733 1.77518 --2.4554393 1.7165085 --2.042465 1.4259034 --2.5677052 1.7901901 --1.8714273 1.3030024 --1.7430168 1.2119697 --1.3079739 0.90825325 --1.5571004 1.0797964 --1.1652364 0.8069683 --1.0552391 0.7298106 --1.5135549 1.0453796 --1.3814104 0.9528289 --0.8235326 0.56726897 --0.82388884 0.5667514 --1.4705135 1.0102025 --2.189247 1.5019288 --2.9658535 2.031979 --3.1715941 2.17001 --2.6121266 1.7848129 --2.64592 1.8054657 --2.9171774 1.9878752 --2.516473 1.7125058 --2.7997143 1.9026839 --2.6839626 1.8215549 --2.7510931 1.8645915 --3.3972197 2.299399 --3.3080156 2.235992 --4.127933 2.7864227 --4.1459684 2.794807 --4.1477237 2.7922013 --4.1494775 2.7895947 --3.995303 2.6823037 --4.1529794 2.784378 --3.917068 2.6226444 --4.156475 2.7791572 --4.158221 2.776545 --4.1231937 2.7494128 --4.1617064 2.7713175 --3.3910937 2.2550855 --3.0916333 2.053143 --2.948153 1.9551901 --2.7973354 1.8526396 --1.9758056 1.3067657 --2.4009955 1.5858116 --2.4146426 1.5926472 --2.335568 1.5383861 --1.9182619 1.2617886 --1.4593675 0.9586253 --0.8946579 0.58687603 --0.83649665 0.5479721 --1.4023899 0.9174186 --2.103218 1.3740017 --2.6916282 1.7559896 --3.191071 2.0789635 --3.7192233 2.4197242 --4.0948462 2.6604438 --3.9760346 2.5796998 --4.0181503 2.603439 --3.4764555 2.2493641 --3.2426522 2.0951977 --2.8678794 1.85049 --3.6324053 2.3405666 --4.204723 2.7056062 --4.173048 2.6815186 --3.6544824 2.3450553 --3.310571 2.1214342 --3.2149403 2.0573053 --3.4685695 2.2165372 --4.1485195 2.6473794 --4.0368323 2.5725384 --4.21827 2.684437 --3.6111674 2.2949007 --3.344874 2.1227214 --2.9549491 1.8726645 --3.264254 2.0658092 --3.9686599 2.5081072 --3.4651687 2.186866 --2.7337952 1.7228957 --2.9386737 1.8494358 --2.3926408 1.5036955 --1.5501403 0.97285366 --1.7605082 1.1033373 --1.6006532 1.0017536 --1.0611545 0.6631859 --1.4565855 0.90904486 --1.1497267 0.71653306 --1.9095778 1.1884226 --1.0852973 0.6744873 --0.8496719 0.52731174 --0.85000306 0.5267778 --0.85033387 0.5262436 --0.8506643 0.5257092 --1.5118687 0.93302023 --2.1027539 1.2958498 --1.5965579 0.9825163 --1.5028139 0.9235252 --1.2867439 0.7896302 --0.85264015 0.52249855 --0.8529683 0.5219627 --0.8532961 0.5214267 --1.1448684 0.69861126 --0.8539507 0.520354 --0.85427743 0.51981735 --0.8546039 0.5192805 --1.0855261 0.65866154 --1.0985124 0.66559726 --0.85558116 0.51766866 --1.2950758 0.7824733 --0.9304228 0.5613555 --0.85655546 0.51605505 --0.85687953 0.5155167 --0.85720325 0.51497823 --0.85752666 0.5144395 --1.1665459 0.69882715 --1.5440688 0.92366695 --1.9764849 1.180654 --1.259231 0.75112903 --1.9396064 1.15532 --1.1047643 0.657109 --0.909474 0.54017794 --1.5836004 0.9392266 --0.860422 0.50958216 --1.491252 0.881924 --2.2678564 1.339284 --1.564742 0.9227337 --1.7316635 1.0197021 --1.017152 0.59809667 --1.8001059 1.0569607 --1.6557026 0.9707735 --0.88555163 0.5184703 --0.8914711 0.52118415 --1.4982888 0.8746876 --1.0451766 0.6092846 --1.2227314 0.71176094 --0.91796255 0.53358084 --0.8648712 0.50199383 --1.2516928 0.7254642 --1.5961225 0.9237517 --0.8658159 0.5003627 --1.4301225 0.8252823 --2.210678 1.2738675 --2.1660407 1.2463336 --1.3907951 0.79909676 --1.7318832 0.9936259 --1.579591 0.9049332 --1.7864698 1.0219619 --1.0777907 0.6156589 --0.86863154 0.49545866 --1.2811493 0.72968817 --1.9595199 1.1144292 --2.7699795 1.5730559 --2.4092255 1.3661844 --1.5746173 0.89160126 --0.98478544 0.5568018 --0.8708022 0.49163345 --1.6059806 0.9053668 --2.4462852 1.3770612 --2.7216895 1.5298404 --2.2907064 1.2856947 --1.9518301 1.093883 --1.4534171 0.813353 --1.7788782 0.99401844 --2.431371 1.3566206 --2.0965402 1.1680698 --2.9629993 1.6483716 --3.5190284 1.9548064 --3.2096162 1.7802911 --2.4909303 1.3796089 --2.755575 1.5239213 --2.058228 1.136578 --2.8018756 1.5449324 --3.6119254 1.9886291 --2.9153888 1.6027486 --2.8711104 1.5760579 --2.5953338 1.4225526 --1.7735201 0.97065204 --1.1877488 0.64908844 --0.87781584 0.4789983 --1.0606774 0.57791597 --1.7436454 0.9486144 --1.3621279 0.7399445 --1.7426826 0.9452545 --1.8288819 0.99052346 --2.3654103 1.279186 --2.7065203 1.4614571 --2.1830828 1.1770422 --2.0281737 1.0918764 --1.9111357 1.0273201 --2.188146 1.1744541 --2.630526 1.4097664 --1.8470141 0.9883689 --1.1896625 0.6356476 --0.8822912 0.47070393 --0.8825868 0.4701495 --1.5388505 0.81849694 --1.533062 0.81418276 --2.1121447 1.1200228 --1.4435031 0.7642956 --1.6461339 0.8702592 --2.2667356 1.1965301 --2.4389095 1.285456 --1.585499 0.83438337 --1.3570095 0.71305025 --1.5990291 0.8389395 --2.2506835 1.1790309 --2.488896 1.3018271 --2.5832567 1.3491164 --3.3561642 1.7500875 --2.6598632 1.3848733 --1.9471896 1.0122609 --1.3832476 0.71798784 --1.3658485 0.7078677 --1.3240807 0.68516594 --1.0689195 0.5522777 --1.67798 0.865625 --1.8826901 0.9697322 --2.3774962 1.2227066 --2.1835299 1.1212187 --2.2063897 1.1312056 --2.5587687 1.309839 --2.7032633 1.3816631 --3.2669098 1.66716 --2.4190712 1.2325784 --2.9779177 1.5149688 --2.0998204 1.0665903 --2.6087518 1.3230374 --2.0152948 1.0204722 --1.5964314 0.80711514 --1.4388648 0.72631866 --1.0271538 0.5176832 --0.92722017 0.4665865 --1.1455835 0.57556736 --0.89384145 0.4483832 --1.613831 0.8082873 --1.0177487 0.5089398 --0.89468503 0.44669756 --1.484129 0.73983 --1.7656989 0.8788064 --0.9219904 0.45816147 --0.8958049 0.44444758 --1.4587264 0.7225955 --1.7784226 0.87956923 --1.621036 0.800462 --2.1188817 1.044641 --1.9920074 0.9805347 --2.2138138 1.087988 --2.2998078 1.1284566 --2.805206 1.3742563 --2.0702965 1.0126153 --2.6908946 1.3140652 --2.209808 1.0774134 --2.849628 1.3871485 --3.2118874 1.5609945 --3.6000032 1.7468255 --2.866271 1.3885732 --3.2466455 1.5703287 --3.9682577 1.9162804 --3.6416783 1.7557538 --3.4728725 1.6716793 --3.9781911 1.9118384 --3.5707517 1.7132703 --3.8182094 1.8290517 --3.3268778 1.591118 --2.82738 1.3500451 --2.524076 1.2032737 --2.0235782 0.9631171 --1.1211872 0.5327626 --1.9416864 0.92115 --1.0680937 0.5058895 --0.9040229 0.4274841 --0.9042913 0.426916 --1.098836 0.5179165 --1.350583 0.6355361 --0.9050944 0.42521068 --0.9053614 0.4246419 --0.905628 0.42407298 --0.96527314 0.45126337 --0.90616024 0.4229346 --0.9064258 0.42236516 --0.90669096 0.42179555 --0.90695584 0.4212258 --0.9072203 0.42065585 --0.9074844 0.42008573 --1.257988 0.58137864 --0.9215594 0.42519578 --1.2548057 0.5779954 --1.3882085 0.63838714 --0.9087997 0.41723272 --0.9090617 0.41666162 --0.9093233 0.41609034 --1.1925844 0.54479975 --1.5212809 0.69380075 --1.6875948 0.7683699 --0.9758696 0.443578 --0.91125053 0.413515 --1.3567969 0.614671 --1.1079589 0.50110096 --0.9114033 0.41151437 --1.465124 0.66042095 --1.075006 0.48375845 --1.3446596 0.6040883 --0.91243464 0.40922245 --1.1320033 0.50684386 --1.6260102 0.7268046 --1.4736162 0.657576 --2.0083625 0.89468473 --2.275551 1.0119987 --1.7527424 0.7781729 --1.0949365 0.4853005 --0.9144801 0.4046309 --0.9147341 0.40405625 --1.821412 0.8031865 --1.9296838 0.84948325 --1.9158177 0.8419425 --2.7954266 1.2264082 --2.0806143 0.91124773 --2.4189441 1.0576152 --2.4765506 1.080949 --3.1869292 1.3886273 --3.4894314 1.5178273 --4.1592917 1.8060951 --4.5875244 1.9886223 --4.5887733 1.9857395 --4.5900197 1.9828558 --4.5912647 1.9799714 --4.592508 1.9770863 --4.417339 1.8983865 --4.594989 1.9713136 --4.0358067 1.728415 --4.009914 1.7143451 --4.5986967 1.9626487 --4.5446773 1.9362196 --4.601159 1.9568683 --4.602388 1.953977 --4.0377827 1.7112763 --4.3455443 1.8384906 --4.606063 1.9452982 --4.602927 1.9405669 --3.6884062 1.5522815 --3.3451383 1.4053423 --4.252555 1.7834188 --3.98692 1.6690732 --3.9925733 1.6684922 --3.5100048 1.4642375 --4.308133 1.7940085 --4.47106 1.8585595 --4.6181946 1.9163193 --4.3151298 1.7873852 --4.140385 1.7119567 --4.320664 1.7833198 --3.4585488 1.4249461 --3.1983078 1.3153749 --2.3530896 0.966032 --2.5729117 1.0543888 --2.5424814 1.040053 --3.000704 1.2252978 --3.257198 1.3276466 --2.4193478 0.9843634 --2.336185 0.94881636 --2.8433855 1.1527296 --3.354629 1.3575381 --3.614937 1.4602358 --4.18475 1.6873513 --4.242824 1.707669 --4.6395717 1.8639673 --3.859488 1.5477496 --4.5949645 1.8393433 --4.643077 1.8552185 --3.8811398 1.5479466 --3.7812636 1.505359 --3.9827306 1.5826669 --3.6315446 1.4404703 --3.4388504 1.3615372 --2.8129404 1.1116779 --2.560316 1.0099809 --3.4425318 1.3554941 --3.465625 1.3620726 --4.344084 1.7041773 --4.6557884 1.8230839 --4.656933 1.8201581 --4.658076 1.8172318 --4.564826 1.7775489 --4.6603556 1.8113768 --4.0361676 1.5658505 --4.607017 1.7839845 --4.6605 1.8013285 --4.664893 1.7996584 --4.585791 1.7658323 --4.667151 1.7937949 --4.3713684 1.6769607 --4.0911126 1.5664998 --4.4489913 1.7003284 --3.651844 1.3930433 --3.8760026 1.4757624 --2.9886742 1.1357684 --3.7966366 1.4400842 --4.337324 1.6420534 --4.671039 1.7650385 --4.6783295 1.764435 --4.2605615 1.6038165 --4.6805434 1.7585547 --4.6816473 1.7556136 --4.6827493 1.7526716 --4.1975923 1.5680796 --3.5573118 1.3263458 --4.315265 1.6058615 --3.4526036 1.2823658 --3.6088183 1.3378074 --3.298629 1.2204617 --2.5069585 0.9257607 --2.8123982 1.0365448 --2.5304818 0.9308354 --2.3123252 0.84893763 --2.0102515 0.73660254 --2.6296887 0.9617049 --2.1458764 0.78324145 --2.444194 0.89038694 --1.6713018 0.6076435 --2.156213 0.78241163 --1.5948387 0.57757545 --2.1714478 0.78485304 --2.0287864 0.7318483 --1.1962166 0.43066448 --0.94109344 0.3381467 --1.6003356 0.5738856 --0.9415176 0.3369638 --0.9417291 0.33637217 --0.9419403 0.33578038 --0.94215107 0.33518848 --1.0638566 0.3777347 --0.9425716 0.33400428 --1.851549 0.6547952 --1.6449926 0.58058447 --2.302498 0.8110182 --2.5263832 0.8880943 --2.4636054 0.8642874 --2.005237 0.7020669 --2.8357534 0.9908448 --1.9039093 0.66390574 --1.0680158 0.37167165 --0.94465154 0.32807538 --1.6137087 0.5593015 --1.3297156 0.45993555 --1.7344924 0.59872395 --1.3307453 0.45842022 --1.1423382 0.39271423 --0.94588166 0.3245118 --1.0858084 0.3717553 --0.9462887 0.32332292 --1.7154537 0.5849237 --1.5966939 0.54331017 --1.7212466 0.58448553 --2.00833 0.6805636 --1.6791298 0.5678315 --1.5810301 0.5335504 --0.9477016 0.3191578 --0.9479019 0.31856227 --1.0410527 0.3491397 --1.3254243 0.44358367 --0.94850075 0.31677496 --0.9486996 0.31617895 --0.948898 0.31558278 --0.94909614 0.31498653 --1.4774668 0.4893121 --1.5484067 0.5117268 --1.4224528 0.46910962 --2.2615042 0.74424464 --2.1871305 0.718246 --1.7626095 0.57760817 --1.4132973 0.4621552 --1.1844925 0.38651124 --2.1340425 0.6948751 --1.5091329 0.490347 --2.4502099 0.7944197 --2.920962 0.9450216 --3.3517733 1.0820765 --3.945674 1.2710726 --4.1457233 1.3326426 --4.7610736 1.527147 --4.573075 1.4636768 --4.402077 1.405898 --4.243088 1.3521839 --4.7576885 1.5128843 --4.360342 1.383517 --3.8257043 1.2112336 --4.1605783 1.3143805 --4.5507197 1.4344871 --4.3665433 1.3734151 --4.770575 1.4972024 --4.771515 1.4942046 --4.7724524 1.4912063 --3.998601 1.2466506 --3.185787 0.9910423 --3.126533 0.97045535 --3.7482448 1.1608491 --4.6966634 1.4513454 --3.8128836 1.1756191 --4.5106807 1.3876665 --4.005178 1.2293994 --3.6885695 1.1296802 --3.845997 1.1752522 --2.9436653 0.89749753 --2.3701866 0.72102153 --2.1228518 0.6443242 --2.171486 0.65759575 --2.9827583 0.9012295 --2.8149707 0.84860337 --3.3674662 1.0128514 --4.243185 1.2733394 --4.1708155 1.248766 --3.8416305 1.1475763 --3.668656 1.093395 --4.2969027 1.2776966 --3.9188766 1.1626099 --3.3734617 0.9984964 --3.7172403 1.0977101 --4.207872 1.239721 --4.7970624 1.4100329 --4.767502 1.3980902 --4.7988305 1.4040036 --4.7997117 1.4009881 --4.800591 1.3979721 --4.668672 1.3563746 --4.802344 1.3919384 --4.8032174 1.3889208 --4.8040895 1.3859025 --4.8049593 1.3828838 --4.805827 1.3798645 --4.806693 1.3768445 --3.904512 1.1157668 --4.2084074 1.1997495 --3.4723282 0.9875464 --2.992261 0.8489812 --2.0954607 0.5931136 --2.0427818 0.5768169 --2.9896545 0.84215593 --3.653346 1.0266341 --3.7094378 1.0398822 --2.8240407 0.7897616 --3.191735 0.8904279 --4.15253 1.1556581 --4.0995417 1.1381364 --4.8186183 1.33451 --4.819456 1.331482 --4.422101 1.2187139 --4.7501245 1.3059052 --4.1924224 1.1497488 --4.6675987 1.2769105 --4.823615 1.3163347 --4.8244414 1.3133037 --4.8252654 1.3102722 --4.106605 1.1123542 --3.2086656 0.86696607 --4.0275745 1.0855165 --4.57061 1.2287962 --4.829358 1.2951068 --4.3603144 1.1663854 --3.8312657 1.0222856 --4.6140604 1.2280514 --4.238678 1.1252904 --4.4835343 1.1872802 --4.4482775 1.1749533 --4.3947253 1.1578548 --4.835807 1.2708155 --4.8366046 1.2677767 --3.9085479 1.0218893 --4.7870426 1.2483588 --4.8389854 1.2586577 --4.8397756 1.255617 --4.8405633 1.2525759 --4.8413496 1.2495342 --4.0266767 1.0365721 --3.2682145 0.8391349 --2.9371052 0.75215364 --2.0687582 0.52839667 --1.7047145 0.43427283 --1.8635291 0.47348383 --2.7626007 0.70007163 --2.4956822 0.63076323 --1.7783893 0.44828472 --2.1237338 0.53391796 --2.7728941 0.6952682 --3.4716992 0.8681666 --3.208738 0.8002662 --4.161729 1.0351671 --4.852911 1.2038507 --4.8536663 1.2008014 --4.8544197 1.1977515 --3.9303498 0.9671324 --4.8099356 1.1803654 --4.7521806 1.163027 --4.8091197 1.1737598 --4.8581586 1.182495 --4.326441 1.0501937 --3.578731 0.86631507 --2.7242548 0.65765756 --2.4503179 0.5898978 --3.2601297 0.7826879 --3.6308715 0.86928266 --4.218608 1.007193 --3.6516852 0.86941534 --3.2369716 0.768529 --4.1148553 0.9742273 --4.4507656 1.0508041 --4.866936 1.1458321 --4.8676553 1.1427739 --4.8660893 1.1391807 --4.8690877 1.136656 --4.8698006 1.1335965 --4.870512 1.1305366 --4.6610703 1.0788352 --4.8719287 1.1244152 --4.8726344 1.1213537 --4.8733377 1.118292 --4.135994 0.9463575 --4.874739 1.1121671 --4.7230473 1.074437 --4.36981 0.9911925 --4.4990034 1.0175253 --4.877519 1.099912 --4.1408696 0.9310591 --3.6308665 0.81399053 --4.522784 1.0109621 --4.153847 0.92575485 --3.865301 0.8588986 --3.4295764 0.7598164 --2.4871807 0.54939115 --3.267999 0.71971214 --3.0074837 0.6603578 --2.342698 0.51284707 --1.9673263 0.42937815 --2.7798164 0.6048783 --2.7768466 0.6024051 --3.0362656 0.6566857 --2.800971 0.6039541 --2.2742963 0.48889562 --2.556194 0.54781383 --3.1069663 0.66380745 --3.377091 0.71930146 --2.4280543 0.51556736 --1.6403234 0.34722546 --1.826532 0.38544342 --2.47584 0.5208388 --1.8609157 0.3902572 --1.3410022 0.28034538 --1.4369584 0.29946345 --2.0531414 0.42653066 --1.3355074 0.2765703 --0.97935003 0.202172 --1.6800843 0.3457275 --2.0379343 0.4180313 --1.7533246 0.3585029 --1.2977725 0.2645066 --2.037756 0.41399357 --2.1482277 0.4350319 --1.3066496 0.26375157 --1.5879862 0.31950203 --2.4605274 0.49344853 --1.8165942 0.36312324 --2.4389873 0.48594135 --3.37703 0.6706302 --3.7876847 0.749707 --2.8993607 0.57198566 --2.6577766 0.52259123 --2.244355 0.4398368 --2.7514322 0.53741616 --2.410116 0.46917757 --1.9635025 0.38095498 --2.8211298 0.5455111 --1.9324484 0.37241074 --1.8041881 0.34651756 --1.5406779 0.2949034 --1.0580574 0.20183524 --0.98240477 0.18676409 --0.98252195 0.1861468 --1.7387897 0.32829627 --1.3180997 0.24800932 --1.0076681 0.18894404 --1.3517069 0.2525744 --1.2882273 0.23987529 --1.217896 0.22598752 --1.1116109 0.20554331 --1.4874449 0.27407077 --1.5524594 0.28504166 --2.061573 0.37717938 --1.7578722 0.32047382 --2.624531 0.47676885 --2.5872626 0.46831962 --3.0293348 0.5463735 --3.7939649 0.6818217 --3.7017589 0.66285044 --4.476917 0.7987502 --3.5053766 0.6231403 --4.1182246 0.7294154 --4.224919 0.7455754 --3.3067334 0.5814002 --2.7117863 0.4750384 --1.9627248 0.3425503 --1.0398606 0.18081154 --1.1255866 0.19498909 --1.1513741 0.19871128 --0.9855383 0.16945271 --0.9856446 0.16883345 --0.9857505 0.16821411 --1.0116256 0.17197554 --1.6610795 0.28130844 --1.7121518 0.28885114 --0.9861701 0.16573612 --0.98627406 0.16511646 --1.8701025 0.3118742 --2.1519902 0.35749462 --2.8642387 0.4739662 --2.6836574 0.44235194 --3.3405166 0.54846746 --3.7100317 0.60674316 --3.693766 0.60170037 --4.6210146 0.7497654 --4.9359603 0.797683 --4.9364605 0.7945815 --4.004462 0.64198434 --4.1245356 0.65857637 --4.9261904 0.78340507 --4.9384418 0.7821723 --4.9389324 0.77906924 --4.5390086 0.7130625 --4.5646586 0.7141535 --4.400175 0.68558747 --4.079511 0.63299996 --3.0996299 0.4789618 --3.666878 0.5642555 --3.9971583 0.612508 --3.4704764 0.52956986 --3.5006635 0.5319257 --2.5928116 0.39231107 --3.3864932 0.51022446 --4.1325927 0.6199799 --3.7169716 0.55523986 --3.4096758 0.5071461 --3.6831384 0.5454551 --2.9918132 0.4411523 --2.8850777 0.4235618 --3.4888434 0.50996226 --3.045979 0.44327447 --3.0207558 0.43766576 --2.6020327 0.3753295 --2.9076746 0.41755193 --2.1270816 0.30409223 --2.4162006 0.34387627 --2.5930681 0.3673861 --2.181977 0.30774432 --2.1961231 0.3083323 --1.845282 0.25789255 --1.428402 0.19871537 --1.3952671 0.1932122 --1.3426746 0.18506962 --0.9907194 0.13592307 --1.8011224 0.24595453 --2.6495554 0.36011767 --2.5575552 0.34597686 --1.7476981 0.23530418 --2.3392045 0.31344634 --2.1942837 0.29262403 --1.380068 0.18315984 --2.2609394 0.29862183 --2.1172786 0.2782939 --2.7189426 0.35563853 --3.1487043 0.40983945 --2.2083306 0.28602824 --1.5805287 0.2037042 --1.9670901 0.25226924 --1.9942203 0.25447503 --2.3157473 0.29402527 --2.6185539 0.3308003 --2.034996 0.25578085 --2.856019 0.35715342 --2.6635683 0.33138728 --1.8242136 0.22579533 --1.4115945 0.1738222 --1.11955 0.13714612 --1.0477371 0.12768082 --1.2745523 0.15450864 --1.4231861 0.1716196 --1.6070307 0.19276479 --0.99295723 0.11847329 --0.9930315 0.11784937 --0.99310535 0.11722541 --1.4828907 0.17409466 --0.99325186 0.11597735 --0.9933245 0.11535324 --0.9933968 0.1147291 --1.494104 0.17160541 --2.3855665 0.2724758 --3.1390662 0.35654148 --2.2199845 0.25073758 --1.9201397 0.21564965 --1.7366518 0.19393739 --2.6184525 0.29074526 --1.912561 0.21114871 --2.2739756 0.24960315 --2.4616163 0.26863435 --3.0818794 0.33436385 --3.0803475 0.33223957 --2.8715048 0.30788916 --3.6315823 0.38707852 --3.9473624 0.41822827 --3.3265648 0.3503405 --3.5021133 0.36660385 --4.3403373 0.45159292 --3.9631374 0.40983006 --3.9257698 0.40347302 --3.3048654 0.33756092 --2.4255395 0.24620624 --1.6079419 0.16219471 --1.0073408 0.100972146 --0.99507636 0.09911134 --0.9951384 0.098486096 --0.9952001 0.09786081 --0.99526143 0.09723549 --0.9953223 0.09661014 --0.9953828 0.095984735 --1.4098324 0.1350561 --1.4544431 0.13840742 --1.3668549 0.12920584 --1.6909274 0.15876783 --1.4923706 0.13917866 --1.3541374 0.12542884 --2.244447 0.20647272 --3.1471364 0.28751954 --3.3104346 0.30034107 --3.4670856 0.3123571 --3.626316 0.32440564 --4.582743 0.40706408 --4.3756833 0.38590106 --3.5484676 0.3107003 --3.0498354 0.26510972 --2.0644155 0.17814437 --1.9521556 0.16722149 --1.298514 0.110408776 --1.6758723 0.1414339 --2.1456106 0.17971942 --2.3636773 0.19648951 --2.6994293 0.22269242 --3.40602 0.2788289 --3.4642236 0.28140253 --3.6593118 0.2949355 --3.06795 0.24533246 --3.012941 0.2390285 --2.4836626 0.19546849 --1.8854223 0.14719403 --1.3127952 0.10165946 --2.0510736 0.15753342 --2.5024872 0.19062285 --1.8649482 0.14088084 --1.1494513 0.08610488 --0.99725276 0.07407368 --0.99729913 0.07344707 --1.5331511 0.11194193 --1.464325 0.10599171 --2.1439264 0.153829 --2.5944498 0.18451606 --1.7013679 0.11992613 --1.4619156 0.102124535 --1.2312423 0.08523312 --1.3851777 0.09501488 --0.9976985 0.06780633 --0.9977409 0.06717945 --1.4273579 0.095205374 --1.9158349 0.12657793 --1.6273875 0.106493466 --1.3345613 0.08648933 --1.0889502 0.069884874 --1.6760943 0.10650824 --2.5814393 0.1624104 --1.8257641 0.113715686 --2.7503846 0.1695699 --1.8689767 0.11404958 --1.8790523 0.11347943 --0.9982191 0.05965482 --1.5372081 0.09089621 --0.9982932 0.058400374 --1.3320642 0.077086255 --1.8237151 0.10438831 --2.6604524 0.1506056 --2.084096 0.11666501 --1.3839531 0.07659965 --0.9985063 0.054636493 --1.8338352 0.099188566 --2.6687257 0.1426645 --3.2508621 0.17173596 --2.3169103 0.12093755 --1.7205601 0.088725425 --2.0275588 0.10327937 --1.7720246 0.08914676 --1.3501506 0.06707274 --1.3193569 0.06471197 --2.245229 0.1087102 --1.4274457 0.06821554 --0.99888986 0.047106452 --1.58436 0.07371885 --2.0573587 0.094431624 --1.3873779 0.062806346 --2.0663154 0.0922408 --2.5536544 0.11238807 --3.3996654 0.14748143 --3.8041463 0.16263364 --4.3763466 0.18434148 --3.623165 0.1503353 --4.1238403 0.16851425 --4.995958 0.20100775 --4.141692 0.1640307 --4.9962068 0.19472948 --4.996328 0.19159023 --4.2883916 0.16174519 --3.6635826 0.13587415 --3.145462 0.11467919 --3.0205922 0.10822624 --3.3488722 0.11788153 --2.6697268 0.09229588 --3.3507624 0.11373233 --2.7630258 0.092045225 --2.9104958 0.09512721 --3.481394 0.111596845 --4.3236065 0.13587481 --3.6560311 0.11259603 --4.120141 0.124298215 --4.99782 0.14763339 --4.997912 0.14449315 --4.9980016 0.14135283 --4.846082 0.134009 --4.998175 0.13507205 --4.5835114 0.12098409 --4.976949 0.12823986 --4.9984207 0.12565048 --4.998499 0.12250985 --4.9985747 0.11936918 --4.403888 0.1023991 --4.140619 0.09367457 --4.933651 0.108514145 --4.580448 0.09786623 --4.0327644 0.08362939 --4.1809144 0.0840736 --3.2801988 0.06389938 --2.679321 0.050509993 --3.38276 0.061644897 --2.8131855 0.04949725 --3.0337427 0.05147117 --2.5590115 0.041808452 --1.8386697 0.028884131 --2.4544153 0.037014518 --2.039291 0.02947251 --1.685488 0.023299998 --1.8700422 0.024676057 --1.2019871 0.015105411 --1.4563909 0.017387295 --2.1959848 0.024837062 --2.517522 0.026891721 --1.7444981 0.0175382 --1.0891569 0.010265365 --1.7127566 0.015066583 --2.1157498 0.017282126 --2.2725568 0.017134998 --1.5647615 0.010815027 --0.9999803 0.006283144 --0.999984 0.0056548365 --0.99998736 0.005026527 --1.6310133 0.0071736174 --2.1949227 0.008274702 --1.3698987 0.004303678 --0.99999684 0.0025132715 --0.9999982 0.0018849545 --0.9999992 0.0012566367 --1.9295467 0.0012123701 --1.008038 1.2344906E-16 --0.9999998 -6.2831846E-4 --0.9999992 -0.0012566367 --1.9183855 -0.003616076 --1.1119745 -0.0027947028 --1.3075716 -0.0041078706 --2.1432893 -0.008080049 --2.4356377 -0.010712563 --1.688679 -0.008488298 --1.7203428 -0.009728413 --2.448597 -0.015385191 --2.077721 -0.014360406 --2.9999883 -0.022619808 --3.8806434 -0.031698346 --4.6822286 -0.041188095 --4.999778 -0.047123194 --4.9997473 -0.050264634 --4.999715 -0.05340606 --4.85332 -0.054892097 --4.4632325 -0.053284835 --4.999605 -0.0628302 --4.601683 -0.0607213 --4.999522 -0.06911284 --4.999478 -0.072254114 --4.293534 -0.064749874 --4.981989 -0.078263335 --4.5270524 -0.07396179 --4.0963993 -0.06950044 --3.3963048 -0.05975708 --3.8427825 -0.070028 --3.332634 -0.06282611 --3.1285186 -0.060944602 --2.6127856 -0.05254025 --2.262758 -0.046923906 --1.4956431 -0.031956032 --0.9997582 -0.021989375 --1.727196 -0.039074916 --2.301362 -0.053511214 --2.2317517 -0.053295664 --2.047841 -0.05019121 --2.6633744 -0.066952 --1.6646786 -0.042893372 --1.660274 -0.04382377 --2.5683246 -0.069407105 --3.2535343 -0.08997018 --3.398488 -0.096115604 --3.616843 -0.10456547 --2.796973 -0.08262135 --3.317357 -0.10007948 --3.0481472 -0.09387482 --3.677019 -0.11555497 --4.3249955 -0.13863866 --3.8453393 -0.12568182 --3.137743 -0.10452825 --3.8828542 -0.13179272 --4.848642 -0.16762377 --4.9969053 -0.17589289 --4.9967937 -0.1790325 --4.9966803 -0.18217205 --4.7471604 -0.17606166 --4.760508 -0.179552 --4.396967 -0.16860703 --4.9620776 -0.1933993 --4.9960833 -0.19786866 --4.6334877 -0.1864241 --4.9958305 -0.20414676 --4.9957013 -0.20728569 --4.99557 -0.21042454 --4.797918 -0.20511903 --4.1306324 -0.17919163 --3.2472951 -0.14291567 --2.8081527 -0.12535658 --3.0282888 -0.13709009 --2.2578447 -0.10363382 --2.9197063 -0.13585132 --3.789742 -0.1787197 --2.9542294 -0.1411783 --3.0922587 -0.14972194 --3.767489 -0.18478826 --3.5158489 -0.17466024 --4.480833 -0.22542112 --4.993526 -0.25435916 --4.149356 -0.21397299 --4.7530255 -0.24809732 --4.9930377 -0.2637713 --4.992871 -0.26690844 --4.992702 -0.27004552 --4.992532 -0.27318245 --4.954845 -0.27424297 --4.992184 -0.27945605 --4.776443 -0.27038977 --4.155151 -0.23783825 --3.2720206 -0.1893511 --3.43565 -0.2009863 --2.4534726 -0.14507557 --2.7290275 -0.16309011 --2.4947271 -0.15066116 --1.8093798 -0.11041283 --2.6376472 -0.16261926 --1.7001929 -0.105894625 --0.9980267 -0.06279052 --0.9979871 -0.06341758 --0.99794704 -0.064044625 --1.100937 -0.071348764 --1.1825653 -0.07738506 --0.99782455 -0.0659256 --1.6628779 -0.11091465 --2.2112973 -0.1488901 --3.1781049 -0.21599275 --3.4908066 -0.23944838 --4.3586345 -0.30172777 --4.4098325 -0.30805618 --4.6574383 -0.32829383 --4.399452 -0.312887 --4.987179 -0.35783538 --4.9869533 -0.36096886 --4.6774926 -0.34152377 --4.2081037 -0.30990994 --4.2442856 -0.31525594 --4.5300937 -0.33934727 --4.0958133 -0.3094036 --4.985557 -0.3797666 --4.985317 -0.38289908 --4.9850755 -0.38603136 --4.9848323 -0.3891635 --4.9845867 -0.39229548 --4.984339 -0.39542732 --4.7868795 -0.38278884 --3.8243823 -0.30823994 --3.2897913 -0.26723322 --3.1996589 -0.26193544 --3.9226785 -0.32360572 --3.71325 -0.3086778 --3.157091 -0.26444247 --2.4250011 -0.20465602 --2.8733668 -0.24431384 --2.4452314 -0.20945832 --1.5078195 -0.1301141 --1.2522835 -0.10885588 --0.99618864 -0.08722529 --0.9961336 -0.0878512 --0.9960782 -0.08847707 --1.5130615 -0.13535658 --0.99596626 -0.089728706 --0.9959097 -0.09035447 --1.3928424 -0.12724882 --1.8094633 -0.1664574 --0.9957376 -0.09223156 --1.621927 -0.15126109 --1.776174 -0.16677196 --2.373209 -0.22433431 --2.2086163 -0.2101759 --1.6425866 -0.15735298 --1.0165713 -0.09802794 --0.9953223 -0.09661014 --0.99526143 -0.09723549 --1.4609056 -0.14365493 --2.4278798 -0.24028055 --2.2597547 -0.22507551 --1.674965 -0.16789237 --1.7063302 -0.17211926 --1.8411081 -0.18688308 --2.8247259 -0.28851917 --3.2361238 -0.33259428 --3.8723094 -0.40043747 --4.4443645 -0.46241653 --3.4873962 -0.36506325 --2.587911 -0.2725484 --2.3588681 -0.2499252 --1.7393256 -0.18538906 --1.7441412 -0.18701074 --1.3392998 -0.14445396 --0.994166 -0.10786054 --1.129835 -0.12329804 --1.009577 -0.110816315 --1.9852751 -0.21917641 --1.1755587 -0.13053057 --1.2287722 -0.13722086 --1.2916803 -0.14506778 --0.993682 -0.11223206 --1.1319956 -0.12857434 --1.6288778 -0.18604797 --1.8803755 -0.21597064 --2.7128909 -0.3133164 --2.445308 -0.28396985 --2.8155997 -0.32876432 --2.6098144 -0.30639803 --3.3087113 -0.3905578 --3.74802 -0.4448014 --3.0285466 -0.36134675 --2.492781 -0.29901132 --3.2567122 -0.39272138 --3.997159 -0.48455885 --3.24632 -0.39560762 --3.22098 -0.3945736 --3.027883 -0.37285018 --2.276649 -0.2817963 --1.6156043 -0.20100509 --0.9922714 -0.12408641 --1.5718842 -0.19757183 --0.9921147 -0.12533323 --1.9271305 -0.24468347 --1.9401506 -0.24757539 --1.3691725 -0.17558935 --2.085136 -0.26873976 --1.2958292 -0.16783889 --2.0459032 -0.26629743 --2.2741694 -0.29746208 --1.9670446 -0.25854725 --1.2106488 -0.15990087 --0.9913076 -0.13156436 --0.99122477 -0.13218719 --1.1392009 -0.15264948 --0.9910579 -0.1334327 --0.99097383 -0.13405538 --0.99088943 -0.13467799 --0.9908046 -0.13530056 --1.6964651 -0.2327488 --0.9906338 -0.13654554 --1.8245412 -0.2526567 --1.6701887 -0.2323521 --1.5699987 -0.21941958 --0.9902875 -0.13903484 --1.0429227 -0.147093 --1.0955956 -0.15522408 --1.6261916 -0.23144133 --2.5715165 -0.3676296 --1.6363461 -0.23498484 --2.4149544 -0.34834448 --2.9834764 -0.43226448 --3.8473902 -0.559902 --3.4210663 -0.5000553 --3.2679675 -0.47977433 --2.6847663 -0.39587727 --3.0392244 -0.45009452 --2.447619 -0.36405236 --3.1294372 -0.46747416 --2.8599327 -0.4290529 --1.8927026 -0.2851632 --2.7120676 -0.41035533 --2.41204 -0.36650935 --2.3640103 -0.36073107 --1.535166 -0.23524247 --1.961096 -0.30177146 --2.7845318 -0.4302721 --2.8376184 -0.44030085 --2.9568458 -0.4607036 --2.1211863 -0.3318655 --2.0863004 -0.32775056 --2.3160572 -0.36533582 --2.6780746 -0.42416534 --2.0522273 -0.3263628 --1.5288635 -0.24411802 --2.2533424 -0.36124966 --1.4686196 -0.23639163 --2.1049902 -0.34018 --2.7920675 -0.45301643 --2.5405116 -0.41383964 --1.947276 -0.3184599 --1.861766 -0.3056767 --0.98668593 -0.16263716 --1.8800646 -0.3111078 --2.5951786 -0.4311183 --2.9657192 -0.4945886 --3.6277294 -0.6073341 --4.1287956 -0.69388694 --4.852632 -0.81867063 --4.308526 -0.7296608 --4.7256784 -0.80336154 --4.9287524 -0.8410706 --4.928223 -0.84416723 --4.9276915 -0.8472636 --4.9271584 -0.85035956 --4.5080256 -0.7809402 --3.7477434 -0.65165967 --3.4655328 -0.6048323 --2.7568944 -0.48294026 --2.5125253 -0.4417601 --3.1578007 -0.5572601 --4.0252714 -0.71295166 --4.7376947 -0.8422058 --4.922271 -0.8782082 --4.0172195 -0.719338 --4.637399 -0.83339715 --4.9206066 -0.8874849 --4.920048 -0.8905764 --4.5227385 -0.8215947 --3.8469427 -0.7013277 --3.6188147 -0.6620878 --3.8604052 -0.70879555 --4.704497 -0.8668322 --4.916656 -0.90911824 --4.00622 -0.74337685 --3.7881315 -0.70537174 --3.3620684 -0.6282223 --3.4196289 -0.6412017 --2.7533023 -0.51805234 --3.3066337 -0.62431675 --3.8117893 -0.7221745 --3.9674323 -0.754245 --4.115859 -0.78514206 --4.9108467 -0.9399923 --4.0311356 -0.7742315 --3.2474425 -0.6258291 --2.436748 -0.47118467 --2.6977398 -0.5234103 --2.526377 -0.49181014 --2.876119 -0.56177026 --2.549103 -0.49955973 --2.8753574 -0.56537354 --3.0695894 -0.60556835 --2.1005826 -0.41577414 --2.3742557 -0.47149345 --2.339243 -0.46606836 --1.5393298 -0.3077002 --2.2455764 -0.45034096 --2.1499953 -0.43257797 --2.6753376 -0.5400258 --2.6200807 -0.5305856 --2.5240188 -0.51278347 --3.205939 -0.65342116 --3.4081469 -0.69686496 --2.594199 -0.53213507 --3.257206 -0.6702674 --3.8311434 -0.7908816 --3.9096515 -0.8096499 --2.943035 -0.6114019 --3.8879204 -0.81024617 --3.210737 -0.6712258 --3.7327178 -0.7827975 --4.542602 -0.95562047 --4.3443227 -0.9167595 --3.596255 -0.76125926 --3.098857 -0.65800405 --3.6932304 -0.7866374 --3.1637254 -0.6759341 --3.0354557 -0.65052366 --2.9055328 -0.6245898 --3.0022013 -0.647344 --3.7182772 -0.8041917 --4.619139 -1.0020694 --4.8856735 -1.0631055 --3.989875 -0.87080884 --3.1052063 -0.67977005 --2.5495725 -0.5598135 --2.5242748 -0.5559216 --1.8470823 -0.40800038 --2.0465841 -0.45341697 --1.3219386 -0.2937446 --1.1921041 -0.2656805 --2.0891747 -0.4669859 --2.5888975 -0.5803953 --3.2918487 -0.7401599 --2.5555675 -0.576297 --2.7036219 -0.6114695 --1.8973813 -0.430378 --1.8127545 -0.4123801 --2.0326111 -0.4637383 --2.2424936 -0.51310533 --3.0168908 -0.69229037 --2.527902 -0.58175355 --2.0765467 -0.47925588 --2.209532 -0.51141065 --2.9877927 -0.69352233 --2.4699335 -0.5749533 --2.4512181 -0.57222056 --2.839841 -0.6648238 --3.2287595 -0.7580122 --2.7183363 -0.6399831 --3.0205834 -0.7131451 --2.8685458 -0.67915285 --3.1663487 -0.75176156 --3.070841 -0.73112446 --3.7589312 -0.89744514 --3.0928102 -0.740463 --2.4797492 -0.5953351 --3.287031 -0.79133093 --3.1125364 -0.75139195 --3.1221976 -0.7558006 --3.491875 -0.8476125 --4.0006666 -0.97377807 --4.0684376 -0.992982 --4.440494 -1.0867462 --4.6241302 -1.1347684 --4.508196 -1.1093216 --4.8544197 -1.1977515 --4.8536663 -1.2008014 --4.0824018 -1.0127122 --4.7188478 -1.1737419 --4.4723845 -1.1154224 --4.4735403 -1.1186968 --4.626606 -1.1600631 --4.849105 -1.2190907 --4.732165 -1.1928531 --4.062965 -1.0268811 --3.8321304 -0.9711015 --3.7022696 -0.94066936 --2.7952585 -0.71208686 --3.643961 -0.9307307 --3.2983942 -0.844675 --2.4699323 -0.63417083 --2.0059319 -0.5163794 --2.445763 -0.63124233 --2.93253 -0.7588407 --2.9881694 -0.77524185 --3.3176801 -0.86295444 --3.7579436 -0.9799917 --3.8393347 -1.0037936 --3.435232 -0.9004473 --4.0488315 -1.064004 --4.6445036 -1.2236625 --3.7013345 -0.9776583 --2.948906 -0.7808968 --2.385828 -0.6333931 --1.5636141 -0.41616246 --0.96619636 -0.25780737 --0.9660342 -0.25841442 --1.6434323 -0.44072527 --1.6887933 -0.45402753 --1.5468193 -0.41690055 --1.7000443 -0.45934385 --2.0733647 -0.56161135 --2.5699027 -0.69784176 --2.2235823 -0.60530096 --1.6398847 -0.4475144 --1.241878 -0.33973938 --1.43808 -0.39438552 --2.355572 -0.64759433 --3.2862837 -0.90568703 --4.2441177 -1.1725321 --3.3593633 -0.93037117 --2.727688 -0.7572752 --3.0742655 -0.8555747 --3.8641994 -1.0780315 --3.2614386 -0.91208285 --2.3798254 -0.6671464 --1.9995077 -0.56188565 --2.6896217 -0.7576397 --1.7382164 -0.4908173 --2.02871 -0.57422 --1.410635 -0.40023336 --1.2589997 -0.3580654 --0.9616839 -0.27416065 --0.96151143 -0.27476484 --1.3002102 -0.37243637 --0.9611654 -0.27597287 --1.1968793 -0.34446597 --1.4512242 -0.41865483 --1.5934739 -0.46077633 --2.0627103 -0.59786755 --2.8655474 -0.8325185 --2.8923128 -0.84226555 --2.3418005 -0.6835483 --3.006135 -0.879511 --3.3421 -0.980085 --3.6893094 -1.0844235 --4.497818 -1.3251448 --4.7952867 -1.41606 --4.5367184 -1.3428037 --3.8585663 -1.1447177 --4.449201 -1.3229829 --3.508517 -1.0456676 --3.2417364 -0.9683753 --2.8849869 -0.8637815 --3.52716 -1.058467 --3.3665397 -1.0125726 --3.4146907 -1.0293953 --3.4356284 -1.0380626 --2.665154 -0.8070943 --2.999321 -0.9103486 --2.356148 -0.7167509 --2.5583756 -0.78002614 --2.5547495 -0.7806753 --3.4573905 -1.0588782 --3.5277586 -1.0828544 --3.7175105 -1.1436555 --3.65905 -1.1281879 --3.6417599 -1.1253631 --3.3345191 -1.0327163 --3.9511487 -1.2264106 --3.1508405 -0.9801711 --3.058416 -0.95352745 --3.0130703 -0.94146764 --3.1106267 -0.9740959 --3.6341348 -1.1405407 --3.7321758 -1.1738865 --2.9662154 -0.9350165 --2.9985468 -0.9472797 --2.2289503 -0.70569474 --1.7154701 -0.544311 --1.1864424 -0.37727356 --2.0195446 -0.64358693 --1.3332497 -0.42580193 --1.6689446 -0.53416914 --1.356881 -0.4352289 --0.9520226 -0.30602765 --1.8332187 -0.5905592 --2.6779752 -0.8645495 --2.0892262 -0.67592937 --2.9148488 -0.94506735 --2.0438986 -0.6641029 --1.0960441 -0.35688782 --1.0696903 -0.3490502 --1.9632211 -0.641983 --2.5509214 -0.83593845 --3.3061705 -1.0857348 --3.114056 -1.0248133 --2.5456681 -0.839534 --2.6187572 -0.8654627 --2.8487458 -0.9434566 --3.5137436 -1.1661431 --3.4496758 -1.1472869 --3.0630662 -1.0208468 --3.180671 -1.0622627 --2.383846 -0.7978088 --1.4623652 -0.49043602 --1.0988269 -0.36928377 --1.6159272 -0.54419637 --1.5918539 -0.5372031 --2.0891197 -0.7064778 --3.0003412 -1.0167269 --3.0305579 -1.0290897 --3.6078007 -1.2276335 --4.4972644 -1.5334466 --4.7314434 -1.6166146 --4.730427 -1.6195871 --4.728236 -1.6221569 --4.1666684 -1.4324218 --4.1700573 -1.4365172 --4.7263412 -1.6314708 --4.7253156 -1.6344402 --4.374587 -1.5162048 --4.1884465 -1.4546381 --3.27963 -1.1413178 --2.924619 -1.0198339 --2.7934234 -0.9760542 --3.0097735 -1.0537719 --3.3708649 -1.182574 --2.7317007 -0.9602691 --3.1234694 -1.1001923 --2.6273773 -0.92730784 --3.255613 -1.1513386 --2.849134 -1.0096029 --3.4862204 -1.2378232 --4.1481466 -1.4757835 --3.397906 -1.2112765 --3.3156667 -1.1843086 --4.220365 -1.5104448 --3.412622 -1.2237774 --2.9635358 -1.0648357 --3.4062357 -1.2263203 --4.269019 -1.5399721 --3.958867 -1.430902 --4.272796 -1.5474054 --4.7001324 -1.7055078 --4.128857 -1.501149 --4.697985 -1.7114127 --4.620537 -1.6864884 --4.1185565 -1.5061996 --4.6947513 -1.7202652 --3.8013964 -1.3956292 --4.646936 -1.7093712 --4.6915 -1.7291114 --3.8859243 -1.4349803 --4.193365 -1.5515057 --4.4277706 -1.6413971 --4.6871395 -1.740897 --4.1315737 -1.5375035 --3.9700356 -1.4802301 --3.1341085 -1.1707977 --3.7488894 -1.403144 --3.8664258 -1.4499062 --3.3959413 -1.2759093 --4.1689353 -1.5693254 --4.6783295 -1.764435 --4.663592 -1.7622246 --4.614384 -1.7469445 --3.8893278 -1.4752425 --3.477591 -1.3215686 --2.9020329 -1.1049298 --2.8857126 -1.1007924 --3.5485055 -1.356178 --3.999007 -1.5312324 --4.0651336 -1.5594819 --3.7831664 -1.45404 --3.244459 -1.2493309 --3.1281507 -1.206802 --2.9309042 -1.1328229 --3.1861625 -1.2337842 --3.277582 -1.2715535 --2.8638203 -1.1131034 --3.2784204 -1.276621 --2.5318913 -0.9877541 --3.172878 -1.2401166 --3.6897826 -1.4448215 --4.5660496 -1.7912542 --4.3320713 -1.7026064 --4.5307198 -1.7839673 --3.6646624 -1.445618 --3.0884428 -1.2205569 --3.1014981 -1.2279699 --3.6245987 -1.4377153 --2.7173152 -1.0798131 --2.6102254 -1.039157 --2.3497393 -0.9371657 --2.538955 -1.0144817 --2.5287507 -1.0122473 --3.1882782 -1.278578 --3.6131704 -1.4516063 --4.497454 -1.8101537 --3.6098747 -1.4555533 --4.2872815 -1.731826 --4.6348724 -1.8756219 --4.633693 -1.8785337 --4.6325116 -1.8814447 --4.6313286 -1.8843551 --4.2990556 -1.7523117 --4.6289573 -1.8901734 --4.4029336 -1.8011084 --4.251871 -1.7424325 --3.413426 -1.4013401 --3.335363 -1.3717419 --4.2394657 -1.7466893 --4.2168083 -1.7404542 --4.620599 -1.9105144 --4.1426144 -1.715927 --3.5312893 -1.4653081 --4.1211343 -1.7131001 --4.5283384 -1.8857073 --4.614574 -1.9250209 --4.6133637 -1.92792 --4.6121516 -1.9308182 --4.6109376 -1.9337158 --4.4360056 -1.863632 --4.608504 -1.9395086 --4.385243 -1.8487924 --4.606063 -1.9452982 --4.60484 -1.9481919 --4.569744 -1.9367299 --4.602388 -1.953977 --4.601159 -1.9568683 --4.594134 -1.9572902 --4.5986967 -1.9626487 --4.1444564 -1.7718657 --4.5962267 -1.9684261 --3.9548106 -1.6966684 --3.600116 -1.5471785 --4.372761 -1.8824846 --3.6120353 -1.5576811 --2.8594835 -1.2352765 --2.218367 -0.9599732 --1.6663808 -0.7223508 --2.298717 -0.99817514 --1.7542957 -0.7630808 --1.4634273 -0.63765305 --1.1105036 -0.48470554 --1.333121 -0.5828696 --1.0682982 -0.46788308 --1.8495882 -0.8114505 --2.5744925 -1.1314096 --3.2473214 -1.4295322 --3.3677151 -1.4850585 --3.0282884 -1.3376551 --2.1288962 -0.9419748 --2.7658372 -1.2258813 --2.917198 -1.2951615 --2.2717583 -1.010312 --2.5227125 -1.1238171 --2.371045 -1.0580384 --2.2732887 -1.0161295 --2.868892 -1.2845194 --3.0061576 -1.3482469 --2.6053534 -1.170455 --3.005904 -1.3526728 --2.9784606 -1.3425742 --3.8109975 -1.7207314 --4.173763 -1.8876841 --3.4722238 -1.573025 --3.1227956 -1.4170886 --2.304088 -1.047315 --1.751094 -0.79728144 --1.3388559 -0.61060333 --2.2337377 -1.0204222 --2.2159944 -1.0140002 --2.5509636 -1.1692151 --2.4324198 -1.1167313 --2.7744555 -1.2758723 --2.2988002 -1.0588858 --2.2848527 -1.0542021 --2.6717656 -1.2347554 --1.9344972 -0.8955026 --1.2785586 -0.5928363 --0.90695584 -0.4212258 --1.0890418 -0.5066258 --0.9064258 -0.42236516 --1.7407126 -0.8124475 --1.6169657 -0.7559284 --1.1380799 -0.5329218 --0.9053614 -0.4246419 --0.9050944 -0.42521068 --1.6242473 -0.76431274 --2.231912 -1.0519714 --2.5079658 -1.1840109 --3.3708813 -1.5939841 --2.5824132 -1.2231282 --2.6137154 -1.2399654 --2.2347987 -1.0619253 --3.113604 -1.4819124 --2.2969768 -1.0950112 --2.3810976 -1.1369499 --2.0898015 -0.99947184 --1.2133932 -0.58125645 --1.8401513 -0.8829168 --2.4288476 -1.167255 --3.2801049 -1.5788898 --3.0447628 -1.4679643 --2.2479165 -1.085524 --1.6516917 -0.79888576 --1.2345394 -0.59807616 --0.8996797 -0.43655056 --1.3437812 -0.6530849 --1.5439011 -0.75154376 --1.5838252 -0.77220947 --0.8985797 -0.43881032 --0.8983038 -0.43937483 --1.2868978 -0.6304447 --1.2389598 -0.6079257 --2.0041678 -0.98495656 --2.6079354 -1.2837156 --2.4994793 -1.2322813 --2.6253276 -1.2963777 --3.206297 -1.5857649 --2.9178445 -1.4453851 --3.3973768 -1.6855857 --3.625779 -1.8017457 --3.8280742 -1.9052718 --3.2673478 -1.6287547 --4.002674 -1.9984518 --3.3449225 -1.6726764 --3.4776306 -1.7417713 --4.1178207 -2.0656478 --3.9293098 -1.9741752 --3.2263622 -1.6235379 --2.5743716 -1.2974775 --2.6800249 -1.3528388 --3.4093935 -1.7237027 --3.9212146 -1.9855608 --3.897856 -1.9768109 --4.4578815 -2.2643523 --4.047738 -2.0592232 --3.976906 -2.0263348 --4.4536057 -2.2727513 --3.8944283 -1.9904786 --3.5655315 -1.825203 --3.7299166 -1.9123106 --3.8131993 -1.958036 --3.7308884 -1.9187334 --4.445006 -2.2895248 --4.4435663 -2.2923172 --4.4421253 -2.2951088 --4.4406824 -2.2978992 --3.6686184 -1.9013063 --3.1634068 -1.6419965 --3.700304 -1.9236305 --4.3668904 -2.2736466 --3.719404 -1.9395007 --3.001286 -1.567434 --2.839167 -1.4850379 --3.3157115 -1.7369506 --2.6952999 -1.414104 --2.6561403 -1.3956878 --3.071051 -1.6161687 --3.503774 -1.8467052 --3.0070007 -1.5872902 --2.9927554 -1.5821757 --2.2089036 -1.1695542 --2.3913548 -1.2680817 --3.1848717 -1.6914303 --2.8160355 -1.497817 --2.0476217 -1.0907576 --1.5044644 -0.8026344 --1.8344419 -0.98015916 --2.3523555 -1.2587857 --2.789135 -1.494769 --2.8926868 -1.5526055 --2.0379808 -1.095505 --2.378869 -1.2806747 --1.6212813 -0.87413836 --2.0113018 -1.0860555 --1.2011423 -0.64956355 --1.0069107 -0.5453434 --1.6621742 -0.9015857 --2.389377 -1.2979739 --1.8056198 -0.9823311 --1.7200484 -0.93717784 --1.1948808 -0.65201133 --0.8775147 -0.47954977 --0.8772132 -0.48010102 --1.6786824 -0.9201183 --1.6218386 -0.89028674 --2.435821 -1.3391039 --2.501165 -1.3770741 --2.4013586 -1.3240904 --2.5333383 -1.3989394 --2.028692 -1.1219317 --2.4412067 -1.3520691 --2.2011013 -1.2208941 --1.8020111 -1.0010101 --1.2460872 -0.69322145 --1.9667403 -1.0957528 --2.4732544 -1.3799901 --2.7251365 -1.5227777 --3.0709646 -1.7185556 --2.9527037 -1.6548122 --3.3022015 -1.8534122 --3.772927 -2.1207328 --4.0734205 -2.2930071 --4.1116524 -2.317932 --4.0156384 -2.2671304 --3.3094783 -1.8711929 --3.3039262 -1.8707943 --3.741793 -2.121835 --2.9588253 -1.6803002 --2.365478 -1.345308 --3.1874714 -1.8154482 --2.5334291 -1.4450425 --2.9001231 -1.6566169 --3.417677 -1.9551047 --2.9351814 -1.6815386 --2.7344334 -1.5688146 --2.39407 -1.3755394 --3.112566 -1.7909616 --3.8964043 -2.2452397 --3.0450838 -1.7572296 --3.7302732 -2.1557581 --3.4895995 -2.0195966 --3.687859 -2.137433 --3.0153356 -1.7501795 --2.4030025 -1.3967847 --2.2360144 -1.3016005 --1.9886488 -1.1592805 --1.6629908 -0.97083914 --0.929815 -0.5436013 --1.0809505 -0.63287187 --0.8626549 -0.50579286 --0.862337 -0.5063348 --0.86201864 -0.5068765 --1.2275602 -0.7228573 --0.86138105 -0.50795937 --1.2533853 -0.7401874 --1.5566363 -0.9205921 --2.2610855 -1.3391206 --2.8517754 -1.6913759 --2.2462978 -1.3341782 --2.6221337 -1.5596339 --2.8489432 -1.6969634 --2.823161 -1.6840103 --2.8646467 -1.7111977 --2.5945213 -1.552051 --2.766775 -1.6574551 --2.888905 -1.7330854 --2.0539753 -1.2339578 --2.5678246 -1.5448573 --2.547902 -1.5350527 --2.8568656 -1.7236435 --2.7863944 -1.6835147 --2.454511 -1.4850998 --2.1523962 -1.3041537 --2.7857845 -1.6903225 --1.9516742 -1.1858902 --1.3490329 -0.8208699 --0.89733535 -0.5467904 --1.2876563 -0.78574204 --2.0977445 -1.2818762 --1.6112295 -0.98597074 --1.3108575 -0.80329454 --0.9793727 -0.6010071 --0.8863164 -0.5446686 --0.85165375 -0.52410483 --0.8513243 -0.52463984 --1.0453025 -0.6450881 --1.553464 -0.96003836 --0.95375603 -0.59024817 --0.85000306 -0.5267778 --0.8496719 -0.52731174 --0.8493404 -0.5278455 --0.84900856 -0.5283791 --0.84867644 -0.5289124 --1.4779588 -0.9223838 --2.009116 -1.25563 --1.6168824 -1.0119106 --2.3999507 -1.5040858 --2.2129402 -1.3888208 --2.2778149 -1.4315311 --2.804936 -1.7652688 --3.4553137 -2.1776118 --3.206588 -2.023676 --3.743921 -2.366077 --3.4835167 -2.2045712 --3.0132406 -1.909606 --3.7145982 -2.3573556 --3.5397882 -2.249539 --3.7401476 -2.380168 --3.725534 -2.3741581 --4.214893 -2.6897357 --4.213202 -2.6923833 --3.5213208 -2.2533643 --3.270143 -2.095528 --2.6878414 -1.7247686 --2.5537076 -1.6409621 --2.83724 -1.8256743 --3.5022104 -2.2566745 --4.192377 -2.705118 --3.5782878 -2.3120644 --2.7879443 -1.8038782 --2.1776767 -1.4109598 --2.0852847 -1.3529582 --2.5098286 -1.6306492 --1.8583144 -1.209018 --2.3850615 -1.5538532 --2.6151958 -1.7061259 --2.9093714 -1.9006499 --2.74227 -1.7939444 --2.6758716 -1.7529097 --3.459593 -2.2694175 --3.817732 -2.5077813 --3.4676783 -2.2809591 --4.04723 -2.6658194 --4.173855 -2.7529864 --4.1721244 -2.7556086 --3.7400413 -2.4736023 --4.0012474 -2.6499753 --4.1669226 -2.7634678 --3.4404562 -2.284795 --3.574968 -2.3773623 --3.354272 -2.2336395 --3.311055 -2.2078652 --3.830388 -2.5576432 --4.1339493 -2.7640955 --4.154728 -2.781768 --3.8202887 -2.5613246 --3.582793 -2.4053593 --4.075138 -2.739618 --3.8052406 -2.5616455 --3.5934203 -2.4223328 --2.8787804 -1.9432243 --2.262805 -1.5295012 --1.8741894 -1.26854 --1.9167993 -1.2991372 --1.7247598 -1.170562 --2.166738 -1.4725137 --2.966573 -2.018807 --2.8588395 -1.9481215 --2.3309388 -1.5905356 --2.82873 -1.9328136 --2.863362 -1.9591172 --3.1920433 -2.186947 --3.099322 -2.1262844 --2.9466724 -2.0242834 --2.1446817 -1.475322 --2.7064571 -1.8642724 --3.3295405 -2.2965531 --3.9390757 -2.7206345 --3.331036 -2.3037674 --2.8966813 -2.0060563 --3.6353014 -2.5209587 --3.4522004 -2.397198 --3.9607332 -2.7540116 --3.7110722 -2.583876 --3.8676593 -2.6965113 --3.2387836 -2.261088 --3.8136554 -2.665988 --3.3795152 -2.3656588 --3.5440528 -2.4841545 --3.1060681 -2.180067 --3.570935 -2.509695 --2.9284618 -2.0609076 --2.632319 -1.8549709 --3.2185683 -2.2711232 --3.6077693 -2.5491529 --4.0124598 -2.8388777 --3.413901 -2.4186082 --3.3023438 -2.3426924 --3.8263805 -2.7180612 --4.074425 -2.8981128 --4.0726037 -2.9006722 --4.0707803 -2.9032307 --4.0689554 -2.9057877 --4.0671287 -2.9083438 --3.8790603 -2.777544 --4.063471 -2.9134524 --4.0616393 -2.916005 --3.7001 -2.659967 --4.057972 -2.9211066 --4.0561357 -2.9236557 --4.054298 -2.9262037 --3.4523304 -2.4950323 --2.914209 -2.1089153 --2.191072 -1.5877041 --2.266303 -1.6443908 --1.498367 -1.0886273 --1.7237335 -1.2540213 --1.6301411 -1.1874996 --1.0605712 -0.7736086 --0.8075372 -0.5898167 --0.8071664 -0.5903239 --1.18573 -0.8683318 --1.3773217 -1.009968 --1.7535315 -1.2875316 --1.2531515 -0.92133975 --2.0139103 -1.4826136 --1.779329 -1.3116426 --1.9971303 -1.4741338 --1.4317822 -1.0582261 --1.6114101 -1.192555 --1.6199749 -1.2004694 --2.4201052 -1.7957563 --2.2377167 -1.6626024 --2.4850743 -1.8488111 --2.1006212 -1.5648425 --1.3926296 -1.0387906 --1.0877311 -0.8124248 --0.86024654 -0.6433593 --0.8004385 -0.5994148 --0.80006176 -0.59991765 --0.8616218 -0.64692396 --1.6112744 -1.2113628 --1.3407212 -1.0092791 --0.8886983 -0.66987675 --1.390084 -1.0491781 --1.0893036 -0.8232363 --1.6749889 -1.2675196 --1.2403902 -0.9398706 --0.79665655 -0.6044323 --0.79627657 -0.6049327 --1.0049262 -0.7644405 --0.7955158 -0.6059329 --0.7951349 -0.60643256 --0.79475373 -0.60693204 --0.7943722 -0.6074313 --1.1789829 -0.9027054 --1.2185676 -0.9342291 --0.7932258 -0.60892755 --0.79284304 -0.60942584 --0.79246 -0.6099239 --0.96017474 -0.7399682 --1.7159449 -1.3241292 --2.221486 -1.7164642 --2.6194515 -2.0265877 --3.236608 -2.507315 --3.9507751 -3.0645354 --3.3844202 -2.628633 --3.6456585 -2.8352075 --3.192238 -2.4858055 --3.6686418 -2.8604872 --3.1624796 -2.4690225 --3.2053473 -2.5057335 --3.3047543 -2.5867906 --3.884144 -3.0442445 --3.9333825 -3.0868273 --3.9314423 -3.089298 --3.9295003 -3.0917675 --3.836949 -3.0228527 --3.2915835 -2.5965524 --2.5627832 -2.0242548 --2.7687879 -2.1897972 --2.8998268 -2.2963972 --2.698078 -2.1393905 --3.2371528 -2.5701542 --3.256835 -2.5891187 --3.6288776 -2.8886082 --3.9099967 -3.1163962 --3.908038 -3.1188524 --3.768303 -3.011213 --3.9041154 -3.123761 --3.8274152 -3.0663378 --3.14243 -2.5208046 --2.5721905 -2.0660255 --1.8853319 -1.5162792 --1.9831648 -1.5970145 --2.5588245 -2.063237 --2.0480123 -1.6534821 --2.5462375 -2.058373 --2.5304403 -2.0482328 --2.8069575 -2.2749767 --2.297385 -1.8643724 --2.4850004 -2.0192168 --3.0519056 -2.483048 --3.08835 -2.515926 --3.3345265 -2.7199612 --3.8233724 -3.1227138 --3.7613108 -3.075967 --3.3997195 -2.7838273 --3.6634774 -3.0036502 --3.864554 -3.1725736 --3.337714 -2.7435808 --3.836111 -3.1573012 --3.858567 -3.1798525 --3.8565683 -3.1822762 --3.4734094 -2.86978 --3.6964185 -3.0579433 --3.8505628 -3.18954 --3.8485582 -3.1919587 --3.3319206 -2.7669997 --3.6380258 -3.0250697 --3.8352313 -3.1931267 --3.669402 -3.0589669 --3.0305624 -2.5296326 --2.5999303 -2.172954 --3.3500116 -2.8034296 --3.647569 -3.0563369 --3.8304465 -3.2136707 --3.8284266 -3.2160769 --3.826405 -3.2184815 --3.824382 -3.220885 --3.8223577 -3.2232873 --3.8203316 -3.2256885 --3.818304 -3.2280881 --3.8162751 -3.2304866 --3.5367215 -2.9976604 --3.8122125 -3.2352798 --3.3061688 -2.809395 --3.636141 -3.0937233 --2.9145062 -2.482896 --3.5400763 -3.019666 --3.7210233 -3.1780543 --3.4580302 -2.9571965 --2.762806 -2.36567 --3.4122705 -2.925496 --3.2590604 -2.7976968 --2.9002647 -2.4928603 --2.46826 -2.124238 --3.0367975 -2.6168568 --3.3345199 -2.8770618 --3.7836065 -3.2686882 --3.7815518 -3.2710648 --3.779496 -3.2734401 --3.7774384 -3.2758143 --3.7753794 -3.278187 --3.7733188 -3.2805586 --3.771257 -3.2829287 --3.7691934 -3.2852976 --3.3411534 -2.9159064 --3.0104725 -2.6306472 --2.3437493 -2.0506415 --2.085584 -1.827077 --1.5768223 -1.3831282 --0.84793484 -0.7447192 --1.289499 -1.1339697 --1.0910951 -0.960712 --0.75011104 -0.66131186 --0.7496954 -0.66178304 --0.8719512 -0.770678 --0.7488632 -0.6627246 --0.74844664 -0.663195 --0.7878208 -0.6989684 --0.74761266 -0.66413504 --0.74719524 -0.6646046 --0.7467775 -0.665074 --0.74635947 -0.665543 --0.74594116 -0.66601187 --0.74552256 -0.6664804 --1.3978199 -1.2512007 --1.04646 -0.93788046 --1.7567858 -1.5764952 --1.7180638 -1.5436969 --1.5010397 -1.3504041 --0.87982774 -0.7925342 --1.003937 -0.90547305 --1.1674489 -1.054279 --1.9004848 -1.7184252 --2.3139658 -2.0949402 --2.8460062 -2.579877 --2.2234566 -2.018088 --2.0795395 -1.8898484 --1.4399093 -1.3102167 --2.0219672 -1.8421721 --1.5033723 -1.3714209 --1.8519397 -1.6915276 --2.0499997 -1.874796 --1.4117547 -1.2927285 --1.2469853 -1.1432922 --1.7234424 -1.5821239 --1.0759965 -0.98901373 --1.7816255 -1.6396666 --2.3632872 -2.1777258 --2.2003083 -2.0301015 --2.1933887 -2.0262702 --2.8652136 -2.650246 --3.4687798 -3.2125752 --3.0554569 -2.8333488 --3.0725179 -2.8527625 --3.2323213 -3.0049202 --3.1660423 -2.9470148 --3.6577206 -3.4089706 --3.23133 -3.0153732 --3.5084581 -3.278107 --3.6512883 -3.415859 --3.6491413 -3.4181526 --3.646993 -3.4204447 --3.644843 -3.4227355 --3.6426919 -3.425025 --3.4992945 -3.294341 --3.638385 -3.4295998 --3.6002898 -3.3979654 --3.6340723 -3.4341693 --3.1509395 -2.9813626 --3.629754 -3.4387333 --3.6275926 -3.441013 --3.1435146 -2.9855874 --3.3265269 -3.1633835 --2.7506588 -2.6190507 --2.5790846 -2.4587772 --3.299974 -3.1499991 --3.6013672 -3.4420226 --3.6124232 -3.456935 --3.6102505 -3.459204 --3.0673368 -2.9427037 --2.5764124 -2.4748373 --3.1037872 -2.985172 --2.9213064 -2.8132007 --2.3384974 -2.2547927 --2.7860937 -2.6897478 --2.3501363 -2.271721 --2.0806925 -2.0137978 --1.614327 -1.5643916 --2.0781312 -2.0163827 --1.6048259 -1.5590997 --2.2534032 -2.1919513 --2.5184665 -2.4528675 --2.6932688 -2.6264162 --2.680322 -2.6170783 --2.580868 -2.5231407 --1.8878511 -1.8479459 --1.6039057 -1.5719771 --1.8700292 -1.8351082 --1.9850518 -1.9504325 --1.4367378 -1.4134564 --0.73720104 -0.7261673 --0.711977 -0.70220274 --0.7115357 -0.70264995 --1.31332 -1.2985501 --1.1061622 -1.0950973 --0.8273522 -0.82010627 --1.2262502 -1.2170391 --1.6625462 -1.6521327 --1.0030682 -0.9980388 --0.7084384 -0.70577264 --0.7079948 -0.70621765 --0.9847221 -0.9834854 --1.459036 -1.459036 --1.8472964 -1.8496192 --1.9257607 -1.9306068 --1.3359464 -1.3409925 --1.7115874 -1.7202126 --1.384787 -1.3935152 --0.9537269 -0.96094507 --1.2091776 -1.2198611 --1.1959933 -1.2080775 --1.6505386 -1.6693121 --1.7123748 -1.7340295 --2.3095787 -2.3417265 --1.9460826 -1.9756523 --1.3707303 -1.3933079 --1.793365 -1.8251964 --1.1251779 -1.1465894 --0.7742102 -0.7899353 --1.1446398 -1.1693575 --0.69906455 -0.71505857 --0.94728607 -0.9701779 --0.6981654 -0.7159365 --0.69771546 -0.716375 --0.6972652 -0.71681327 --1.3744003 -1.4147094 --1.3327723 -1.3735862 --1.2702786 -1.3108258 --1.800239 -1.8600396 --1.6663166 -1.7238348 --2.2121654 -2.2914045 --2.601988 -2.6985817 --2.9466598 -3.059894 --3.466003 -3.6037235 --3.2727466 -3.4070702 --2.7512238 -2.867747 --2.841679 -2.9657614 --2.7526734 -2.876485 --2.2178855 -2.3205605 --2.3541052 -2.4661865 --2.8537872 -2.9934223 --3.1528158 -3.3112457 --3.2017915 -3.3669157 --3.0621502 -3.2241273 --3.0433524 -3.2083697 --2.8104274 -2.966546 --2.4059234 -2.54277 --1.9193505 -2.031076 --1.8295977 -1.9385371 --1.7364985 -1.842212 --1.6264595 -1.7276477 --1.7402014 -1.8507944 --2.350472 -2.5029986 --2.0012465 -2.133796 --2.3114762 -2.467679 --2.9035175 -3.103635 --3.046997 -3.2611082 --2.8310146 -3.0337677 --3.4089706 -3.6577206 --3.4066715 -3.6598618 --2.923327 -3.1445534 --2.877939 -3.099634 --2.2562492 -2.433118 --1.8726314 -2.0219748 --2.321029 -2.509293 --2.5571778 -2.7680836 --3.1621075 -3.427223 --3.3882322 -3.6769392 --3.3859212 -3.6790674 --3.3836088 -3.681194 --3.3812952 -3.6833193 --3.2417777 -3.5357966 --3.376664 -3.6875656 --3.3743465 -3.6896865 --3.3720274 -3.6918058 --3.2842798 -3.6002772 --2.868301 -3.1482456 --3.15746 -3.4700031 --2.9730258 -3.2714396 --2.4963393 -2.7503765 --3.068952 -3.3855324 --3.121428 -3.4477725 --3.353428 -3.7087088 --3.288206 -3.6411734 --3.3487647 -3.71292 --2.9744644 -3.3020864 --2.311449 -2.5692875 --1.9324163 -2.1506908 --1.453809 -1.620069 --1.5056446 -1.6799549 --1.4652102 -1.6369076 --1.0274805 -1.1493359 --1.5713679 -1.7599506 --1.7389349 -1.9500926 --1.799541 -2.0206125 --1.9367613 -2.177443 --2.4846811 -2.79699 --2.2050705 -2.4853773 --1.7518011 -1.9769896 --1.3728796 -1.5513216 --1.4197634 -1.6063317 --1.0937265 -1.2390189 --0.66131186 -0.75011104 --0.66084045 -0.7505264 --1.1616943 -1.3210262 --0.7967285 -0.9071524 --0.86577684 -0.98702073 --0.65895206 -0.7521849 --0.65847933 -0.7525988 --0.6580063 -0.7530124 --0.65753305 -0.7534257 --0.65705955 -0.75383866 --0.86794776 -0.997053 --1.463912 -1.6838008 --1.2157044 -1.4000865 --1.227788 -1.4157987 --1.019062 -1.1766034 --1.6715567 -1.9324222 --1.4076426 -1.6293894 --1.8552542 -2.150243 --1.7771559 -2.0623453 --1.8644695 -2.166422 --1.3294563 -1.5467274 --1.3033066 -1.5182327 --0.83518785 -0.97415507 --0.6504031 -0.75958925 --0.6499257 -0.7599977 --0.64944804 -0.76040596 --0.6489701 -0.7608139 --0.73323613 -0.860697 --1.0927894 -1.2843865 --0.6475349 -0.7620358 --0.647056 -0.7624425 --0.64657676 -0.7628489 --0.64609736 -0.763255 --0.64561766 -0.76366085 --1.1120646 -1.3170694 --1.5479906 -1.8356953 --2.122515 -2.5202103 --1.869313 -2.2223985 --2.0083892 -2.390792 --2.4169784 -2.880851 --2.422354 -2.8909457 --2.169971 -2.593048 --2.0677705 -2.4740784 --2.4454603 -2.9297218 --2.1112928 -2.532614 --1.9878606 -2.3875985 --1.7893409 -2.1519067 --2.2753243 -2.739863 --2.8194847 -3.3994646 --2.223893 -2.6847882 --2.5641503 -3.0995252 --2.5722554 -3.1133034 --2.1227672 -2.5725603 --2.4066088 -2.9202807 --3.0152285 -3.6634932 --3.1750011 -3.8625598 --3.0205233 -3.6793396 --2.849875 -3.4759214 --2.5823174 -3.1536274 --2.579624 -3.1543794 --2.4431267 -2.9913032 --2.1792054 -2.671589 --1.9516059 -2.3956358 --1.8901676 -2.3231986 --2.141122 -2.635026 --2.56196 -3.1569915 --1.9402857 -2.3940022 --2.0060718 -2.4783535 --2.4997785 -3.0922627 --3.0940769 -3.8323412 --3.1384568 -3.8923116 --3.1360106 -3.8942826 --3.133563 -3.8962524 --3.1311145 -3.8982205 --3.1286645 -3.900187 --3.1262133 -3.902152 --2.513069 -3.1408648 --2.8087497 -3.5149357 --3.0488253 -3.8202913 --3.1163962 -3.9099967 --2.7516346 -3.4568014 --3.1114802 -3.91391 --2.9061022 -3.660285 --3.1065595 -3.9178166 --3.1040974 -3.9197679 --3.1016338 -3.9217174 --3.099169 -3.9236655 --2.7278645 -3.4580445 --2.7417455 -3.480136 --2.756565 -3.5034726 --2.4143672 -3.072525 --2.0307107 -2.5876284 --2.3504827 -2.998975 --1.7946957 -2.2928135 --1.825728 -2.3354807 --1.6862911 -2.1599078 --1.8079239 -2.3187048 --2.2161736 -2.8459806 --2.4169266 -3.107811 --2.5451813 -3.2769742 --2.1537902 -2.7766495 --2.1886554 -2.8252614 --2.4379864 -3.1512017 --2.2609298 -2.9261458 --2.5486472 -3.302803 --2.8920271 -3.7526631 --2.4401813 -3.170471 --2.1615367 -2.8120885 --1.8697847 -2.4356945 --1.5616142 -2.0369012 --1.6765648 -2.1896858 --1.6871427 -2.2063718 --1.2654395 -1.6570433 --0.9859123 -1.2926966 --0.8163345 -1.0717474 --1.3788333 -1.8126011 --1.9682064 -2.5907621 --2.4752867 -3.2624886 --2.1459157 -2.832063 --1.5765555 -2.0833704 --1.1094028 -1.4679582 --0.6045292 -0.80095685 --0.8110308 -1.0759616 --0.70474863 -0.9361845 --1.1787697 -1.5679212 --1.4450244 -1.9245918 --0.8941027 -1.1923926 --0.7562134 -1.0098221 --0.59891176 -0.800815 --0.5984085 -0.80119115 --0.597905 -0.80156696 --0.6894897 -0.9255608 --0.59689724 -0.8023177 --0.6162027 -0.82935464 --0.9782039 -1.318306 --0.5953838 -0.8034414 --0.64188635 -0.867333 --0.59437376 -0.80418897 --0.8486691 -1.1497618 --0.5933627 -0.8049352 --1.0079365 -1.3691319 --1.2961447 -1.762939 --0.9349888 -1.273392 --0.5913378 -0.80642396 --1.0725898 -1.4646497 --1.6493666 -2.2552252 --2.0702207 -2.8344064 --1.8730189 -2.567797 --2.2152226 -3.040949 --2.540337 -3.491858 --2.9389262 -4.045085 --2.936384 -4.046931 --2.893207 -3.9926994 --2.9312963 -4.0506177 --2.9287505 -4.0524583 --2.9262037 -4.054298 --2.9236557 -4.0561357 --2.6913517 -3.7387984 --2.2120626 -3.0770507 --2.4522204 -3.4156442 --2.8069015 -3.9148614 --2.9108987 -4.0653005 --2.6159832 -3.6582816 --2.2112741 -3.0964324 --2.1753433 -3.0501692 --1.6279002 -2.2856054 --1.1029404 -1.550612 --0.74979633 -1.055534 --1.0976447 -1.5472796 --1.1911571 -1.6813357 --0.6987167 -0.9875637 --0.5770597 -0.816702 --0.6671444 -0.9454572 --1.0081006 -1.4305574 --0.6180126 -0.8781696 --0.57500523 -0.81814975 --1.0893174 -1.552014 --1.2997448 -1.8542987 --0.9597399 -1.3710581 --1.3576014 -1.9420283 --1.5322095 -2.194738 --1.9627142 -2.8151598 --1.5311415 -2.1990905 --1.0021732 -1.4412941 --1.2195684 -1.7562982 --1.5401102 -2.2208872 --1.4800133 -2.1370919 --1.6176106 -2.3389163 --1.8447449 -2.6709173 --1.3290844 -1.9269053 --1.4629345 -2.1238148 --1.2659879 -1.8403718 --1.6076403 -2.3401809 --1.909956 -2.7839968 --1.3468295 -1.9658171 --1.5099776 -2.206919 --1.7287724 -2.5301096 --1.966896 -2.882497 --2.1880224 -3.2108903 --2.0821548 -3.0596607 --2.2620432 -3.3284955 --1.9340208 -2.849675 --1.9398979 -2.8622034 --1.9808149 -2.9265316 --2.1703725 -3.2109356 --1.8009751 -2.668046 --1.2592715 -1.8680718 --1.6450236 -2.4436285 --1.1157113 -1.6596026 --1.6589113 -2.4709558 --1.5886643 -2.3695383 --1.9949108 -2.9795122 --1.4473399 -2.1646247 --1.7884011 -2.6783526 --2.1707697 -3.255424 --2.5723712 -3.8629477 --2.721765 -4.0928655 --2.7660854 -4.1651855 --2.7634678 -4.1669226 --2.4562535 -3.7087436 --2.041674 -3.0869734 --2.347842 -3.5547462 --2.3438036 -3.553485 --2.3157823 -3.5158057 --2.5677624 -3.9036973 --2.745114 -4.1790366 --2.7424877 -4.180761 --2.463799 -3.7610667 --2.5011165 -3.8232718 --2.504388 -3.833528 --2.5908828 -3.9713752 --2.495506 -3.8304362 --2.3079362 -3.5474002 --2.253157 -3.467967 --1.8772695 -2.8933942 --2.0835185 -3.2157044 --2.621272 -4.0512495 --2.0962365 -3.2442598 --1.7963607 -2.7839904 --2.1411567 -3.3229342 --2.535263 -3.9399965 --2.0273592 -3.1550288 --1.8228216 -2.8406448 --1.7397735 -2.714976 --1.4237022 -2.224812 --1.9463032 -3.0456913 --1.6093092 -2.5218337 --1.5600446 -2.4480252 --1.5605431 -2.4522057 --1.5545944 -2.44625 --1.3699089 -2.158631 --1.8904239 -2.9829726 --1.6501139 -2.6074002 --2.1367424 -3.3810372 --2.1272094 -3.370641 --2.594113 -4.1161947 --2.3043277 -3.6614773 --1.96113 -3.1204987 --1.5756391 -2.5106158 --1.1048884 -1.7629832 --1.5374229 -2.456573 --1.1581274 -1.8531035 --1.6789265 -2.6901863 --1.3978988 -2.2430248 --1.4935249 -2.3998215 --1.8940154 -3.0476036 --2.299601 -3.7054102 --2.633889 -4.2500153 --2.1555223 -3.4830134 --2.4745796 -4.0041842 --1.9757962 -3.201586 --1.8725531 -3.0385606 --1.976107 -3.2111115 --2.080184 -3.3849964 --1.6590171 -2.7034554 --1.2627819 -2.0606725 --1.1862427 -1.938505 --0.69540316 -1.1380024 --0.5208905 -0.8536235 --0.520354 -0.8539507 --0.51981735 -0.85427743 --0.7880645 -1.2969542 --0.5187434 -0.85493 --1.0008538 -1.6518251 --0.73437756 -1.2137486 --0.7136054 -1.1810921 --1.1949891 -1.9806434 --0.78256816 -1.2989178 --0.7619515 -1.2664975 --0.54948974 -0.9146491 --1.0156746 -1.6930425 --1.3625712 -2.2745278 --1.7889739 -2.990579 --1.6939374 -2.8357518 --1.5285139 -2.5624788 --1.8067648 -3.033283 --1.3596973 -2.2859905 --1.7290107 -2.9110599 --2.1260788 -3.5847144 --2.5011265 -4.223116 --2.545207 -4.30371 --2.0405178 -3.4552803 --1.5558258 -2.638319 --1.3973415 -2.3729727 --1.8763698 -3.191045 --1.40565 -2.3939574 --1.0444485 -1.781359 --1.3098538 -2.2372413 --1.1409495 -1.9515626 --1.5270977 -2.6158292 --1.7469549 -2.996755 --2.1271915 -3.6542943 --2.2223415 -3.823275 --1.9300951 -3.325307 --1.4867253 -2.5651484 --1.0846503 -1.8741343 --1.3165045 -2.2780485 --1.0719122 -1.8575047 --0.9133865 -1.5850972 --1.1533544 -2.0044494 --0.9275738 -1.6144041 --1.0630934 -1.8529648 --0.9247481 -1.6141787 --0.9554398 -1.670184 --0.8472489 -1.4832193 --0.49545866 -0.86863154 --0.5362228 -0.94147265 --0.49436674 -0.86925346 --0.49382046 -0.8695639 --0.76491076 -1.3488973 --0.49272734 -0.87018377 --0.9700228 -1.7156272 --0.9747702 -1.7265548 --1.0105356 -1.7925339 --1.0245806 -1.8201199 --0.8700055 -1.5477986 --0.6557188 -1.1682861 --1.0424173 -1.8599992 --0.71830434 -1.2835704 --0.95807683 -1.7145578 --0.9531383 -1.7082394 --1.1384437 -2.043365 --0.68247443 -1.2267692 --0.4856032 -0.87417936 --0.48505384 -0.8744843 --0.59520733 -1.074667 --1.0070282 -1.820922 --0.56827915 -1.0290964 --0.48915485 -0.88712686 --0.49657306 -0.9019202 --0.48175368 -0.87630665 --0.55884147 -1.0180435 --0.8802825 -1.6060052 --1.1561863 -2.1125178 --0.8529744 -1.560834 --0.8772445 -1.6076447 --0.571992 -1.0498049 --0.96905106 -1.7812098 --0.6565385 -1.2085898 --0.4767906 -0.87901694 --0.4762382 -0.87931633 --0.92592144 -1.7121702 --0.56067514 -1.0383326 --0.734529 -1.3623451 --0.5304586 -0.9853334 --0.95025176 -1.7677644 --1.0223225 -1.9047073 --0.988612 -1.8446811 --0.5792996 -1.0825659 --0.4712582 -0.8819953 --0.47070393 -0.8822912 --0.4701495 -0.8825868 --0.51565635 -0.9694819 --0.46904 -0.8831769 --0.47506568 -0.89588135 --0.4679298 -0.88376564 --0.8506214 -1.608988 --1.1737086 -2.223502 --0.8394336 -1.5926665 --1.0761087 -2.0448265 --0.64955497 -1.2361712 --0.9614733 -1.83258 --1.2411572 -2.3692782 --1.3110342 -2.5064986 --1.2031507 -2.3037648 --1.4851992 -2.8481846 --1.5828311 -3.0400722 --1.7372822 -3.3418436 --1.4477886 -2.7892535 --1.617708 -3.1214085 --1.4951092 -2.8892934 --1.1525623 -2.2307553 --1.4432738 -2.7977295 --1.4493104 -2.8137686 --1.3912041 -2.705132 --1.456108 -2.835714 --1.6714084 -3.2600424 --1.5200592 -2.9694338 --1.8871107 -3.6921859 --1.7224425 -3.3752394 --1.7782743 -3.4900599 --1.6481316 -3.239671 --1.1946383 -2.3519113 --1.5428665 -3.0422087 --1.1861908 -2.342567 --0.9464085 -1.8719465 --0.55078363 -1.0911233 --0.75302726 -1.4941084 --0.7315053 -1.4536779 --0.73145026 -1.455846 --0.4483832 -0.89384145 --0.7083998 -1.4143951 --0.4974485 -0.99476904 --0.44669756 -0.89468503 --0.5999061 -1.2034359 --1.0194771 -2.0483346 --0.9895306 -1.9913018 --0.7733955 -1.5588146 --1.0881462 -2.1966753 --0.6729917 -1.3607385 --0.44275823 -0.896641 --0.7873111 -1.5969305 --0.7525932 -1.5289325 --0.45669645 -0.9292758 --0.86585295 -1.7646185 --0.95008534 -1.9393655 --1.1406405 -2.3320446 --1.313785 -2.6903207 --1.1785005 -2.4171407 --0.806204 -1.65619 --0.71313393 -1.4673376 --1.133648 -2.336316 --1.4725121 -3.0395365 --1.5059972 -3.1136403 --1.3899918 -2.8784125 --1.6629542 -3.4491992 --1.5977669 -3.3193214 --1.7051095 -3.5480256 --1.7460073 -3.6389813 --1.4749329 -3.078974 --1.45144 -3.0348244 --1.209017 -2.5320268 --1.2544687 -2.6314664 --1.1824868 -2.4844894 --0.97867787 -2.0596063 --1.0967853 -2.3119068 --0.82551825 -1.7429318 --0.46944043 -0.9927501 --0.426916 -0.9042913 --0.8512848 -1.8061258 --0.9578628 -2.035562 --0.8960399 -1.9072914 --0.64034104 -1.3652445 --0.655699 -1.4002764 --0.5607639 -1.1994997 --0.4229346 -0.90616024 --0.42236516 -0.9064258 --0.705597 -1.51675 --0.543643 -1.1705366 --0.542457 -1.1699065 --0.8147308 -1.7600111 --0.57483375 -1.2438262 --0.5547789 -1.2024148 --0.683123 -1.4830335 --1.0964751 -2.3843462 --1.3974394 -3.0438468 --1.5568222 -3.3966348 --1.689677 -3.6926177 --1.9538722 -4.27709 --1.7643969 -3.8687522 --1.369697 -3.0083082 --1.5128956 -3.3283634 --1.322437 -2.9142146 --1.5675318 -3.4600985 --1.3459201 -2.9758956 --1.2813408 -2.8378553 --0.94153035 -2.0887568 --0.7446809 -1.6548268 --0.5074942 -1.1296477 --0.8024938 -1.7893035 --0.527638 -1.1784457 --0.69042027 -1.5446109 --0.49951577 -1.119406 --0.6376027 -1.4312723 --0.40635395 -0.9137158 --0.6933668 -1.5617267 --0.9631216 -2.1729977 --0.83460635 -1.8862398 --0.5283467 -1.1961126 --0.40348142 -0.91498786 --0.40290645 -0.9152412 --0.40643555 -0.9248333 --0.401756 -0.91574675 --0.54451996 -1.24328 --0.4006049 -0.9162509 --0.40002912 -0.9165024 --0.3994532 -0.9167536 --0.3988771 -0.9170044 --0.39830086 -0.9172548 --0.7053204 -1.6270937 --0.95637774 -2.2100587 --1.1019268 -2.5507987 --1.3204582 -3.06195 --1.4987732 -3.4814506 --1.6112986 -3.7493165 --1.2286942 -2.863997 --1.1990262 -2.7996967 --1.3508171 -3.1596088 --1.5501158 -3.6320877 --1.6496899 -3.8721375 --1.4083655 -3.3114717 --1.1459049 -2.699059 --1.4070743 -3.3200135 --1.121895 -2.6517646 --1.2774526 -3.0247428 --1.346545 -3.1939373 --1.2755979 -3.030973 --1.6341771 -3.889834 --1.3429327 -3.2022176 --1.3192822 -3.1513734 --1.5353763 -3.674037 --1.629309 -3.905707 --1.7038829 -4.0917053 --1.9192206 -4.6169896 --1.8813463 -4.533912 --1.6513207 -3.986641 --1.3314005 -3.2200062 --1.5500188 -3.7554173 --1.4746931 -3.579292 --1.575827 -3.831592 --1.8056033 -4.398142 --1.895989 -4.6265783 --1.5740578 -3.8478932 --1.6130978 -3.9504104 --1.300574 -3.190779 --1.0582079 -2.6008413 --0.80220526 -1.9751977 --0.6064821 -1.4959817 --0.37512437 -0.9269745 --0.4103756 -1.0159194 --0.3739592 -0.9274452 --0.3733764 -0.92767996 --0.63711995 -1.5858454 --0.8845883 -2.2058206 --0.5442004 -1.359497 --0.3710437 -0.9286154 --0.37046018 -0.9288483 --0.59706557 -1.4997499 --0.36929265 -0.9293131 --0.7069893 -1.7823784 --0.9922886 -2.506235 --1.2731217 -3.2214508 --1.5685092 -3.9761932 --1.7410315 -4.4216766 --1.4614885 -3.7185764 --1.2279781 -3.1302142 --1.5426949 -3.9397316 --1.1936206 -3.0539162 --1.3129495 -3.3654585 --1.5764704 -4.048447 --1.7571265 -4.5207787 --1.4546618 -3.7495658 --1.6792537 -4.3365564 --1.5831616 -4.0960464 --1.2642545 -3.2770731 --1.5490831 -4.0229025 --1.7397684 -4.526583 --1.750396 -4.5627937 --1.6130967 -4.212806 --1.7849944 -4.670524 --1.7820594 -4.6716447 --1.7791238 -4.6727633 --1.7039616 -4.4838243 --1.7732503 -4.6749954 --1.7703127 -4.676109 --1.7368951 -4.5965595 --1.764435 -4.6783295 --1.7614952 -4.6794376 --1.666926 -4.4366655 --1.4753219 -3.934201 --1.1929001 -3.1871643 --1.5250559 -4.0824223 --1.4764502 -3.9598978 --1.7438418 -4.6860447 --1.740897 -4.6871395 --1.7379516 -4.6882324 --1.7350056 -4.6893234 --1.5263516 -4.1333575 --1.2738506 -3.4562666 --1.1407434 -3.1011176 --1.3974626 -3.8063903 --1.5823848 -4.318464 --1.3120899 -3.5877821 --1.1266603 -3.0867543 --0.8371067 -2.297935 --0.6803523 -1.8712847 --0.6289647 -1.7333356 --0.9179107 -2.5345945 --0.86320215 -2.3882155 --1.1893559 -3.2970617 --1.1122217 -3.0893145 --1.3672054 -3.8050587 --1.0839025 -3.0225673 --1.1548507 -3.2267926 --1.2634746 -3.5373046 --1.3723471 -3.8497458 --1.6759424 -4.7107553 --1.6729822 -4.7118077 --1.6700214 -4.7128577 --1.6670599 -4.7139063 --1.4657182 -4.152876 --1.3561248 -3.8500671 --1.5973456 -4.5440073 --1.6552073 -4.718081 --1.6522425 -4.71912 --1.6492771 -4.720157 --1.646311 -4.721193 --1.6433443 -4.722226 --1.5649645 -4.506118 --1.6374089 -4.7242875 --1.4962817 -4.3258867 --1.3975481 -4.0486712 --1.1313397 -3.2841594 --1.2539961 -3.647659 --1.5696393 -4.575159 --1.6195871 -4.730427 --1.3777616 -4.032378 --1.2904509 -3.7846112 --1.101424 -3.2368932 --1.201371 -3.5379074 --1.1791897 -3.4797657 --1.1329086 -3.3501146 --0.8899426 -2.6371007 --1.0618747 -3.1531122 --1.2111566 -3.603872 --0.9093657 -2.7115152 --1.1037096 -3.2978752 --1.3908828 -4.164639 --1.202061 -3.606802 --1.382343 -4.1564455 --1.1766882 -3.5455174 --1.3827051 -4.175047 --1.1513709 -3.4838715 --0.9507188 -2.8828073 --0.6773812 -2.0583293 --0.4190532 -1.2760587 --0.31140628 -0.95027685 --0.31080914 -0.95047235 --0.3102119 -0.95066744 --0.3096145 -0.95086217 --0.35173887 -1.0825409 --0.462431 -1.4262649 --0.42104417 -1.301403 --0.4198576 -1.300525 --0.30662575 -0.95183015 --0.43911886 -1.3660567 --0.3054294 -0.9522147 --0.30510858 -0.95327353 --0.30423257 -0.9525978 --0.303634 -0.9527888 --0.44248933 -1.3915317 --0.32730478 -1.0315455 --0.58174485 -1.8374522 --0.8497398 -2.689791 --0.58478254 -1.855145 --0.31827617 -1.0119058 --0.29944047 -0.954115 --0.29884094 -0.95430297 --0.29824126 -0.95449054 --0.2976415 -0.9546777 --0.2970416 -0.95486456 --0.29644156 -0.955051 --0.46250424 -1.4933716 --0.29524118 -0.95542276 --0.2946408 -0.95560807 --0.29404032 -0.955793 --0.3197191 -1.0415914 --0.29283902 -0.95616174 --0.34886265 -1.1416484 --0.29163724 -0.956529 --0.29103616 -0.95671207 --0.43601477 -1.4365357 --0.3681156 -1.2155763 --0.51348835 -1.6994691 --0.32759464 -1.0866907 --0.5238932 -1.7418079 --0.33518338 -1.1169411 --0.49004617 -1.6367296 --0.6541115 -2.1897056 --0.3717463 -1.2473162 --0.4121039 -1.3859082 --0.46511877 -1.5678028 --0.3225018 -1.0895858 --0.28321198 -0.95905733 --0.51309544 -1.7415531 --0.3401849 -1.1573405 --0.45362756 -1.5468745 --0.28080073 -0.9597661 --0.49034595 -1.6798995 --0.33091825 -1.1363626 --0.36621585 -1.2605232 --0.2783877 -0.96046877 --0.27778414 -0.96064353 --0.37008506 -1.282862 --0.27657676 -0.96099186 --0.27597287 -0.9611654 --0.2753689 -0.96133864 --0.28164342 -0.9855824 --0.4664686 -1.63625 --0.39937666 -1.4042549 --0.27295193 -0.96202767 --0.27648142 -0.9768043 --0.5018624 -1.7773323 --0.44901696 -1.5940107 --0.5446958 -1.9383364 --0.724551 -2.5845976 --0.5397976 -1.9302158 --0.6208505 -2.225436 --0.550029 -1.9763733 --0.42862734 -1.5439059 --0.42197752 -1.5236669 --0.44648802 -1.6161159 --0.34049493 -1.2354853 --0.49417123 -1.797508 --0.4380633 -1.5973458 --0.5292187 -1.9344976 --0.7569313 -2.773721 --0.77328545 -2.8406758 --0.7055867 -2.5984242 --0.6389332 -2.3588228 --0.5506297 -2.0378957 --0.4692239 -1.7409539 --0.5986494 -2.2267263 --0.8279438 -3.0873418 --0.58159053 -2.1741679 --0.7845294 -2.940216 --0.78185195 -2.9375904 --0.98175037 -3.6979995 --0.8231888 -3.1086135 --0.88190866 -3.338834 --0.8555146 -3.24717 --0.7873948 -2.9962566 --0.9168122 -3.4976647 --0.96162987 -3.678066 --1.1925523 -4.5730433 --1.2586577 -4.8389854 --1.0092514 -3.890159 --0.99815816 -3.8573694 --0.8783067 -3.4030197 --0.9122781 -3.5438433 --0.99749327 -3.8849797 --1.0316432 -4.0284915 --1.2342327 -4.83222 --1.148808 -4.509584 --1.2312739 -4.8460255 --1.2282288 -4.8467984 --1.1342425 -4.4877524 --1.1949424 -4.7404532 --1.2190907 -4.849105 --1.2160437 -4.8498697 --1.2129961 -4.850633 --1.2099482 -4.851394 --1.2058614 -4.847979 --1.0673245 -4.302552 --1.0255475 -4.1452866 --1.1601026 -4.7018313 --1.1947011 -4.855171 --1.1916503 -4.8559213 --1.188599 -4.856669 --1.1240684 -4.605524 --0.9563547 -3.9290845 --1.1794423 -4.8589005 --1.1763891 -4.8596406 --1.1502846 -4.7648945 --1.0600277 -4.4031434 --1.1672268 -4.86185 --0.97445023 -4.070142 --1.1099684 -4.6490808 --1.1118611 -4.6699967 --1.067816 -4.4975405 --1.1186395 -4.7248106 --1.1355556 -4.809737 --1.0420103 -4.4259524 --0.8572789 -3.6515868 --0.7404104 -3.1627142 --0.8362056 -3.5820494 --0.65772307 -2.8255029 --0.6010943 -2.5895996 --0.63974035 -2.763976 --0.8589703 -3.7217944 --1.0656358 -4.6305223 --0.96044797 -4.1854787 --1.1016718 -4.8147855 --1.1121671 -4.874739 --1.109104 -4.8754373 --1.0390742 -4.5809026 --1.07646 -4.759584 --1.099912 -4.877519 --1.0968472 -4.878209 --1.0492038 -4.680053 --1.067917 -4.7775865 --1.0560282 -4.7383814 --1.0845835 -4.8809505 --0.87009543 -3.9273417 --0.87196857 -3.94754 --1.0753812 -4.8829865 --0.8833426 -4.023029 --1.0236112 -4.6758814 --0.8850597 -4.0551696 --0.9255237 -4.253394 --0.925949 -4.268255 --1.0083991 -4.6624546 --0.9179901 -4.2573824 --0.91490245 -4.2560396 --0.7798379 -3.6388583 --0.6976569 -3.2653997 --0.6517031 -3.0597193 --0.47838166 -2.252929 --0.6383124 -3.0154433 --0.62039727 -2.9399269 --0.7846957 -3.7301004 --0.898619 -4.285005 --1.0231637 -4.894194 --0.9454148 -4.5365195 --1.0170126 -4.895476 --0.8615261 -4.160152 --0.8683914 -4.206612 --0.8142367 -3.9568338 --0.81975806 -3.9963827 --0.9251267 -4.524503 --0.9362922 -4.593815 --0.8285307 -4.0781875 --0.83195466 -4.108269 --0.788721 -3.9073966 --0.87925273 -4.3700542 --0.88646924 -4.420283 --0.98007303 -4.9030046 --0.93389326 -4.687302 --0.7912102 -3.9842231 --0.76193994 -3.8494885 --0.5870463 -2.9757023 --0.5981069 -3.0418315 --0.7441044 -3.7969408 --0.83823717 -4.2915583 --0.95171416 -4.888856 --0.95233166 -4.9084687 --0.87694067 -4.5351295 --0.8086196 -4.195947 --0.94307774 -4.910255 --0.9399923 -4.9108467 --0.8397587 -4.402169 --0.9338204 -4.912024 --0.9129695 -4.8188457 --0.80401754 -4.258402 --0.7666791 -4.0746837 --0.6592626 -3.5159504 --0.6299794 -3.3714716 --0.7880556 -4.2321773 --0.66953814 -3.6082869 --0.80353314 -4.345635 --0.6311375 -3.425328 --0.78358126 -4.2677207 --0.6844125 -3.7408361 --0.6004483 -3.293596 --0.7730537 -4.2555285 --0.8905764 -4.920048 --0.7917577 -4.389853 --0.6212171 -3.456733 --0.59094584 -3.3001997 --0.70170724 -3.9330003 --0.77680254 -4.369779 --0.6150448 -3.4724965 --0.52245617 -2.960579 --0.4249055 -2.4166644 --0.32024458 -1.8281361 --0.4838567 -2.772374 --0.42034853 -2.4174557 --0.39106837 -2.2574663 --0.4944728 -2.8650773 --0.4567788 -2.656629 --0.53449214 -3.120349 --0.45642084 -2.674669 --0.45693666 -2.6878755 --0.55917615 -3.3018422 --0.4260253 -2.5252452 --0.35887823 -2.1354125 --0.30842605 -1.8422914 --0.35917133 -2.1537118 --0.3619941 -2.1790755 --0.3595378 -2.172733 --0.3175341 -1.9264134 --0.46790236 -2.8498237 --0.50848955 -3.1092439 --0.48713356 -2.9904542 --0.5761193 -3.5507848 --0.57399374 -3.5517995 --0.6118447 -3.80118 --0.4682429 -2.9207268 --0.4738489 -2.9676235 --0.5370638 -3.3771527 --0.6738469 -4.254502 --0.74532866 -4.725033 --0.77596587 -4.9394207 --0.7728622 -4.939907 --0.76396567 -4.903215 --0.7552875 -4.8676214 --0.7635493 -4.941355 --0.69100934 -4.4906025 --0.7312305 -4.7719283 --0.7542337 -4.9427857 --0.75112796 -4.943259 --0.60538924 -4.0010605 --0.6240323 -4.1418657 --0.69162464 -4.610154 --0.5769789 -3.862501 --0.62145036 -4.1781726 --0.5671763 -3.829809 --0.49054062 -3.3267558 --0.41506267 -2.827186 --0.39200592 -2.6818597 --0.5188607 -3.5653727 --0.48592874 -3.3538654 --0.5104471 -3.5387573 --0.5413703 -3.7698987 --0.4965885 -3.4735656 --0.49441323 -3.4739285 --0.53223264 -3.7565804 --0.65060824 -4.61296 --0.6510896 -4.637441 --0.6278573 -4.492467 --0.68895143 -4.952307 --0.609909 -4.4044113 --0.68272763 -4.953169 --0.57564664 -4.195787 --0.50529003 -3.7002335 --0.52330804 -3.8502238 --0.6524853 -4.8233495 --0.6671635 -4.9552894 --0.5867469 -4.3788066 --0.50228167 -3.7664318 --0.6137573 -4.624522 --0.6547074 -4.9569507 --0.65159273 -4.9573607 --0.6484778 -4.9577694 --0.5524557 -4.2443933 --0.5620801 -4.339637 --0.4746164 -3.6825204 --0.5348469 -4.1705127 --0.61217135 -4.797345 --0.6218069 -4.89736 --0.6266662 -4.9605737 --0.6235492 -4.960966 --0.620432 -4.961357 --0.6173146 -4.9617457 --0.6141969 -4.962133 --0.611079 -4.9625177 --0.5711423 -4.6623445 --0.457107 -3.7509785 --0.33921316 -2.7981927 --0.31199154 -2.5872455 --0.24597538 -2.050634 --0.2886618 -2.4193542 --0.3238379 -2.728748 --0.2519362 -2.1343427 --0.28060782 -2.3901405 --0.27031493 -2.3150282 --0.25442815 -2.1909199 --0.36478773 -3.158562 --0.35317492 -3.074962 --0.328896 -2.8795335 --0.42584974 -3.7492704 --0.51858085 -4.591419 --0.446 -3.971174 --0.33966422 -3.0415924 --0.38756344 -3.4903975 --0.42380425 -3.8387709 --0.3335065 -3.0383656 --0.25440723 -2.3312469 --0.2916831 -2.688485 --0.22006312 -2.0403075 --0.3162869 -2.9498255 --0.39966047 -3.7496266 --0.4607781 -4.34896 --0.44416225 -4.2174244 --0.35882875 -3.427839 --0.32532528 -3.1267571 --0.25610974 -2.4766316 --0.34090447 -3.3169816 --0.2911787 -2.8507636 --0.19663742 -1.9372046 --0.114361696 -1.133742 --0.09973655 -0.9950139 --0.13461863 -1.3515689 --0.17704725 -1.7889482 --0.09786081 -0.9952001 --0.0980611 -1.0037119 --0.16131479 -1.6619395 --0.16935962 -1.7562965 --0.10115766 -1.0559711 --0.12270441 -1.2894292 --0.17919818 -1.8957187 --0.18674485 -1.9888915 --0.12282222 -1.3169855 --0.2113366 -2.2816029 --0.20333363 -2.2103236 --0.19259237 -2.1080809 --0.24385737 -2.6878572 --0.17773156 -1.9727758 --0.21763265 -2.4327714 --0.16067603 -1.8088969 --0.19331881 -2.1920176 --0.11755884 -1.3426241 --0.19482717 -2.2413013 --0.24352425 -2.8220665 --0.30114573 -3.5155966 --0.3282127 -3.8600988 --0.37579942 -4.452906 --0.35708958 -4.2631745 --0.28664374 -3.4481905 --0.23864208 -2.8927677 --0.20735943 -2.5329885 --0.21997994 -2.708077 --0.29547074 -3.6659527 --0.34074268 -4.2610807 --0.36145604 -4.5561333 --0.28029928 -3.5615401 --0.28672186 -3.6726475 --0.2460481 -3.17738 --0.23893915 -3.11097 --0.30103093 -3.9519188 --0.23740515 -3.1427147 --0.17976382 -2.399745 --0.20688815 -2.785332 --0.2656909 -3.6076767 --0.3084924 -4.225096 --0.32999685 -4.55906 --0.35783538 -4.987179 --0.3228679 -4.539792 --0.3137278 -4.450793 --0.3314297 -4.7444253 --0.31561515 -4.5592456 --0.34216598 -4.9882784 --0.27829012 -4.094745 --0.27451423 -4.077051 --0.30395362 -4.5569973 --0.329628 -4.989123 --0.31587642 -4.8270884 --0.3233582 -4.989533 --0.32022312 -4.989735 --0.28250897 -4.4457746 --0.3139526 -4.990134 --0.28151557 -4.519878 --0.23665081 -3.8384216 --0.25735176 -4.2173276 --0.24516657 -4.0595975 --0.1975486 -3.3056302 --0.15173574 -2.566107 --0.16358177 -2.796259 --0.1849074 -3.1952329 --0.19173153 -3.349644 --0.20261173 -3.579142 --0.16178434 -2.8901048 --0.17543006 -3.169557 --0.19141199 -3.4981396 --0.21986358 -4.06492 --0.18827723 -3.5219712 --0.23099259 -4.3725557 --0.20204963 -3.8708482 --0.17004165 -3.2974412 --0.12550437 -2.4638758 --0.12136637 -2.4124732 --0.15943345 -3.2093394 --0.18330972 -3.7373443 --0.13820387 -2.8543723 --0.18095557 -3.7865896 --0.13413297 -2.8442826 --0.14842434 -3.1899245 --0.11519534 -2.5097327 --0.13567312 -2.9969883 --0.10268741 -2.3003333 --0.08127544 -1.8467209 --0.08260584 -1.9041868 --0.107002616 -2.502887 --0.10048754 -2.385618 --0.09582161 -2.3093545 --0.12185035 -2.9818926 --0.10105646 -2.511713 --0.06610413 -1.6690956 --0.056739368 -1.4557714 --0.038318045 -0.9992656 --0.04891863 -1.2969922 --0.037062302 -0.99931294 --0.07252275 -1.9891801 --0.095460325 -2.6642957 --0.07266049 -2.064197 --0.043363433 -1.2543194 --0.058805987 -1.7325318 --0.055165857 -1.655976 --0.03266675 -0.9994663 --0.060153846 -1.8765695 --0.06718412 -2.1378334 --0.05708606 -1.8536037 --0.046192117 -1.5311406 --0.054254618 -1.8366767 --0.062188767 -2.1510637 --0.059596304 -2.1072264 --0.047706738 -1.7251884 --0.032188576 -1.1910987 --0.053234395 -2.0167975 --0.065194786 -2.5301895 --0.048955396 -1.9474633 --0.029072734 -1.1861906 --0.023873836 -0.999715 --0.024332862 -1.0464859 --0.022617538 -0.9997442 --0.03114998 -1.4162498 --0.021361206 -0.99977183 --0.020733025 -0.99978507 --0.026844677 -1.3349648 --0.035630494 -1.829049 --0.045906045 -2.435103 --0.05108045 -2.8030367 --0.041224003 -2.3429737 --0.037295 -2.1981905 --0.027986571 -1.7130018 --0.021586716 -1.37414 --0.017263787 -1.1447536 --0.03063098 -2.119449 --0.042672526 -3.0868688 --0.048268758 -3.6579835 --0.0412958 -3.2860425 --0.0412324 -3.4536994 --0.04272504 -3.7775621 --0.044511512 -4.167034 --0.039069384 -3.8861725 --0.02979179 -3.1609135 --0.0339922 -3.8642054 --0.032998428 -4.039805 --0.03304564 -4.382731 --0.03357496 -4.85776 --0.03141572 -4.9999013 --0.028274184 -4.99992 --0.023877606 -4.750259 --0.017117862 -3.8919642 --0.015211339 -4.034914 --0.014379937 -4.577261 --0.011304565 -4.4979343 --0.0072156666 -3.8280256 --0.004013537 -3.1938694 --0.0016954844 -2.6984468 --3.3198342E-16 -1.8072336 -0.0011954642 -1.9026401 -0.002107791 -1.6773257 -0.0018849545 -0.9999982 -0.0025132715 -0.99999684 -0.0043356335 -1.3800704 -0.0037699023 -0.9999929 -0.0043982156 -0.99999034 -0.0090765795 -1.8057129 -0.008485789 -1.500601 -0.006283144 -0.9999803 -0.0069114487 -0.9999761 -0.007539751 -0.99997157 -0.00816805 -0.9999666 -0.008796346 -0.9999613 -0.013739564 -1.4577699 -0.014711302 -1.463311 -0.010681212 -0.99994296 -0.011309492 -0.99993604 -0.011937768 -0.9999287 -0.01256604 -0.999921 -0.013194306 -0.999913 -0.021731935 -1.5720568 -0.034027554 -2.354468 -0.043222934 -2.8660927 -0.04270656 -2.7185605 -0.04734313 -2.897778 -0.05832288 -3.4375868 -0.07195583 -4.089623 -0.0702204 -3.8533404 -0.05442503 -2.8869956 -0.05483129 -2.814699 -0.069806345 -3.471415 -0.06303039 -3.0394425 -0.050326776 -2.3554518 -0.04223808 -1.9203758 -0.06312432 -2.7902317 -0.078174084 -3.3620408 -0.08756572 -3.6668077 -0.10357151 -4.2257996 -0.091198 -3.6278892 -0.07285259 -2.8273866 -0.0815084 -3.087965 -0.082171306 -3.040648 -0.101333596 -3.6644623 -0.11881468 -4.20109 -0.13288575 -4.596421 -0.14763339 -4.99782 -0.15077358 -4.9977264 -0.14452253 -4.692695 -0.12721145 -4.0479336 -0.14452618 -4.508663 -0.16333376 -4.9973316 -0.16647364 -4.9972277 -0.13911273 -4.098515 -0.1727532 -4.9970145 -0.16427508 -4.6668572 -0.1790325 -4.9967937 -0.18217205 -4.9966803 -0.17036813 -4.5936456 -0.18845092 -4.9964476 -0.18982133 -4.950198 -0.19472948 -4.9962068 -0.19786866 -4.9960833 -0.20100775 -4.995958 -0.20414676 -4.9958305 -0.18072687 -4.355619 -0.21042454 -4.99557 -0.20842247 -4.8751884 -0.216702 -4.9953017 -0.21984059 -4.995165 -0.2229791 -4.9950256 -0.22611752 -4.9948845 -0.21289688 -4.6383324 -0.2323941 -4.9945965 -0.22834973 -4.8421445 -0.23867032 -4.9943004 -0.19355689 -3.997597 -0.21117726 -4.3055115 -0.21483262 -4.3245044 -0.22306906 -4.4340796 -0.19310674 -3.7910311 -0.15875877 -3.078644 -0.19833478 -3.7996795 -0.22435237 -4.2468605 -0.236585 -4.4256315 -0.27004552 -4.992702 -0.26894948 -4.915172 -0.2763193 -4.992359 -0.27945605 -4.992184 -0.26584417 -4.696145 -0.26979104 -4.7133822 -0.26851425 -4.6399736 -0.29200187 -4.991466 -0.23812062 -4.027021 -0.22491202 -3.7635093 -0.23398408 -3.8744323 -0.20318115 -3.3296118 -0.19168675 -3.109115 -0.19629097 -3.151553 -0.1536858 -2.4427657 -0.16760506 -2.63756 -0.2063009 -3.2145925 -0.20715551 -3.1964836 -0.24553864 -3.7522163 -0.2119358 -3.207779 -0.19252922 -2.886477 -0.23572388 -3.5009422 -0.20993258 -3.0889359 -0.17483258 -2.548803 -0.22185403 -3.2048113 -0.24689338 -3.5342855 -0.2751993 -3.9041965 -0.21257614 -2.9889977 -0.24569635 -3.4242887 -0.31092393 -4.2955594 -0.2931629 -4.0151443 -0.25353774 -3.4426556 -0.21315563 -2.8697107 -0.252286 -3.3678749 -0.29516473 -3.907323 -0.2640414 -3.466322 -0.31105736 -4.0499434 -0.355209 -4.5870466 -0.34105617 -4.368621 -0.30086207 -3.8228152 -0.34260288 -4.31849 -0.3940184 -4.9273086 -0.33269432 -4.127792 -0.3964571 -4.8806105 -0.34507895 -4.2152944 -0.30804265 -3.7340262 -0.30486026 -3.667327 -0.26969275 -3.2197723 -0.25676897 -3.0424957 -0.22620285 -2.6603642 -0.3120324 -3.6426885 -0.38314563 -4.4400606 -0.3844228 -4.422419 -0.40354246 -4.6088057 -0.3491883 -3.9594018 -0.30969068 -3.4865093 -0.35162583 -3.9305923 -0.34681904 -3.8496048 -0.31338993 -3.4542625 -0.24078661 -2.6356063 -0.31333587 -3.4060948 -0.33867443 -3.65635 -0.27560216 -2.9551988 -0.36450693 -3.8821135 -0.37581623 -3.9757204 -0.35897234 -3.7722313 -0.29626155 -3.0926344 -0.3800286 -3.9409802 -0.3646901 -3.757206 -0.32004187 -3.275813 -0.31386054 -3.1918192 -0.22732572 -2.2969797 -0.22923356 -2.3015013 -0.30569804 -3.0497725 -0.38394675 -3.8063142 -0.42536846 -4.190584 -0.45838088 -4.4877443 -0.4069172 -3.959282 -0.38203764 -3.6943793 -0.3824274 -3.6755753 -0.48258743 -4.610088 -0.5236838 -4.9725 -0.50640005 -4.779554 -0.52993196 -4.971838 -0.49759033 -4.6407385 -0.50204784 -4.654719 -0.5393027 -4.97083 -0.5424259 -4.9704905 -0.52466214 -4.7798634 -0.4256404 -3.8554025 -0.41014114 -3.6937325 -0.35047445 -3.1383946 -0.3437556 -3.060792 -0.26100424 -2.3108838 -0.17803915 -1.567494 -0.27514008 -2.4088924 -0.25684983 -2.2362955 -0.20330153 -1.7603128 -0.11535324 -0.9933245 -0.11597735 -0.99325186 -0.1166014 -0.9931788 -0.11722541 -0.99310535 -0.11784937 -0.9930315 -0.11847329 -0.99295723 -0.19592479 -1.6333749 -0.11972098 -0.99280757 -0.12034476 -0.99273217 -0.12096848 -0.99265635 -0.19669321 -1.6056443 -0.1222158 -0.9925035 -0.1923336 -1.5538743 -0.24089018 -1.936186 -0.28920633 -2.3126721 -0.2668834 -2.1233282 -0.17552759 -1.389444 -0.2725979 -2.146985 -0.35152352 -2.7547512 -0.290782 -2.2673967 -0.3214576 -2.4941704 -0.43372145 -3.3486216 -0.5602426 -4.304218 -0.6484778 -4.9577694 -0.64306694 -4.892496 -0.6547074 -4.9569507 -0.53242797 -4.011724 -0.61565167 -4.6165533 -0.59872884 -4.4682264 -0.52838373 -3.9245167 -0.49925464 -3.6906264 -0.4642076 -3.4153938 -0.3407824 -2.495546 -0.26764217 -1.9507967 -0.35930726 -2.6067636 -0.35627612 -2.572821 -0.37491158 -2.694932 -0.46776444 -3.3469646 -0.45311904 -3.227379 -0.43837953 -3.1082103 -0.5612788 -3.961593 -0.6737156 -4.7337728 -0.6098265 -4.2656493 -0.7107261 -4.9492292 -0.71383566 -4.9487815 -0.64382714 -4.443675 -0.5110635 -3.5117943 -0.62521386 -4.2773232 -0.67802554 -4.618349 -0.7293792 -4.9465146 -0.732487 -4.9460554 -0.7322439 -4.9230666 -0.7387018 -4.945131 -0.7418088 -4.944666 -0.7449155 -4.9441986 -0.7012686 -4.634734 -0.6672559 -4.3912873 -0.7542337 -4.9427857 -0.75733924 -4.942311 -0.7604444 -4.941834 -0.7107291 -4.599526 -0.62597585 -4.0342426 -0.5699221 -3.657822 -0.5773212 -3.6900668 -0.6559649 -4.175553 -0.77906924 -4.9389324 -0.7821723 -4.9384418 -0.7710439 -4.848461 -0.7883775 -4.9374547 -0.65649706 -4.094987 -0.618046 -3.8397062 -0.770495 -4.767724 -0.77972305 -4.805652 -0.66316015 -4.0710607 -0.7795596 -4.7667465 -0.8100859 -4.9339395 -0.8131858 -4.9334297 -0.79655546 -4.813687 -0.8193847 -4.932404 -0.82248366 -4.931888 -0.8255823 -4.9313703 -0.8117995 -4.8304043 -0.8317786 -4.930329 -0.83487624 -4.9298053 -0.7798717 -4.5875025 -0.8410706 -4.9287524 -0.84416723 -4.928223 -0.8472636 -4.9276915 -0.8207591 -4.755647 -0.8534552 -4.926623 -0.7593146 -4.3668747 -0.7035536 -4.0311804 -0.55588263 -3.1732905 -0.496195 -2.8221257 -0.4109004 -2.328431 -0.48530233 -2.7399802 -0.36499476 -2.0532198 -0.38990542 -2.1853817 -0.28083825 -1.568371 -0.3036446 -1.689616 -0.35510868 -1.9688786 -0.3003076 -1.6590691 -0.3978413 -2.1900482 -0.24879281 -1.3646854 -0.3047508 -1.6656955 -0.3367891 -1.8342984 -0.5018013 -2.7233908 -0.62976 -3.4058423 -0.4919908 -2.6514456 -0.40624556 -2.181703 -0.42707026 -2.2855594 -0.49718606 -2.651571 -0.39365628 -2.0921724 -0.39181432 -2.075207 -0.3670866 -1.9375603 -0.4891753 -2.5731292 -0.4151689 -2.1763916 -0.2658536 -1.3889117 -0.38040042 -1.9806036 -0.4050226 -2.1016722 -0.50480545 -2.6106188 -0.43184838 -2.225815 -0.57354295 -2.94623 -0.47424972 -2.4280362 -0.42907944 -2.1894634 -0.51306397 -2.609323 -0.36605132 -1.855492 -0.25565344 -1.2916174 -0.38213652 -1.9242892 -0.23362471 -1.1725854 -0.29276848 -1.464631 -0.1966307 -0.98047763 -0.19724672 -0.9803539 -0.3618934 -1.7928532 -0.37425703 -1.8481159 -0.51158136 -2.5181017 -0.41029114 -2.0130484 -0.34903547 -1.7070225 -0.36874104 -1.7976406 -0.5085363 -2.4712636 -0.49510852 -2.3983765 -0.6599564 -3.1868088 -0.8325074 -4.0073447 -0.638789 -3.0651927 -0.81453836 -3.8962574 -0.87343425 -4.164913 -0.76727957 -3.647312 -0.6362712 -3.0151498 -0.7747635 -3.6600504 -0.6376525 -3.0030117 -0.65609586 -3.0803432 -0.8049071 -3.7673864 -0.95612353 -4.461437 -0.94568735 -4.3992486 -1.0268794 -4.762381 -0.8256674 -3.8175726 -0.96329767 -4.4404173 -1.0414268 -4.7860456 -0.87284523 -3.9992054 -0.8606502 -3.9314713 -0.75760686 -3.4503877 -0.5955742 -2.7043254 -0.7047328 -3.1904368 -0.81768507 -3.6907775 -0.77644515 -3.4942358 -0.5869009 -2.6334147 -0.64342993 -2.87854 -0.582473 -2.598165 -0.5956837 -2.649293 -0.63115716 -2.7988431 -0.4328361 -1.9137913 -0.54397476 -2.3981884 -0.3835999 -1.6862416 -0.22243342 -0.97494787 -0.22304596 -0.9748079 -0.40926066 -1.7834926 -0.37045795 -1.6097561 -0.4137244 -1.7926081 -0.6358137 -2.7470112 -0.73200375 -3.1535764 -0.67880595 -2.9160724 -0.5881959 -2.5196517 -0.58697873 -2.5073202 -0.44668683 -1.9026666 -0.43832818 -1.8618046 -0.61364025 -2.5991225 -0.62759674 -2.6507876 -0.41710153 -1.7567923 -0.5571602 -2.340163 -0.6786928 -2.8426914 -0.82951534 -3.464769 -0.9226629 -3.8431675 -1.1061834 -4.594865 -0.96622175 -4.0024395 -1.1763891 -4.8596406 -1.1794423 -4.8589005 -0.9589998 -3.939952 -1.0167265 -4.165724 -0.8913694 -3.6421754 -1.0461591 -4.2630515 -0.82523024 -3.3536708 -0.9941954 -4.0294185 -1.1696247 -4.727649 -1.1641198 -4.692749 -1.2068998 -4.8521533 -1.2099482 -4.851394 -1.1087232 -4.433657 -0.94182944 -3.7562387 -0.9536093 -3.7931151 -1.1048636 -4.383102 -0.9250063 -3.6598866 -0.96410865 -3.8045354 -1.0973738 -4.3190236 -1.2277267 -4.819375 -0.98881316 -3.8713632 -1.1218922 -4.380907 -1.1666642 -4.543857 -1.145509 -4.449854 -1.1133883 -4.313849 -1.136161 -4.3906794 -1.0904711 -4.2032204 -1.1716846 -4.504612 -1.0528188 -4.0372114 -0.94920933 -3.6305594 -1.1450717 -4.368481 -1.2662803 -4.818549 -1.2738537 -4.8350077 -1.1141613 -4.2181234 -0.9060293 -3.4214447 -0.8169059 -3.077073 -0.8452418 -3.17576 -0.76081014 -2.8513222 -0.6514775 -2.4354274 -0.4755368 -1.7732419 -0.58557886 -2.1781094 -0.36073136 -1.3384157 -0.40599102 -1.5025841 -0.45735857 -1.6884829 -0.40696654 -1.4987127 -0.41372862 -1.5198385 -0.26326695 -0.96472305 -0.49253732 -1.8004131 -0.32936403 -1.2009867 -0.2958939 -1.0762901 -0.4535261 -1.6456187 -0.26629642 -0.9638912 -0.4324222 -1.5613803 -0.28695536 -1.0336066 -0.49343884 -1.7730327 -0.34309915 -1.2298374 -0.515532 -1.8434466 -0.5256678 -1.875147 -0.76099163 -2.7080398 -0.95685685 -3.396843 -0.9062954 -3.2096212 -1.1415355 -4.033026 -1.2209027 -4.3031096 -1.0774373 -3.788395 -1.1776338 -4.1308317 -1.3738241 -4.807557 -1.1174045 -3.9009635 -1.3327574 -4.641762 -1.2997615 -4.5161433 -1.2805994 -4.439067 -1.154944 -3.9940703 -1.288159 -4.444293 -1.3949555 -4.8014684 -1.3393822 -4.5993953 -1.2275071 -4.2053747 -1.2926192 -4.418123 -1.3585495 -4.6326675 -1.4100329 -4.7970624 -1.3779753 -4.677136 -1.1531776 -3.905073 -1.3432025 -4.5380654 -1.4220847 -4.7935033 -1.4250963 -4.7926087 -1.4281073 -4.7917128 -1.4056097 -4.705424 -1.1994808 -4.0062056 -1.0206136 -3.4010193 -1.3075705 -4.34733 -1.2760729 -4.2329645 -1.2191308 -4.0349016 -1.0568988 -3.4900484 -0.7875822 -2.5948434 -0.88690954 -2.9155037 -0.85733575 -2.8119404 -0.613779 -2.0085835 -0.57051855 -1.8628256 -0.54536873 -1.7767202 -0.7060237 -2.2949657 -0.5502398 -1.7845919 -0.7388747 -2.3910542 -0.87079865 -2.811706 -0.9009787 -2.9026988 -0.9832706 -3.160804 -1.0376018 -3.3280826 -0.8336809 -2.6681101 -1.001695 -3.1987603 -1.1850591 -3.7759845 -0.91011983 -2.8935735 -0.98496866 -3.124682 -0.99249977 -3.1416879 -0.895818 -2.829458 -1.1113133 -3.502455 -1.1590445 -3.6449404 -1.0745672 -3.37194 -1.2886932 -4.0350914 -1.2625784 -3.9447677 -1.3165052 -4.104371 -1.0973951 -3.4138906 -1.0829504 -3.3617034 -1.271482 -3.9384642 -1.0059725 -3.1093547 -0.96927303 -2.9895055 -1.0696894 -3.2921655 -0.8657423 -2.6587954 -0.5931534 -1.8177629 -0.57334 -1.7533069 -0.66990024 -2.044245 -0.43438137 -1.3227345 -0.33656695 -1.0227116 -0.3471444 -1.052625 -0.3137936 -0.9494912 -0.31439012 -0.94929385 -0.31498653 -0.94909614 -0.49145654 -1.4777173 -0.5967274 -1.7904893 -0.78646016 -2.3548517 -0.5643666 -1.6863227 -0.3807989 -1.135453 -0.31856227 -0.9479019 -0.3191578 -0.9477016 -0.45531684 -1.3492066 -0.44675136 -1.3210847 -0.32094362 -0.9470983 -0.5946983 -1.7513222 -0.48295355 -1.4193163 -0.78608346 -2.3054113 -0.7428877 -2.1742542 -1.0457418 -3.0543618 -1.2949692 -3.774555 -1.5614084 -4.541868 -1.6285008 -4.7273655 -1.3346789 -3.8665407 -1.6141483 -4.66665 -1.6374089 -4.7242875 -1.3471532 -3.8789573 -1.3226833 -3.8007922 -1.0488416 -3.0078056 -1.2285672 -3.5161047 -0.98082346 -2.801419 -1.2010056 -3.423403 -1.3135282 -3.7366252 -1.150058 -3.2650392 -1.051983 -2.9806242 -0.74961907 -2.1196804 -0.52081156 -1.4697481 -0.8474418 -2.3867455 -1.1678315 -3.2825525 -1.2127267 -3.401974 -1.4585233 -4.0833755 -1.3960029 -3.900601 -1.3676007 -3.813687 -1.6564828 -4.6101446 -1.6807116 -4.6683564 -1.3502407 -3.743057 -1.0417479 -2.882197 -1.1739691 -3.2416396 -1.2543051 -3.4566834 -1.502121 -4.13153 -1.3379343 -3.6727529 -1.4476793 -3.966262 -1.658848 -4.535959 -1.7202652 -4.6947513 -1.7232146 -4.6936693 -1.6696683 -4.5390034 -1.7291114 -4.6915 -1.7320589 -4.690413 -1.4728549 -3.98079 -1.7379516 -4.6882324 -1.6770803 -4.5153213 -1.6240094 -4.364032 -1.3328959 -3.5748792 -1.0632136 -2.8461165 -1.3615017 -3.6376302 -1.6190513 -4.3174806 -1.5406214 -4.100495 -1.4070503 -3.7378492 -1.4728035 -3.90508 -1.2763618 -3.3777938 -1.6210783 -4.2819204 -1.2696759 -3.347372 -1.3705157 -3.6063912 -1.4246838 -3.7418478 -1.1597537 -3.0402787 -1.3912162 -3.6401846 -1.4872366 -3.8841066 -1.7605883 -4.589362 -1.4804983 -3.8520064 -1.425432 -3.701786 -1.5145904 -3.925969 -1.5005914 -3.882416 -1.5230526 -3.9331782 -1.4309179 -3.6883628 -1.1138115 -2.865642 -1.0673611 -2.7410316 -1.147331 -2.9409318 -1.2144804 -3.107287 -1.2294594 -3.1397915 -0.89556605 -2.2828693 -1.140042 -2.9006958 -1.460589 -3.7094402 -1.310891 -3.3231275 -1.414336 -3.578773 -1.2132068 -3.0642107 -1.3513955 -3.4069796 -1.4696523 -3.698333 -1.1771176 -2.956764 -1.2987598 -3.256358 -1.5083302 -3.7749155 -1.8423725 -4.602532 -1.5064316 -3.7564566 -1.2207828 -3.0386312 -1.3601735 -3.3794465 -1.5873196 -3.9366643 -1.8727093 -4.63605 -1.6914405 -4.1797395 -1.8785337 -4.633693 -1.8814447 -4.6325116 -1.6148908 -3.9690452 -1.8370597 -4.5069733 -1.6490145 -4.0383687 -1.8930815 -4.6277685 -1.7658607 -4.3090405 -1.8988955 -4.625386 -1.6161528 -3.9296434 -1.868713 -4.535635 -1.9076108 -4.6217985 -1.7395663 -4.2071595 -1.8318483 -4.422473 -1.8658484 -4.4965634 -1.5349679 -3.6926088 -1.4926146 -3.5843656 -1.1603925 -2.7816412 -1.3373543 -3.2001858 -1.2816969 -3.0615933 -1.1899018 -2.837316 -1.0274984 -2.4457557 -0.71621037 -1.7018013 -0.6483524 -1.5378593 -0.38905963 -0.92121255 -0.49377882 -1.1671193 -0.51363957 -1.2119405 -0.60895187 -1.4343224 -0.8116401 -1.9083989 -1.1623122 -2.7281687 -0.945434 -2.215253 -0.6487557 -1.5174626 -0.6027968 -1.4075156 -0.5241046 -1.2216498 -0.817188 -1.9015076 -0.8972002 -2.0840766 -0.63435566 -1.4709781 -0.9647349 -2.2332196 -1.344844 -3.107751 -1.5047588 -3.4713068 -1.2916216 -2.9745004 -1.3535888 -3.1118526 -1.5490861 -3.5551856 -1.5234443 -3.4903467 -1.1500326 -2.6303182 -0.84574825 -1.9310621 -0.8573397 -1.9541862 -0.9908546 -2.2546632 -0.83715 -1.9016676 -0.6572759 -1.4905258 -0.5446321 -1.2329807 -0.9004953 -2.035151 -0.7134465 -1.6096802 -0.54120123 -1.2189916 -0.5687895 -1.2789636 -0.5970307 -1.3401974 -0.8597757 -1.9267422 -0.9047547 -2.0241208 -0.880284 -1.9660581 -0.8812385 -1.9648789 -1.2811118 -2.851668 -1.6280648 -3.6178787 -1.7495488 -3.8813214 -2.057572 -4.5570164 -2.0604346 -4.5557227 -2.0632968 -4.554427 -2.0661578 -4.5531297 -1.6931818 -3.724992 -1.6880715 -3.7075639 -1.4848537 -3.2558045 -1.4394072 -3.1509094 -1.1244564 -2.4573855 -1.0628691 -2.3189404 -0.82064474 -1.7874957 -0.9119218 -1.9830248 -0.6079048 -1.3197378 -0.79288924 -1.7184896 -0.5376224 -1.1633081 -0.87877667 -1.8983653 -0.9503236 -2.0495443 -0.89787877 -1.9332539 -0.81684554 -1.7558897 -0.52697396 -1.1309236 -0.6239279 -1.3367991 -0.42350388 -0.9058943 -0.42407298 -0.905628 -0.4246419 -0.9053614 -0.71906114 -1.5305781 -0.69488645 -1.4767089 -0.9646689 -2.046687 -0.8521605 -1.805042 -0.58986735 -1.2474232 -0.428052 -0.9037541 -0.42861977 -0.90348494 -0.64802915 -1.3637632 -0.6032128 -1.2673932 -0.88640755 -1.8593941 -0.642468 -1.3455114 -0.7320187 -1.5305822 -0.53817713 -1.1234635 -0.6361847 -1.3259189 -0.5573587 -1.159763 -0.433722 -0.90104675 -0.50857455 -1.0548546 -0.57444304 -1.1895639 -0.43541965 -0.9002276 -0.7700046 -1.5894314 -0.43655056 -0.8996797 -0.84246373 -1.7334453 -0.49089167 -1.0084419 -0.43824565 -0.89885527 -0.43881032 -0.8985797 -0.69418305 -1.4192604 -0.7662666 -1.5641447 -1.0425225 -2.1246731 -0.6370707 -1.2962973 -0.65337926 -1.3273741 -1.0660065 -2.1622183 -0.9979398 -2.0209534 -0.957206 -1.9353983 -1.0711105 -2.1622846 -0.72781366 -1.4669424 -0.8203177 -1.6507827 -0.8022666 -1.611915 -0.6945611 -1.3933176 -0.44669756 -0.89468503 -0.8890268 -1.7778249 -0.7023884 -1.4023926 -0.8980079 -1.7901577 -0.65246683 -1.2986408 -0.4495061 -0.8932773 -0.7429048 -1.474024 -0.45062828 -0.8927117 -0.75486356 -1.4930806 -0.97210234 -1.919771 -0.9956953 -1.963302 -0.716157 -1.4099145 -0.80226326 -1.576979 -1.1686766 -2.293657 -1.132257 -2.218732 -0.9002476 -1.76136 -1.0407293 -2.0330632 -1.4344674 -2.7978947 -1.0766308 -2.096697 -0.93074226 -1.8097852 -0.82400215 -1.5997618 -1.2112701 -2.3479993 -1.2857816 -2.488598 -1.0772104 -2.0817053 -1.0670668 -2.0589325 -1.2644234 -2.4359891 -0.83483547 -1.6058931 -1.0307138 -1.9796454 -0.6927835 -1.3285594 -0.6533977 -1.2511107 -0.6283258 -1.2012635 -1.057433 -2.018562 -1.0326734 -1.9682882 -0.6921869 -1.3173043 -0.46570718 -0.8849389 -0.46626312 -0.88464606 -0.7160866 -1.3565718 -1.0852177 -2.0527375 -1.0707277 -2.0222528 -0.8064151 -1.5207417 -0.46904 -0.8831769 -0.46959484 -0.88288206 -0.4826691 -0.9060892 -0.47070393 -0.8822912 -0.76013935 -1.4226582 -1.0942305 -2.044843 -1.3686569 -2.5538185 -1.591919 -2.9659324 -1.5300028 -2.8462822 -1.4696037 -2.7298067 -1.8578907 -3.4458656 -2.2078233 -4.0887403 -2.378428 -4.398077 -2.381191 -4.3965816 -2.383953 -4.3950844 -2.2332418 -4.1110663 -2.2874904 -4.2046294 -2.3922334 -4.390583 -2.32593 -4.262517 -2.3977487 -4.3875732 -2.400505 -4.386066 -2.4032605 -4.384557 -2.3365276 -4.2564607 -2.4087684 -4.3815336 -2.2218308 -4.0354867 -2.3112137 -4.1915965 -2.1621966 -3.9155202 -2.1859913 -3.952739 -2.4225214 -4.3739443 -2.4252691 -4.3724213 -2.428016 -4.370897 -2.349408 -4.223134 -2.4335067 -4.367842 -2.0889456 -3.7438633 -2.3302588 -4.170191 -2.4417355 -4.3632474 -2.4444766 -4.3617125 -2.4471931 -4.3601336 -2.4499557 -4.358637 -2.452694 -4.3570967 -2.455431 -4.355555 -2.4581673 -4.354011 -2.4447114 -4.3238297 -2.4636366 -4.350919 -2.3780415 -4.193605 -2.437817 -4.29273 -2.2913048 -4.0288405 -2.474564 -4.344713 -2.023008 -3.5467107 -2.4692574 -4.322756 -2.4827492 -4.340041 -2.4854755 -4.3384805 -2.4882011 -4.336918 -2.4580715 -4.2781725 -2.2667465 -3.9394467 -2.4963715 -4.33222 -2.499093 -4.3306503 -2.5018137 -4.3290796 -2.410456 -4.1649537 -2.2229376 -3.8353858 -1.8781792 -3.2358625 -2.3014061 -3.9592965 -2.5154014 -4.3211985 -2.518116 -4.3196173 -2.5208297 -4.318034 -2.3476884 -4.0156565 -2.0958848 -3.5797892 -1.8390137 -3.1365294 -1.770859 -3.0159435 -1.9365429 -3.293378 -1.6754005 -2.845174 -1.9596165 -3.323054 -2.413784 -4.087345 -2.076196 -3.5106556 -2.0457957 -3.4542964 -1.6561162 -2.7923253 -1.8832397 -3.1707287 -2.0959187 -3.5237622 -1.9039048 -3.1963663 -2.3348641 -3.9142852 -2.564111 -4.2924743 -2.2310805 -3.7296362 -2.4005098 -4.0071497 -2.3141925 -3.8575609 -2.2891524 -3.8103917 -1.8453364 -3.0672739 -1.4148501 -2.3483884 -1.3205103 -2.1886892 -1.2952282 -2.1437392 -1.336053 -2.2081728 -1.6780205 -2.7694318 -1.3664829 -2.2520714 -1.6000725 -2.6333132 -2.119405 -3.4830692 -1.7120194 -2.8095877 -1.8683091 -3.0617428 -1.4298162 -2.339843 -0.91819006 -1.5004654 -1.2900108 -2.1051064 -1.5351835 -2.5016623 -1.547681 -2.5184765 -1.481635 -2.40761 -1.0408418 -1.6889566 -0.69069076 -1.1191972 -0.77406275 -1.2525319 -1.1738049 -1.8966995 -1.3715771 -2.2131622 -1.0544049 -1.6989914 -0.896594 -1.4426825 -0.5283791 -0.84900856 -0.5289124 -0.84867644 -0.5294455 -0.8483439 -0.8276124 -1.3242509 -1.1449713 -1.8294938 -1.5118393 -2.4123223 -1.2570437 -2.0029674 -1.129589 -1.7973723 -1.2615818 -2.004599 -1.5910931 -2.524658 -1.3139726 -2.0820374 -1.5990387 -2.5302112 -1.577495 -2.4926527 -1.8275167 -2.8837087 -1.3253094 -2.0883536 -1.3822256 -2.175017 -1.0425725 -1.6382772 -0.9497955 -1.490421 -0.8563964 -1.3419977 -1.0374961 -1.6235358 -0.6601596 -1.0316279 -1.1104631 -1.7329158 -1.3232818 -2.0621731 -1.8578103 -2.8911722 -1.5068389 -2.3417451 -1.4566439 -2.2606156 -1.2992212 -2.013526 -1.6611818 -2.5709434 -1.4953691 -2.3111348 -1.2941611 -1.9974095 -1.6580098 -2.555454 -1.547103 -2.3812377 -1.6217577 -2.4927137 -1.4357643 -2.203803 -1.9625201 -3.008204 -1.5336102 -2.3475347 -1.3951883 -2.132721 -1.9024001 -2.9040737 -1.5666655 -2.3882892 -1.1055336 -1.683014 -1.272845 -1.9350708 -1.1952014 -1.814547 -0.9983792 -1.5136616 -1.2724249 -1.9265128 -1.3004661 -1.9662808 -1.6552403 -2.4992785 -1.6404175 -2.47352 -1.1571215 -1.7423996 -1.6835855 -2.5316985 -1.5692728 -2.3565876 -1.3299708 -1.9945089 -1.0135542 -1.5179232 -1.4818845 -2.2162893 -1.7881721 -2.6707363 -1.7249092 -2.5727513 -1.5150858 -2.256727 -1.1926515 -1.77405 -1.5850543 -2.3545463 -1.8787086 -2.7869785 -2.2297637 -3.303273 -2.2575688 -3.3399372 -2.5704648 -3.797703 -2.2027347 -3.2500033 -2.7514732 -4.054147 -2.6620753 -3.9171247 -2.5272517 -3.7137167 -2.8156114 -4.131868 -2.818207 -4.130098 -2.8208015 -4.1283264 -2.8233948 -4.126553 -2.825987 -4.1247783 -2.6605763 -3.8781185 -2.8311682 -4.121224 -2.6473565 -3.848473 -2.6743174 -3.8824399 -2.7835798 -4.0356317 -2.6414843 -3.824478 -2.2560043 -3.261975 -2.2673173 -3.2739336 -2.470939 -3.5631714 -2.742593 -3.9496036 -2.8544276 -4.1051483 -2.4315379 -3.4922779 -2.8187423 -4.042978 -2.8621607 -4.0997605 -2.864736 -4.0979614 -2.851405 -4.0734386 -2.6197321 -3.7374766 -2.4280982 -3.4594529 -2.600879 -3.7006764 -2.3300426 -3.3108914 -1.922724 -2.7284648 -2.272788 -3.2209275 -2.1759772 -3.0796208 -2.4577951 -3.4738393 -2.642903 -3.7304964 -2.174005 -3.0645561 -2.4958584 -3.5135722 -2.5076072 -3.5254178 -2.462806 -3.4578304 -2.6909108 -3.7730749 -2.9057877 -4.0689554 -2.9083438 -4.0671287 -2.3426876 -3.2717488 -2.6864069 -3.746804 -2.9041815 -4.045171 -2.9185565 -4.0598063 -2.9211066 -4.057972 -2.3788066 -3.3002388 -2.6242185 -3.6358929 -2.6085865 -3.6094534 -2.1252153 -2.9367328 -2.6887226 -3.7105057 -2.1891277 -3.0170605 -2.4611418 -3.3874712 -2.846675 -3.9129395 -2.9440072 -4.0413885 -2.6336613 -3.6105921 -2.8346672 -3.8810349 -2.9516199 -4.035832 -2.372936 -3.2403069 -2.1340053 -2.910203 -1.8634025 -2.537829 -1.7429 -2.370589 -1.9870645 -2.6991317 -2.435288 -3.303627 -2.4620404 -3.3355286 -2.4685075 -3.339896 -2.1204967 -2.8652685 -2.204827 -2.9753063 -2.515063 -3.3895006 -2.5195804 -3.3911338 -2.0081677 -2.6992729 -1.6424392 -2.204786 -1.4258697 -1.911558 -1.4113058 -1.8895549 -1.2212902 -1.6330076 -1.1677885 -1.5594258 -1.6054779 -2.1410964 -1.5178074 -2.0215297 -1.4010506 -1.8635843 -1.5211823 -2.020731 -1.1278577 -1.496283 -0.83655304 -1.1083714 -0.7155391 -0.946799 -1.2634455 -1.6696051 -1.4892286 -1.9654031 -1.3420724 -1.7688842 -1.1983777 -1.5774318 -0.799602 -1.0511491 -0.6059329 -0.7955158 -0.71067077 -0.93180865 -0.60693204 -0.79475373 -0.6074313 -0.7943722 -0.69178665 -0.9035114 -0.6084291 -0.79360825 -0.60892755 -0.7932258 -0.60942584 -0.79284304 -0.8766979 -1.1390733 -0.6104217 -0.7920766 -0.61091924 -0.7916929 -1.1578673 -1.4985375 -1.1101927 -1.4349716 -1.0362767 -1.3376945 -1.234547 -1.5915685 -1.5976049 -2.0569499 -1.103291 -1.4186696 -0.66443163 -0.8532542 -0.614891 -0.7886121 -0.61538637 -0.7882256 -0.6158815 -0.7878388 -0.6163764 -0.7874517 -0.70518476 -0.8997435 -0.6173655 -0.78667647 -0.6178596 -0.78628844 -0.61835355 -0.78590006 -0.8287841 -1.0519873 -0.99230653 -1.2579218 -0.6198338 -0.7847331 -0.62032676 -0.7843435 -0.8817014 -1.1133881 -1.1935905 -1.5052887 -1.028182 -1.2950126 -1.2055222 -1.5164181 -1.7285485 -2.171527 -1.9556748 -2.4536939 -2.4623616 -3.0854306 -2.3507571 -2.9417927 -2.3895164 -2.9864476 -1.9314791 -2.4108799 -1.7385938 -2.1673276 -2.2965534 -2.8591964 -2.2095587 -2.7473512 -2.0429206 -2.5368888 -2.1270168 -2.6379247 -2.0046158 -2.4829285 -2.1161127 -2.6176624 -1.8118335 -2.2383864 -1.8130434 -2.2370055 -1.6387465 -2.019356 -1.1087186 -1.3644725 -1.6254821 -1.9978744 -1.3864784 -1.7019303 -1.3302019 -1.6307561 -1.851045 -2.2663732 -2.148076 -2.6266801 -2.0075397 -2.4516864 -2.0112174 -2.4530318 -2.6156433 -3.1861498 -2.9865477 -3.6332963 -3.1774273 -3.8605642 -2.7004004 -3.2767794 -2.3990424 -2.9073753 -2.4323492 -2.9439692 -2.7164373 -3.2836087 -2.1106555 -2.5480826 -1.5128534 -1.8240536 -1.9831992 -2.3880963 -1.7497185 -2.1042562 -1.4889519 -1.7883646 -1.9914696 -2.3888793 -2.5663354 -3.0745332 -2.5766501 -3.0829508 -2.2593272 -2.699826 -2.5581062 -3.0529583 -2.4625387 -2.9351554 -2.453255 -2.9203615 -2.3452473 -2.78823 -1.867378 -2.2172685 -2.0857885 -2.4734466 -1.8345164 -2.1727023 -1.666213 -1.9708595 -1.4243748 -1.6826587 -1.7132694 -2.0213618 -1.6900278 -1.9914029 -1.3440259 -1.5816844 -1.8350469 -2.1567829 -1.355936 -1.5916429 -0.89612484 -1.0505632 -0.95349914 -1.116404 -0.6956445 -0.8134596 -0.6504031 -0.75958925 -0.90752083 -1.0585235 -0.691137 -0.8051112 -1.2079303 -1.4053406 -1.3211275 -1.5350851 -1.160662 -1.3469195 -0.6538562 -0.75782055 -0.65373766 -0.75672126 -0.65421295 -0.7563104 -0.65468806 -0.7558992 -0.6551629 -0.7554877 -0.65563744 -0.7550759 -0.90559715 -1.0416235 -0.86045146 -0.9884416 -1.1036614 -1.2662212 -1.0140682 -1.1619569 -0.99562526 -1.1393784 -0.65847933 -0.7525988 -0.65895206 -0.7521849 -0.65942454 -0.75177073 -0.6598968 -0.7513563 -0.70938283 -0.8066781 -1.1241637 -1.2767297 -1.4599953 -1.6560396 -1.578991 -1.7887468 -1.4774141 -1.6715583 -1.1632004 -1.314389 -1.2860502 -1.451368 -1.928501 -2.1736507 -1.5032223 -1.6921681 -1.5924627 -1.7903584 -1.5566533 -1.7478863 -2.1682239 -2.4315097 -2.461576 -2.7569942 -2.9357874 -3.283961 -2.9218848 -3.2642794 -2.6445217 -2.9506812 -3.019052 -3.364316 -2.5553153 -2.8439486 -2.9564962 -3.286289 -2.5857096 -2.870512 -2.2493033 -2.4938996 -2.5118709 -2.7815037 -3.0154026 -3.334871 -3.3557575 -3.7066011 -3.2746553 -3.6124551 -3.2114894 -3.5383031 -3.3627384 -3.700269 -2.7624557 -3.0358992 -2.9932241 -3.2853613 -2.4168844 -2.6494253 -2.424179 -2.6540706 -2.0489192 -2.2403953 -1.6730652 -1.8271103 -1.1205984 -1.2222332 -1.4343098 -1.5624253 -1.8117511 -1.9710929 -1.9574157 -2.1268847 -2.3159552 -2.5132947 -1.8442049 -1.9988257 -2.1803222 -2.3601463 -1.8875649 -2.0406697 -1.7640761 -1.9047621 -2.363764 -2.5490608 -2.0309212 -2.1873684 -1.6136554 -1.735771 -1.8288081 -1.9647285 -1.3975629 -1.499542 -1.7056247 -1.8277789 -1.2255728 -1.3116933 -1.1683836 -1.2489115 -0.8439305 -0.90096086 -0.68408895 -0.7293986 -1.1332198 -1.2067566 -0.685005 -0.7285384 -0.6854626 -0.7281078 -0.9058697 -0.9610167 -0.68637705 -0.72724587 -1.2364842 -1.3084599 -0.7877009 -0.8325045 -1.3258266 -1.3994759 -0.6882026 -0.7255185 -0.98292345 -1.0349166 -0.6891138 -0.7246531 -0.8128365 -0.8536818 -1.3118143 -1.376001 -1.2020661 -1.2592976 -1.3804117 -1.4443165 -1.3844588 -1.4467299 -0.6984103 -0.7289064 -0.6922943 -0.72161525 -0.97333443 -1.0132831 -0.9413534 -0.9787578 -1.5608928 -1.6208748 -0.90331316 -0.93684685 -0.6945579 -0.71943676 -1.1840248 -1.2248951 -1.1040577 -1.1407324 -1.4769028 -1.5240455 -1.3426466 -1.3837631 -1.934657 -1.9913976 -2.4058053 -2.473253 -2.2167704 -2.2760553 -1.6603341 -1.7025962 -1.1869882 -1.2156726 -1.220922 -1.2488557 -1.3320326 -1.3607969 -1.0095801 -1.0300858 -0.70041114 -0.7137396 -0.7008595 -0.7132994 -1.2780902 -1.2991419 -0.7017553 -0.7124181 -1.2702192 -1.2879 -0.8454519 -0.8561435 -1.3723084 -1.3879173 -2.0379312 -2.0585222 -2.4596093 -2.481341 -2.7301764 -2.7508395 -2.9781976 -2.9969692 -2.6014912 -2.6146007 -2.2197235 -2.2281075 -1.9250065 -1.9298507 -1.5902576 -1.5922574 -1.25516 -1.25516 -1.0638562 -1.0625203 -1.1026335 -1.0998658 -1.4680369 -1.4625129 -1.7325135 -1.7238268 -1.1633807 -1.156094 -1.7138542 -1.7009805 -1.3598689 -1.3479592 -1.509734 -1.4946322 -1.9926301 -1.9702204 -1.9295132 -1.9054173 -2.536018 -2.5012026 -2.3327925 -2.2978776 -1.9802402 -1.948152 -1.4350772 -1.4100496 -1.2892399 -1.2651645 -1.445374 -1.4166013 -0.8562497 -0.83815044 -1.3484309 -1.31827 -0.7154977 -0.69861513 -0.7159365 -0.6981654 -1.0859165 -1.0576315 -0.7399742 -0.7197945 -1.3536937 -1.3151231 -1.4672406 -1.4236437 -1.1694674 -1.1332928 -1.3993745 -1.3543843 -2.0574179 -1.9887693 -2.537732 -2.4499745 -2.8836308 -2.7804134 -3.3341966 -3.2108114 -3.038719 -2.9225907 -2.728893 -2.6213064 -2.0336394 -1.951008 -1.5818638 -1.5156813 -1.3512623 -1.2931004 -1.4891845 -1.4232945 -1.590418 -1.5181379 -2.230804 -2.126743 -2.8722115 -2.7347875 -3.2886717 -3.1273847 -2.6437788 -2.510958 -2.9757755 -2.8227212 -2.792858 -2.64588 -2.8436923 -2.6906507 -2.9964688 -2.831639 -2.9145625 -2.7507737 -2.5856383 -2.437264 -3.1851225 -2.9985702 -3.6426919 -3.425025 -3.3693693 -3.1640484 -3.205197 -3.006093 -3.6491413 -3.4181526 -3.288277 -3.0762541 -2.7433887 -2.563269 -2.8079722 -2.6203094 -3.11053 -2.8989925 -2.6182652 -2.4371328 -2.143275 -1.9924908 -2.768391 -2.5703876 -2.1546493 -1.998023 -2.8085127 -2.6010754 -2.4999948 -2.3124285 -2.0694196 -1.9117466 -2.7728374 -2.5583425 -2.7563567 -2.5399323 -2.85296 -2.6256378 -3.1057081 -2.8546448 -3.6801133 -3.3783522 -3.4179606 -3.1337402 -3.6546648 -3.346537 -3.6896865 -3.3743465 -3.6918058 -3.3720274 -3.3329227 -3.0403912 -2.7695708 -2.5232983 -2.4948397 -2.2701294 -2.2370796 -2.0330179 -2.4857976 -2.2561984 -3.1887915 -2.8906083 -2.938354 -2.6602278 -2.4656935 -2.2294888 -3.0872388 -2.7879686 -3.6231103 -3.2677634 -3.2898834 -2.9634721 -2.7287107 -2.4548733 -2.6479044 -2.3791678 -2.037209 -1.8281398 -1.3593452 -1.2183009 -1.27256 -1.1390795 -1.2648071 -1.1307093 -1.4057736 -1.2551419 -1.9636242 -1.7510014 -2.0816178 -1.8538718 -1.9991109 -1.7781409 -1.6724362 -1.4856938 -2.1827898 -1.9366094 -2.0052245 -1.7768198 -1.3390495 -1.1850243 -0.9055545 -0.8003783 -0.7496954 -0.66178304 -0.75011104 -0.66131186 -1.3282714 -1.1695462 -0.7754353 -0.6819083 -1.2434466 -1.0920869 -0.75177073 -0.65942454 -0.7521849 -0.65895206 -0.7525988 -0.65847933 -1.0264776 -0.89696896 -0.7534257 -0.65753305 -0.77940094 -0.67934006 -0.75425136 -0.65658575 -1.1520354 -1.0015903 -1.4404008 -1.2507097 -1.0400107 -0.9019027 -0.775865 -0.67198056 -0.932379 -0.80651337 -1.6848216 -1.455531 -1.732048 -1.4944308 -1.0948824 -0.9434776 -1.1190411 -0.9630709 -0.75836194 -0.6518337 -0.7587713 -0.6513571 -0.7591804 -0.6508802 -0.84023273 -0.7194546 -0.7599977 -0.6499257 -1.2718387 -1.0862528 -1.1104817 -0.947235 -1.2649337 -1.0776093 -0.77047956 -0.65554404 -1.154986 -0.98144174 -1.5504104 -1.3157743 -2.0334513 -1.7235161 -1.8333303 -1.5519189 -1.1031315 -0.9326145 -1.3115453 -1.1074003 -1.5003753 -1.2652246 -2.1736724 -1.8306615 -2.8315215 -2.381661 -3.1692302 -2.6623175 -3.084941 -2.5882058 -2.4029977 -2.0134974 -1.7014347 -1.4238317 -1.6982412 -1.4193459 -1.3298296 -1.1100185 -1.6007866 -1.3344826 -2.3252664 -1.9359641 -1.7495751 -1.4547964 -0.98848706 -0.82089096 -0.7697116 -0.63839173 -0.7701126 -0.637908 -1.0687343 -0.8841339 -1.3199574 -1.0905675 -1.7689835 -1.45969 -1.2219975 -1.0070505 -1.2536037 -1.0317754 -1.651125 -1.3572148 -1.4629873 -1.2010273 -1.9011683 -1.5587498 -1.4997362 -1.2280444 -1.8867579 -1.5429741 -1.5135112 -1.2361501 -1.7488927 -1.4265654 -2.3110132 -1.882668 -2.4946892 -2.0296934 -2.0682333 -1.680568 -1.6267298 -1.3201228 -1.6793743 -1.3610957 -1.8822268 -1.5235445 -1.9953299 -1.6130204 -2.7608073 -2.2289639 -2.8825817 -2.3242893 -2.1815252 -1.7567513 -1.937061 -1.5578823 -2.5285077 -2.0309386 -2.3639019 -1.8962823 -1.8458319 -1.4787902 -2.2791018 -1.8235549 -3.050432 -2.4375694 -2.3701506 -1.8915246 -2.731994 -2.1774893 -2.4956691 -1.9865676 -2.2062492 -1.7539243 -2.9406674 -2.334758 -2.81512 -2.2321968 -3.487652 -2.7619011 -2.9815762 -2.3580887 -2.8425953 -2.2452688 -3.0658426 -2.4184775 -3.1851683 -2.509362 -3.6870575 -2.9010115 -3.1386468 -2.4663253 -3.0644019 -2.4048715 -2.3777695 -1.8636053 -2.9935124 -2.3431666 -3.5702875 -2.7910202 -3.941128 -3.076932 -3.9430606 -3.074455 -3.9449916 -3.071977 -3.9469209 -3.0694976 -3.9488487 -3.067017 -3.9507751 -3.0645354 -3.8053324 -2.9478908 -3.5321739 -2.7327325 -3.740892 -2.8904557 -3.9584646 -3.0545962 -3.3271513 -2.5641022 -3.6812217 -2.833285 -3.5546117 -2.7322838 -3.1343281 -2.4060977 -3.7788787 -2.8971217 -3.969952 -3.0396514 -3.6402705 -2.7835996 -3.8580217 -2.9462676 -3.7513316 -2.8610613 -3.9775789 -3.0296643 -3.6697602 -2.7915616 -3.249116 -2.468359 -2.500695 -1.8973055 -2.0315566 -1.5393547 -2.5195327 -1.9066138 -2.1459396 -1.6217842 -2.8052394 -2.117279 -3.015812 -2.2732375 -3.1357741 -2.3605735 -3.3351884 -2.5074086 -3.2619305 -2.4491267 -2.8432565 -2.1319852 -2.2868955 -1.71256 -2.9314213 -2.192345 -3.0739996 -2.295966 -3.8736696 -2.8894482 -4.0097127 -2.9870062 -4.0115886 -2.984486 -4.013463 -2.981965 -4.0153356 -2.9794426 -4.017207 -2.9769192 -4.019077 -2.9743946 -4.0209446 -2.9718688 -3.4971974 -2.5813725 -3.0175414 -2.2243981 -3.5547538 -2.6169617 -3.8867123 -2.8575814 -4.018011 -2.950227 -4.0321198 -2.956689 -3.7751021 -2.7645764 -3.4202845 -2.501437 -3.766744 -2.7511902 -3.8301382 -2.7938042 -4.0413885 -2.9440072 -3.4589128 -2.5163693 -3.665873 -2.6634126 -3.048717 -2.2120972 -2.390913 -1.7325138 -2.847522 -2.0606563 -2.9730566 -2.1486564 -2.5342379 -1.8290951 -2.3730552 -1.7104943 -2.7023184 -1.9452477 -3.108859 -2.2349293 -2.6835637 -1.9266322 -2.0310209 -1.4562138 -1.8004855 -1.2892112 -1.4404761 -1.0300633 -2.0874794 -1.4907442 -1.3215091 -0.9424841 -1.8101397 -1.2892544 -1.3289394 -0.9452661 -0.8152491 -0.57911044 -1.0378479 -0.73625225 -1.0942895 -0.7752591 -0.82481724 -0.583571 -0.816702 -0.5770597 -0.9758089 -0.68856156 -0.8174265 -0.57603294 -0.81778824 -0.5755192 -0.81814975 -0.57500523 -0.81851083 -0.5744911 -0.8188716 -0.5739767 -1.4698505 -1.0288945 -2.1050684 -1.471577 -1.5131707 -1.056388 -1.9034748 -1.3270924 -1.1604931 -0.80800647 -0.8219819 -0.5715476 -0.8213882 -0.57036954 -1.5593011 -1.0813227 -1.1125921 -0.77051026 -0.82246184 -0.56882024 -1.3859893 -0.9572729 -1.6442757 -1.1341404 -1.4854695 -1.023227 -1.6815994 -1.1567687 -0.9953321 -0.68376595 -1.1822062 -0.81105036 -1.0545647 -0.72250813 -0.82531065 -0.56467897 -0.8256653 -0.5641603 -0.8260196 -0.56364137 -0.8263736 -0.5631223 -0.8267273 -0.56260294 -1.1505058 -0.78188294 -1.5612416 -1.0595853 -1.607433 -1.0894599 -1.8538351 -1.2547632 -1.4154164 -0.9567245 -0.82884234 -0.5594823 -1.3717813 -0.92472094 -1.2155828 -0.8183168 -1.4100119 -0.9479174 -0.8694318 -0.5837054 -1.6358839 -1.0967835 -1.2783858 -0.85593396 -1.598455 -1.06878 -1.515674 -1.0120524 -1.0554965 -0.70382214 -0.83234125 -0.5542635 -0.83268934 -0.5537404 -0.93122095 -0.6184206 -1.5692505 -1.0407135 -1.2975653 -0.85936093 -1.6539506 -1.0938959 -0.8591562 -0.56745625 -0.834771 -0.5505973 -0.8351168 -0.55007267 -0.8354622 -0.54954785 -0.8358074 -0.5490228 -1.5346034 -1.0066663 -2.304074 -1.5093524 -2.1412458 -1.4007651 -2.560408 -1.6726773 -2.6293192 -1.7153398 -2.9630125 -1.9303848 -2.4867578 -1.6178828 -3.2786322 -2.130145 -3.097465 -2.009673 -3.091712 -2.0031812 -2.8095522 -1.817859 -2.083696 -1.3463532 -2.6031144 -1.679651 -3.4090135 -2.1966226 -4.197134 -2.7007232 -3.6432207 -2.3410618 -4.2081194 -2.7003202 -3.675924 -2.3555548 -4.2115097 -2.6950302 -4.213202 -2.6923833 -4.214893 -2.6897357 -3.445091 -2.1954412 -3.1987624 -2.0356395 -3.936591 -2.5017076 -3.693728 -2.344111 -3.960765 -2.5100884 -3.3826013 -2.1407063 -4.1917715 -2.649109 -3.5426111 -2.2357397 -4.2300353 -2.665858 -3.944433 -2.482404 -3.8578506 -2.4245312 -3.8074565 -2.3895242 -3.8106284 -2.388179 -3.1994174 -2.002325 -2.8212862 -1.7632092 -2.5771794 -1.6083999 -3.084179 -1.9221231 -3.8903944 -2.4211805 -3.0476365 -1.8940359 -2.5700047 -1.5949612 -3.1315415 -1.9407302 -2.7808895 -1.7210009 -2.2629697 -1.3985118 -2.0532334 -1.2671129 -2.4153752 -1.4885069 -2.187151 -1.3459651 -2.6817393 -1.648011 -3.198431 -1.9627664 -3.4798553 -2.132458 -3.2265108 -1.9744208 -3.183438 -1.945315 -3.211797 -1.9598737 -4.02223 -2.450942 -4.2575984 -2.5906963 -4.2730193 -2.5964024 -3.740131 -2.2693884 -3.8873224 -2.355359 -3.9183075 -2.3707688 -4.250938 -2.5683792 -3.7180443 -2.2432218 -4.2827773 -2.580275 -3.6659572 -2.205517 -4.2860165 -2.574891 -3.6835902 -2.2098258 -4.2892485 -2.569503 -3.8362644 -2.2948658 -3.666494 -2.1901815 -3.0842457 -1.839747 -3.744362 -2.2303166 -3.6499248 -2.1709597 -4.298905 -2.553315 -3.507425 -2.0802388 -3.3731015 -1.9977083 -2.5893524 -1.5313387 -2.6469896 -1.5631812 -2.7218874 -1.6051064 -2.038968 -1.2006605 -2.2960343 -1.3500936 -2.312722 -1.3579513 -1.7871894 -1.0478671 -1.4386698 -0.84230834 -2.096295 -1.225565 -2.6581771 -1.55182 -2.2454042 -1.3089559 -2.9182074 -1.69871 -2.387345 -1.3876835 -2.9353597 -1.7037596 -3.1218789 -1.8093987 -3.8170002 -2.2090788 -4.3290796 -2.5018137 -4.3306503 -2.499093 -4.33222 -2.4963715 -4.3337874 -2.493649 -3.7425861 -2.1503444 -4.2104936 -2.4156682 -3.840765 -2.200339 -3.8534403 -2.204386 -4.226322 -2.4141724 -3.8779514 -2.2119443 -4.181796 -2.3817732 -4.259583 -2.422534 -4.3478193 -2.4691024 -3.7220497 -2.1106393 -3.648259 -2.065767 -2.9025655 -1.6411227 -2.8477705 -1.6077808 -2.3252072 -1.3108287 -1.6938456 -0.9534984 -1.494308 -0.8399388 -1.5467324 -0.86812776 -2.2920952 -1.2845812 -2.280731 -1.2763296 -2.7145555 -1.5168651 -2.5013921 -1.39569 -3.0311139 -1.6887598 -3.469247 -1.9300066 -3.7207642 -2.06687 -3.3418508 -1.8536383 -3.2158556 -1.7811106 -2.7610707 -1.5269606 -3.0348227 -1.675865 -3.0919437 -1.7048737 -3.1374679 -1.7274055 -3.1378431 -1.7250439 -3.5609877 -1.9547569 -2.7745042 -1.5207595 -2.4669635 -1.3501755 -1.8138992 -0.991271 -1.1825947 -0.6453072 -2.0205536 -1.1009097 -1.7805148 -0.96867293 -1.3347204 -0.725056 -1.6352178 -0.88696414 -1.593241 -0.8629002 -2.2251766 -1.2033492 -1.7565085 -0.94847316 -1.8103703 -0.9760886 -1.9940426 -1.0735017 -1.6305231 -0.87647843 -1.3805226 -0.7409744 -0.88140243 -0.47236618 -0.881699 -0.47181228 -1.5690488 -0.83835715 -1.0134684 -0.5406872 -0.8825868 -0.4701495 -0.88288206 -0.46959484 -0.8831769 -0.46904 -0.8834714 -0.468485 -0.88376564 -0.4679298 -1.4743396 -0.77943695 -1.290084 -0.68099004 -1.4072944 -0.7417311 -2.2372148 -1.1773548 -2.681612 -1.409072 -2.2445254 -1.1776026 -3.062943 -1.6045367 -3.603177 -1.8846564 -3.170186 -1.6556427 -3.594939 -1.8745978 -3.1040914 -1.6161631 -3.0475686 -1.5843011 -3.6036637 -1.8705161 -3.4588408 -1.7925864 -2.9645748 -1.5340649 -2.8049774 -1.4492451 -3.6544495 -1.8852328 -4.079029 -2.1010182 -4.2982483 -2.210517 -3.715784 -1.9080143 -3.877716 -1.9880867 -3.965111 -2.0297484 -3.2121947 -1.6417828 -3.7976725 -1.9380174 -2.9639947 -1.5102308 -2.7246852 -1.3861407 -2.1388085 -1.086394 -1.4948639 -0.7581253 -0.89214474 -0.4517497 -0.8924284 -0.45118907 -1.4581507 -0.73605394 -0.95448893 -0.48106027 -1.4663272 -0.7378706 -1.6881537 -0.84816706 -1.0360038 -0.519697 -1.1638392 -0.5829089 -1.8844813 -0.9423619 -1.4803339 -0.73909986 -1.557645 -0.77647734 -1.3475004 -0.6706647 -0.93837255 -0.46630222 -1.6858395 -0.836418 -1.8256006 -0.90433055 -2.5694096 -1.2707742 -1.948749 -0.96228546 -2.2862332 -1.1271478 -1.4912755 -0.7340572 -2.1434364 -1.0534008 -2.6321292 -1.2915181 -3.4645145 -1.6972481 -3.3879507 -1.6571012 -3.228496 -1.5765963 -2.9759634 -1.45096 -3.4080853 -1.6589956 -4.1150317 -1.9999274 -4.3786535 -2.124649 -3.7726824 -1.8276867 -2.9962938 -1.4492393 -3.5140011 -1.696919 -4.169495 -2.0102289 -3.9611785 -1.9067272 -3.140932 -1.5094686 -2.7356951 -1.3126047 -2.0249813 -0.9700346 -1.4750135 -0.70544237 -1.1421788 -0.54537874 -1.1805239 -0.5627775 -0.90294564 -0.4297548 -1.5792304 -0.75041425 -2.4070578 -1.1419256 -2.4502223 -1.1605177 -2.5561843 -1.2087395 -2.9199407 -1.3785043 -3.7824874 -1.7828072 -3.8759227 -1.8238708 -3.719676 -1.7474928 -3.8684497 -1.8144201 -3.898579 -1.825564 -3.3344724 -1.5588596 -3.411432 -1.5922269 -3.2867687 -1.5315281 -2.7557282 -1.2819736 -3.6292176 -1.6855507 -4.310825 -1.998824 -3.549512 -1.6431129 -4.1650496 -1.9248759 -4.540058 -2.0947251 -4.5413733 -2.091872 -4.542687 -2.0890183 -4.5439982 -2.0861635 -4.545308 -2.083308 -4.4383388 -2.0309057 -3.9327598 -1.7965742 -4.272859 -1.9486952 -4.55053 -2.071878 -4.551831 -2.0690184 -3.7870371 -1.7185138 -4.3068724 -1.9511467 -3.46233 -1.5659217 -2.8518424 -1.2876562 -2.7025864 -1.2182208 -2.8930802 -1.3019016 -2.9338298 -1.3180231 -3.5025334 -1.570869 -2.651153 -1.1870289 -2.6474242 -1.183363 -2.6500914 -1.182558 -3.35377 -1.4940363 -3.5130048 -1.5623276 -4.1196566 -1.8290225 -4.3870163 -1.9444245 -4.5124907 -1.9966464 -4.188827 -1.850288 -3.8529894 -1.6990495 -3.7410715 -1.6468903 -3.4259589 -1.5056027 -3.1616025 -1.3870568 -3.9260352 -1.7194875 -3.7815096 -1.6533587 -3.773761 -1.6471472 -3.8413653 -1.6737821 -4.2728024 -1.8585769 -4.586274 -1.9915043 -4.3858147 -1.9011842 -4.5887733 -1.9857395 -4.5900197 -1.9828558 -4.1577764 -1.7930306 -4.0537276 -1.74514 -3.1830008 -1.3679199 -2.3018806 -0.9875385 -1.7276611 -0.7399055 -0.9880829 -0.4224318 -0.9197393 -0.39252976 -0.9199858 -0.3919518 -1.7015787 -0.72367966 -1.7601365 -0.74727863 -1.1805687 -0.50034374 -1.2245386 -0.5180715 -0.92121255 -0.38905963 -0.9214568 -0.38848075 -1.0548728 -0.44394773 -0.9219443 -0.38732252 -0.92218745 -0.38674316 -1.1545408 -0.48333374 -0.92267275 -0.385584 -1.3802401 -0.57578254 -1.2031271 -0.5010106 -0.9233979 -0.3838441 -0.9236389 -0.38326386 -1.4850458 -0.6151261 -2.3174994 -0.95823413 -2.0842822 -0.8602709 -2.8878431 -1.1898113 -3.7604187 -1.5465554 -4.2574778 -1.7478553 -4.6265783 -1.895989 -4.6277685 -1.8930815 -4.2172437 -1.7220557 -4.322411 -1.7618316 -4.2070603 -1.7117324 -4.273696 -1.7357156 -4.633693 -1.8785337 -4.6348724 -1.8756219 -4.63605 -1.8727093 -4.6372256 -1.869796 -3.823218 -1.5387845 -3.0154734 -1.211479 -2.6172724 -1.0495906 -3.1529603 -1.2621156 -2.798552 -1.1182079 -3.542022 -1.4126935 -3.6073446 -1.4361203 -3.8179808 -1.5171982 -4.052463 -1.6074297 -4.2026854 -1.6639608 -4.511309 -1.7828755 -4.6511917 -1.8347794 -4.6523438 -1.8318566 -4.653494 -1.828933 -4.654642 -1.8260088 -4.6557884 -1.8230839 -4.638426 -1.8129246 -4.658076 -1.8172318 -4.6592164 -1.8143047 -4.6603556 -1.8113768 -4.6230764 -1.7935445 -4.662628 -1.805519 -4.6637616 -1.802589 -3.9616525 -1.5283568 -4.6660233 -1.796727 -4.2857995 -1.6472243 -4.6682773 -1.7908621 -3.9741905 -1.52173 -4.397952 -1.680822 -4.257628 -1.6241274 -4.6727633 -1.7791238 -4.6738806 -1.7761874 -4.6749954 -1.7732503 -4.0193725 -1.5216811 -4.633294 -1.750776 -4.1235476 -1.5551986 -4.6794376 -1.7614952 -4.479463 -1.6830057 -4.211269 -1.579222 -4.6827493 -1.7526716 -4.68385 -1.749729 -4.0039396 -1.4928713 -3.7305384 -1.3882642 -3.2924328 -1.2228751 -2.971588 -1.1015828 -2.1961765 -0.8125647 -2.3575196 -0.87057644 -1.5989748 -0.5893223 -1.1937307 -0.43911275 -1.3233049 -0.48583275 -1.1830446 -0.43349484 -0.9391662 -0.343463 -0.93938184 -0.34287283 -1.5904353 -0.57937413 -0.93981194 -0.34169212 -0.94002646 -0.34110153 -0.9402406 -0.34051085 -1.3394281 -0.48412597 -2.0307496 -0.7325565 -1.446233 -0.5206759 -0.94109344 -0.3381467 -0.9413057 -0.33755532 -1.0886664 -0.38962752 -1.211394 -0.43269256 -0.9419403 -0.33578038 -1.7717171 -0.63032264 -2.4693382 -0.87676734 -2.3326817 -0.8265957 -3.221438 -1.1392527 -3.2128305 -1.133938 -3.5049875 -1.234576 -3.1319504 -1.1009681 -2.6548202 -0.93136966 -2.9576204 -1.0355121 -2.5374234 -0.8866048 -1.7860893 -0.6228211 -2.488227 -0.86590797 -1.7946457 -0.6232764 -1.8460718 -0.6398371 -1.0122371 -0.35012287 -1.420228 -0.490244 -0.94547313 -0.32570016 -0.9456776 -0.32510605 -1.3687063 -0.46957392 -1.8651823 -0.6385946 -1.8335328 -0.62647176 -2.6906738 -0.9174476 -3.5747502 -1.2163873 -4.4956994 -1.5266094 -4.134408 -1.4010286 -4.736499 -1.6017424 -4.7375045 -1.598766 -4.5317035 -1.5261434 -4.7395096 -1.5928113 -4.442809 -1.4899929 -4.313182 -1.4435053 -3.6459138 -1.2176418 -3.0444615 -1.0146464 -3.219942 -1.0708824 -3.0185175 -1.0017871 -3.3095982 -1.0960832 -3.3626099 -1.1112957 -3.935878 -1.2980102 -4.4398737 -1.4611303 -4.7504053 -1.5600165 -4.7513843 -1.5570314 -4.752362 -1.5540457 -4.7533374 -1.5510594 -4.7543106 -1.5480725 -4.311177 -1.4007863 -3.382197 -1.0965934 -3.1425166 -1.0167015 -2.559975 -0.82645464 -1.9355382 -0.62352073 -1.1405042 -0.36661506 -0.9522147 -0.3054294 -0.95240647 -0.30483106 -1.2714053 -0.40605062 -1.6956086 -0.54035527 -2.335228 -0.7425727 -2.6452641 -0.8393305 -1.8908063 -0.598637 -2.2932594 -0.72447026 -3.1619632 -0.9967205 -3.4426546 -1.082823 -3.4136739 -1.071351 -3.0954893 -0.9693556 -3.9753544 -1.2421441 -4.435546 -1.3828777 -4.7743225 -1.4852079 -4.775255 -1.4822078 -4.7723265 -1.4780121 -4.679807 -1.4461366 -4.575968 -1.4108993 -4.778965 -1.4702016 -4.7798877 -1.4671986 -4.176619 -1.2791528 -4.437285 -1.3559366 -3.9317172 -1.1987457 -4.7382317 -1.4413917 -4.7844734 -1.4521749 -3.8317156 -1.1603667 -4.683238 -1.4150233 -4.3351655 -1.3068824 -4.161257 -1.2516041 -3.8140984 -1.1445746 -2.9118934 -0.8718375 -3.6407468 -1.0875683 -4.3724217 -1.3031433 -3.460363 -1.028949 -3.8400772 -1.1392326 -4.190728 -1.2403957 -4.7952867 -1.41606 -4.7961755 -1.4130467 -4.7970624 -1.4100329 -4.7979474 -1.4070185 -4.7988305 -1.4040036 -3.999853 -1.1675173 -3.258171 -0.9488066 -4.0497737 -1.176568 -3.995458 -1.158066 -4.442736 -1.2846822 -4.4088154 -1.2718724 -4.44404 -1.2790099 -3.791616 -1.0886608 -4.2447133 -1.2158692 -3.4064023 -0.97342527 -2.5707219 -0.7328715 -3.2887452 -0.9353345 -2.4670887 -0.6999763 -2.1966662 -0.6217595 -2.2966778 -0.64850914 -1.5455593 -0.4353687 -2.4020658 -0.6750093 -3.004893 -0.8423742 -3.8927026 -1.08862 -3.8753645 -1.0811464 -4.433168 -1.2337602 -4.817779 -1.3375373 -4.8186183 -1.33451 -4.819456 -1.331482 -4.8202915 -1.3284537 -4.141837 -1.1386746 -4.390175 -1.2039813 -3.4464297 -0.94283646 -3.7102318 -1.0124993 -3.8609457 -1.051022 -4.530703 -1.2302854 -4.826088 -1.3072401 -4.826908 -1.3042076 -4.827727 -1.3011744 -4.7601247 -1.2797467 -4.1207714 -1.1050825 -4.7002177 -1.2573096 -4.6795726 -1.248637 -4.5336504 -1.20665 -3.626398 -0.9627415 -2.785793 -0.73770297 -3.3809218 -0.8930256 -4.2066426 -1.1083016 -3.642774 -0.957295 -4.4715405 -1.1720858 -4.5713115 -1.1951689 -4.7912226 -1.2494488 -3.8834777 -1.0101227 -3.6500182 -0.94695 -3.8523378 -0.9968562 -3.5802147 -0.9240401 -4.37911 -1.1272976 -4.203469 -1.0792674 -3.4696822 -0.88853955 -3.7204237 -0.95026064 -4.577951 -1.1662244 -4.01748 -1.0207578 -4.2063947 -1.065944 -3.800339 -0.9605045 -4.575409 -1.1533391 -4.849105 -1.2190907 -4.8498697 -1.2160437 -4.7568736 -1.1895498 -4.851394 -1.2099482 -4.688151 -1.1661066 -4.852911 -1.2038507 -4.44358 -1.0993457 -4.664659 -1.150931 -4.855171 -1.1947011 -4.1446815 -1.0171111 -4.856669 -1.188599 -4.8574147 -1.1855472 -4.8581586 -1.182495 -4.6141257 -1.1200259 -4.073763 -0.98614913 -3.4752874 -0.838963 -2.6265135 -0.6323158 -2.192772 -0.52643794 -1.3090738 -0.313411 -1.8600923 -0.44409722 -2.0572033 -0.48979145 -2.015452 -0.47851306 -2.0183964 -0.47787267 -1.3279004 -0.31351084 -1.9524353 -0.45966554 -1.449642 -0.34033078 -0.9736745 -0.22794303 -0.97381747 -0.22733122 -0.97396016 -0.2267193 -1.8188689 -0.42219332 -2.137712 -0.4947874 -2.2026055 -0.5083496 -1.5648521 -0.36012405 -1.7772793 -0.4078349 -1.1810234 -0.27023014 -1.8034165 -0.41144773 -1.8279185 -0.41582972 -1.2604928 -0.28591427 -0.9958247 -0.22522251 -0.97550386 -0.21998242 -0.9848943 -0.2214498 -1.7926024 -0.40187687 -2.229818 -0.4984234 -1.7883079 -0.39855456 -1.8740063 -0.4164181 -1.2304791 -0.27261043 -1.4989175 -0.33109456 -1.1871483 -0.26144594 -0.9767322 -0.21446258 -1.7270197 -0.37806708 -0.97700095 -0.21323502 -1.3878587 -0.30199322 -0.9772681 -0.2120071 -0.97740114 -0.21139303 -0.97753376 -0.21077888 -0.977666 -0.21016462 -1.0539756 -0.22587584 -0.97792935 -0.20893589 -0.9780604 -0.20832139 -1.6152525 -0.34297895 -1.4955611 -0.31658202 -1.0395277 -0.21936603 -1.5363797 -0.3232059 -0.97871006 -0.2052477 -1.2669061 -0.2648551 -1.722485 -0.35896742 -1.4269392 -0.29644006 -0.97922283 -0.2027873 -1.1282648 -0.23291318 -1.4933192 -0.307295 -1.5910983 -0.32637405 -1.7169844 -0.35107237 -0.97985506 -0.19970998 -1.2412405 -0.2521723 -1.474393 -0.2985754 -0.98022974 -0.19786264 -0.9803539 -0.19724672 -0.98047763 -0.1966307 -0.98060095 -0.1960146 -0.9807239 -0.19539843 -1.0138222 -0.2013307 -0.9809687 -0.19416587 -0.98109055 -0.19354947 -0.98121196 -0.192933 -1.7967633 -0.35212016 -1.308662 -0.2556109 -1.3912776 -0.27084017 -0.98169374 -0.19046633 -1.4800185 -0.28618553 -1.9118502 -0.36844116 -2.4106274 -0.462992 -2.412877 -0.46185234 -2.6378024 -0.5031877 -2.7100818 -0.5152112 -3.611939 -0.6843113 -3.6377327 -0.6868307 -3.1540735 -0.5934601 -4.027807 -0.75523895 -4.743562 -0.88636255 -4.9155097 -0.91529596 -4.195354 -0.77847177 -4.748142 -0.877959 -4.917226 -0.9060288 -4.917794 -0.9029391 -4.7706695 -0.87282777 -4.1194506 -0.75100803 -3.5867531 -0.65156484 -4.568728 -0.8269841 -4.8941684 -0.8827164 -4.9211636 -0.88439304 -4.921718 -0.8813008 -4.922271 -0.8782082 -4.9228215 -0.8751153 -3.9572306 -0.7009004 -3.1851764 -0.5620911 -2.7393088 -0.48163384 -2.103436 -0.3684704 -2.8301744 -0.4939445 -1.9878197 -0.3456432 -1.3432052 -0.23268788 -2.1003938 -0.36249897 -2.5122192 -0.43194908 -3.4044979 -0.5831647 -2.7296333 -0.4658003 -2.4884439 -0.42303345 -3.2207808 -0.5454482 -2.6294868 -0.44361156 -3.2352703 -0.5437207 -2.9785483 -0.49865183 -3.183837 -0.5309638 -4.089385 -0.67934006 -4.9329176 -0.81628543 -4.9334297 -0.8131858 -4.9339395 -0.8100859 -4.934448 -0.8069857 -4.9349537 -0.8038851 -4.8347526 -0.78444463 -4.9359603 -0.797683 -4.9364605 -0.7945815 -4.519096 -0.7244891 -4.1412687 -0.6612482 -4.667922 -0.742333 -4.1885405 -0.66339964 -4.9389324 -0.77906924 -4.5406313 -0.71331745 -4.450956 -0.6963644 -4.662966 -0.7265327 -4.108497 -0.63749754 -4.079377 -0.6303545 -4.274784 -0.6577995 -4.7672057 -0.73050684 -4.331965 -0.66102684 -4.943259 -0.75112796 -4.94373 -0.74802184 -4.9441986 -0.7449155 -4.944666 -0.7418088 -4.519911 -0.67518264 -4.9081135 -0.7300198 -4.9460554 -0.732487 -4.308849 -0.6353534 -4.9367948 -0.7247769 -4.328642 -0.6327151 -4.2843065 -0.62348545 -3.9869263 -0.57765055 -3.2529478 -0.46922058 -4.075461 -0.58525 -4.0723367 -0.58219016 -4.81217 -0.6848732 -4.95056 -0.70139575 -4.7353377 -0.6678683 -4.3466325 -0.6102604 -3.8401988 -0.53669775 -3.889203 -0.5410553 -3.7851524 -0.524156 -2.8488345 -0.39267346 -2.0134373 -0.27623624 -1.1229525 -0.15334618 -0.99088943 -0.13467799 -0.99097383 -0.13405538 -1.1524625 -0.15516368 -1.0977666 -0.14709741 -1.6437143 -0.21920152 -1.9043677 -0.25274384 -2.8430505 -0.37550628 -2.4193335 -0.31799582 -2.2860627 -0.29901773 -1.4229774 -0.18521659 -0.9917161 -0.12844943 -1.3648045 -0.17590088 -1.5466479 -0.19834967 -0.9919564 -0.12657987 -1.688259 -0.21435449 -2.3909333 -0.30204514 -3.1634536 -0.3976179 -4.1302366 -0.51649797 -4.1195717 -0.5125357 -3.706366 -0.4587621 -3.0452027 -0.37498292 -2.4923694 -0.305318 -3.200262 -0.38999486 -3.596516 -0.43599054 -3.741079 -0.4511304 -4.416475 -0.5297601 -3.970357 -0.47371754 -3.7067087 -0.43989873 -3.5468106 -0.41866285 -3.003113 -0.35257214 -2.0411649 -0.23833722 -2.950176 -0.3425994 -2.0644107 -0.23842233 -1.2808282 -0.1471096 -0.9935402 -0.113480665 -1.0811733 -0.122801855 -1.4405752 -0.1627067 -0.99375236 -0.111607686 -0.9938223 -0.110983275 -0.99389184 -0.11035881 -1.4299196 -0.1578646 -0.9940297 -0.10910977 -1.7302393 -0.18881972 -1.7396142 -0.18873683 -2.5399554 -0.27395403 -3.5000353 -0.3752816 -3.838546 -0.4091381 -4.66529 -0.49429363 -4.9725 -0.5236838 -4.972828 -0.5205594 -4.973154 -0.5174347 -4.112371 -0.42526236 -4.7100143 -0.48407412 -4.9741206 -0.5080596 -4.9744387 -0.5049342 -4.8191423 -0.48611176 -4.498652 -0.4509284 -3.6274822 -0.36130357 -3.1067576 -0.30746722 -2.6076329 -0.25641584 -1.9785892 -0.19330509 -2.5513513 -0.2476448 -2.944578 -0.28394556 -2.6809478 -0.2568237 -1.9588332 -0.1864061 -1.5384909 -0.1454302 -0.9956209 -0.09348276 -0.99567944 -0.09285718 -0.9957376 -0.09223156 -0.99579537 -0.0916059 -1.2117702 -0.11070623 -2.1512861 -0.19517668 -1.1800426 -0.106312536 -0.9960224 -0.08910291 -0.9960782 -0.08847707 -1.4788423 -0.13042232 -0.99618864 -0.08722529 -1.3459976 -0.11700207 -1.2251253 -0.105719596 -0.99635124 -0.08534736 -1.0524067 -0.089483 -1.4956064 -0.12622051 -1.5884013 -0.13304678 -1.9125942 -0.15899155 -1.7487055 -0.1442614 -2.3659053 -0.1936814 -1.5491676 -0.12584051 -2.4772155 -0.19966015 -2.7676141 -0.22131573 -3.5559525 -0.28210774 -3.4293423 -0.2698951 -3.111645 -0.24292465 -2.5133214 -0.1946251 -2.8505194 -0.21893516 -2.5182848 -0.19182621 -2.4171698 -0.18259646 -2.8607955 -0.21430092 -3.2661955 -0.24260563 -3.7657518 -0.27733248 -4.1289263 -0.30147058 -4.766192 -0.3449896 -4.2462296 -0.3046715 -4.0726147 -0.28964245 -3.566324 -0.2513833 -4.225721 -0.29519475 -3.6924028 -0.2556077 -3.1481743 -0.21594585 -3.687465 -0.25061026 -4.4192443 -0.2975546 -4.9889145 -0.3327627 -4.0228086 -0.26578426 -3.8943167 -0.25483742 -2.9247184 -0.18954313 -2.1421916 -0.1374781 -2.4957166 -0.15859155 -1.5996343 -0.10064046 -1.9035318 -0.11855936 -2.3386056 -0.14418243 -1.433165 -0.087455265 -0.9981814 -0.06028201 -1.7150482 -0.10249343 -1.8933939 -0.11195774 -1.6303728 -0.09537716 -2.0609913 -0.1192691 -2.7942517 -0.15994123 -3.0094252 -0.17036062 -2.7875907 -0.15604573 -2.4038742 -0.1330507 -2.3902493 -0.13079019 -1.6565565 -0.0895999 -1.9534024 -0.10442481 -1.8219304 -0.09624861 -1.6073431 -0.08389972 -2.4179337 -0.124687426 -2.5997167 -0.13242382 -2.141133 -0.107715815 -2.921363 -0.14512739 -3.6682231 -0.17991945 -3.892988 -0.1884919 -3.577268 -0.17095241 -2.5849755 -0.12190435 -3.0695207 -0.14282206 -2.3760257 -0.10905826 -3.0168774 -0.1365735 -2.2183082 -0.0990258 -1.7293121 -0.076108195 -1.4689641 -0.06372537 -2.330576 -0.09963603 -2.258193 -0.095120125 -1.4082986 -0.058434267 -2.1159546 -0.08646516 -1.8590472 -0.07479704 -2.39801 -0.0949726 -2.9097092 -0.11340727 -2.3636923 -0.09063864 -1.864625 -0.07032803 -1.3854398 -0.051382888 -1.6416734 -0.05985314 -1.2484215 -0.044730287 -1.9497336 -0.068631336 -1.1198004 -0.038712937 -1.0073992 -0.03419337 -1.6827348 -0.056057278 -1.8077155 -0.059083726 -2.739991 -0.087831005 -2.5887911 -0.08135603 -2.8737946 -0.08850522 -3.0163052 -0.09099721 -4.011744 -0.11850514 -4.6330686 -0.13394527 -3.9026883 -0.11037533 -3.6381555 -0.100606136 -4.6145296 -0.12470431 -4.074449 -0.10754714 -3.2598763 -0.083996445 -3.8923438 -0.09784587 -3.6207185 -0.08874138 -2.8416784 -0.0678611 -3.0285914 -0.07042073 -2.904008 -0.06569832 -2.2746994 -0.05003132 -1.3160908 -0.028119702 -1.8541802 -0.03845103 -2.2058315 -0.04435685 -1.9201719 -0.037405595 -1.2362372 -0.023305282 -0.999834 -0.01822023 -0.99984527 -0.017592011 -1.2220099 -0.020732898 -0.99986655 -0.016335554 -1.9139609 -0.030066902 -1.7238461 -0.025996957 -1.2964936 -0.018737357 -0.99990445 -0.013822568 -1.6188821 -0.021361886 -0.999921 -0.01256604 -0.9999287 -0.011937768 -1.707403 -0.019311097 -2.2559235 -0.024097372 -1.9249173 -0.019352032 -2.2956107 -0.021636263 -1.4926057 -0.013129984 -2.0770485 -0.016966002 -1.950848 -0.014709326 -1.6730411 -0.011563414 -1.28282 -0.008060302 -2.0999076 -0.011874825 -1.3222525 -0.006646422 -0.99999034 -0.0043982156 -1.3930691 -0.005251772 -1.8355911 -0.0057666986 -2.037258 -0.0051201987 -1.6741288 -0.003155662 -1.7118267 -0.002151146 -2.4374065 -0.001531468 -0 1 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15 -15 16 -16 17 -17 18 -18 19 -19 20 -20 21 -21 22 -22 23 -23 24 -24 25 -25 26 -26 27 -27 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 49 -49 50 -50 51 -51 52 -52 53 -53 54 -54 55 -55 56 -56 57 -57 58 -58 59 -59 60 -60 61 -61 62 -62 63 -63 64 -64 65 -65 66 -66 67 -67 68 -68 69 -69 70 -70 71 -71 72 -72 73 -73 74 -74 75 -75 76 -76 77 -77 78 -78 79 -79 80 -80 81 -81 82 -82 83 -83 84 -84 85 -85 86 -86 87 -87 88 -88 89 -89 90 -90 91 -91 92 -92 93 -93 94 -94 95 -95 96 -96 97 -97 98 -98 99 -99 100 -100 101 -101 102 -102 103 -103 104 -104 105 -105 106 -106 107 -107 108 -108 109 -109 110 -110 111 -111 112 -112 113 -113 114 -114 115 -115 116 -116 117 -117 118 -118 119 -119 120 -120 121 -121 122 -122 123 -123 124 -124 125 -125 126 -126 127 -127 128 -128 129 -129 130 -130 131 -131 132 -132 133 -133 134 -134 135 -135 136 -136 137 -137 138 -138 139 -139 140 -140 141 -141 142 -142 143 -143 144 -144 145 -145 146 -146 147 -147 148 -148 149 -149 150 -150 151 -151 152 -152 153 -153 154 -154 155 -155 156 -156 157 -157 158 -158 159 -159 160 -160 161 -161 162 -162 163 -163 164 -164 165 -165 166 -166 167 -167 168 -168 169 -169 170 -170 171 -171 172 -172 173 -173 174 -174 175 -175 176 -176 177 -177 178 -178 179 -179 180 -180 181 -181 182 -182 183 -183 184 -184 185 -185 186 -186 187 -187 188 -188 189 -189 190 -190 191 -191 192 -192 193 -193 194 -194 195 -195 196 -196 197 -197 198 -198 199 -199 200 -200 201 -201 202 -202 203 -203 204 -204 205 -205 206 -206 207 -207 208 -208 209 -209 210 -210 211 -211 212 -212 213 -213 214 -214 215 -215 216 -216 217 -217 218 -218 219 -219 220 -220 221 -221 222 -222 223 -223 224 -224 225 -225 226 -226 227 -227 228 -228 229 -229 230 -230 231 -231 232 -232 233 -233 234 -234 235 -235 236 -236 237 -237 238 -238 239 -239 240 -240 241 -241 242 -242 243 -243 244 -244 245 -245 246 -246 247 -247 248 -248 249 -249 250 -250 251 -251 252 -252 253 -253 254 -254 255 -255 256 -256 257 -257 258 -258 259 -259 260 -260 261 -261 262 -262 263 -263 264 -264 265 -265 266 -266 267 -267 268 -268 269 -269 270 -270 271 -271 272 -272 273 -273 274 -274 275 -275 276 -276 277 -277 278 -278 279 -279 280 -280 281 -281 282 -282 283 -283 284 -284 285 -285 286 -286 287 -287 288 -288 289 -289 290 -290 291 -291 292 -292 293 -293 294 -294 295 -295 296 -296 297 -297 298 -298 299 -299 300 -300 301 -301 302 -302 303 -303 304 -304 305 -305 306 -306 307 -307 308 -308 309 -309 310 -310 311 -311 312 -312 313 -313 314 -314 315 -315 316 -316 317 -317 318 -318 319 -319 320 -320 321 -321 322 -322 323 -323 324 -324 325 -325 326 -326 327 -327 328 -328 329 -329 330 -330 331 -331 332 -332 333 -333 334 -334 335 -335 336 -336 337 -337 338 -338 339 -339 340 -340 341 -341 342 -342 343 -343 344 -344 345 -345 346 -346 347 -347 348 -348 349 -349 350 -350 351 -351 352 -352 353 -353 354 -354 355 -355 356 -356 357 -357 358 -358 359 -359 360 -360 361 -361 362 -362 363 -363 364 -364 365 -365 366 -366 367 -367 368 -368 369 -369 370 -370 371 -371 372 -372 373 -373 374 -374 375 -375 376 -376 377 -377 378 -378 379 -379 380 -380 381 -381 382 -382 383 -383 384 -384 385 -385 386 -386 387 -387 388 -388 389 -389 390 -390 391 -391 392 -392 393 -393 394 -394 395 -395 396 -396 397 -397 398 -398 399 -399 400 -400 401 -401 402 -402 403 -403 404 -404 405 -405 406 -406 407 -407 408 -408 409 -409 410 -410 411 -411 412 -412 413 -413 414 -414 415 -415 416 -416 417 -417 418 -418 419 -419 420 -420 421 -421 422 -422 423 -423 424 -424 425 -425 426 -426 427 -427 428 -428 429 -429 430 -430 431 -431 432 -432 433 -433 434 -434 435 -435 436 -436 437 -437 438 -438 439 -439 440 -440 441 -441 442 -442 443 -443 444 -444 445 -445 446 -446 447 -447 448 -448 449 -449 450 -450 451 -451 452 -452 453 -453 454 -454 455 -455 456 -456 457 -457 458 -458 459 -459 460 -460 461 -461 462 -462 463 -463 464 -464 465 -465 466 -466 467 -467 468 -468 469 -469 470 -470 471 -471 472 -472 473 -473 474 -474 475 -475 476 -476 477 -477 478 -478 479 -479 480 -480 481 -481 482 -482 483 -483 484 -484 485 -485 486 -486 487 -487 488 -488 489 -489 490 -490 491 -491 492 -492 493 -493 494 -494 495 -495 496 -496 497 -497 498 -498 499 -499 500 -500 501 -501 502 -502 503 -503 504 -504 505 -505 506 -506 507 -507 508 -508 509 -509 510 -510 511 -511 512 -512 513 -513 514 -514 515 -515 516 -516 517 -517 518 -518 519 -519 520 -520 521 -521 522 -522 523 -523 524 -524 525 -525 526 -526 527 -527 528 -528 529 -529 530 -530 531 -531 532 -532 533 -533 534 -534 535 -535 536 -536 537 -537 538 -538 539 -539 540 -540 541 -541 542 -542 543 -543 544 -544 545 -545 546 -546 547 -547 548 -548 549 -549 550 -550 551 -551 552 -552 553 -553 554 -554 555 -555 556 -556 557 -557 558 -558 559 -559 560 -560 561 -561 562 -562 563 -563 564 -564 565 -565 566 -566 567 -567 568 -568 569 -569 570 -570 571 -571 572 -572 573 -573 574 -574 575 -575 576 -576 577 -577 578 -578 579 -579 580 -580 581 -581 582 -582 583 -583 584 -584 585 -585 586 -586 587 -587 588 -588 589 -589 590 -590 591 -591 592 -592 593 -593 594 -594 595 -595 596 -596 597 -597 598 -598 599 -599 600 -600 601 -601 602 -602 603 -603 604 -604 605 -605 606 -606 607 -607 608 -608 609 -609 610 -610 611 -611 612 -612 613 -613 614 -614 615 -615 616 -616 617 -617 618 -618 619 -619 620 -620 621 -621 622 -622 623 -623 624 -624 625 -625 626 -626 627 -627 628 -628 629 -629 630 -630 631 -631 632 -632 633 -633 634 -634 635 -635 636 -636 637 -637 638 -638 639 -639 640 -640 641 -641 642 -642 643 -643 644 -644 645 -645 646 -646 647 -647 648 -648 649 -649 650 -650 651 -651 652 -652 653 -653 654 -654 655 -655 656 -656 657 -657 658 -658 659 -659 660 -660 661 -661 662 -662 663 -663 664 -664 665 -665 666 -666 667 -667 668 -668 669 -669 670 -670 671 -671 672 -672 673 -673 674 -674 675 -675 676 -676 677 -677 678 -678 679 -679 680 -680 681 -681 682 -682 683 -683 684 -684 685 -685 686 -686 687 -687 688 -688 689 -689 690 -690 691 -691 692 -692 693 -693 694 -694 695 -695 696 -696 697 -697 698 -698 699 -699 700 -700 701 -701 702 -702 703 -703 704 -704 705 -705 706 -706 707 -707 708 -708 709 -709 710 -710 711 -711 712 -712 713 -713 714 -714 715 -715 716 -716 717 -717 718 -718 719 -719 720 -720 721 -721 722 -722 723 -723 724 -724 725 -725 726 -726 727 -727 728 -728 729 -729 730 -730 731 -731 732 -732 733 -733 734 -734 735 -735 736 -736 737 -737 738 -738 739 -739 740 -740 741 -741 742 -742 743 -743 744 -744 745 -745 746 -746 747 -747 748 -748 749 -749 750 -750 751 -751 752 -752 753 -753 754 -754 755 -755 756 -756 757 -757 758 -758 759 -759 760 -760 761 -761 762 -762 763 -763 764 -764 765 -765 766 -766 767 -767 768 -768 769 -769 770 -770 771 -771 772 -772 773 -773 774 -774 775 -775 776 -776 777 -777 778 -778 779 -779 780 -780 781 -781 782 -782 783 -783 784 -784 785 -785 786 -786 787 -787 788 -788 789 -789 790 -790 791 -791 792 -792 793 -793 794 -794 795 -795 796 -796 797 -797 798 -798 799 -799 800 -800 801 -801 802 -802 803 -803 804 -804 805 -805 806 -806 807 -807 808 -808 809 -809 810 -810 811 -811 812 -812 813 -813 814 -814 815 -815 816 -816 817 -817 818 -818 819 -819 820 -820 821 -821 822 -822 823 -823 824 -824 825 -825 826 -826 827 -827 828 -828 829 -829 830 -830 831 -831 832 -832 833 -833 834 -834 835 -835 836 -836 837 -837 838 -838 839 -839 840 -840 841 -841 842 -842 843 -843 844 -844 845 -845 846 -846 847 -847 848 -848 849 -849 850 -850 851 -851 852 -852 853 -853 854 -854 855 -855 856 -856 857 -857 858 -858 859 -859 860 -860 861 -861 862 -862 863 -863 864 -864 865 -865 866 -866 867 -867 868 -868 869 -869 870 -870 871 -871 872 -872 873 -873 874 -874 875 -875 876 -876 877 -877 878 -878 879 -879 880 -880 881 -881 882 -882 883 -883 884 -884 885 -885 886 -886 887 -887 888 -888 889 -889 890 -890 891 -891 892 -892 893 -893 894 -894 895 -895 896 -896 897 -897 898 -898 899 -899 900 -900 901 -901 902 -902 903 -903 904 -904 905 -905 906 -906 907 -907 908 -908 909 -909 910 -910 911 -911 912 -912 913 -913 914 -914 915 -915 916 -916 917 -917 918 -918 919 -919 920 -920 921 -921 922 -922 923 -923 924 -924 925 -925 926 -926 927 -927 928 -928 929 -929 930 -930 931 -931 932 -932 933 -933 934 -934 935 -935 936 -936 937 -937 938 -938 939 -939 940 -940 941 -941 942 -942 943 -943 944 -944 945 -945 946 -946 947 -947 948 -948 949 -949 950 -950 951 -951 952 -952 953 -953 954 -954 955 -955 956 -956 957 -957 958 -958 959 -959 960 -960 961 -961 962 -962 963 -963 964 -964 965 -965 966 -966 967 -967 968 -968 969 -969 970 -970 971 -971 972 -972 973 -973 974 -974 975 -975 976 -976 977 -977 978 -978 979 -979 980 -980 981 -981 982 -982 983 -983 984 -984 985 -985 986 -986 987 -987 988 -988 989 -989 990 -990 991 -991 992 -992 993 -993 994 -994 995 -995 996 -996 997 -997 998 -998 999 -999 1000 -1000 1001 -1001 1002 -1002 1003 -1003 1004 -1004 1005 -1005 1006 -1006 1007 -1007 1008 -1008 1009 -1009 1010 -1010 1011 -1011 1012 -1012 1013 -1013 1014 -1014 1015 -1015 1016 -1016 1017 -1017 1018 -1018 1019 -1019 1020 -1020 1021 -1021 1022 -1022 1023 -1023 1024 -1024 1025 -1025 1026 -1026 1027 -1027 1028 -1028 1029 -1029 1030 -1030 1031 -1031 1032 -1032 1033 -1033 1034 -1034 1035 -1035 1036 -1036 1037 -1037 1038 -1038 1039 -1039 1040 -1040 1041 -1041 1042 -1042 1043 -1043 1044 -1044 1045 -1045 1046 -1046 1047 -1047 1048 -1048 1049 -1049 1050 -1050 1051 -1051 1052 -1052 1053 -1053 1054 -1054 1055 -1055 1056 -1056 1057 -1057 1058 -1058 1059 -1059 1060 -1060 1061 -1061 1062 -1062 1063 -1063 1064 -1064 1065 -1065 1066 -1066 1067 -1067 1068 -1068 1069 -1069 1070 -1070 1071 -1071 1072 -1072 1073 -1073 1074 -1074 1075 -1075 1076 -1076 1077 -1077 1078 -1078 1079 -1079 1080 -1080 1081 -1081 1082 -1082 1083 -1083 1084 -1084 1085 -1085 1086 -1086 1087 -1087 1088 -1088 1089 -1089 1090 -1090 1091 -1091 1092 -1092 1093 -1093 1094 -1094 1095 -1095 1096 -1096 1097 -1097 1098 -1098 1099 -1099 1100 -1100 1101 -1101 1102 -1102 1103 -1103 1104 -1104 1105 -1105 1106 -1106 1107 -1107 1108 -1108 1109 -1109 1110 -1110 1111 -1111 1112 -1112 1113 -1113 1114 -1114 1115 -1115 1116 -1116 1117 -1117 1118 -1118 1119 -1119 1120 -1120 1121 -1121 1122 -1122 1123 -1123 1124 -1124 1125 -1125 1126 -1126 1127 -1127 1128 -1128 1129 -1129 1130 -1130 1131 -1131 1132 -1132 1133 -1133 1134 -1134 1135 -1135 1136 -1136 1137 -1137 1138 -1138 1139 -1139 1140 -1140 1141 -1141 1142 -1142 1143 -1143 1144 -1144 1145 -1145 1146 -1146 1147 -1147 1148 -1148 1149 -1149 1150 -1150 1151 -1151 1152 -1152 1153 -1153 1154 -1154 1155 -1155 1156 -1156 1157 -1157 1158 -1158 1159 -1159 1160 -1160 1161 -1161 1162 -1162 1163 -1163 1164 -1164 1165 -1165 1166 -1166 1167 -1167 1168 -1168 1169 -1169 1170 -1170 1171 -1171 1172 -1172 1173 -1173 1174 -1174 1175 -1175 1176 -1176 1177 -1177 1178 -1178 1179 -1179 1180 -1180 1181 -1181 1182 -1182 1183 -1183 1184 -1184 1185 -1185 1186 -1186 1187 -1187 1188 -1188 1189 -1189 1190 -1190 1191 -1191 1192 -1192 1193 -1193 1194 -1194 1195 -1195 1196 -1196 1197 -1197 1198 -1198 1199 -1199 1200 -1200 1201 -1201 1202 -1202 1203 -1203 1204 -1204 1205 -1205 1206 -1206 1207 -1207 1208 -1208 1209 -1209 1210 -1210 1211 -1211 1212 -1212 1213 -1213 1214 -1214 1215 -1215 1216 -1216 1217 -1217 1218 -1218 1219 -1219 1220 -1220 1221 -1221 1222 -1222 1223 -1223 1224 -1224 1225 -1225 1226 -1226 1227 -1227 1228 -1228 1229 -1229 1230 -1230 1231 -1231 1232 -1232 1233 -1233 1234 -1234 1235 -1235 1236 -1236 1237 -1237 1238 -1238 1239 -1239 1240 -1240 1241 -1241 1242 -1242 1243 -1243 1244 -1244 1245 -1245 1246 -1246 1247 -1247 1248 -1248 1249 -1249 1250 -1250 1251 -1251 1252 -1252 1253 -1253 1254 -1254 1255 -1255 1256 -1256 1257 -1257 1258 -1258 1259 -1259 1260 -1260 1261 -1261 1262 -1262 1263 -1263 1264 -1264 1265 -1265 1266 -1266 1267 -1267 1268 -1268 1269 -1269 1270 -1270 1271 -1271 1272 -1272 1273 -1273 1274 -1274 1275 -1275 1276 -1276 1277 -1277 1278 -1278 1279 -1279 1280 -1280 1281 -1281 1282 -1282 1283 -1283 1284 -1284 1285 -1285 1286 -1286 1287 -1287 1288 -1288 1289 -1289 1290 -1290 1291 -1291 1292 -1292 1293 -1293 1294 -1294 1295 -1295 1296 -1296 1297 -1297 1298 -1298 1299 -1299 1300 -1300 1301 -1301 1302 -1302 1303 -1303 1304 -1304 1305 -1305 1306 -1306 1307 -1307 1308 -1308 1309 -1309 1310 -1310 1311 -1311 1312 -1312 1313 -1313 1314 -1314 1315 -1315 1316 -1316 1317 -1317 1318 -1318 1319 -1319 1320 -1320 1321 -1321 1322 -1322 1323 -1323 1324 -1324 1325 -1325 1326 -1326 1327 -1327 1328 -1328 1329 -1329 1330 -1330 1331 -1331 1332 -1332 1333 -1333 1334 -1334 1335 -1335 1336 -1336 1337 -1337 1338 -1338 1339 -1339 1340 -1340 1341 -1341 1342 -1342 1343 -1343 1344 -1344 1345 -1345 1346 -1346 1347 -1347 1348 -1348 1349 -1349 1350 -1350 1351 -1351 1352 -1352 1353 -1353 1354 -1354 1355 -1355 1356 -1356 1357 -1357 1358 -1358 1359 -1359 1360 -1360 1361 -1361 1362 -1362 1363 -1363 1364 -1364 1365 -1365 1366 -1366 1367 -1367 1368 -1368 1369 -1369 1370 -1370 1371 -1371 1372 -1372 1373 -1373 1374 -1374 1375 -1375 1376 -1376 1377 -1377 1378 -1378 1379 -1379 1380 -1380 1381 -1381 1382 -1382 1383 -1383 1384 -1384 1385 -1385 1386 -1386 1387 -1387 1388 -1388 1389 -1389 1390 -1390 1391 -1391 1392 -1392 1393 -1393 1394 -1394 1395 -1395 1396 -1396 1397 -1397 1398 -1398 1399 -1399 1400 -1400 1401 -1401 1402 -1402 1403 -1403 1404 -1404 1405 -1405 1406 -1406 1407 -1407 1408 -1408 1409 -1409 1410 -1410 1411 -1411 1412 -1412 1413 -1413 1414 -1414 1415 -1415 1416 -1416 1417 -1417 1418 -1418 1419 -1419 1420 -1420 1421 -1421 1422 -1422 1423 -1423 1424 -1424 1425 -1425 1426 -1426 1427 -1427 1428 -1428 1429 -1429 1430 -1430 1431 -1431 1432 -1432 1433 -1433 1434 -1434 1435 -1435 1436 -1436 1437 -1437 1438 -1438 1439 -1439 1440 -1440 1441 -1441 1442 -1442 1443 -1443 1444 -1444 1445 -1445 1446 -1446 1447 -1447 1448 -1448 1449 -1449 1450 -1450 1451 -1451 1452 -1452 1453 -1453 1454 -1454 1455 -1455 1456 -1456 1457 -1457 1458 -1458 1459 -1459 1460 -1460 1461 -1461 1462 -1462 1463 -1463 1464 -1464 1465 -1465 1466 -1466 1467 -1467 1468 -1468 1469 -1469 1470 -1470 1471 -1471 1472 -1472 1473 -1473 1474 -1474 1475 -1475 1476 -1476 1477 -1477 1478 -1478 1479 -1479 1480 -1480 1481 -1481 1482 -1482 1483 -1483 1484 -1484 1485 -1485 1486 -1486 1487 -1487 1488 -1488 1489 -1489 1490 -1490 1491 -1491 1492 -1492 1493 -1493 1494 -1494 1495 -1495 1496 -1496 1497 -1497 1498 -1498 1499 -1499 1500 -1500 1501 -1501 1502 -1502 1503 -1503 1504 -1504 1505 -1505 1506 -1506 1507 -1507 1508 -1508 1509 -1509 1510 -1510 1511 -1511 1512 -1512 1513 -1513 1514 -1514 1515 -1515 1516 -1516 1517 -1517 1518 -1518 1519 -1519 1520 -1520 1521 -1521 1522 -1522 1523 -1523 1524 -1524 1525 -1525 1526 -1526 1527 -1527 1528 -1528 1529 -1529 1530 -1530 1531 -1531 1532 -1532 1533 -1533 1534 -1534 1535 -1535 1536 -1536 1537 -1537 1538 -1538 1539 -1539 1540 -1540 1541 -1541 1542 -1542 1543 -1543 1544 -1544 1545 -1545 1546 -1546 1547 -1547 1548 -1548 1549 -1549 1550 -1550 1551 -1551 1552 -1552 1553 -1553 1554 -1554 1555 -1555 1556 -1556 1557 -1557 1558 -1558 1559 -1559 1560 -1560 1561 -1561 1562 -1562 1563 -1563 1564 -1564 1565 -1565 1566 -1566 1567 -1567 1568 -1568 1569 -1569 1570 -1570 1571 -1571 1572 -1572 1573 -1573 1574 -1574 1575 -1575 1576 -1576 1577 -1577 1578 -1578 1579 -1579 1580 -1580 1581 -1581 1582 -1582 1583 -1583 1584 -1584 1585 -1585 1586 -1586 1587 -1587 1588 -1588 1589 -1589 1590 -1590 1591 -1591 1592 -1592 1593 -1593 1594 -1594 1595 -1595 1596 -1596 1597 -1597 1598 -1598 1599 -1599 1600 -1600 1601 -1601 1602 -1602 1603 -1603 1604 -1604 1605 -1605 1606 -1606 1607 -1607 1608 -1608 1609 -1609 1610 -1610 1611 -1611 1612 -1612 1613 -1613 1614 -1614 1615 -1615 1616 -1616 1617 -1617 1618 -1618 1619 -1619 1620 -1620 1621 -1621 1622 -1622 1623 -1623 1624 -1624 1625 -1625 1626 -1626 1627 -1627 1628 -1628 1629 -1629 1630 -1630 1631 -1631 1632 -1632 1633 -1633 1634 -1634 1635 -1635 1636 -1636 1637 -1637 1638 -1638 1639 -1639 1640 -1640 1641 -1641 1642 -1642 1643 -1643 1644 -1644 1645 -1645 1646 -1646 1647 -1647 1648 -1648 1649 -1649 1650 -1650 1651 -1651 1652 -1652 1653 -1653 1654 -1654 1655 -1655 1656 -1656 1657 -1657 1658 -1658 1659 -1659 1660 -1660 1661 -1661 1662 -1662 1663 -1663 1664 -1664 1665 -1665 1666 -1666 1667 -1667 1668 -1668 1669 -1669 1670 -1670 1671 -1671 1672 -1672 1673 -1673 1674 -1674 1675 -1675 1676 -1676 1677 -1677 1678 -1678 1679 -1679 1680 -1680 1681 -1681 1682 -1682 1683 -1683 1684 -1684 1685 -1685 1686 -1686 1687 -1687 1688 -1688 1689 -1689 1690 -1690 1691 -1691 1692 -1692 1693 -1693 1694 -1694 1695 -1695 1696 -1696 1697 -1697 1698 -1698 1699 -1699 1700 -1700 1701 -1701 1702 -1702 1703 -1703 1704 -1704 1705 -1705 1706 -1706 1707 -1707 1708 -1708 1709 -1709 1710 -1710 1711 -1711 1712 -1712 1713 -1713 1714 -1714 1715 -1715 1716 -1716 1717 -1717 1718 -1718 1719 -1719 1720 -1720 1721 -1721 1722 -1722 1723 -1723 1724 -1724 1725 -1725 1726 -1726 1727 -1727 1728 -1728 1729 -1729 1730 -1730 1731 -1731 1732 -1732 1733 -1733 1734 -1734 1735 -1735 1736 -1736 1737 -1737 1738 -1738 1739 -1739 1740 -1740 1741 -1741 1742 -1742 1743 -1743 1744 -1744 1745 -1745 1746 -1746 1747 -1747 1748 -1748 1749 -1749 1750 -1750 1751 -1751 1752 -1752 1753 -1753 1754 -1754 1755 -1755 1756 -1756 1757 -1757 1758 -1758 1759 -1759 1760 -1760 1761 -1761 1762 -1762 1763 -1763 1764 -1764 1765 -1765 1766 -1766 1767 -1767 1768 -1768 1769 -1769 1770 -1770 1771 -1771 1772 -1772 1773 -1773 1774 -1774 1775 -1775 1776 -1776 1777 -1777 1778 -1778 1779 -1779 1780 -1780 1781 -1781 1782 -1782 1783 -1783 1784 -1784 1785 -1785 1786 -1786 1787 -1787 1788 -1788 1789 -1789 1790 -1790 1791 -1791 1792 -1792 1793 -1793 1794 -1794 1795 -1795 1796 -1796 1797 -1797 1798 -1798 1799 -1799 1800 -1800 1801 -1801 1802 -1802 1803 -1803 1804 -1804 1805 -1805 1806 -1806 1807 -1807 1808 -1808 1809 -1809 1810 -1810 1811 -1811 1812 -1812 1813 -1813 1814 -1814 1815 -1815 1816 -1816 1817 -1817 1818 -1818 1819 -1819 1820 -1820 1821 -1821 1822 -1822 1823 -1823 1824 -1824 1825 -1825 1826 -1826 1827 -1827 1828 -1828 1829 -1829 1830 -1830 1831 -1831 1832 -1832 1833 -1833 1834 -1834 1835 -1835 1836 -1836 1837 -1837 1838 -1838 1839 -1839 1840 -1840 1841 -1841 1842 -1842 1843 -1843 1844 -1844 1845 -1845 1846 -1846 1847 -1847 1848 -1848 1849 -1849 1850 -1850 1851 -1851 1852 -1852 1853 -1853 1854 -1854 1855 -1855 1856 -1856 1857 -1857 1858 -1858 1859 -1859 1860 -1860 1861 -1861 1862 -1862 1863 -1863 1864 -1864 1865 -1865 1866 -1866 1867 -1867 1868 -1868 1869 -1869 1870 -1870 1871 -1871 1872 -1872 1873 -1873 1874 -1874 1875 -1875 1876 -1876 1877 -1877 1878 -1878 1879 -1879 1880 -1880 1881 -1881 1882 -1882 1883 -1883 1884 -1884 1885 -1885 1886 -1886 1887 -1887 1888 -1888 1889 -1889 1890 -1890 1891 -1891 1892 -1892 1893 -1893 1894 -1894 1895 -1895 1896 -1896 1897 -1897 1898 -1898 1899 -1899 1900 -1900 1901 -1901 1902 -1902 1903 -1903 1904 -1904 1905 -1905 1906 -1906 1907 -1907 1908 -1908 1909 -1909 1910 -1910 1911 -1911 1912 -1912 1913 -1913 1914 -1914 1915 -1915 1916 -1916 1917 -1917 1918 -1918 1919 -1919 1920 -1920 1921 -1921 1922 -1922 1923 -1923 1924 -1924 1925 -1925 1926 -1926 1927 -1927 1928 -1928 1929 -1929 1930 -1930 1931 -1931 1932 -1932 1933 -1933 1934 -1934 1935 -1935 1936 -1936 1937 -1937 1938 -1938 1939 -1939 1940 -1940 1941 -1941 1942 -1942 1943 -1943 1944 -1944 1945 -1945 1946 -1946 1947 -1947 1948 -1948 1949 -1949 1950 -1950 1951 -1951 1952 -1952 1953 -1953 1954 -1954 1955 -1955 1956 -1956 1957 -1957 1958 -1958 1959 -1959 1960 -1960 1961 -1961 1962 -1962 1963 -1963 1964 -1964 1965 -1965 1966 -1966 1967 -1967 1968 -1968 1969 -1969 1970 -1970 1971 -1971 1972 -1972 1973 -1973 1974 -1974 1975 -1975 1976 -1976 1977 -1977 1978 -1978 1979 -1979 1980 -1980 1981 -1981 1982 -1982 1983 -1983 1984 -1984 1985 -1985 1986 -1986 1987 -1987 1988 -1988 1989 -1989 1990 -1990 1991 -1991 1992 -1992 1993 -1993 1994 -1994 1995 -1995 1996 -1996 1997 -1997 1998 -1998 1999 -1999 2000 -2000 2001 -2001 2002 -2002 2003 -2003 2004 -2004 2005 -2005 2006 -2006 2007 -2007 2008 -2008 2009 -2009 2010 -2010 2011 -2011 2012 -2012 2013 -2013 2014 -2014 2015 -2015 2016 -2016 2017 -2017 2018 -2018 2019 -2019 2020 -2020 2021 -2021 2022 -2022 2023 -2023 2024 -2024 2025 -2025 2026 -2026 2027 -2027 2028 -2028 2029 -2029 2030 -2030 2031 -2031 2032 -2032 2033 -2033 2034 -2034 2035 -2035 2036 -2036 2037 -2037 2038 -2038 2039 -2039 2040 -2040 2041 -2041 2042 -2042 2043 -2043 2044 -2044 2045 -2045 2046 -2046 2047 -2047 2048 -2048 2049 -2049 2050 -2050 2051 -2051 2052 -2052 2053 -2053 2054 -2054 2055 -2055 2056 -2056 2057 -2057 2058 -2058 2059 -2059 2060 -2060 2061 -2061 2062 -2062 2063 -2063 2064 -2064 2065 -2065 2066 -2066 2067 -2067 2068 -2068 2069 -2069 2070 -2070 2071 -2071 2072 -2072 2073 -2073 2074 -2074 2075 -2075 2076 -2076 2077 -2077 2078 -2078 2079 -2079 2080 -2080 2081 -2081 2082 -2082 2083 -2083 2084 -2084 2085 -2085 2086 -2086 2087 -2087 2088 -2088 2089 -2089 2090 -2090 2091 -2091 2092 -2092 2093 -2093 2094 -2094 2095 -2095 2096 -2096 2097 -2097 2098 -2098 2099 -2099 2100 -2100 2101 -2101 2102 -2102 2103 -2103 2104 -2104 2105 -2105 2106 -2106 2107 -2107 2108 -2108 2109 -2109 2110 -2110 2111 -2111 2112 -2112 2113 -2113 2114 -2114 2115 -2115 2116 -2116 2117 -2117 2118 -2118 2119 -2119 2120 -2120 2121 -2121 2122 -2122 2123 -2123 2124 -2124 2125 -2125 2126 -2126 2127 -2127 2128 -2128 2129 -2129 2130 -2130 2131 -2131 2132 -2132 2133 -2133 2134 -2134 2135 -2135 2136 -2136 2137 -2137 2138 -2138 2139 -2139 2140 -2140 2141 -2141 2142 -2142 2143 -2143 2144 -2144 2145 -2145 2146 -2146 2147 -2147 2148 -2148 2149 -2149 2150 -2150 2151 -2151 2152 -2152 2153 -2153 2154 -2154 2155 -2155 2156 -2156 2157 -2157 2158 -2158 2159 -2159 2160 -2160 2161 -2161 2162 -2162 2163 -2163 2164 -2164 2165 -2165 2166 -2166 2167 -2167 2168 -2168 2169 -2169 2170 -2170 2171 -2171 2172 -2172 2173 -2173 2174 -2174 2175 -2175 2176 -2176 2177 -2177 2178 -2178 2179 -2179 2180 -2180 2181 -2181 2182 -2182 2183 -2183 2184 -2184 2185 -2185 2186 -2186 2187 -2187 2188 -2188 2189 -2189 2190 -2190 2191 -2191 2192 -2192 2193 -2193 2194 -2194 2195 -2195 2196 -2196 2197 -2197 2198 -2198 2199 -2199 2200 -2200 2201 -2201 2202 -2202 2203 -2203 2204 -2204 2205 -2205 2206 -2206 2207 -2207 2208 -2208 2209 -2209 2210 -2210 2211 -2211 2212 -2212 2213 -2213 2214 -2214 2215 -2215 2216 -2216 2217 -2217 2218 -2218 2219 -2219 2220 -2220 2221 -2221 2222 -2222 2223 -2223 2224 -2224 2225 -2225 2226 -2226 2227 -2227 2228 -2228 2229 -2229 2230 -2230 2231 -2231 2232 -2232 2233 -2233 2234 -2234 2235 -2235 2236 -2236 2237 -2237 2238 -2238 2239 -2239 2240 -2240 2241 -2241 2242 -2242 2243 -2243 2244 -2244 2245 -2245 2246 -2246 2247 -2247 2248 -2248 2249 -2249 2250 -2250 2251 -2251 2252 -2252 2253 -2253 2254 -2254 2255 -2255 2256 -2256 2257 -2257 2258 -2258 2259 -2259 2260 -2260 2261 -2261 2262 -2262 2263 -2263 2264 -2264 2265 -2265 2266 -2266 2267 -2267 2268 -2268 2269 -2269 2270 -2270 2271 -2271 2272 -2272 2273 -2273 2274 -2274 2275 -2275 2276 -2276 2277 -2277 2278 -2278 2279 -2279 2280 -2280 2281 -2281 2282 -2282 2283 -2283 2284 -2284 2285 -2285 2286 -2286 2287 -2287 2288 -2288 2289 -2289 2290 -2290 2291 -2291 2292 -2292 2293 -2293 2294 -2294 2295 -2295 2296 -2296 2297 -2297 2298 -2298 2299 -2299 2300 -2300 2301 -2301 2302 -2302 2303 -2303 2304 -2304 2305 -2305 2306 -2306 2307 -2307 2308 -2308 2309 -2309 2310 -2310 2311 -2311 2312 -2312 2313 -2313 2314 -2314 2315 -2315 2316 -2316 2317 -2317 2318 -2318 2319 -2319 2320 -2320 2321 -2321 2322 -2322 2323 -2323 2324 -2324 2325 -2325 2326 -2326 2327 -2327 2328 -2328 2329 -2329 2330 -2330 2331 -2331 2332 -2332 2333 -2333 2334 -2334 2335 -2335 2336 -2336 2337 -2337 2338 -2338 2339 -2339 2340 -2340 2341 -2341 2342 -2342 2343 -2343 2344 -2344 2345 -2345 2346 -2346 2347 -2347 2348 -2348 2349 -2349 2350 -2350 2351 -2351 2352 -2352 2353 -2353 2354 -2354 2355 -2355 2356 -2356 2357 -2357 2358 -2358 2359 -2359 2360 -2360 2361 -2361 2362 -2362 2363 -2363 2364 -2364 2365 -2365 2366 -2366 2367 -2367 2368 -2368 2369 -2369 2370 -2370 2371 -2371 2372 -2372 2373 -2373 2374 -2374 2375 -2375 2376 -2376 2377 -2377 2378 -2378 2379 -2379 2380 -2380 2381 -2381 2382 -2382 2383 -2383 2384 -2384 2385 -2385 2386 -2386 2387 -2387 2388 -2388 2389 -2389 2390 -2390 2391 -2391 2392 -2392 2393 -2393 2394 -2394 2395 -2395 2396 -2396 2397 -2397 2398 -2398 2399 -2399 2400 -2400 2401 -2401 2402 -2402 2403 -2403 2404 -2404 2405 -2405 2406 -2406 2407 -2407 2408 -2408 2409 -2409 2410 -2410 2411 -2411 2412 -2412 2413 -2413 2414 -2414 2415 -2415 2416 -2416 2417 -2417 2418 -2418 2419 -2419 2420 -2420 2421 -2421 2422 -2422 2423 -2423 2424 -2424 2425 -2425 2426 -2426 2427 -2427 2428 -2428 2429 -2429 2430 -2430 2431 -2431 2432 -2432 2433 -2433 2434 -2434 2435 -2435 2436 -2436 2437 -2437 2438 -2438 2439 -2439 2440 -2440 2441 -2441 2442 -2442 2443 -2443 2444 -2444 2445 -2445 2446 -2446 2447 -2447 2448 -2448 2449 -2449 2450 -2450 2451 -2451 2452 -2452 2453 -2453 2454 -2454 2455 -2455 2456 -2456 2457 -2457 2458 -2458 2459 -2459 2460 -2460 2461 -2461 2462 -2462 2463 -2463 2464 -2464 2465 -2465 2466 -2466 2467 -2467 2468 -2468 2469 -2469 2470 -2470 2471 -2471 2472 -2472 2473 -2473 2474 -2474 2475 -2475 2476 -2476 2477 -2477 2478 -2478 2479 -2479 2480 -2480 2481 -2481 2482 -2482 2483 -2483 2484 -2484 2485 -2485 2486 -2486 2487 -2487 2488 -2488 2489 -2489 2490 -2490 2491 -2491 2492 -2492 2493 -2493 2494 -2494 2495 -2495 2496 -2496 2497 -2497 2498 -2498 2499 -2499 2500 -2500 2501 -2501 2502 -2502 2503 -2503 2504 -2504 2505 -2505 2506 -2506 2507 -2507 2508 -2508 2509 -2509 2510 -2510 2511 -2511 2512 -2512 2513 -2513 2514 -2514 2515 -2515 2516 -2516 2517 -2517 2518 -2518 2519 -2519 2520 -2520 2521 -2521 2522 -2522 2523 -2523 2524 -2524 2525 -2525 2526 -2526 2527 -2527 2528 -2528 2529 -2529 2530 -2530 2531 -2531 2532 -2532 2533 -2533 2534 -2534 2535 -2535 2536 -2536 2537 -2537 2538 -2538 2539 -2539 2540 -2540 2541 -2541 2542 -2542 2543 -2543 2544 -2544 2545 -2545 2546 -2546 2547 -2547 2548 -2548 2549 -2549 2550 -2550 2551 -2551 2552 -2552 2553 -2553 2554 -2554 2555 -2555 2556 -2556 2557 -2557 2558 -2558 2559 -2559 2560 -2560 2561 -2561 2562 -2562 2563 -2563 2564 -2564 2565 -2565 2566 -2566 2567 -2567 2568 -2568 2569 -2569 2570 -2570 2571 -2571 2572 -2572 2573 -2573 2574 -2574 2575 -2575 2576 -2576 2577 -2577 2578 -2578 2579 -2579 2580 -2580 2581 -2581 2582 -2582 2583 -2583 2584 -2584 2585 -2585 2586 -2586 2587 -2587 2588 -2588 2589 -2589 2590 -2590 2591 -2591 2592 -2592 2593 -2593 2594 -2594 2595 -2595 2596 -2596 2597 -2597 2598 -2598 2599 -2599 2600 -2600 2601 -2601 2602 -2602 2603 -2603 2604 -2604 2605 -2605 2606 -2606 2607 -2607 2608 -2608 2609 -2609 2610 -2610 2611 -2611 2612 -2612 2613 -2613 2614 -2614 2615 -2615 2616 -2616 2617 -2617 2618 -2618 2619 -2619 2620 -2620 2621 -2621 2622 -2622 2623 -2623 2624 -2624 2625 -2625 2626 -2626 2627 -2627 2628 -2628 2629 -2629 2630 -2630 2631 -2631 2632 -2632 2633 -2633 2634 -2634 2635 -2635 2636 -2636 2637 -2637 2638 -2638 2639 -2639 2640 -2640 2641 -2641 2642 -2642 2643 -2643 2644 -2644 2645 -2645 2646 -2646 2647 -2647 2648 -2648 2649 -2649 2650 -2650 2651 -2651 2652 -2652 2653 -2653 2654 -2654 2655 -2655 2656 -2656 2657 -2657 2658 -2658 2659 -2659 2660 -2660 2661 -2661 2662 -2662 2663 -2663 2664 -2664 2665 -2665 2666 -2666 2667 -2667 2668 -2668 2669 -2669 2670 -2670 2671 -2671 2672 -2672 2673 -2673 2674 -2674 2675 -2675 2676 -2676 2677 -2677 2678 -2678 2679 -2679 2680 -2680 2681 -2681 2682 -2682 2683 -2683 2684 -2684 2685 -2685 2686 -2686 2687 -2687 2688 -2688 2689 -2689 2690 -2690 2691 -2691 2692 -2692 2693 -2693 2694 -2694 2695 -2695 2696 -2696 2697 -2697 2698 -2698 2699 -2699 2700 -2700 2701 -2701 2702 -2702 2703 -2703 2704 -2704 2705 -2705 2706 -2706 2707 -2707 2708 -2708 2709 -2709 2710 -2710 2711 -2711 2712 -2712 2713 -2713 2714 -2714 2715 -2715 2716 -2716 2717 -2717 2718 -2718 2719 -2719 2720 -2720 2721 -2721 2722 -2722 2723 -2723 2724 -2724 2725 -2725 2726 -2726 2727 -2727 2728 -2728 2729 -2729 2730 -2730 2731 -2731 2732 -2732 2733 -2733 2734 -2734 2735 -2735 2736 -2736 2737 -2737 2738 -2738 2739 -2739 2740 -2740 2741 -2741 2742 -2742 2743 -2743 2744 -2744 2745 -2745 2746 -2746 2747 -2747 2748 -2748 2749 -2749 2750 -2750 2751 -2751 2752 -2752 2753 -2753 2754 -2754 2755 -2755 2756 -2756 2757 -2757 2758 -2758 2759 -2759 2760 -2760 2761 -2761 2762 -2762 2763 -2763 2764 -2764 2765 -2765 2766 -2766 2767 -2767 2768 -2768 2769 -2769 2770 -2770 2771 -2771 2772 -2772 2773 -2773 2774 -2774 2775 -2775 2776 -2776 2777 -2777 2778 -2778 2779 -2779 2780 -2780 2781 -2781 2782 -2782 2783 -2783 2784 -2784 2785 -2785 2786 -2786 2787 -2787 2788 -2788 2789 -2789 2790 -2790 2791 -2791 2792 -2792 2793 -2793 2794 -2794 2795 -2795 2796 -2796 2797 -2797 2798 -2798 2799 -2799 2800 -2800 2801 -2801 2802 -2802 2803 -2803 2804 -2804 2805 -2805 2806 -2806 2807 -2807 2808 -2808 2809 -2809 2810 -2810 2811 -2811 2812 -2812 2813 -2813 2814 -2814 2815 -2815 2816 -2816 2817 -2817 2818 -2818 2819 -2819 2820 -2820 2821 -2821 2822 -2822 2823 -2823 2824 -2824 2825 -2825 2826 -2826 2827 -2827 2828 -2828 2829 -2829 2830 -2830 2831 -2831 2832 -2832 2833 -2833 2834 -2834 2835 -2835 2836 -2836 2837 -2837 2838 -2838 2839 -2839 2840 -2840 2841 -2841 2842 -2842 2843 -2843 2844 -2844 2845 -2845 2846 -2846 2847 -2847 2848 -2848 2849 -2849 2850 -2850 2851 -2851 2852 -2852 2853 -2853 2854 -2854 2855 -2855 2856 -2856 2857 -2857 2858 -2858 2859 -2859 2860 -2860 2861 -2861 2862 -2862 2863 -2863 2864 -2864 2865 -2865 2866 -2866 2867 -2867 2868 -2868 2869 -2869 2870 -2870 2871 -2871 2872 -2872 2873 -2873 2874 -2874 2875 -2875 2876 -2876 2877 -2877 2878 -2878 2879 -2879 2880 -2880 2881 -2881 2882 -2882 2883 -2883 2884 -2884 2885 -2885 2886 -2886 2887 -2887 2888 -2888 2889 -2889 2890 -2890 2891 -2891 2892 -2892 2893 -2893 2894 -2894 2895 -2895 2896 -2896 2897 -2897 2898 -2898 2899 -2899 2900 -2900 2901 -2901 2902 -2902 2903 -2903 2904 -2904 2905 -2905 2906 -2906 2907 -2907 2908 -2908 2909 -2909 2910 -2910 2911 -2911 2912 -2912 2913 -2913 2914 -2914 2915 -2915 2916 -2916 2917 -2917 2918 -2918 2919 -2919 2920 -2920 2921 -2921 2922 -2922 2923 -2923 2924 -2924 2925 -2925 2926 -2926 2927 -2927 2928 -2928 2929 -2929 2930 -2930 2931 -2931 2932 -2932 2933 -2933 2934 -2934 2935 -2935 2936 -2936 2937 -2937 2938 -2938 2939 -2939 2940 -2940 2941 -2941 2942 -2942 2943 -2943 2944 -2944 2945 -2945 2946 -2946 2947 -2947 2948 -2948 2949 -2949 2950 -2950 2951 -2951 2952 -2952 2953 -2953 2954 -2954 2955 -2955 2956 -2956 2957 -2957 2958 -2958 2959 -2959 2960 -2960 2961 -2961 2962 -2962 2963 -2963 2964 -2964 2965 -2965 2966 -2966 2967 -2967 2968 -2968 2969 -2969 2970 -2970 2971 -2971 2972 -2972 2973 -2973 2974 -2974 2975 -2975 2976 -2976 2977 -2977 2978 -2978 2979 -2979 2980 -2980 2981 -2981 2982 -2982 2983 -2983 2984 -2984 2985 -2985 2986 -2986 2987 -2987 2988 -2988 2989 -2989 2990 -2990 2991 -2991 2992 -2992 2993 -2993 2994 -2994 2995 -2995 2996 -2996 2997 -2997 2998 -2998 2999 -2999 3000 -3000 3001 -3001 3002 -3002 3003 -3003 3004 -3004 3005 -3005 3006 -3006 3007 -3007 3008 -3008 3009 -3009 3010 -3010 3011 -3011 3012 -3012 3013 -3013 3014 -3014 3015 -3015 3016 -3016 3017 -3017 3018 -3018 3019 -3019 3020 -3020 3021 -3021 3022 -3022 3023 -3023 3024 -3024 3025 -3025 3026 -3026 3027 -3027 3028 -3028 3029 -3029 3030 -3030 3031 -3031 3032 -3032 3033 -3033 3034 -3034 3035 -3035 3036 -3036 3037 -3037 3038 -3038 3039 -3039 3040 -3040 3041 -3041 3042 -3042 3043 -3043 3044 -3044 3045 -3045 3046 -3046 3047 -3047 3048 -3048 3049 -3049 3050 -3050 3051 -3051 3052 -3052 3053 -3053 3054 -3054 3055 -3055 3056 -3056 3057 -3057 3058 -3058 3059 -3059 3060 -3060 3061 -3061 3062 -3062 3063 -3063 3064 -3064 3065 -3065 3066 -3066 3067 -3067 3068 -3068 3069 -3069 3070 -3070 3071 -3071 3072 -3072 3073 -3073 3074 -3074 3075 -3075 3076 -3076 3077 -3077 3078 -3078 3079 -3079 3080 -3080 3081 -3081 3082 -3082 3083 -3083 3084 -3084 3085 -3085 3086 -3086 3087 -3087 3088 -3088 3089 -3089 3090 -3090 3091 -3091 3092 -3092 3093 -3093 3094 -3094 3095 -3095 3096 -3096 3097 -3097 3098 -3098 3099 -3099 3100 -3100 3101 -3101 3102 -3102 3103 -3103 3104 -3104 3105 -3105 3106 -3106 3107 -3107 3108 -3108 3109 -3109 3110 -3110 3111 -3111 3112 -3112 3113 -3113 3114 -3114 3115 -3115 3116 -3116 3117 -3117 3118 -3118 3119 -3119 3120 -3120 3121 -3121 3122 -3122 3123 -3123 3124 -3124 3125 -3125 3126 -3126 3127 -3127 3128 -3128 3129 -3129 3130 -3130 3131 -3131 3132 -3132 3133 -3133 3134 -3134 3135 -3135 3136 -3136 3137 -3137 3138 -3138 3139 -3139 3140 -3140 3141 -3141 3142 -3142 3143 -3143 3144 -3144 3145 -3145 3146 -3146 3147 -3147 3148 -3148 3149 -3149 3150 -3150 3151 -3151 3152 -3152 3153 -3153 3154 -3154 3155 -3155 3156 -3156 3157 -3157 3158 -3158 3159 -3159 3160 -3160 3161 -3161 3162 -3162 3163 -3163 3164 -3164 3165 -3165 3166 -3166 3167 -3167 3168 -3168 3169 -3169 3170 -3170 3171 -3171 3172 -3172 3173 -3173 3174 -3174 3175 -3175 3176 -3176 3177 -3177 3178 -3178 3179 -3179 3180 -3180 3181 -3181 3182 -3182 3183 -3183 3184 -3184 3185 -3185 3186 -3186 3187 -3187 3188 -3188 3189 -3189 3190 -3190 3191 -3191 3192 -3192 3193 -3193 3194 -3194 3195 -3195 3196 -3196 3197 -3197 3198 -3198 3199 -3199 3200 -3200 3201 -3201 3202 -3202 3203 -3203 3204 -3204 3205 -3205 3206 -3206 3207 -3207 3208 -3208 3209 -3209 3210 -3210 3211 -3211 3212 -3212 3213 -3213 3214 -3214 3215 -3215 3216 -3216 3217 -3217 3218 -3218 3219 -3219 3220 -3220 3221 -3221 3222 -3222 3223 -3223 3224 -3224 3225 -3225 3226 -3226 3227 -3227 3228 -3228 3229 -3229 3230 -3230 3231 -3231 3232 -3232 3233 -3233 3234 -3234 3235 -3235 3236 -3236 3237 -3237 3238 -3238 3239 -3239 3240 -3240 3241 -3241 3242 -3242 3243 -3243 3244 -3244 3245 -3245 3246 -3246 3247 -3247 3248 -3248 3249 -3249 3250 -3250 3251 -3251 3252 -3252 3253 -3253 3254 -3254 3255 -3255 3256 -3256 3257 -3257 3258 -3258 3259 -3259 3260 -3260 3261 -3261 3262 -3262 3263 -3263 3264 -3264 3265 -3265 3266 -3266 3267 -3267 3268 -3268 3269 -3269 3270 -3270 3271 -3271 3272 -3272 3273 -3273 3274 -3274 3275 -3275 3276 -3276 3277 -3277 3278 -3278 3279 -3279 3280 -3280 3281 -3281 3282 -3282 3283 -3283 3284 -3284 3285 -3285 3286 -3286 3287 -3287 3288 -3288 3289 -3289 3290 -3290 3291 -3291 3292 -3292 3293 -3293 3294 -3294 3295 -3295 3296 -3296 3297 -3297 3298 -3298 3299 -3299 3300 -3300 3301 -3301 3302 -3302 3303 -3303 3304 -3304 3305 -3305 3306 -3306 3307 -3307 3308 -3308 3309 -3309 3310 -3310 3311 -3311 3312 -3312 3313 -3313 3314 -3314 3315 -3315 3316 -3316 3317 -3317 3318 -3318 3319 -3319 3320 -3320 3321 -3321 3322 -3322 3323 -3323 3324 -3324 3325 -3325 3326 -3326 3327 -3327 3328 -3328 3329 -3329 3330 -3330 3331 -3331 3332 -3332 3333 -3333 3334 -3334 3335 -3335 3336 -3336 3337 -3337 3338 -3338 3339 -3339 3340 -3340 3341 -3341 3342 -3342 3343 -3343 3344 -3344 3345 -3345 3346 -3346 3347 -3347 3348 -3348 3349 -3349 3350 -3350 3351 -3351 3352 -3352 3353 -3353 3354 -3354 3355 -3355 3356 -3356 3357 -3357 3358 -3358 3359 -3359 3360 -3360 3361 -3361 3362 -3362 3363 -3363 3364 -3364 3365 -3365 3366 -3366 3367 -3367 3368 -3368 3369 -3369 3370 -3370 3371 -3371 3372 -3372 3373 -3373 3374 -3374 3375 -3375 3376 -3376 3377 -3377 3378 -3378 3379 -3379 3380 -3380 3381 -3381 3382 -3382 3383 -3383 3384 -3384 3385 -3385 3386 -3386 3387 -3387 3388 -3388 3389 -3389 3390 -3390 3391 -3391 3392 -3392 3393 -3393 3394 -3394 3395 -3395 3396 -3396 3397 -3397 3398 -3398 3399 -3399 3400 -3400 3401 -3401 3402 -3402 3403 -3403 3404 -3404 3405 -3405 3406 -3406 3407 -3407 3408 -3408 3409 -3409 3410 -3410 3411 -3411 3412 -3412 3413 -3413 3414 -3414 3415 -3415 3416 -3416 3417 -3417 3418 -3418 3419 -3419 3420 -3420 3421 -3421 3422 -3422 3423 -3423 3424 -3424 3425 -3425 3426 -3426 3427 -3427 3428 -3428 3429 -3429 3430 -3430 3431 -3431 3432 -3432 3433 -3433 3434 -3434 3435 -3435 3436 -3436 3437 -3437 3438 -3438 3439 -3439 3440 -3440 3441 -3441 3442 -3442 3443 -3443 3444 -3444 3445 -3445 3446 -3446 3447 -3447 3448 -3448 3449 -3449 3450 -3450 3451 -3451 3452 -3452 3453 -3453 3454 -3454 3455 -3455 3456 -3456 3457 -3457 3458 -3458 3459 -3459 3460 -3460 3461 -3461 3462 -3462 3463 -3463 3464 -3464 3465 -3465 3466 -3466 3467 -3467 3468 -3468 3469 -3469 3470 -3470 3471 -3471 3472 -3472 3473 -3473 3474 -3474 3475 -3475 3476 -3476 3477 -3477 3478 -3478 3479 -3479 3480 -3480 3481 -3481 3482 -3482 3483 -3483 3484 -3484 3485 -3485 3486 -3486 3487 -3487 3488 -3488 3489 -3489 3490 -3490 3491 -3491 3492 -3492 3493 -3493 3494 -3494 3495 -3495 3496 -3496 3497 -3497 3498 -3498 3499 -3499 3500 -3500 3501 -3501 3502 -3502 3503 -3503 3504 -3504 3505 -3505 3506 -3506 3507 -3507 3508 -3508 3509 -3509 3510 -3510 3511 -3511 3512 -3512 3513 -3513 3514 -3514 3515 -3515 3516 -3516 3517 -3517 3518 -3518 3519 -3519 3520 -3520 3521 -3521 3522 -3522 3523 -3523 3524 -3524 3525 -3525 3526 -3526 3527 -3527 3528 -3528 3529 -3529 3530 -3530 3531 -3531 3532 -3532 3533 -3533 3534 -3534 3535 -3535 3536 -3536 3537 -3537 3538 -3538 3539 -3539 3540 -3540 3541 -3541 3542 -3542 3543 -3543 3544 -3544 3545 -3545 3546 -3546 3547 -3547 3548 -3548 3549 -3549 3550 -3550 3551 -3551 3552 -3552 3553 -3553 3554 -3554 3555 -3555 3556 -3556 3557 -3557 3558 -3558 3559 -3559 3560 -3560 3561 -3561 3562 -3562 3563 -3563 3564 -3564 3565 -3565 3566 -3566 3567 -3567 3568 -3568 3569 -3569 3570 -3570 3571 -3571 3572 -3572 3573 -3573 3574 -3574 3575 -3575 3576 -3576 3577 -3577 3578 -3578 3579 -3579 3580 -3580 3581 -3581 3582 -3582 3583 -3583 3584 -3584 3585 -3585 3586 -3586 3587 -3587 3588 -3588 3589 -3589 3590 -3590 3591 -3591 3592 -3592 3593 -3593 3594 -3594 3595 -3595 3596 -3596 3597 -3597 3598 -3598 3599 -3599 3600 -3600 3601 -3601 3602 -3602 3603 -3603 3604 -3604 3605 -3605 3606 -3606 3607 -3607 3608 -3608 3609 -3609 3610 -3610 3611 -3611 3612 -3612 3613 -3613 3614 -3614 3615 -3615 3616 -3616 3617 -3617 3618 -3618 3619 -3619 3620 -3620 3621 -3621 3622 -3622 3623 -3623 3624 -3624 3625 -3625 3626 -3626 3627 -3627 3628 -3628 3629 -3629 3630 -3630 3631 -3631 3632 -3632 3633 -3633 3634 -3634 3635 -3635 3636 -3636 3637 -3637 3638 -3638 3639 -3639 3640 -3640 3641 -3641 3642 -3642 3643 -3643 3644 -3644 3645 -3645 3646 -3646 3647 -3647 3648 -3648 3649 -3649 3650 -3650 3651 -3651 3652 -3652 3653 -3653 3654 -3654 3655 -3655 3656 -3656 3657 -3657 3658 -3658 3659 -3659 3660 -3660 3661 -3661 3662 -3662 3663 -3663 3664 -3664 3665 -3665 3666 -3666 3667 -3667 3668 -3668 3669 -3669 3670 -3670 3671 -3671 3672 -3672 3673 -3673 3674 -3674 3675 -3675 3676 -3676 3677 -3677 3678 -3678 3679 -3679 3680 -3680 3681 -3681 3682 -3682 3683 -3683 3684 -3684 3685 -3685 3686 -3686 3687 -3687 3688 -3688 3689 -3689 3690 -3690 3691 -3691 3692 -3692 3693 -3693 3694 -3694 3695 -3695 3696 -3696 3697 -3697 3698 -3698 3699 -3699 3700 -3700 3701 -3701 3702 -3702 3703 -3703 3704 -3704 3705 -3705 3706 -3706 3707 -3707 3708 -3708 3709 -3709 3710 -3710 3711 -3711 3712 -3712 3713 -3713 3714 -3714 3715 -3715 3716 -3716 3717 -3717 3718 -3718 3719 -3719 3720 -3720 3721 -3721 3722 -3722 3723 -3723 3724 -3724 3725 -3725 3726 -3726 3727 -3727 3728 -3728 3729 -3729 3730 -3730 3731 -3731 3732 -3732 3733 -3733 3734 -3734 3735 -3735 3736 -3736 3737 -3737 3738 -3738 3739 -3739 3740 -3740 3741 -3741 3742 -3742 3743 -3743 3744 -3744 3745 -3745 3746 -3746 3747 -3747 3748 -3748 3749 -3749 3750 -3750 3751 -3751 3752 -3752 3753 -3753 3754 -3754 3755 -3755 3756 -3756 3757 -3757 3758 -3758 3759 -3759 3760 -3760 3761 -3761 3762 -3762 3763 -3763 3764 -3764 3765 -3765 3766 -3766 3767 -3767 3768 -3768 3769 -3769 3770 -3770 3771 -3771 3772 -3772 3773 -3773 3774 -3774 3775 -3775 3776 -3776 3777 -3777 3778 -3778 3779 -3779 3780 -3780 3781 -3781 3782 -3782 3783 -3783 3784 -3784 3785 -3785 3786 -3786 3787 -3787 3788 -3788 3789 -3789 3790 -3790 3791 -3791 3792 -3792 3793 -3793 3794 -3794 3795 -3795 3796 -3796 3797 -3797 3798 -3798 3799 -3799 3800 -3800 3801 -3801 3802 -3802 3803 -3803 3804 -3804 3805 -3805 3806 -3806 3807 -3807 3808 -3808 3809 -3809 3810 -3810 3811 -3811 3812 -3812 3813 -3813 3814 -3814 3815 -3815 3816 -3816 3817 -3817 3818 -3818 3819 -3819 3820 -3820 3821 -3821 3822 -3822 3823 -3823 3824 -3824 3825 -3825 3826 -3826 3827 -3827 3828 -3828 3829 -3829 3830 -3830 3831 -3831 3832 -3832 3833 -3833 3834 -3834 3835 -3835 3836 -3836 3837 -3837 3838 -3838 3839 -3839 3840 -3840 3841 -3841 3842 -3842 3843 -3843 3844 -3844 3845 -3845 3846 -3846 3847 -3847 3848 -3848 3849 -3849 3850 -3850 3851 -3851 3852 -3852 3853 -3853 3854 -3854 3855 -3855 3856 -3856 3857 -3857 3858 -3858 3859 -3859 3860 -3860 3861 -3861 3862 -3862 3863 -3863 3864 -3864 3865 -3865 3866 -3866 3867 -3867 3868 -3868 3869 -3869 3870 -3870 3871 -3871 3872 -3872 3873 -3873 3874 -3874 3875 -3875 3876 -3876 3877 -3877 3878 -3878 3879 -3879 3880 -3880 3881 -3881 3882 -3882 3883 -3883 3884 -3884 3885 -3885 3886 -3886 3887 -3887 3888 -3888 3889 -3889 3890 -3890 3891 -3891 3892 -3892 3893 -3893 3894 -3894 3895 -3895 3896 -3896 3897 -3897 3898 -3898 3899 -3899 3900 -3900 3901 -3901 3902 -3902 3903 -3903 3904 -3904 3905 -3905 3906 -3906 3907 -3907 3908 -3908 3909 -3909 3910 -3910 3911 -3911 3912 -3912 3913 -3913 3914 -3914 3915 -3915 3916 -3916 3917 -3917 3918 -3918 3919 -3919 3920 -3920 3921 -3921 3922 -3922 3923 -3923 3924 -3924 3925 -3925 3926 -3926 3927 -3927 3928 -3928 3929 -3929 3930 -3930 3931 -3931 3932 -3932 3933 -3933 3934 -3934 3935 -3935 3936 -3936 3937 -3937 3938 -3938 3939 -3939 3940 -3940 3941 -3941 3942 -3942 3943 -3943 3944 -3944 3945 -3945 3946 -3946 3947 -3947 3948 -3948 3949 -3949 3950 -3950 3951 -3951 3952 -3952 3953 -3953 3954 -3954 3955 -3955 3956 -3956 3957 -3957 3958 -3958 3959 -3959 3960 -3960 3961 -3961 3962 -3962 3963 -3963 3964 -3964 3965 -3965 3966 -3966 3967 -3967 3968 -3968 3969 -3969 3970 -3970 3971 -3971 3972 -3972 3973 -3973 3974 -3974 3975 -3975 3976 -3976 3977 -3977 3978 -3978 3979 -3979 3980 -3980 3981 -3981 3982 -3982 3983 -3983 3984 -3984 3985 -3985 3986 -3986 3987 -3987 3988 -3988 3989 -3989 3990 -3990 3991 -3991 3992 -3992 3993 -3993 3994 -3994 3995 -3995 3996 -3996 3997 -3997 3998 -3998 3999 -3999 4000 -4000 4001 -4001 4002 -4002 4003 -4003 4004 -4004 4005 -4005 4006 -4006 4007 -4007 4008 -4008 4009 -4009 4010 -4010 4011 -4011 4012 -4012 4013 -4013 4014 -4014 4015 -4015 4016 -4016 4017 -4017 4018 -4018 4019 -4019 4020 -4020 4021 -4021 4022 -4022 4023 -4023 4024 -4024 4025 -4025 4026 -4026 4027 -4027 4028 -4028 4029 -4029 4030 -4030 4031 -4031 4032 -4032 4033 -4033 4034 -4034 4035 -4035 4036 -4036 4037 -4037 4038 -4038 4039 -4039 4040 -4040 4041 -4041 4042 -4042 4043 -4043 4044 -4044 4045 -4045 4046 -4046 4047 -4047 4048 -4048 4049 -4049 4050 -4050 4051 -4051 4052 -4052 4053 -4053 4054 -4054 4055 -4055 4056 -4056 4057 -4057 4058 -4058 4059 -4059 4060 -4060 4061 -4061 4062 -4062 4063 -4063 4064 -4064 4065 -4065 4066 -4066 4067 -4067 4068 -4068 4069 -4069 4070 -4070 4071 -4071 4072 -4072 4073 -4073 4074 -4074 4075 -4075 4076 -4076 4077 -4077 4078 -4078 4079 -4079 4080 -4080 4081 -4081 4082 -4082 4083 -4083 4084 -4084 4085 -4085 4086 -4086 4087 -4087 4088 -4088 4089 -4089 4090 -4090 4091 -4091 4092 -4092 4093 -4093 4094 -4094 4095 -4095 4096 -4096 4097 -4097 4098 -4098 4099 -4099 4100 -4100 4101 -4101 4102 -4102 4103 -4103 4104 -4104 4105 -4105 4106 -4106 4107 -4107 4108 -4108 4109 -4109 4110 -4110 4111 -4111 4112 -4112 4113 -4113 4114 -4114 4115 -4115 4116 -4116 4117 -4117 4118 -4118 4119 -4119 4120 -4120 4121 -4121 4122 -4122 4123 -4123 4124 -4124 4125 -4125 4126 -4126 4127 -4127 4128 -4128 4129 -4129 4130 -4130 4131 -4131 4132 -4132 4133 -4133 4134 -4134 4135 -4135 4136 -4136 4137 -4137 4138 -4138 4139 -4139 4140 -4140 4141 -4141 4142 -4142 4143 -4143 4144 -4144 4145 -4145 4146 -4146 4147 -4147 4148 -4148 4149 -4149 4150 -4150 4151 -4151 4152 -4152 4153 -4153 4154 -4154 4155 -4155 4156 -4156 4157 -4157 4158 -4158 4159 -4159 4160 -4160 4161 -4161 4162 -4162 4163 -4163 4164 -4164 4165 -4165 4166 -4166 4167 -4167 4168 -4168 4169 -4169 4170 -4170 4171 -4171 4172 -4172 4173 -4173 4174 -4174 4175 -4175 4176 -4176 4177 -4177 4178 -4178 4179 -4179 4180 -4180 4181 -4181 4182 -4182 4183 -4183 4184 -4184 4185 -4185 4186 -4186 4187 -4187 4188 -4188 4189 -4189 4190 -4190 4191 -4191 4192 -4192 4193 -4193 4194 -4194 4195 -4195 4196 -4196 4197 -4197 4198 -4198 4199 -4199 4200 -4200 4201 -4201 4202 -4202 4203 -4203 4204 -4204 4205 -4205 4206 -4206 4207 -4207 4208 -4208 4209 -4209 4210 -4210 4211 -4211 4212 -4212 4213 -4213 4214 -4214 4215 -4215 4216 -4216 4217 -4217 4218 -4218 4219 -4219 4220 -4220 4221 -4221 4222 -4222 4223 -4223 4224 -4224 4225 -4225 4226 -4226 4227 -4227 4228 -4228 4229 -4229 4230 -4230 4231 -4231 4232 -4232 4233 -4233 4234 -4234 4235 -4235 4236 -4236 4237 -4237 4238 -4238 4239 -4239 4240 -4240 4241 -4241 4242 -4242 4243 -4243 4244 -4244 4245 -4245 4246 -4246 4247 -4247 4248 -4248 4249 -4249 4250 -4250 4251 -4251 4252 -4252 4253 -4253 4254 -4254 4255 -4255 4256 -4256 4257 -4257 4258 -4258 4259 -4259 4260 -4260 4261 -4261 4262 -4262 4263 -4263 4264 -4264 4265 -4265 4266 -4266 4267 -4267 4268 -4268 4269 -4269 4270 -4270 4271 -4271 4272 -4272 4273 -4273 4274 -4274 4275 -4275 4276 -4276 4277 -4277 4278 -4278 4279 -4279 4280 -4280 4281 -4281 4282 -4282 4283 -4283 4284 -4284 4285 -4285 4286 -4286 4287 -4287 4288 -4288 4289 -4289 4290 -4290 4291 -4291 4292 -4292 4293 -4293 4294 -4294 4295 -4295 4296 -4296 4297 -4297 4298 -4298 4299 -4299 4300 -4300 4301 -4301 4302 -4302 4303 -4303 4304 -4304 4305 -4305 4306 -4306 4307 -4307 4308 -4308 4309 -4309 4310 -4310 4311 -4311 4312 -4312 4313 -4313 4314 -4314 4315 -4315 4316 -4316 4317 -4317 4318 -4318 4319 -4319 4320 -4320 4321 -4321 4322 -4322 4323 -4323 4324 -4324 4325 -4325 4326 -4326 4327 -4327 4328 -4328 4329 -4329 4330 -4330 4331 -4331 4332 -4332 4333 -4333 4334 -4334 4335 -4335 4336 -4336 4337 -4337 4338 -4338 4339 -4339 4340 -4340 4341 -4341 4342 -4342 4343 -4343 4344 -4344 4345 -4345 4346 -4346 4347 -4347 4348 -4348 4349 -4349 4350 -4350 4351 -4351 4352 -4352 4353 -4353 4354 -4354 4355 -4355 4356 -4356 4357 -4357 4358 -4358 4359 -4359 4360 -4360 4361 -4361 4362 -4362 4363 -4363 4364 -4364 4365 -4365 4366 -4366 4367 -4367 4368 -4368 4369 -4369 4370 -4370 4371 -4371 4372 -4372 4373 -4373 4374 -4374 4375 -4375 4376 -4376 4377 -4377 4378 -4378 4379 -4379 4380 -4380 4381 -4381 4382 -4382 4383 -4383 4384 -4384 4385 -4385 4386 -4386 4387 -4387 4388 -4388 4389 -4389 4390 -4390 4391 -4391 4392 -4392 4393 -4393 4394 -4394 4395 -4395 4396 -4396 4397 -4397 4398 -4398 4399 -4399 4400 -4400 4401 -4401 4402 -4402 4403 -4403 4404 -4404 4405 -4405 4406 -4406 4407 -4407 4408 -4408 4409 -4409 4410 -4410 4411 -4411 4412 -4412 4413 -4413 4414 -4414 4415 -4415 4416 -4416 4417 -4417 4418 -4418 4419 -4419 4420 -4420 4421 -4421 4422 -4422 4423 -4423 4424 -4424 4425 -4425 4426 -4426 4427 -4427 4428 -4428 4429 -4429 4430 -4430 4431 -4431 4432 -4432 4433 -4433 4434 -4434 4435 -4435 4436 -4436 4437 -4437 4438 -4438 4439 -4439 4440 -4440 4441 -4441 4442 -4442 4443 -4443 4444 -4444 4445 -4445 4446 -4446 4447 -4447 4448 -4448 4449 -4449 4450 -4450 4451 -4451 4452 -4452 4453 -4453 4454 -4454 4455 -4455 4456 -4456 4457 -4457 4458 -4458 4459 -4459 4460 -4460 4461 -4461 4462 -4462 4463 -4463 4464 -4464 4465 -4465 4466 -4466 4467 -4467 4468 -4468 4469 -4469 4470 -4470 4471 -4471 4472 -4472 4473 -4473 4474 -4474 4475 -4475 4476 -4476 4477 -4477 4478 -4478 4479 -4479 4480 -4480 4481 -4481 4482 -4482 4483 -4483 4484 -4484 4485 -4485 4486 -4486 4487 -4487 4488 -4488 4489 -4489 4490 -4490 4491 -4491 4492 -4492 4493 -4493 4494 -4494 4495 -4495 4496 -4496 4497 -4497 4498 -4498 4499 -4499 4500 -4500 4501 -4501 4502 -4502 4503 -4503 4504 -4504 4505 -4505 4506 -4506 4507 -4507 4508 -4508 4509 -4509 4510 -4510 4511 -4511 4512 -4512 4513 -4513 4514 -4514 4515 -4515 4516 -4516 4517 -4517 4518 -4518 4519 -4519 4520 -4520 4521 -4521 4522 -4522 4523 -4523 4524 -4524 4525 -4525 4526 -4526 4527 -4527 4528 -4528 4529 -4529 4530 -4530 4531 -4531 4532 -4532 4533 -4533 4534 -4534 4535 -4535 4536 -4536 4537 -4537 4538 -4538 4539 -4539 4540 -4540 4541 -4541 4542 -4542 4543 -4543 4544 -4544 4545 -4545 4546 -4546 4547 -4547 4548 -4548 4549 -4549 4550 -4550 4551 -4551 4552 -4552 4553 -4553 4554 -4554 4555 -4555 4556 -4556 4557 -4557 4558 -4558 4559 -4559 4560 -4560 4561 -4561 4562 -4562 4563 -4563 4564 -4564 4565 -4565 4566 -4566 4567 -4567 4568 -4568 4569 -4569 4570 -4570 4571 -4571 4572 -4572 4573 -4573 4574 -4574 4575 -4575 4576 -4576 4577 -4577 4578 -4578 4579 -4579 4580 -4580 4581 -4581 4582 -4582 4583 -4583 4584 -4584 4585 -4585 4586 -4586 4587 -4587 4588 -4588 4589 -4589 4590 -4590 4591 -4591 4592 -4592 4593 -4593 4594 -4594 4595 -4595 4596 -4596 4597 -4597 4598 -4598 4599 -4599 4600 -4600 4601 -4601 4602 -4602 4603 -4603 4604 -4604 4605 -4605 4606 -4606 4607 -4607 4608 -4608 4609 -4609 4610 -4610 4611 -4611 4612 -4612 4613 -4613 4614 -4614 4615 -4615 4616 -4616 4617 -4617 4618 -4618 4619 -4619 4620 -4620 4621 -4621 4622 -4622 4623 -4623 4624 -4624 4625 -4625 4626 -4626 4627 -4627 4628 -4628 4629 -4629 4630 -4630 4631 -4631 4632 -4632 4633 -4633 4634 -4634 4635 -4635 4636 -4636 4637 -4637 4638 -4638 4639 -4639 4640 -4640 4641 -4641 4642 -4642 4643 -4643 4644 -4644 4645 -4645 4646 -4646 4647 -4647 4648 -4648 4649 -4649 4650 -4650 4651 -4651 4652 -4652 4653 -4653 4654 -4654 4655 -4655 4656 -4656 4657 -4657 4658 -4658 4659 -4659 4660 -4660 4661 -4661 4662 -4662 4663 -4663 4664 -4664 4665 -4665 4666 -4666 4667 -4667 4668 -4668 4669 -4669 4670 -4670 4671 -4671 4672 -4672 4673 -4673 4674 -4674 4675 -4675 4676 -4676 4677 -4677 4678 -4678 4679 -4679 4680 -4680 4681 -4681 4682 -4682 4683 -4683 4684 -4684 4685 -4685 4686 -4686 4687 -4687 4688 -4688 4689 -4689 4690 -4690 4691 -4691 4692 -4692 4693 -4693 4694 -4694 4695 -4695 4696 -4696 4697 -4697 4698 -4698 4699 -4699 4700 -4700 4701 -4701 4702 -4702 4703 -4703 4704 -4704 4705 -4705 4706 -4706 4707 -4707 4708 -4708 4709 -4709 4710 -4710 4711 -4711 4712 -4712 4713 -4713 4714 -4714 4715 -4715 4716 -4716 4717 -4717 4718 -4718 4719 -4719 4720 -4720 4721 -4721 4722 -4722 4723 -4723 4724 -4724 4725 -4725 4726 -4726 4727 -4727 4728 -4728 4729 -4729 4730 -4730 4731 -4731 4732 -4732 4733 -4733 4734 -4734 4735 -4735 4736 -4736 4737 -4737 4738 -4738 4739 -4739 4740 -4740 4741 -4741 4742 -4742 4743 -4743 4744 -4744 4745 -4745 4746 -4746 4747 -4747 4748 -4748 4749 -4749 4750 -4750 4751 -4751 4752 -4752 4753 -4753 4754 -4754 4755 -4755 4756 -4756 4757 -4757 4758 -4758 4759 -4759 4760 -4760 4761 -4761 4762 -4762 4763 -4763 4764 -4764 4765 -4765 4766 -4766 4767 -4767 4768 -4768 4769 -4769 4770 -4770 4771 -4771 4772 -4772 4773 -4773 4774 -4774 4775 -4775 4776 -4776 4777 -4777 4778 -4778 4779 -4779 4780 -4780 4781 -4781 4782 -4782 4783 -4783 4784 -4784 4785 -4785 4786 -4786 4787 -4787 4788 -4788 4789 -4789 4790 -4790 4791 -4791 4792 -4792 4793 -4793 4794 -4794 4795 -4795 4796 -4796 4797 -4797 4798 -4798 4799 -4799 4800 -4800 4801 -4801 4802 -4802 4803 -4803 4804 -4804 4805 -4805 4806 -4806 4807 -4807 4808 -4808 4809 -4809 4810 -4810 4811 -4811 4812 -4812 4813 -4813 4814 -4814 4815 -4815 4816 -4816 4817 -4817 4818 -4818 4819 -4819 4820 -4820 4821 -4821 4822 -4822 4823 -4823 4824 -4824 4825 -4825 4826 -4826 4827 -4827 4828 -4828 4829 -4829 4830 -4830 4831 -4831 4832 -4832 4833 -4833 4834 -4834 4835 -4835 4836 -4836 4837 -4837 4838 -4838 4839 -4839 4840 -4840 4841 -4841 4842 -4842 4843 -4843 4844 -4844 4845 -4845 4846 -4846 4847 -4847 4848 -4848 4849 -4849 4850 -4850 4851 -4851 4852 -4852 4853 -4853 4854 -4854 4855 -4855 4856 -4856 4857 -4857 4858 -4858 4859 -4859 4860 -4860 4861 -4861 4862 -4862 4863 -4863 4864 -4864 4865 -4865 4866 -4866 4867 -4867 4868 -4868 4869 -4869 4870 -4870 4871 -4871 4872 -4872 4873 -4873 4874 -4874 4875 -4875 4876 -4876 4877 -4877 4878 -4878 4879 -4879 4880 -4880 4881 -4881 4882 -4882 4883 -4883 4884 -4884 4885 -4885 4886 -4886 4887 -4887 4888 -4888 4889 -4889 4890 -4890 4891 -4891 4892 -4892 4893 -4893 4894 -4894 4895 -4895 4896 -4896 4897 -4897 4898 -4898 4899 -4899 4900 -4900 4901 -4901 4902 -4902 4903 -4903 4904 -4904 4905 -4905 4906 -4906 4907 -4907 4908 -4908 4909 -4909 4910 -4910 4911 -4911 4912 -4912 4913 -4913 4914 -4914 4915 -4915 4916 -4916 4917 -4917 4918 -4918 4919 -4919 4920 -4920 4921 -4921 4922 -4922 4923 -4923 4924 -4924 4925 -4925 4926 -4926 4927 -4927 4928 -4928 4929 -4929 4930 -4930 4931 -4931 4932 -4932 4933 -4933 4934 -4934 4935 -4935 4936 -4936 4937 -4937 4938 -4938 4939 -4939 4940 -4940 4941 -4941 4942 -4942 4943 -4943 4944 -4944 4945 -4945 4946 -4946 4947 -4947 4948 -4948 4949 -4949 4950 -4950 4951 -4951 4952 -4952 4953 -4953 4954 -4954 4955 -4955 4956 -4956 4957 -4957 4958 -4958 4959 -4959 4960 -4960 4961 -4961 4962 -4962 4963 -4963 4964 -4964 4965 -4965 4966 -4966 4967 -4967 4968 -4968 4969 -4969 4970 -4970 4971 -4971 4972 -4972 4973 -4973 4974 -4974 4975 -4975 4976 -4976 4977 -4977 4978 -4978 4979 -4979 4980 -4980 4981 -4981 4982 -4982 4983 -4983 4984 -4984 4985 -4985 4986 -4986 4987 -4987 4988 -4988 4989 -4989 4990 -4990 4991 -4991 4992 -4992 4993 -4993 4994 -4994 4995 -4995 4996 -4996 4997 -4997 4998 -4998 4999 -4999 5000 -5000 5001 -5001 5002 -5002 5003 -5003 5004 -5004 5005 -5005 5006 -5006 5007 -5007 5008 -5008 5009 -5009 5010 -5010 5011 -5011 5012 -5012 5013 -5013 5014 -5014 5015 -5015 5016 -5016 5017 -5017 5018 -5018 5019 -5019 5020 -5020 5021 -5021 5022 -5022 5023 -5023 5024 -5024 5025 -5025 5026 -5026 5027 -5027 5028 -5028 5029 -5029 5030 -5030 5031 -5031 5032 -5032 5033 -5033 5034 -5034 5035 -5035 5036 -5036 5037 -5037 5038 -5038 5039 -5039 5040 -5040 5041 -5041 5042 -5042 5043 -5043 5044 -5044 5045 -5045 5046 -5046 5047 -5047 5048 -5048 5049 -5049 5050 -5050 5051 -5051 5052 -5052 5053 -5053 5054 -5054 5055 -5055 5056 -5056 5057 -5057 5058 -5058 5059 -5059 5060 -5060 5061 -5061 5062 -5062 5063 -5063 5064 -5064 5065 -5065 5066 -5066 5067 -5067 5068 -5068 5069 -5069 5070 -5070 5071 -5071 5072 -5072 5073 -5073 5074 -5074 5075 -5075 5076 -5076 5077 -5077 5078 -5078 5079 -5079 5080 -5080 5081 -5081 5082 -5082 5083 -5083 5084 -5084 5085 -5085 5086 -5086 5087 -5087 5088 -5088 5089 -5089 5090 -5090 5091 -5091 5092 -5092 5093 -5093 5094 -5094 5095 -5095 5096 -5096 5097 -5097 5098 -5098 5099 -5099 5100 -5100 5101 -5101 5102 -5102 5103 -5103 5104 -5104 5105 -5105 5106 -5106 5107 -5107 5108 -5108 5109 -5109 5110 -5110 5111 -5111 5112 -5112 5113 -5113 5114 -5114 5115 -5115 5116 -5116 5117 -5117 5118 -5118 5119 -5119 5120 -5120 5121 -5121 5122 -5122 5123 -5123 5124 -5124 5125 -5125 5126 -5126 5127 -5127 5128 -5128 5129 -5129 5130 -5130 5131 -5131 5132 -5132 5133 -5133 5134 -5134 5135 -5135 5136 -5136 5137 -5137 5138 -5138 5139 -5139 5140 -5140 5141 -5141 5142 -5142 5143 -5143 5144 -5144 5145 -5145 5146 -5146 5147 -5147 5148 -5148 5149 -5149 5150 -5150 5151 -5151 5152 -5152 5153 -5153 5154 -5154 5155 -5155 5156 -5156 5157 -5157 5158 -5158 5159 -5159 5160 -5160 5161 -5161 5162 -5162 5163 -5163 5164 -5164 5165 -5165 5166 -5166 5167 -5167 5168 -5168 5169 -5169 5170 -5170 5171 -5171 5172 -5172 5173 -5173 5174 -5174 5175 -5175 5176 -5176 5177 -5177 5178 -5178 5179 -5179 5180 -5180 5181 -5181 5182 -5182 5183 -5183 5184 -5184 5185 -5185 5186 -5186 5187 -5187 5188 -5188 5189 -5189 5190 -5190 5191 -5191 5192 -5192 5193 -5193 5194 -5194 5195 -5195 5196 -5196 5197 -5197 5198 -5198 5199 -5199 5200 -5200 5201 -5201 5202 -5202 5203 -5203 5204 -5204 5205 -5205 5206 -5206 5207 -5207 5208 -5208 5209 -5209 5210 -5210 5211 -5211 5212 -5212 5213 -5213 5214 -5214 5215 -5215 5216 -5216 5217 -5217 5218 -5218 5219 -5219 5220 -5220 5221 -5221 5222 -5222 5223 -5223 5224 -5224 5225 -5225 5226 -5226 5227 -5227 5228 -5228 5229 -5229 5230 -5230 5231 -5231 5232 -5232 5233 -5233 5234 -5234 5235 -5235 5236 -5236 5237 -5237 5238 -5238 5239 -5239 5240 -5240 5241 -5241 5242 -5242 5243 -5243 5244 -5244 5245 -5245 5246 -5246 5247 -5247 5248 -5248 5249 -5249 5250 -5250 5251 -5251 5252 -5252 5253 -5253 5254 -5254 5255 -5255 5256 -5256 5257 -5257 5258 -5258 5259 -5259 5260 -5260 5261 -5261 5262 -5262 5263 -5263 5264 -5264 5265 -5265 5266 -5266 5267 -5267 5268 -5268 5269 -5269 5270 -5270 5271 -5271 5272 -5272 5273 -5273 5274 -5274 5275 -5275 5276 -5276 5277 -5277 5278 -5278 5279 -5279 5280 -5280 5281 -5281 5282 -5282 5283 -5283 5284 -5284 5285 -5285 5286 -5286 5287 -5287 5288 -5288 5289 -5289 5290 -5290 5291 -5291 5292 -5292 5293 -5293 5294 -5294 5295 -5295 5296 -5296 5297 -5297 5298 -5298 5299 -5299 5300 -5300 5301 -5301 5302 -5302 5303 -5303 5304 -5304 5305 -5305 5306 -5306 5307 -5307 5308 -5308 5309 -5309 5310 -5310 5311 -5311 5312 -5312 5313 -5313 5314 -5314 5315 -5315 5316 -5316 5317 -5317 5318 -5318 5319 -5319 5320 -5320 5321 -5321 5322 -5322 5323 -5323 5324 -5324 5325 -5325 5326 -5326 5327 -5327 5328 -5328 5329 -5329 5330 -5330 5331 -5331 5332 -5332 5333 -5333 5334 -5334 5335 -5335 5336 -5336 5337 -5337 5338 -5338 5339 -5339 5340 -5340 5341 -5341 5342 -5342 5343 -5343 5344 -5344 5345 -5345 5346 -5346 5347 -5347 5348 -5348 5349 -5349 5350 -5350 5351 -5351 5352 -5352 5353 -5353 5354 -5354 5355 -5355 5356 -5356 5357 -5357 5358 -5358 5359 -5359 5360 -5360 5361 -5361 5362 -5362 5363 -5363 5364 -5364 5365 -5365 5366 -5366 5367 -5367 5368 -5368 5369 -5369 5370 -5370 5371 -5371 5372 -5372 5373 -5373 5374 -5374 5375 -5375 5376 -5376 5377 -5377 5378 -5378 5379 -5379 5380 -5380 5381 -5381 5382 -5382 5383 -5383 5384 -5384 5385 -5385 5386 -5386 5387 -5387 5388 -5388 5389 -5389 5390 -5390 5391 -5391 5392 -5392 5393 -5393 5394 -5394 5395 -5395 5396 -5396 5397 -5397 5398 -5398 5399 -5399 5400 -5400 5401 -5401 5402 -5402 5403 -5403 5404 -5404 5405 -5405 5406 -5406 5407 -5407 5408 -5408 5409 -5409 5410 -5410 5411 -5411 5412 -5412 5413 -5413 5414 -5414 5415 -5415 5416 -5416 5417 -5417 5418 -5418 5419 -5419 5420 -5420 5421 -5421 5422 -5422 5423 -5423 5424 -5424 5425 -5425 5426 -5426 5427 -5427 5428 -5428 5429 -5429 5430 -5430 5431 -5431 5432 -5432 5433 -5433 5434 -5434 5435 -5435 5436 -5436 5437 -5437 5438 -5438 5439 -5439 5440 -5440 5441 -5441 5442 -5442 5443 -5443 5444 -5444 5445 -5445 5446 -5446 5447 -5447 5448 -5448 5449 -5449 5450 -5450 5451 -5451 5452 -5452 5453 -5453 5454 -5454 5455 -5455 5456 -5456 5457 -5457 5458 -5458 5459 -5459 5460 -5460 5461 -5461 5462 -5462 5463 -5463 5464 -5464 5465 -5465 5466 -5466 5467 -5467 5468 -5468 5469 -5469 5470 -5470 5471 -5471 5472 -5472 5473 -5473 5474 -5474 5475 -5475 5476 -5476 5477 -5477 5478 -5478 5479 -5479 5480 -5480 5481 -5481 5482 -5482 5483 -5483 5484 -5484 5485 -5485 5486 -5486 5487 -5487 5488 -5488 5489 -5489 5490 -5490 5491 -5491 5492 -5492 5493 -5493 5494 -5494 5495 -5495 5496 -5496 5497 -5497 5498 -5498 5499 -5499 5500 -5500 5501 -5501 5502 -5502 5503 -5503 5504 -5504 5505 -5505 5506 -5506 5507 -5507 5508 -5508 5509 -5509 5510 -5510 5511 -5511 5512 -5512 5513 -5513 5514 -5514 5515 -5515 5516 -5516 5517 -5517 5518 -5518 5519 -5519 5520 -5520 5521 -5521 5522 -5522 5523 -5523 5524 -5524 5525 -5525 5526 -5526 5527 -5527 5528 -5528 5529 -5529 5530 -5530 5531 -5531 5532 -5532 5533 -5533 5534 -5534 5535 -5535 5536 -5536 5537 -5537 5538 -5538 5539 -5539 5540 -5540 5541 -5541 5542 -5542 5543 -5543 5544 -5544 5545 -5545 5546 -5546 5547 -5547 5548 -5548 5549 -5549 5550 -5550 5551 -5551 5552 -5552 5553 -5553 5554 -5554 5555 -5555 5556 -5556 5557 -5557 5558 -5558 5559 -5559 5560 -5560 5561 -5561 5562 -5562 5563 -5563 5564 -5564 5565 -5565 5566 -5566 5567 -5567 5568 -5568 5569 -5569 5570 -5570 5571 -5571 5572 -5572 5573 -5573 5574 -5574 5575 -5575 5576 -5576 5577 -5577 5578 -5578 5579 -5579 5580 -5580 5581 -5581 5582 -5582 5583 -5583 5584 -5584 5585 -5585 5586 -5586 5587 -5587 5588 -5588 5589 -5589 5590 -5590 5591 -5591 5592 -5592 5593 -5593 5594 -5594 5595 -5595 5596 -5596 5597 -5597 5598 -5598 5599 -5599 5600 -5600 5601 -5601 5602 -5602 5603 -5603 5604 -5604 5605 -5605 5606 -5606 5607 -5607 5608 -5608 5609 -5609 5610 -5610 5611 -5611 5612 -5612 5613 -5613 5614 -5614 5615 -5615 5616 -5616 5617 -5617 5618 -5618 5619 -5619 5620 -5620 5621 -5621 5622 -5622 5623 -5623 5624 -5624 5625 -5625 5626 -5626 5627 -5627 5628 -5628 5629 -5629 5630 -5630 5631 -5631 5632 -5632 5633 -5633 5634 -5634 5635 -5635 5636 -5636 5637 -5637 5638 -5638 5639 -5639 5640 -5640 5641 -5641 5642 -5642 5643 -5643 5644 -5644 5645 -5645 5646 -5646 5647 -5647 5648 -5648 5649 -5649 5650 -5650 5651 -5651 5652 -5652 5653 -5653 5654 -5654 5655 -5655 5656 -5656 5657 -5657 5658 -5658 5659 -5659 5660 -5660 5661 -5661 5662 -5662 5663 -5663 5664 -5664 5665 -5665 5666 -5666 5667 -5667 5668 -5668 5669 -5669 5670 -5670 5671 -5671 5672 -5672 5673 -5673 5674 -5674 5675 -5675 5676 -5676 5677 -5677 5678 -5678 5679 -5679 5680 -5680 5681 -5681 5682 -5682 5683 -5683 5684 -5684 5685 -5685 5686 -5686 5687 -5687 5688 -5688 5689 -5689 5690 -5690 5691 -5691 5692 -5692 5693 -5693 5694 -5694 5695 -5695 5696 -5696 5697 -5697 5698 -5698 5699 -5699 5700 -5700 5701 -5701 5702 -5702 5703 -5703 5704 -5704 5705 -5705 5706 -5706 5707 -5707 5708 -5708 5709 -5709 5710 -5710 5711 -5711 5712 -5712 5713 -5713 5714 -5714 5715 -5715 5716 -5716 5717 -5717 5718 -5718 5719 -5719 5720 -5720 5721 -5721 5722 -5722 5723 -5723 5724 -5724 5725 -5725 5726 -5726 5727 -5727 5728 -5728 5729 -5729 5730 -5730 5731 -5731 5732 -5732 5733 -5733 5734 -5734 5735 -5735 5736 -5736 5737 -5737 5738 -5738 5739 -5739 5740 -5740 5741 -5741 5742 -5742 5743 -5743 5744 -5744 5745 -5745 5746 -5746 5747 -5747 5748 -5748 5749 -5749 5750 -5750 5751 -5751 5752 -5752 5753 -5753 5754 -5754 5755 -5755 5756 -5756 5757 -5757 5758 -5758 5759 -5759 5760 -5760 5761 -5761 5762 -5762 5763 -5763 5764 -5764 5765 -5765 5766 -5766 5767 -5767 5768 -5768 5769 -5769 5770 -5770 5771 -5771 5772 -5772 5773 -5773 5774 -5774 5775 -5775 5776 -5776 5777 -5777 5778 -5778 5779 -5779 5780 -5780 5781 -5781 5782 -5782 5783 -5783 5784 -5784 5785 -5785 5786 -5786 5787 -5787 5788 -5788 5789 -5789 5790 -5790 5791 -5791 5792 -5792 5793 -5793 5794 -5794 5795 -5795 5796 -5796 5797 -5797 5798 -5798 5799 -5799 5800 -5800 5801 -5801 5802 -5802 5803 -5803 5804 -5804 5805 -5805 5806 -5806 5807 -5807 5808 -5808 5809 -5809 5810 -5810 5811 -5811 5812 -5812 5813 -5813 5814 -5814 5815 -5815 5816 -5816 5817 -5817 5818 -5818 5819 -5819 5820 -5820 5821 -5821 5822 -5822 5823 -5823 5824 -5824 5825 -5825 5826 -5826 5827 -5827 5828 -5828 5829 -5829 5830 -5830 5831 -5831 5832 -5832 5833 -5833 5834 -5834 5835 -5835 5836 -5836 5837 -5837 5838 -5838 5839 -5839 5840 -5840 5841 -5841 5842 -5842 5843 -5843 5844 -5844 5845 -5845 5846 -5846 5847 -5847 5848 -5848 5849 -5849 5850 -5850 5851 -5851 5852 -5852 5853 -5853 5854 -5854 5855 -5855 5856 -5856 5857 -5857 5858 -5858 5859 -5859 5860 -5860 5861 -5861 5862 -5862 5863 -5863 5864 -5864 5865 -5865 5866 -5866 5867 -5867 5868 -5868 5869 -5869 5870 -5870 5871 -5871 5872 -5872 5873 -5873 5874 -5874 5875 -5875 5876 -5876 5877 -5877 5878 -5878 5879 -5879 5880 -5880 5881 -5881 5882 -5882 5883 -5883 5884 -5884 5885 -5885 5886 -5886 5887 -5887 5888 -5888 5889 -5889 5890 -5890 5891 -5891 5892 -5892 5893 -5893 5894 -5894 5895 -5895 5896 -5896 5897 -5897 5898 -5898 5899 -5899 5900 -5900 5901 -5901 5902 -5902 5903 -5903 5904 -5904 5905 -5905 5906 -5906 5907 -5907 5908 -5908 5909 -5909 5910 -5910 5911 -5911 5912 -5912 5913 -5913 5914 -5914 5915 -5915 5916 -5916 5917 -5917 5918 -5918 5919 -5919 5920 -5920 5921 -5921 5922 -5922 5923 -5923 5924 -5924 5925 -5925 5926 -5926 5927 -5927 5928 -5928 5929 -5929 5930 -5930 5931 -5931 5932 -5932 5933 -5933 5934 -5934 5935 -5935 5936 -5936 5937 -5937 5938 -5938 5939 -5939 5940 -5940 5941 -5941 5942 -5942 5943 -5943 5944 -5944 5945 -5945 5946 -5946 5947 -5947 5948 -5948 5949 -5949 5950 -5950 5951 -5951 5952 -5952 5953 -5953 5954 -5954 5955 -5955 5956 -5956 5957 -5957 5958 -5958 5959 -5959 5960 -5960 5961 -5961 5962 -5962 5963 -5963 5964 -5964 5965 -5965 5966 -5966 5967 -5967 5968 -5968 5969 -5969 5970 -5970 5971 -5971 5972 -5972 5973 -5973 5974 -5974 5975 -5975 5976 -5976 5977 -5977 5978 -5978 5979 -5979 5980 -5980 5981 -5981 5982 -5982 5983 -5983 5984 -5984 5985 -5985 5986 -5986 5987 -5987 5988 -5988 5989 -5989 5990 -5990 5991 -5991 5992 -5992 5993 -5993 5994 -5994 5995 -5995 5996 -5996 5997 -5997 5998 -5998 5999 -5999 6000 -6000 6001 -6001 6002 -6002 6003 -6003 6004 -6004 6005 -6005 6006 -6006 6007 -6007 6008 -6008 6009 -6009 6010 -6010 6011 -6011 6012 -6012 6013 -6013 6014 -6014 6015 -6015 6016 -6016 6017 -6017 6018 -6018 6019 -6019 6020 -6020 6021 -6021 6022 -6022 6023 -6023 6024 -6024 6025 -6025 6026 -6026 6027 -6027 6028 -6028 6029 -6029 6030 -6030 6031 -6031 6032 -6032 6033 -6033 6034 -6034 6035 -6035 6036 -6036 6037 -6037 6038 -6038 6039 -6039 6040 -6040 6041 -6041 6042 -6042 6043 -6043 6044 -6044 6045 -6045 6046 -6046 6047 -6047 6048 -6048 6049 -6049 6050 -6050 6051 -6051 6052 -6052 6053 -6053 6054 -6054 6055 -6055 6056 -6056 6057 -6057 6058 -6058 6059 -6059 6060 -6060 6061 -6061 6062 -6062 6063 -6063 6064 -6064 6065 -6065 6066 -6066 6067 -6067 6068 -6068 6069 -6069 6070 -6070 6071 -6071 6072 -6072 6073 -6073 6074 -6074 6075 -6075 6076 -6076 6077 -6077 6078 -6078 6079 -6079 6080 -6080 6081 -6081 6082 -6082 6083 -6083 6084 -6084 6085 -6085 6086 -6086 6087 -6087 6088 -6088 6089 -6089 6090 -6090 6091 -6091 6092 -6092 6093 -6093 6094 -6094 6095 -6095 6096 -6096 6097 -6097 6098 -6098 6099 -6099 6100 -6100 6101 -6101 6102 -6102 6103 -6103 6104 -6104 6105 -6105 6106 -6106 6107 -6107 6108 -6108 6109 -6109 6110 -6110 6111 -6111 6112 -6112 6113 -6113 6114 -6114 6115 -6115 6116 -6116 6117 -6117 6118 -6118 6119 -6119 6120 -6120 6121 -6121 6122 -6122 6123 -6123 6124 -6124 6125 -6125 6126 -6126 6127 -6127 6128 -6128 6129 -6129 6130 -6130 6131 -6131 6132 -6132 6133 -6133 6134 -6134 6135 -6135 6136 -6136 6137 -6137 6138 -6138 6139 -6139 6140 -6140 6141 -6141 6142 -6142 6143 -6143 6144 -6144 6145 -6145 6146 -6146 6147 -6147 6148 -6148 6149 -6149 6150 -6150 6151 -6151 6152 -6152 6153 -6153 6154 -6154 6155 -6155 6156 -6156 6157 -6157 6158 -6158 6159 -6159 6160 -6160 6161 -6161 6162 -6162 6163 -6163 6164 -6164 6165 -6165 6166 -6166 6167 -6167 6168 -6168 6169 -6169 6170 -6170 6171 -6171 6172 -6172 6173 -6173 6174 -6174 6175 -6175 6176 -6176 6177 -6177 6178 -6178 6179 -6179 6180 -6180 6181 -6181 6182 -6182 6183 -6183 6184 -6184 6185 -6185 6186 -6186 6187 -6187 6188 -6188 6189 -6189 6190 -6190 6191 -6191 6192 -6192 6193 -6193 6194 -6194 6195 -6195 6196 -6196 6197 -6197 6198 -6198 6199 -6199 6200 -6200 6201 -6201 6202 -6202 6203 -6203 6204 -6204 6205 -6205 6206 -6206 6207 -6207 6208 -6208 6209 -6209 6210 -6210 6211 -6211 6212 -6212 6213 -6213 6214 -6214 6215 -6215 6216 -6216 6217 -6217 6218 -6218 6219 -6219 6220 -6220 6221 -6221 6222 -6222 6223 -6223 6224 -6224 6225 -6225 6226 -6226 6227 -6227 6228 -6228 6229 -6229 6230 -6230 6231 -6231 6232 -6232 6233 -6233 6234 -6234 6235 -6235 6236 -6236 6237 -6237 6238 -6238 6239 -6239 6240 -6240 6241 -6241 6242 -6242 6243 -6243 6244 -6244 6245 -6245 6246 -6246 6247 -6247 6248 -6248 6249 -6249 6250 -6250 6251 -6251 6252 -6252 6253 -6253 6254 -6254 6255 -6255 6256 -6256 6257 -6257 6258 -6258 6259 -6259 6260 -6260 6261 -6261 6262 -6262 6263 -6263 6264 -6264 6265 -6265 6266 -6266 6267 -6267 6268 -6268 6269 -6269 6270 -6270 6271 -6271 6272 -6272 6273 -6273 6274 -6274 6275 -6275 6276 -6276 6277 -6277 6278 -6278 6279 -6279 6280 -6280 6281 -6281 6282 -6282 6283 -6283 6284 -6284 6285 -6285 6286 -6286 6287 -6287 6288 -6288 6289 -6289 6290 -6290 6291 -6291 6292 -6292 6293 -6293 6294 -6294 6295 -6295 6296 -6296 6297 -6297 6298 -6298 6299 -6299 6300 -6300 6301 -6301 6302 -6302 6303 -6303 6304 -6304 6305 -6305 6306 -6306 6307 -6307 6308 -6308 6309 -6309 6310 -6310 6311 -6311 6312 -6312 6313 -6313 6314 -6314 6315 -6315 6316 -6316 6317 -6317 6318 -6318 6319 -6319 6320 -6320 6321 -6321 6322 -6322 6323 -6323 6324 -6324 6325 -6325 6326 -6326 6327 -6327 6328 -6328 6329 -6329 6330 -6330 6331 -6331 6332 -6332 6333 -6333 6334 -6334 6335 -6335 6336 -6336 6337 -6337 6338 -6338 6339 -6339 6340 -6340 6341 -6341 6342 -6342 6343 -6343 6344 -6344 6345 -6345 6346 -6346 6347 -6347 6348 -6348 6349 -6349 6350 -6350 6351 -6351 6352 -6352 6353 -6353 6354 -6354 6355 -6355 6356 -6356 6357 -6357 6358 -6358 6359 -6359 6360 -6360 6361 -6361 6362 -6362 6363 -6363 6364 -6364 6365 -6365 6366 -6366 6367 -6367 6368 -6368 6369 -6369 6370 -6370 6371 -6371 6372 -6372 6373 -6373 6374 -6374 6375 -6375 6376 -6376 6377 -6377 6378 -6378 6379 -6379 6380 -6380 6381 -6381 6382 -6382 6383 -6383 6384 -6384 6385 -6385 6386 -6386 6387 -6387 6388 -6388 6389 -6389 6390 -6390 6391 -6391 6392 -6392 6393 -6393 6394 -6394 6395 -6395 6396 -6396 6397 -6397 6398 -6398 6399 -6399 6400 -6400 6401 -6401 6402 -6402 6403 -6403 6404 -6404 6405 -6405 6406 -6406 6407 -6407 6408 -6408 6409 -6409 6410 -6410 6411 -6411 6412 -6412 6413 -6413 6414 -6414 6415 -6415 6416 -6416 6417 -6417 6418 -6418 6419 -6419 6420 -6420 6421 -6421 6422 -6422 6423 -6423 6424 -6424 6425 -6425 6426 -6426 6427 -6427 6428 -6428 6429 -6429 6430 -6430 6431 -6431 6432 -6432 6433 -6433 6434 -6434 6435 -6435 6436 -6436 6437 -6437 6438 -6438 6439 -6439 6440 -6440 6441 -6441 6442 -6442 6443 -6443 6444 -6444 6445 -6445 6446 -6446 6447 -6447 6448 -6448 6449 -6449 6450 -6450 6451 -6451 6452 -6452 6453 -6453 6454 -6454 6455 -6455 6456 -6456 6457 -6457 6458 -6458 6459 -6459 6460 -6460 6461 -6461 6462 -6462 6463 -6463 6464 -6464 6465 -6465 6466 -6466 6467 -6467 6468 -6468 6469 -6469 6470 -6470 6471 -6471 6472 -6472 6473 -6473 6474 -6474 6475 -6475 6476 -6476 6477 -6477 6478 -6478 6479 -6479 6480 -6480 6481 -6481 6482 -6482 6483 -6483 6484 -6484 6485 -6485 6486 -6486 6487 -6487 6488 -6488 6489 -6489 6490 -6490 6491 -6491 6492 -6492 6493 -6493 6494 -6494 6495 -6495 6496 -6496 6497 -6497 6498 -6498 6499 -6499 6500 -6500 6501 -6501 6502 -6502 6503 -6503 6504 -6504 6505 -6505 6506 -6506 6507 -6507 6508 -6508 6509 -6509 6510 -6510 6511 -6511 6512 -6512 6513 -6513 6514 -6514 6515 -6515 6516 -6516 6517 -6517 6518 -6518 6519 -6519 6520 -6520 6521 -6521 6522 -6522 6523 -6523 6524 -6524 6525 -6525 6526 -6526 6527 -6527 6528 -6528 6529 -6529 6530 -6530 6531 -6531 6532 -6532 6533 -6533 6534 -6534 6535 -6535 6536 -6536 6537 -6537 6538 -6538 6539 -6539 6540 -6540 6541 -6541 6542 -6542 6543 -6543 6544 -6544 6545 -6545 6546 -6546 6547 -6547 6548 -6548 6549 -6549 6550 -6550 6551 -6551 6552 -6552 6553 -6553 6554 -6554 6555 -6555 6556 -6556 6557 -6557 6558 -6558 6559 -6559 6560 -6560 6561 -6561 6562 -6562 6563 -6563 6564 -6564 6565 -6565 6566 -6566 6567 -6567 6568 -6568 6569 -6569 6570 -6570 6571 -6571 6572 -6572 6573 -6573 6574 -6574 6575 -6575 6576 -6576 6577 -6577 6578 -6578 6579 -6579 6580 -6580 6581 -6581 6582 -6582 6583 -6583 6584 -6584 6585 -6585 6586 -6586 6587 -6587 6588 -6588 6589 -6589 6590 -6590 6591 -6591 6592 -6592 6593 -6593 6594 -6594 6595 -6595 6596 -6596 6597 -6597 6598 -6598 6599 -6599 6600 -6600 6601 -6601 6602 -6602 6603 -6603 6604 -6604 6605 -6605 6606 -6606 6607 -6607 6608 -6608 6609 -6609 6610 -6610 6611 -6611 6612 -6612 6613 -6613 6614 -6614 6615 -6615 6616 -6616 6617 -6617 6618 -6618 6619 -6619 6620 -6620 6621 -6621 6622 -6622 6623 -6623 6624 -6624 6625 -6625 6626 -6626 6627 -6627 6628 -6628 6629 -6629 6630 -6630 6631 -6631 6632 -6632 6633 -6633 6634 -6634 6635 -6635 6636 -6636 6637 -6637 6638 -6638 6639 -6639 6640 -6640 6641 -6641 6642 -6642 6643 -6643 6644 -6644 6645 -6645 6646 -6646 6647 -6647 6648 -6648 6649 -6649 6650 -6650 6651 -6651 6652 -6652 6653 -6653 6654 -6654 6655 -6655 6656 -6656 6657 -6657 6658 -6658 6659 -6659 6660 -6660 6661 -6661 6662 -6662 6663 -6663 6664 -6664 6665 -6665 6666 -6666 6667 -6667 6668 -6668 6669 -6669 6670 -6670 6671 -6671 6672 -6672 6673 -6673 6674 -6674 6675 -6675 6676 -6676 6677 -6677 6678 -6678 6679 -6679 6680 -6680 6681 -6681 6682 -6682 6683 -6683 6684 -6684 6685 -6685 6686 -6686 6687 -6687 6688 -6688 6689 -6689 6690 -6690 6691 -6691 6692 -6692 6693 -6693 6694 -6694 6695 -6695 6696 -6696 6697 -6697 6698 -6698 6699 -6699 6700 -6700 6701 -6701 6702 -6702 6703 -6703 6704 -6704 6705 -6705 6706 -6706 6707 -6707 6708 -6708 6709 -6709 6710 -6710 6711 -6711 6712 -6712 6713 -6713 6714 -6714 6715 -6715 6716 -6716 6717 -6717 6718 -6718 6719 -6719 6720 -6720 6721 -6721 6722 -6722 6723 -6723 6724 -6724 6725 -6725 6726 -6726 6727 -6727 6728 -6728 6729 -6729 6730 -6730 6731 -6731 6732 -6732 6733 -6733 6734 -6734 6735 -6735 6736 -6736 6737 -6737 6738 -6738 6739 -6739 6740 -6740 6741 -6741 6742 -6742 6743 -6743 6744 -6744 6745 -6745 6746 -6746 6747 -6747 6748 -6748 6749 -6749 6750 -6750 6751 -6751 6752 -6752 6753 -6753 6754 -6754 6755 -6755 6756 -6756 6757 -6757 6758 -6758 6759 -6759 6760 -6760 6761 -6761 6762 -6762 6763 -6763 6764 -6764 6765 -6765 6766 -6766 6767 -6767 6768 -6768 6769 -6769 6770 -6770 6771 -6771 6772 -6772 6773 -6773 6774 -6774 6775 -6775 6776 -6776 6777 -6777 6778 -6778 6779 -6779 6780 -6780 6781 -6781 6782 -6782 6783 -6783 6784 -6784 6785 -6785 6786 -6786 6787 -6787 6788 -6788 6789 -6789 6790 -6790 6791 -6791 6792 -6792 6793 -6793 6794 -6794 6795 -6795 6796 -6796 6797 -6797 6798 -6798 6799 -6799 6800 -6800 6801 -6801 6802 -6802 6803 -6803 6804 -6804 6805 -6805 6806 -6806 6807 -6807 6808 -6808 6809 -6809 6810 -6810 6811 -6811 6812 -6812 6813 -6813 6814 -6814 6815 -6815 6816 -6816 6817 -6817 6818 -6818 6819 -6819 6820 -6820 6821 -6821 6822 -6822 6823 -6823 6824 -6824 6825 -6825 6826 -6826 6827 -6827 6828 -6828 6829 -6829 6830 -6830 6831 -6831 6832 -6832 6833 -6833 6834 -6834 6835 -6835 6836 -6836 6837 -6837 6838 -6838 6839 -6839 6840 -6840 6841 -6841 6842 -6842 6843 -6843 6844 -6844 6845 -6845 6846 -6846 6847 -6847 6848 -6848 6849 -6849 6850 -6850 6851 -6851 6852 -6852 6853 -6853 6854 -6854 6855 -6855 6856 -6856 6857 -6857 6858 -6858 6859 -6859 6860 -6860 6861 -6861 6862 -6862 6863 -6863 6864 -6864 6865 -6865 6866 -6866 6867 -6867 6868 -6868 6869 -6869 6870 -6870 6871 -6871 6872 -6872 6873 -6873 6874 -6874 6875 -6875 6876 -6876 6877 -6877 6878 -6878 6879 -6879 6880 -6880 6881 -6881 6882 -6882 6883 -6883 6884 -6884 6885 -6885 6886 -6886 6887 -6887 6888 -6888 6889 -6889 6890 -6890 6891 -6891 6892 -6892 6893 -6893 6894 -6894 6895 -6895 6896 -6896 6897 -6897 6898 -6898 6899 -6899 6900 -6900 6901 -6901 6902 -6902 6903 -6903 6904 -6904 6905 -6905 6906 -6906 6907 -6907 6908 -6908 6909 -6909 6910 -6910 6911 -6911 6912 -6912 6913 -6913 6914 -6914 6915 -6915 6916 -6916 6917 -6917 6918 -6918 6919 -6919 6920 -6920 6921 -6921 6922 -6922 6923 -6923 6924 -6924 6925 -6925 6926 -6926 6927 -6927 6928 -6928 6929 -6929 6930 -6930 6931 -6931 6932 -6932 6933 -6933 6934 -6934 6935 -6935 6936 -6936 6937 -6937 6938 -6938 6939 -6939 6940 -6940 6941 -6941 6942 -6942 6943 -6943 6944 -6944 6945 -6945 6946 -6946 6947 -6947 6948 -6948 6949 -6949 6950 -6950 6951 -6951 6952 -6952 6953 -6953 6954 -6954 6955 -6955 6956 -6956 6957 -6957 6958 -6958 6959 -6959 6960 -6960 6961 -6961 6962 -6962 6963 -6963 6964 -6964 6965 -6965 6966 -6966 6967 -6967 6968 -6968 6969 -6969 6970 -6970 6971 -6971 6972 -6972 6973 -6973 6974 -6974 6975 -6975 6976 -6976 6977 -6977 6978 -6978 6979 -6979 6980 -6980 6981 -6981 6982 -6982 6983 -6983 6984 -6984 6985 -6985 6986 -6986 6987 -6987 6988 -6988 6989 -6989 6990 -6990 6991 -6991 6992 -6992 6993 -6993 6994 -6994 6995 -6995 6996 -6996 6997 -6997 6998 -6998 6999 -6999 7000 -7000 7001 -7001 7002 -7002 7003 -7003 7004 -7004 7005 -7005 7006 -7006 7007 -7007 7008 -7008 7009 -7009 7010 -7010 7011 -7011 7012 -7012 7013 -7013 7014 -7014 7015 -7015 7016 -7016 7017 -7017 7018 -7018 7019 -7019 7020 -7020 7021 -7021 7022 -7022 7023 -7023 7024 -7024 7025 -7025 7026 -7026 7027 -7027 7028 -7028 7029 -7029 7030 -7030 7031 -7031 7032 -7032 7033 -7033 7034 -7034 7035 -7035 7036 -7036 7037 -7037 7038 -7038 7039 -7039 7040 -7040 7041 -7041 7042 -7042 7043 -7043 7044 -7044 7045 -7045 7046 -7046 7047 -7047 7048 -7048 7049 -7049 7050 -7050 7051 -7051 7052 -7052 7053 -7053 7054 -7054 7055 -7055 7056 -7056 7057 -7057 7058 -7058 7059 -7059 7060 -7060 7061 -7061 7062 -7062 7063 -7063 7064 -7064 7065 -7065 7066 -7066 7067 -7067 7068 -7068 7069 -7069 7070 -7070 7071 -7071 7072 -7072 7073 -7073 7074 -7074 7075 -7075 7076 -7076 7077 -7077 7078 -7078 7079 -7079 7080 -7080 7081 -7081 7082 -7082 7083 -7083 7084 -7084 7085 -7085 7086 -7086 7087 -7087 7088 -7088 7089 -7089 7090 -7090 7091 -7091 7092 -7092 7093 -7093 7094 -7094 7095 -7095 7096 -7096 7097 -7097 7098 -7098 7099 -7099 7100 -7100 7101 -7101 7102 -7102 7103 -7103 7104 -7104 7105 -7105 7106 -7106 7107 -7107 7108 -7108 7109 -7109 7110 -7110 7111 -7111 7112 -7112 7113 -7113 7114 -7114 7115 -7115 7116 -7116 7117 -7117 7118 -7118 7119 -7119 7120 -7120 7121 -7121 7122 -7122 7123 -7123 7124 -7124 7125 -7125 7126 -7126 7127 -7127 7128 -7128 7129 -7129 7130 -7130 7131 -7131 7132 -7132 7133 -7133 7134 -7134 7135 -7135 7136 -7136 7137 -7137 7138 -7138 7139 -7139 7140 -7140 7141 -7141 7142 -7142 7143 -7143 7144 -7144 7145 -7145 7146 -7146 7147 -7147 7148 -7148 7149 -7149 7150 -7150 7151 -7151 7152 -7152 7153 -7153 7154 -7154 7155 -7155 7156 -7156 7157 -7157 7158 -7158 7159 -7159 7160 -7160 7161 -7161 7162 -7162 7163 -7163 7164 -7164 7165 -7165 7166 -7166 7167 -7167 7168 -7168 7169 -7169 7170 -7170 7171 -7171 7172 -7172 7173 -7173 7174 -7174 7175 -7175 7176 -7176 7177 -7177 7178 -7178 7179 -7179 7180 -7180 7181 -7181 7182 -7182 7183 -7183 7184 -7184 7185 -7185 7186 -7186 7187 -7187 7188 -7188 7189 -7189 7190 -7190 7191 -7191 7192 -7192 7193 -7193 7194 -7194 7195 -7195 7196 -7196 7197 -7197 7198 -7198 7199 -7199 7200 -7200 7201 -7201 7202 -7202 7203 -7203 7204 -7204 7205 -7205 7206 -7206 7207 -7207 7208 -7208 7209 -7209 7210 -7210 7211 -7211 7212 -7212 7213 -7213 7214 -7214 7215 -7215 7216 -7216 7217 -7217 7218 -7218 7219 -7219 7220 -7220 7221 -7221 7222 -7222 7223 -7223 7224 -7224 7225 -7225 7226 -7226 7227 -7227 7228 -7228 7229 -7229 7230 -7230 7231 -7231 7232 -7232 7233 -7233 7234 -7234 7235 -7235 7236 -7236 7237 -7237 7238 -7238 7239 -7239 7240 -7240 7241 -7241 7242 -7242 7243 -7243 7244 -7244 7245 -7245 7246 -7246 7247 -7247 7248 -7248 7249 -7249 7250 -7250 7251 -7251 7252 -7252 7253 -7253 7254 -7254 7255 -7255 7256 -7256 7257 -7257 7258 -7258 7259 -7259 7260 -7260 7261 -7261 7262 -7262 7263 -7263 7264 -7264 7265 -7265 7266 -7266 7267 -7267 7268 -7268 7269 -7269 7270 -7270 7271 -7271 7272 -7272 7273 -7273 7274 -7274 7275 -7275 7276 -7276 7277 -7277 7278 -7278 7279 -7279 7280 -7280 7281 -7281 7282 -7282 7283 -7283 7284 -7284 7285 -7285 7286 -7286 7287 -7287 7288 -7288 7289 -7289 7290 -7290 7291 -7291 7292 -7292 7293 -7293 7294 -7294 7295 -7295 7296 -7296 7297 -7297 7298 -7298 7299 -7299 7300 -7300 7301 -7301 7302 -7302 7303 -7303 7304 -7304 7305 -7305 7306 -7306 7307 -7307 7308 -7308 7309 -7309 7310 -7310 7311 -7311 7312 -7312 7313 -7313 7314 -7314 7315 -7315 7316 -7316 7317 -7317 7318 -7318 7319 -7319 7320 -7320 7321 -7321 7322 -7322 7323 -7323 7324 -7324 7325 -7325 7326 -7326 7327 -7327 7328 -7328 7329 -7329 7330 -7330 7331 -7331 7332 -7332 7333 -7333 7334 -7334 7335 -7335 7336 -7336 7337 -7337 7338 -7338 7339 -7339 7340 -7340 7341 -7341 7342 -7342 7343 -7343 7344 -7344 7345 -7345 7346 -7346 7347 -7347 7348 -7348 7349 -7349 7350 -7350 7351 -7351 7352 -7352 7353 -7353 7354 -7354 7355 -7355 7356 -7356 7357 -7357 7358 -7358 7359 -7359 7360 -7360 7361 -7361 7362 -7362 7363 -7363 7364 -7364 7365 -7365 7366 -7366 7367 -7367 7368 -7368 7369 -7369 7370 -7370 7371 -7371 7372 -7372 7373 -7373 7374 -7374 7375 -7375 7376 -7376 7377 -7377 7378 -7378 7379 -7379 7380 -7380 7381 -7381 7382 -7382 7383 -7383 7384 -7384 7385 -7385 7386 -7386 7387 -7387 7388 -7388 7389 -7389 7390 -7390 7391 -7391 7392 -7392 7393 -7393 7394 -7394 7395 -7395 7396 -7396 7397 -7397 7398 -7398 7399 -7399 7400 -7400 7401 -7401 7402 -7402 7403 -7403 7404 -7404 7405 -7405 7406 -7406 7407 -7407 7408 -7408 7409 -7409 7410 -7410 7411 -7411 7412 -7412 7413 -7413 7414 -7414 7415 -7415 7416 -7416 7417 -7417 7418 -7418 7419 -7419 7420 -7420 7421 -7421 7422 -7422 7423 -7423 7424 -7424 7425 -7425 7426 -7426 7427 -7427 7428 -7428 7429 -7429 7430 -7430 7431 -7431 7432 -7432 7433 -7433 7434 -7434 7435 -7435 7436 -7436 7437 -7437 7438 -7438 7439 -7439 7440 -7440 7441 -7441 7442 -7442 7443 -7443 7444 -7444 7445 -7445 7446 -7446 7447 -7447 7448 -7448 7449 -7449 7450 -7450 7451 -7451 7452 -7452 7453 -7453 7454 -7454 7455 -7455 7456 -7456 7457 -7457 7458 -7458 7459 -7459 7460 -7460 7461 -7461 7462 -7462 7463 -7463 7464 -7464 7465 -7465 7466 -7466 7467 -7467 7468 -7468 7469 -7469 7470 -7470 7471 -7471 7472 -7472 7473 -7473 7474 -7474 7475 -7475 7476 -7476 7477 -7477 7478 -7478 7479 -7479 7480 -7480 7481 -7481 7482 -7482 7483 -7483 7484 -7484 7485 -7485 7486 -7486 7487 -7487 7488 -7488 7489 -7489 7490 -7490 7491 -7491 7492 -7492 7493 -7493 7494 -7494 7495 -7495 7496 -7496 7497 -7497 7498 -7498 7499 -7499 7500 -7500 7501 -7501 7502 -7502 7503 -7503 7504 -7504 7505 -7505 7506 -7506 7507 -7507 7508 -7508 7509 -7509 7510 -7510 7511 -7511 7512 -7512 7513 -7513 7514 -7514 7515 -7515 7516 -7516 7517 -7517 7518 -7518 7519 -7519 7520 -7520 7521 -7521 7522 -7522 7523 -7523 7524 -7524 7525 -7525 7526 -7526 7527 -7527 7528 -7528 7529 -7529 7530 -7530 7531 -7531 7532 -7532 7533 -7533 7534 -7534 7535 -7535 7536 -7536 7537 -7537 7538 -7538 7539 -7539 7540 -7540 7541 -7541 7542 -7542 7543 -7543 7544 -7544 7545 -7545 7546 -7546 7547 -7547 7548 -7548 7549 -7549 7550 -7550 7551 -7551 7552 -7552 7553 -7553 7554 -7554 7555 -7555 7556 -7556 7557 -7557 7558 -7558 7559 -7559 7560 -7560 7561 -7561 7562 -7562 7563 -7563 7564 -7564 7565 -7565 7566 -7566 7567 -7567 7568 -7568 7569 -7569 7570 -7570 7571 -7571 7572 -7572 7573 -7573 7574 -7574 7575 -7575 7576 -7576 7577 -7577 7578 -7578 7579 -7579 7580 -7580 7581 -7581 7582 -7582 7583 -7583 7584 -7584 7585 -7585 7586 -7586 7587 -7587 7588 -7588 7589 -7589 7590 -7590 7591 -7591 7592 -7592 7593 -7593 7594 -7594 7595 -7595 7596 -7596 7597 -7597 7598 -7598 7599 -7599 7600 -7600 7601 -7601 7602 -7602 7603 -7603 7604 -7604 7605 -7605 7606 -7606 7607 -7607 7608 -7608 7609 -7609 7610 -7610 7611 -7611 7612 -7612 7613 -7613 7614 -7614 7615 -7615 7616 -7616 7617 -7617 7618 -7618 7619 -7619 7620 -7620 7621 -7621 7622 -7622 7623 -7623 7624 -7624 7625 -7625 7626 -7626 7627 -7627 7628 -7628 7629 -7629 7630 -7630 7631 -7631 7632 -7632 7633 -7633 7634 -7634 7635 -7635 7636 -7636 7637 -7637 7638 -7638 7639 -7639 7640 -7640 7641 -7641 7642 -7642 7643 -7643 7644 -7644 7645 -7645 7646 -7646 7647 -7647 7648 -7648 7649 -7649 7650 -7650 7651 -7651 7652 -7652 7653 -7653 7654 -7654 7655 -7655 7656 -7656 7657 -7657 7658 -7658 7659 -7659 7660 -7660 7661 -7661 7662 -7662 7663 -7663 7664 -7664 7665 -7665 7666 -7666 7667 -7667 7668 -7668 7669 -7669 7670 -7670 7671 -7671 7672 -7672 7673 -7673 7674 -7674 7675 -7675 7676 -7676 7677 -7677 7678 -7678 7679 -7679 7680 -7680 7681 -7681 7682 -7682 7683 -7683 7684 -7684 7685 -7685 7686 -7686 7687 -7687 7688 -7688 7689 -7689 7690 -7690 7691 -7691 7692 -7692 7693 -7693 7694 -7694 7695 -7695 7696 -7696 7697 -7697 7698 -7698 7699 -7699 7700 -7700 7701 -7701 7702 -7702 7703 -7703 7704 -7704 7705 -7705 7706 -7706 7707 -7707 7708 -7708 7709 -7709 7710 -7710 7711 -7711 7712 -7712 7713 -7713 7714 -7714 7715 -7715 7716 -7716 7717 -7717 7718 -7718 7719 -7719 7720 -7720 7721 -7721 7722 -7722 7723 -7723 7724 -7724 7725 -7725 7726 -7726 7727 -7727 7728 -7728 7729 -7729 7730 -7730 7731 -7731 7732 -7732 7733 -7733 7734 -7734 7735 -7735 7736 -7736 7737 -7737 7738 -7738 7739 -7739 7740 -7740 7741 -7741 7742 -7742 7743 -7743 7744 -7744 7745 -7745 7746 -7746 7747 -7747 7748 -7748 7749 -7749 7750 -7750 7751 -7751 7752 -7752 7753 -7753 7754 -7754 7755 -7755 7756 -7756 7757 -7757 7758 -7758 7759 -7759 7760 -7760 7761 -7761 7762 -7762 7763 -7763 7764 -7764 7765 -7765 7766 -7766 7767 -7767 7768 -7768 7769 -7769 7770 -7770 7771 -7771 7772 -7772 7773 -7773 7774 -7774 7775 -7775 7776 -7776 7777 -7777 7778 -7778 7779 -7779 7780 -7780 7781 -7781 7782 -7782 7783 -7783 7784 -7784 7785 -7785 7786 -7786 7787 -7787 7788 -7788 7789 -7789 7790 -7790 7791 -7791 7792 -7792 7793 -7793 7794 -7794 7795 -7795 7796 -7796 7797 -7797 7798 -7798 7799 -7799 7800 -7800 7801 -7801 7802 -7802 7803 -7803 7804 -7804 7805 -7805 7806 -7806 7807 -7807 7808 -7808 7809 -7809 7810 -7810 7811 -7811 7812 -7812 7813 -7813 7814 -7814 7815 -7815 7816 -7816 7817 -7817 7818 -7818 7819 -7819 7820 -7820 7821 -7821 7822 -7822 7823 -7823 7824 -7824 7825 -7825 7826 -7826 7827 -7827 7828 -7828 7829 -7829 7830 -7830 7831 -7831 7832 -7832 7833 -7833 7834 -7834 7835 -7835 7836 -7836 7837 -7837 7838 -7838 7839 -7839 7840 -7840 7841 -7841 7842 -7842 7843 -7843 7844 -7844 7845 -7845 7846 -7846 7847 -7847 7848 -7848 7849 -7849 7850 -7850 7851 -7851 7852 -7852 7853 -7853 7854 -7854 7855 -7855 7856 -7856 7857 -7857 7858 -7858 7859 -7859 7860 -7860 7861 -7861 7862 -7862 7863 -7863 7864 -7864 7865 -7865 7866 -7866 7867 -7867 7868 -7868 7869 -7869 7870 -7870 7871 -7871 7872 -7872 7873 -7873 7874 -7874 7875 -7875 7876 -7876 7877 -7877 7878 -7878 7879 -7879 7880 -7880 7881 -7881 7882 -7882 7883 -7883 7884 -7884 7885 -7885 7886 -7886 7887 -7887 7888 -7888 7889 -7889 7890 -7890 7891 -7891 7892 -7892 7893 -7893 7894 -7894 7895 -7895 7896 -7896 7897 -7897 7898 -7898 7899 -7899 7900 -7900 7901 -7901 7902 -7902 7903 -7903 7904 -7904 7905 -7905 7906 -7906 7907 -7907 7908 -7908 7909 -7909 7910 -7910 7911 -7911 7912 -7912 7913 -7913 7914 -7914 7915 -7915 7916 -7916 7917 -7917 7918 -7918 7919 -7919 7920 -7920 7921 -7921 7922 -7922 7923 -7923 7924 -7924 7925 -7925 7926 -7926 7927 -7927 7928 -7928 7929 -7929 7930 -7930 7931 -7931 7932 -7932 7933 -7933 7934 -7934 7935 -7935 7936 -7936 7937 -7937 7938 -7938 7939 -7939 7940 -7940 7941 -7941 7942 -7942 7943 -7943 7944 -7944 7945 -7945 7946 -7946 7947 -7947 7948 -7948 7949 -7949 7950 -7950 7951 -7951 7952 -7952 7953 -7953 7954 -7954 7955 -7955 7956 -7956 7957 -7957 7958 -7958 7959 -7959 7960 -7960 7961 -7961 7962 -7962 7963 -7963 7964 -7964 7965 -7965 7966 -7966 7967 -7967 7968 -7968 7969 -7969 7970 -7970 7971 -7971 7972 -7972 7973 -7973 7974 -7974 7975 -7975 7976 -7976 7977 -7977 7978 -7978 7979 -7979 7980 -7980 7981 -7981 7982 -7982 7983 -7983 7984 -7984 7985 -7985 7986 -7986 7987 -7987 7988 -7988 7989 -7989 7990 -7990 7991 -7991 7992 -7992 7993 -7993 7994 -7994 7995 -7995 7996 -7996 7997 -7997 7998 -7998 7999 -7999 8000 -8000 8001 -8001 8002 -8002 8003 -8003 8004 -8004 8005 -8005 8006 -8006 8007 -8007 8008 -8008 8009 -8009 8010 -8010 8011 -8011 8012 -8012 8013 -8013 8014 -8014 8015 -8015 8016 -8016 8017 -8017 8018 -8018 8019 -8019 8020 -8020 8021 -8021 8022 -8022 8023 -8023 8024 -8024 8025 -8025 8026 -8026 8027 -8027 8028 -8028 8029 -8029 8030 -8030 8031 -8031 8032 -8032 8033 -8033 8034 -8034 8035 -8035 8036 -8036 8037 -8037 8038 -8038 8039 -8039 8040 -8040 8041 -8041 8042 -8042 8043 -8043 8044 -8044 8045 -8045 8046 -8046 8047 -8047 8048 -8048 8049 -8049 8050 -8050 8051 -8051 8052 -8052 8053 -8053 8054 -8054 8055 -8055 8056 -8056 8057 -8057 8058 -8058 8059 -8059 8060 -8060 8061 -8061 8062 -8062 8063 -8063 8064 -8064 8065 -8065 8066 -8066 8067 -8067 8068 -8068 8069 -8069 8070 -8070 8071 -8071 8072 -8072 8073 -8073 8074 -8074 8075 -8075 8076 -8076 8077 -8077 8078 -8078 8079 -8079 8080 -8080 8081 -8081 8082 -8082 8083 -8083 8084 -8084 8085 -8085 8086 -8086 8087 -8087 8088 -8088 8089 -8089 8090 -8090 8091 -8091 8092 -8092 8093 -8093 8094 -8094 8095 -8095 8096 -8096 8097 -8097 8098 -8098 8099 -8099 8100 -8100 8101 -8101 8102 -8102 8103 -8103 8104 -8104 8105 -8105 8106 -8106 8107 -8107 8108 -8108 8109 -8109 8110 -8110 8111 -8111 8112 -8112 8113 -8113 8114 -8114 8115 -8115 8116 -8116 8117 -8117 8118 -8118 8119 -8119 8120 -8120 8121 -8121 8122 -8122 8123 -8123 8124 -8124 8125 -8125 8126 -8126 8127 -8127 8128 -8128 8129 -8129 8130 -8130 8131 -8131 8132 -8132 8133 -8133 8134 -8134 8135 -8135 8136 -8136 8137 -8137 8138 -8138 8139 -8139 8140 -8140 8141 -8141 8142 -8142 8143 -8143 8144 -8144 8145 -8145 8146 -8146 8147 -8147 8148 -8148 8149 -8149 8150 -8150 8151 -8151 8152 -8152 8153 -8153 8154 -8154 8155 -8155 8156 -8156 8157 -8157 8158 -8158 8159 -8159 8160 -8160 8161 -8161 8162 -8162 8163 -8163 8164 -8164 8165 -8165 8166 -8166 8167 -8167 8168 -8168 8169 -8169 8170 -8170 8171 -8171 8172 -8172 8173 -8173 8174 -8174 8175 -8175 8176 -8176 8177 -8177 8178 -8178 8179 -8179 8180 -8180 8181 -8181 8182 -8182 8183 -8183 8184 -8184 8185 -8185 8186 -8186 8187 -8187 8188 -8188 8189 -8189 8190 -8190 8191 -8191 8192 -8192 8193 -8193 8194 -8194 8195 -8195 8196 -8196 8197 -8197 8198 -8198 8199 -8199 8200 -8200 8201 -8201 8202 -8202 8203 -8203 8204 -8204 8205 -8205 8206 -8206 8207 -8207 8208 -8208 8209 -8209 8210 -8210 8211 -8211 8212 -8212 8213 -8213 8214 -8214 8215 -8215 8216 -8216 8217 -8217 8218 -8218 8219 -8219 8220 -8220 8221 -8221 8222 -8222 8223 -8223 8224 -8224 8225 -8225 8226 -8226 8227 -8227 8228 -8228 8229 -8229 8230 -8230 8231 -8231 8232 -8232 8233 -8233 8234 -8234 8235 -8235 8236 -8236 8237 -8237 8238 -8238 8239 -8239 8240 -8240 8241 -8241 8242 -8242 8243 -8243 8244 -8244 8245 -8245 8246 -8246 8247 -8247 8248 -8248 8249 -8249 8250 -8250 8251 -8251 8252 -8252 8253 -8253 8254 -8254 8255 -8255 8256 -8256 8257 -8257 8258 -8258 8259 -8259 8260 -8260 8261 -8261 8262 -8262 8263 -8263 8264 -8264 8265 -8265 8266 -8266 8267 -8267 8268 -8268 8269 -8269 8270 -8270 8271 -8271 8272 -8272 8273 -8273 8274 -8274 8275 -8275 8276 -8276 8277 -8277 8278 -8278 8279 -8279 8280 -8280 8281 -8281 8282 -8282 8283 -8283 8284 -8284 8285 -8285 8286 -8286 8287 -8287 8288 -8288 8289 -8289 8290 -8290 8291 -8291 8292 -8292 8293 -8293 8294 -8294 8295 -8295 8296 -8296 8297 -8297 8298 -8298 8299 -8299 8300 -8300 8301 -8301 8302 -8302 8303 -8303 8304 -8304 8305 -8305 8306 -8306 8307 -8307 8308 -8308 8309 -8309 8310 -8310 8311 -8311 8312 -8312 8313 -8313 8314 -8314 8315 -8315 8316 -8316 8317 -8317 8318 -8318 8319 -8319 8320 -8320 8321 -8321 8322 -8322 8323 -8323 8324 -8324 8325 -8325 8326 -8326 8327 -8327 8328 -8328 8329 -8329 8330 -8330 8331 -8331 8332 -8332 8333 -8333 8334 -8334 8335 -8335 8336 -8336 8337 -8337 8338 -8338 8339 -8339 8340 -8340 8341 -8341 8342 -8342 8343 -8343 8344 -8344 8345 -8345 8346 -8346 8347 -8347 8348 -8348 8349 -8349 8350 -8350 8351 -8351 8352 -8352 8353 -8353 8354 -8354 8355 -8355 8356 -8356 8357 -8357 8358 -8358 8359 -8359 8360 -8360 8361 -8361 8362 -8362 8363 -8363 8364 -8364 8365 -8365 8366 -8366 8367 -8367 8368 -8368 8369 -8369 8370 -8370 8371 -8371 8372 -8372 8373 -8373 8374 -8374 8375 -8375 8376 -8376 8377 -8377 8378 -8378 8379 -8379 8380 -8380 8381 -8381 8382 -8382 8383 -8383 8384 -8384 8385 -8385 8386 -8386 8387 -8387 8388 -8388 8389 -8389 8390 -8390 8391 -8391 8392 -8392 8393 -8393 8394 -8394 8395 -8395 8396 -8396 8397 -8397 8398 -8398 8399 -8399 8400 -8400 8401 -8401 8402 -8402 8403 -8403 8404 -8404 8405 -8405 8406 -8406 8407 -8407 8408 -8408 8409 -8409 8410 -8410 8411 -8411 8412 -8412 8413 -8413 8414 -8414 8415 -8415 8416 -8416 8417 -8417 8418 -8418 8419 -8419 8420 -8420 8421 -8421 8422 -8422 8423 -8423 8424 -8424 8425 -8425 8426 -8426 8427 -8427 8428 -8428 8429 -8429 8430 -8430 8431 -8431 8432 -8432 8433 -8433 8434 -8434 8435 -8435 8436 -8436 8437 -8437 8438 -8438 8439 -8439 8440 -8440 8441 -8441 8442 -8442 8443 -8443 8444 -8444 8445 -8445 8446 -8446 8447 -8447 8448 -8448 8449 -8449 8450 -8450 8451 -8451 8452 -8452 8453 -8453 8454 -8454 8455 -8455 8456 -8456 8457 -8457 8458 -8458 8459 -8459 8460 -8460 8461 -8461 8462 -8462 8463 -8463 8464 -8464 8465 -8465 8466 -8466 8467 -8467 8468 -8468 8469 -8469 8470 -8470 8471 -8471 8472 -8472 8473 -8473 8474 -8474 8475 -8475 8476 -8476 8477 -8477 8478 -8478 8479 -8479 8480 -8480 8481 -8481 8482 -8482 8483 -8483 8484 -8484 8485 -8485 8486 -8486 8487 -8487 8488 -8488 8489 -8489 8490 -8490 8491 -8491 8492 -8492 8493 -8493 8494 -8494 8495 -8495 8496 -8496 8497 -8497 8498 -8498 8499 -8499 8500 -8500 8501 -8501 8502 -8502 8503 -8503 8504 -8504 8505 -8505 8506 -8506 8507 -8507 8508 -8508 8509 -8509 8510 -8510 8511 -8511 8512 -8512 8513 -8513 8514 -8514 8515 -8515 8516 -8516 8517 -8517 8518 -8518 8519 -8519 8520 -8520 8521 -8521 8522 -8522 8523 -8523 8524 -8524 8525 -8525 8526 -8526 8527 -8527 8528 -8528 8529 -8529 8530 -8530 8531 -8531 8532 -8532 8533 -8533 8534 -8534 8535 -8535 8536 -8536 8537 -8537 8538 -8538 8539 -8539 8540 -8540 8541 -8541 8542 -8542 8543 -8543 8544 -8544 8545 -8545 8546 -8546 8547 -8547 8548 -8548 8549 -8549 8550 -8550 8551 -8551 8552 -8552 8553 -8553 8554 -8554 8555 -8555 8556 -8556 8557 -8557 8558 -8558 8559 -8559 8560 -8560 8561 -8561 8562 -8562 8563 -8563 8564 -8564 8565 -8565 8566 -8566 8567 -8567 8568 -8568 8569 -8569 8570 -8570 8571 -8571 8572 -8572 8573 -8573 8574 -8574 8575 -8575 8576 -8576 8577 -8577 8578 -8578 8579 -8579 8580 -8580 8581 -8581 8582 -8582 8583 -8583 8584 -8584 8585 -8585 8586 -8586 8587 -8587 8588 -8588 8589 -8589 8590 -8590 8591 -8591 8592 -8592 8593 -8593 8594 -8594 8595 -8595 8596 -8596 8597 -8597 8598 -8598 8599 -8599 8600 -8600 8601 -8601 8602 -8602 8603 -8603 8604 -8604 8605 -8605 8606 -8606 8607 -8607 8608 -8608 8609 -8609 8610 -8610 8611 -8611 8612 -8612 8613 -8613 8614 -8614 8615 -8615 8616 -8616 8617 -8617 8618 -8618 8619 -8619 8620 -8620 8621 -8621 8622 -8622 8623 -8623 8624 -8624 8625 -8625 8626 -8626 8627 -8627 8628 -8628 8629 -8629 8630 -8630 8631 -8631 8632 -8632 8633 -8633 8634 -8634 8635 -8635 8636 -8636 8637 -8637 8638 -8638 8639 -8639 8640 -8640 8641 -8641 8642 -8642 8643 -8643 8644 -8644 8645 -8645 8646 -8646 8647 -8647 8648 -8648 8649 -8649 8650 -8650 8651 -8651 8652 -8652 8653 -8653 8654 -8654 8655 -8655 8656 -8656 8657 -8657 8658 -8658 8659 -8659 8660 -8660 8661 -8661 8662 -8662 8663 -8663 8664 -8664 8665 -8665 8666 -8666 8667 -8667 8668 -8668 8669 -8669 8670 -8670 8671 -8671 8672 -8672 8673 -8673 8674 -8674 8675 -8675 8676 -8676 8677 -8677 8678 -8678 8679 -8679 8680 -8680 8681 -8681 8682 -8682 8683 -8683 8684 -8684 8685 -8685 8686 -8686 8687 -8687 8688 -8688 8689 -8689 8690 -8690 8691 -8691 8692 -8692 8693 -8693 8694 -8694 8695 -8695 8696 -8696 8697 -8697 8698 -8698 8699 -8699 8700 -8700 8701 -8701 8702 -8702 8703 -8703 8704 -8704 8705 -8705 8706 -8706 8707 -8707 8708 -8708 8709 -8709 8710 -8710 8711 -8711 8712 -8712 8713 -8713 8714 -8714 8715 -8715 8716 -8716 8717 -8717 8718 -8718 8719 -8719 8720 -8720 8721 -8721 8722 -8722 8723 -8723 8724 -8724 8725 -8725 8726 -8726 8727 -8727 8728 -8728 8729 -8729 8730 -8730 8731 -8731 8732 -8732 8733 -8733 8734 -8734 8735 -8735 8736 -8736 8737 -8737 8738 -8738 8739 -8739 8740 -8740 8741 -8741 8742 -8742 8743 -8743 8744 -8744 8745 -8745 8746 -8746 8747 -8747 8748 -8748 8749 -8749 8750 -8750 8751 -8751 8752 -8752 8753 -8753 8754 -8754 8755 -8755 8756 -8756 8757 -8757 8758 -8758 8759 -8759 8760 -8760 8761 -8761 8762 -8762 8763 -8763 8764 -8764 8765 -8765 8766 -8766 8767 -8767 8768 -8768 8769 -8769 8770 -8770 8771 -8771 8772 -8772 8773 -8773 8774 -8774 8775 -8775 8776 -8776 8777 -8777 8778 -8778 8779 -8779 8780 -8780 8781 -8781 8782 -8782 8783 -8783 8784 -8784 8785 -8785 8786 -8786 8787 -8787 8788 -8788 8789 -8789 8790 -8790 8791 -8791 8792 -8792 8793 -8793 8794 -8794 8795 -8795 8796 -8796 8797 -8797 8798 -8798 8799 -8799 8800 -8800 8801 -8801 8802 -8802 8803 -8803 8804 -8804 8805 -8805 8806 -8806 8807 -8807 8808 -8808 8809 -8809 8810 -8810 8811 -8811 8812 -8812 8813 -8813 8814 -8814 8815 -8815 8816 -8816 8817 -8817 8818 -8818 8819 -8819 8820 -8820 8821 -8821 8822 -8822 8823 -8823 8824 -8824 8825 -8825 8826 -8826 8827 -8827 8828 -8828 8829 -8829 8830 -8830 8831 -8831 8832 -8832 8833 -8833 8834 -8834 8835 -8835 8836 -8836 8837 -8837 8838 -8838 8839 -8839 8840 -8840 8841 -8841 8842 -8842 8843 -8843 8844 -8844 8845 -8845 8846 -8846 8847 -8847 8848 -8848 8849 -8849 8850 -8850 8851 -8851 8852 -8852 8853 -8853 8854 -8854 8855 -8855 8856 -8856 8857 -8857 8858 -8858 8859 -8859 8860 -8860 8861 -8861 8862 -8862 8863 -8863 8864 -8864 8865 -8865 8866 -8866 8867 -8867 8868 -8868 8869 -8869 8870 -8870 8871 -8871 8872 -8872 8873 -8873 8874 -8874 8875 -8875 8876 -8876 8877 -8877 8878 -8878 8879 -8879 8880 -8880 8881 -8881 8882 -8882 8883 -8883 8884 -8884 8885 -8885 8886 -8886 8887 -8887 8888 -8888 8889 -8889 8890 -8890 8891 -8891 8892 -8892 8893 -8893 8894 -8894 8895 -8895 8896 -8896 8897 -8897 8898 -8898 8899 -8899 8900 -8900 8901 -8901 8902 -8902 8903 -8903 8904 -8904 8905 -8905 8906 -8906 8907 -8907 8908 -8908 8909 -8909 8910 -8910 8911 -8911 8912 -8912 8913 -8913 8914 -8914 8915 -8915 8916 -8916 8917 -8917 8918 -8918 8919 -8919 8920 -8920 8921 -8921 8922 -8922 8923 -8923 8924 -8924 8925 -8925 8926 -8926 8927 -8927 8928 -8928 8929 -8929 8930 -8930 8931 -8931 8932 -8932 8933 -8933 8934 -8934 8935 -8935 8936 -8936 8937 -8937 8938 -8938 8939 -8939 8940 -8940 8941 -8941 8942 -8942 8943 -8943 8944 -8944 8945 -8945 8946 -8946 8947 -8947 8948 -8948 8949 -8949 8950 -8950 8951 -8951 8952 -8952 8953 -8953 8954 -8954 8955 -8955 8956 -8956 8957 -8957 8958 -8958 8959 -8959 8960 -8960 8961 -8961 8962 -8962 8963 -8963 8964 -8964 8965 -8965 8966 -8966 8967 -8967 8968 -8968 8969 -8969 8970 -8970 8971 -8971 8972 -8972 8973 -8973 8974 -8974 8975 -8975 8976 -8976 8977 -8977 8978 -8978 8979 -8979 8980 -8980 8981 -8981 8982 -8982 8983 -8983 8984 -8984 8985 -8985 8986 -8986 8987 -8987 8988 -8988 8989 -8989 8990 -8990 8991 -8991 8992 -8992 8993 -8993 8994 -8994 8995 -8995 8996 -8996 8997 -8997 8998 -8998 8999 -8999 9000 -9000 9001 -9001 9002 -9002 9003 -9003 9004 -9004 9005 -9005 9006 -9006 9007 -9007 9008 -9008 9009 -9009 9010 -9010 9011 -9011 9012 -9012 9013 -9013 9014 -9014 9015 -9015 9016 -9016 9017 -9017 9018 -9018 9019 -9019 9020 -9020 9021 -9021 9022 -9022 9023 -9023 9024 -9024 9025 -9025 9026 -9026 9027 -9027 9028 -9028 9029 -9029 9030 -9030 9031 -9031 9032 -9032 9033 -9033 9034 -9034 9035 -9035 9036 -9036 9037 -9037 9038 -9038 9039 -9039 9040 -9040 9041 -9041 9042 -9042 9043 -9043 9044 -9044 9045 -9045 9046 -9046 9047 -9047 9048 -9048 9049 -9049 9050 -9050 9051 -9051 9052 -9052 9053 -9053 9054 -9054 9055 -9055 9056 -9056 9057 -9057 9058 -9058 9059 -9059 9060 -9060 9061 -9061 9062 -9062 9063 -9063 9064 -9064 9065 -9065 9066 -9066 9067 -9067 9068 -9068 9069 -9069 9070 -9070 9071 -9071 9072 -9072 9073 -9073 9074 -9074 9075 -9075 9076 -9076 9077 -9077 9078 -9078 9079 -9079 9080 -9080 9081 -9081 9082 -9082 9083 -9083 9084 -9084 9085 -9085 9086 -9086 9087 -9087 9088 -9088 9089 -9089 9090 -9090 9091 -9091 9092 -9092 9093 -9093 9094 -9094 9095 -9095 9096 -9096 9097 -9097 9098 -9098 9099 -9099 9100 -9100 9101 -9101 9102 -9102 9103 -9103 9104 -9104 9105 -9105 9106 -9106 9107 -9107 9108 -9108 9109 -9109 9110 -9110 9111 -9111 9112 -9112 9113 -9113 9114 -9114 9115 -9115 9116 -9116 9117 -9117 9118 -9118 9119 -9119 9120 -9120 9121 -9121 9122 -9122 9123 -9123 9124 -9124 9125 -9125 9126 -9126 9127 -9127 9128 -9128 9129 -9129 9130 -9130 9131 -9131 9132 -9132 9133 -9133 9134 -9134 9135 -9135 9136 -9136 9137 -9137 9138 -9138 9139 -9139 9140 -9140 9141 -9141 9142 -9142 9143 -9143 9144 -9144 9145 -9145 9146 -9146 9147 -9147 9148 -9148 9149 -9149 9150 -9150 9151 -9151 9152 -9152 9153 -9153 9154 -9154 9155 -9155 9156 -9156 9157 -9157 9158 -9158 9159 -9159 9160 -9160 9161 -9161 9162 -9162 9163 -9163 9164 -9164 9165 -9165 9166 -9166 9167 -9167 9168 -9168 9169 -9169 9170 -9170 9171 -9171 9172 -9172 9173 -9173 9174 -9174 9175 -9175 9176 -9176 9177 -9177 9178 -9178 9179 -9179 9180 -9180 9181 -9181 9182 -9182 9183 -9183 9184 -9184 9185 -9185 9186 -9186 9187 -9187 9188 -9188 9189 -9189 9190 -9190 9191 -9191 9192 -9192 9193 -9193 9194 -9194 9195 -9195 9196 -9196 9197 -9197 9198 -9198 9199 -9199 9200 -9200 9201 -9201 9202 -9202 9203 -9203 9204 -9204 9205 -9205 9206 -9206 9207 -9207 9208 -9208 9209 -9209 9210 -9210 9211 -9211 9212 -9212 9213 -9213 9214 -9214 9215 -9215 9216 -9216 9217 -9217 9218 -9218 9219 -9219 9220 -9220 9221 -9221 9222 -9222 9223 -9223 9224 -9224 9225 -9225 9226 -9226 9227 -9227 9228 -9228 9229 -9229 9230 -9230 9231 -9231 9232 -9232 9233 -9233 9234 -9234 9235 -9235 9236 -9236 9237 -9237 9238 -9238 9239 -9239 9240 -9240 9241 -9241 9242 -9242 9243 -9243 9244 -9244 9245 -9245 9246 -9246 9247 -9247 9248 -9248 9249 -9249 9250 -9250 9251 -9251 9252 -9252 9253 -9253 9254 -9254 9255 -9255 9256 -9256 9257 -9257 9258 -9258 9259 -9259 9260 -9260 9261 -9261 9262 -9262 9263 -9263 9264 -9264 9265 -9265 9266 -9266 9267 -9267 9268 -9268 9269 -9269 9270 -9270 9271 -9271 9272 -9272 9273 -9273 9274 -9274 9275 -9275 9276 -9276 9277 -9277 9278 -9278 9279 -9279 9280 -9280 9281 -9281 9282 -9282 9283 -9283 9284 -9284 9285 -9285 9286 -9286 9287 -9287 9288 -9288 9289 -9289 9290 -9290 9291 -9291 9292 -9292 9293 -9293 9294 -9294 9295 -9295 9296 -9296 9297 -9297 9298 -9298 9299 -9299 9300 -9300 9301 -9301 9302 -9302 9303 -9303 9304 -9304 9305 -9305 9306 -9306 9307 -9307 9308 -9308 9309 -9309 9310 -9310 9311 -9311 9312 -9312 9313 -9313 9314 -9314 9315 -9315 9316 -9316 9317 -9317 9318 -9318 9319 -9319 9320 -9320 9321 -9321 9322 -9322 9323 -9323 9324 -9324 9325 -9325 9326 -9326 9327 -9327 9328 -9328 9329 -9329 9330 -9330 9331 -9331 9332 -9332 9333 -9333 9334 -9334 9335 -9335 9336 -9336 9337 -9337 9338 -9338 9339 -9339 9340 -9340 9341 -9341 9342 -9342 9343 -9343 9344 -9344 9345 -9345 9346 -9346 9347 -9347 9348 -9348 9349 -9349 9350 -9350 9351 -9351 9352 -9352 9353 -9353 9354 -9354 9355 -9355 9356 -9356 9357 -9357 9358 -9358 9359 -9359 9360 -9360 9361 -9361 9362 -9362 9363 -9363 9364 -9364 9365 -9365 9366 -9366 9367 -9367 9368 -9368 9369 -9369 9370 -9370 9371 -9371 9372 -9372 9373 -9373 9374 -9374 9375 -9375 9376 -9376 9377 -9377 9378 -9378 9379 -9379 9380 -9380 9381 -9381 9382 -9382 9383 -9383 9384 -9384 9385 -9385 9386 -9386 9387 -9387 9388 -9388 9389 -9389 9390 -9390 9391 -9391 9392 -9392 9393 -9393 9394 -9394 9395 -9395 9396 -9396 9397 -9397 9398 -9398 9399 -9399 9400 -9400 9401 -9401 9402 -9402 9403 -9403 9404 -9404 9405 -9405 9406 -9406 9407 -9407 9408 -9408 9409 -9409 9410 -9410 9411 -9411 9412 -9412 9413 -9413 9414 -9414 9415 -9415 9416 -9416 9417 -9417 9418 -9418 9419 -9419 9420 -9420 9421 -9421 9422 -9422 9423 -9423 9424 -9424 9425 -9425 9426 -9426 9427 -9427 9428 -9428 9429 -9429 9430 -9430 9431 -9431 9432 -9432 9433 -9433 9434 -9434 9435 -9435 9436 -9436 9437 -9437 9438 -9438 9439 -9439 9440 -9440 9441 -9441 9442 -9442 9443 -9443 9444 -9444 9445 -9445 9446 -9446 9447 -9447 9448 -9448 9449 -9449 9450 -9450 9451 -9451 9452 -9452 9453 -9453 9454 -9454 9455 -9455 9456 -9456 9457 -9457 9458 -9458 9459 -9459 9460 -9460 9461 -9461 9462 -9462 9463 -9463 9464 -9464 9465 -9465 9466 -9466 9467 -9467 9468 -9468 9469 -9469 9470 -9470 9471 -9471 9472 -9472 9473 -9473 9474 -9474 9475 -9475 9476 -9476 9477 -9477 9478 -9478 9479 -9479 9480 -9480 9481 -9481 9482 -9482 9483 -9483 9484 -9484 9485 -9485 9486 -9486 9487 -9487 9488 -9488 9489 -9489 9490 -9490 9491 -9491 9492 -9492 9493 -9493 9494 -9494 9495 -9495 9496 -9496 9497 -9497 9498 -9498 9499 -9499 9500 -9500 9501 -9501 9502 -9502 9503 -9503 9504 -9504 9505 -9505 9506 -9506 9507 -9507 9508 -9508 9509 -9509 9510 -9510 9511 -9511 9512 -9512 9513 -9513 9514 -9514 9515 -9515 9516 -9516 9517 -9517 9518 -9518 9519 -9519 9520 -9520 9521 -9521 9522 -9522 9523 -9523 9524 -9524 9525 -9525 9526 -9526 9527 -9527 9528 -9528 9529 -9529 9530 -9530 9531 -9531 9532 -9532 9533 -9533 9534 -9534 9535 -9535 9536 -9536 9537 -9537 9538 -9538 9539 -9539 9540 -9540 9541 -9541 9542 -9542 9543 -9543 9544 -9544 9545 -9545 9546 -9546 9547 -9547 9548 -9548 9549 -9549 9550 -9550 9551 -9551 9552 -9552 9553 -9553 9554 -9554 9555 -9555 9556 -9556 9557 -9557 9558 -9558 9559 -9559 9560 -9560 9561 -9561 9562 -9562 9563 -9563 9564 -9564 9565 -9565 9566 -9566 9567 -9567 9568 -9568 9569 -9569 9570 -9570 9571 -9571 9572 -9572 9573 -9573 9574 -9574 9575 -9575 9576 -9576 9577 -9577 9578 -9578 9579 -9579 9580 -9580 9581 -9581 9582 -9582 9583 -9583 9584 -9584 9585 -9585 9586 -9586 9587 -9587 9588 -9588 9589 -9589 9590 -9590 9591 -9591 9592 -9592 9593 -9593 9594 -9594 9595 -9595 9596 -9596 9597 -9597 9598 -9598 9599 -9599 9600 -9600 9601 -9601 9602 -9602 9603 -9603 9604 -9604 9605 -9605 9606 -9606 9607 -9607 9608 -9608 9609 -9609 9610 -9610 9611 -9611 9612 -9612 9613 -9613 9614 -9614 9615 -9615 9616 -9616 9617 -9617 9618 -9618 9619 -9619 9620 -9620 9621 -9621 9622 -9622 9623 -9623 9624 -9624 9625 -9625 9626 -9626 9627 -9627 9628 -9628 9629 -9629 9630 -9630 9631 -9631 9632 -9632 9633 -9633 9634 -9634 9635 -9635 9636 -9636 9637 -9637 9638 -9638 9639 -9639 9640 -9640 9641 -9641 9642 -9642 9643 -9643 9644 -9644 9645 -9645 9646 -9646 9647 -9647 9648 -9648 9649 -9649 9650 -9650 9651 -9651 9652 -9652 9653 -9653 9654 -9654 9655 -9655 9656 -9656 9657 -9657 9658 -9658 9659 -9659 9660 -9660 9661 -9661 9662 -9662 9663 -9663 9664 -9664 9665 -9665 9666 -9666 9667 -9667 9668 -9668 9669 -9669 9670 -9670 9671 -9671 9672 -9672 9673 -9673 9674 -9674 9675 -9675 9676 -9676 9677 -9677 9678 -9678 9679 -9679 9680 -9680 9681 -9681 9682 -9682 9683 -9683 9684 -9684 9685 -9685 9686 -9686 9687 -9687 9688 -9688 9689 -9689 9690 -9690 9691 -9691 9692 -9692 9693 -9693 9694 -9694 9695 -9695 9696 -9696 9697 -9697 9698 -9698 9699 -9699 9700 -9700 9701 -9701 9702 -9702 9703 -9703 9704 -9704 9705 -9705 9706 -9706 9707 -9707 9708 -9708 9709 -9709 9710 -9710 9711 -9711 9712 -9712 9713 -9713 9714 -9714 9715 -9715 9716 -9716 9717 -9717 9718 -9718 9719 -9719 9720 -9720 9721 -9721 9722 -9722 9723 -9723 9724 -9724 9725 -9725 9726 -9726 9727 -9727 9728 -9728 9729 -9729 9730 -9730 9731 -9731 9732 -9732 9733 -9733 9734 -9734 9735 -9735 9736 -9736 9737 -9737 9738 -9738 9739 -9739 9740 -9740 9741 -9741 9742 -9742 9743 -9743 9744 -9744 9745 -9745 9746 -9746 9747 -9747 9748 -9748 9749 -9749 9750 -9750 9751 -9751 9752 -9752 9753 -9753 9754 -9754 9755 -9755 9756 -9756 9757 -9757 9758 -9758 9759 -9759 9760 -9760 9761 -9761 9762 -9762 9763 -9763 9764 -9764 9765 -9765 9766 -9766 9767 -9767 9768 -9768 9769 -9769 9770 -9770 9771 -9771 9772 -9772 9773 -9773 9774 -9774 9775 -9775 9776 -9776 9777 -9777 9778 -9778 9779 -9779 9780 -9780 9781 -9781 9782 -9782 9783 -9783 9784 -9784 9785 -9785 9786 -9786 9787 -9787 9788 -9788 9789 -9789 9790 -9790 9791 -9791 9792 -9792 9793 -9793 9794 -9794 9795 -9795 9796 -9796 9797 -9797 9798 -9798 9799 -9799 9800 -9800 9801 -9801 9802 -9802 9803 -9803 9804 -9804 9805 -9805 9806 -9806 9807 -9807 9808 -9808 9809 -9809 9810 -9810 9811 -9811 9812 -9812 9813 -9813 9814 -9814 9815 -9815 9816 -9816 9817 -9817 9818 -9818 9819 -9819 9820 -9820 9821 -9821 9822 -9822 9823 -9823 9824 -9824 9825 -9825 9826 -9826 9827 -9827 9828 -9828 9829 -9829 9830 -9830 9831 -9831 9832 -9832 9833 -9833 9834 -9834 9835 -9835 9836 -9836 9837 -9837 9838 -9838 9839 -9839 9840 -9840 9841 -9841 9842 -9842 9843 -9843 9844 -9844 9845 -9845 9846 -9846 9847 -9847 9848 -9848 9849 -9849 9850 -9850 9851 -9851 9852 -9852 9853 -9853 9854 -9854 9855 -9855 9856 -9856 9857 -9857 9858 -9858 9859 -9859 9860 -9860 9861 -9861 9862 -9862 9863 -9863 9864 -9864 9865 -9865 9866 -9866 9867 -9867 9868 -9868 9869 -9869 9870 -9870 9871 -9871 9872 -9872 9873 -9873 9874 -9874 9875 -9875 9876 -9876 9877 -9877 9878 -9878 9879 -9879 9880 -9880 9881 -9881 9882 -9882 9883 -9883 9884 -9884 9885 -9885 9886 -9886 9887 -9887 9888 -9888 9889 -9889 9890 -9890 9891 -9891 9892 -9892 9893 -9893 9894 -9894 9895 -9895 9896 -9896 9897 -9897 9898 -9898 9899 -9899 9900 -9900 9901 -9901 9902 -9902 9903 -9903 9904 -9904 9905 -9905 9906 -9906 9907 -9907 9908 -9908 9909 -9909 9910 -9910 9911 -9911 9912 -9912 9913 -9913 9914 -9914 9915 -9915 9916 -9916 9917 -9917 9918 -9918 9919 -9919 9920 -9920 9921 -9921 9922 -9922 9923 -9923 9924 -9924 9925 -9925 9926 -9926 9927 -9927 9928 -9928 9929 -9929 9930 -9930 9931 -9931 9932 -9932 9933 -9933 9934 -9934 9935 -9935 9936 -9936 9937 -9937 9938 -9938 9939 -9939 9940 -9940 9941 -9941 9942 -9942 9943 -9943 9944 -9944 9945 -9945 9946 -9946 9947 -9947 9948 -9948 9949 -9949 9950 -9950 9951 -9951 9952 -9952 9953 -9953 9954 -9954 9955 -9955 9956 -9956 9957 -9957 9958 -9958 9959 -9959 9960 -9960 9961 -9961 9962 -9962 9963 -9963 9964 -9964 9965 -9965 9966 -9966 9967 -9967 9968 -9968 9969 -9969 9970 -9970 9971 -9971 9972 -9972 9973 -9973 9974 -9974 9975 -9975 9976 -9976 9977 -9977 9978 -9978 9979 -9979 9980 -9980 9981 -9981 9982 -9982 9983 -9983 9984 -9984 9985 -9985 9986 -9986 9987 -9987 9988 -9988 9989 -9989 9990 -9990 9991 -9991 9992 -9992 9993 -9993 9994 -9994 9995 -9995 9996 -9996 9997 -9997 9998 -9998 9999 -9999 0 \ No newline at end of file +10000 10000 +1797859 0 +2169727 1363 +2048979 2575 +1686497 3179 +1062771 2671 +1607162 5049 +1663035 6270 +1685308 7412 +2396260 12045 +2697720 15255 +1858649 11678 +1237959 8556 +999972 7540 +999967 8168 +999961 8796 +1094976 10320 +999949 10053 +1656890 17699 +999936 11309 +1116342 13328 +1887782 23724 +2277185 30048 +1697236 23462 +2623694 37918 +2171941 32755 +2360686 37085 +1455217 23775 +1486475 25220 +1765460 31063 +2527012 46050 +3268824 61623 +3413005 66486 +2673112 53753 +2218020 45996 +3164733 67618 +3936382 86580 +3351760 75828 +4044233 94036 +3705900 88499 +4055743 99404 +4361124 109630 +4094925 105513 +4694649 123918 +4998175 135072 +4655135 128729 +3762381 106407 +3130835 90515 +3216601 95017 +3519303 106172 +4353803 134086 +3990787 125416 +4750010 152263 +4866436 159056 +4997228 166474 +4997122 169613 +4997014 172753 +4996905 175893 +4194966 150303 +3465506 126348 +3305479 122593 +3934021 148379 +3869597 148384 +3068128 119582 +3946806 156312 +3848149 154827 +4718885 192830 +4995701 207286 +4317118 181847 +4285188 183199 +4636052 201117 +3843115 169138 +4362732 194753 +4594191 207978 +4994741 229256 +4994596 232394 +4843522 228415 +4994300 238670 +4740874 229545 +3924733 192501 +4220373 209660 +3699524 186115 +4192462 213555 +3245172 167346 +3444714 179806 +3515050 185692 +3677624 196598 +3592833 194329 +3392054 185607 +3272044 181103 +3771434 211120 +4365902 247149 +4301532 246217 +3755054 217304 +3755150 219677 +2968291 175517 +2783536 166348 +2011147 121457 +1302474 79480 +2055024 126699 +1298085 80850 +998027 62791 +1636768 104009 +2588922 166148 +2792221 180956 +2884703 188770 +2806732 185439 +2543304 169639 +1610353 108428 +2317420 157498 +2763326 189548 +3559371 246399 +3508687 245105 +3697876 260656 +2858450 203292 +3460550 248298 +3629300 262698 +3513185 256513 +4148706 305536 +4357279 323649 +4105765 307561 +4492389 339361 +3791654 288823 +4734978 363672 +3960427 306685 +2998000 234052 +2008754 158092 +2018435 160130 +1023697 81861 +1493009 120334 +1662922 135081 +2129654 174341 +1672215 137951 +1165750 96907 +996510 83469 +1111031 93765 +1695177 144136 +1866332 159870 +2419661 208800 +3338277 290183 +2930060 256553 +3559883 313954 +2773735 246378 +2417626 216278 +2668491 240410 +3213486 291545 +2953762 269853 +3264839 300341 +3151987 291957 +3812860 355588 +3301635 310004 +2377606 224750 +1422151 135334 +1664620 159464 +1145256 110437 +1946462 188932 +2335352 228160 +1726164 169739 +1908468 188876 +1543840 153769 +2108770 211375 +2815288 283981 +2909063 295287 +2179681 222634 +2203890 226506 +2951729 305240 +2448914 254799 +3054189 319715 +3604426 379604 +3519951 372943 +3472562 370129 +4338221 465154 +3766754 406274 +4255329 461676 +4450059 485632 +4970149 545549 +4427238 488772 +4046837 449349 +3111495 347470 +2802563 314754 +2361152 266682 +2034278 231057 +2209237 252336 +1497050 171944 +2068587 238905 +2812904 326658 +1844090 215326 +1558646 182989 +1838707 217040 +2258591 268041 +3018828 360187 +3346206 401380 +2874614 346645 +3833414 464709 +2973372 362345 +2196241 269042 +2735155 336804 +2431526 300966 +2786355 346664 +3112484 389225 +3486218 438187 +3401166 429667 +3164649 401808 +4072031 519617 +3303974 423718 +3604900 464612 +3910554 506504 +3651388 475269 +3065837 401012 +2351071 309024 +2235698 295288 +2051136 272223 +1419548 189307 +1531329 205193 +1148368 154612 +1188767 160812 +1974959 268429 +2129972 290861 +3037075 416676 +3254417 448578 +3026494 419099 +2648092 368395 +2995139 418594 +2438489 342360 +2521839 355678 +2337368 331158 +2961866 421536 +3759140 537415 +3504204 503216 +3272872 472094 +2658103 385122 +2564846 373256 +3454717 504974 +2849700 418368 +3238796 477571 +3421569 506718 +3347614 497915 +2655788 396721 +1956594 293532 +1726034 260052 +1367511 206914 +988652 150226 +1434899 218955 +2335319 357855 +2310307 355508 +2743515 423934 +1870058 290169 +1350221 210377 +1954274 305752 +2840993 446310 +2377874 375087 +1722503 272818 +987590 157055 +987491 157676 +1709287 274028 +1491565 240085 +987192 159537 +1471602 238769 +1942354 316402 +2202442 360190 +1522630 249995 +1639809 270293 +2169337 358976 +3127511 519551 +3345398 557907 +2523847 422528 +1708923 287202 +2507624 423052 +2368479 401108 +3206964 545181 +2543224 433990 +1906683 326600 +2775074 477144 +2382302 411152 +1890999 327584 +1325151 230418 +1854611 323682 +1002241 175568 +1866395 328155 +2513603 443578 +2374067 420492 +2688324 477895 +3236909 577514 +2731032 489028 +3629063 652187 +4379139 789825 +3630948 657237 +3184102 578420 +2392359 436146 +1902828 348136 +1796479 329845 +2184384 402486 +1915680 354220 +2061243 382475 +2288435 426120 +2210939 413127 +2096829 393168 +2265620 426292 +2264702 427592 +2872816 544278 +2269173 431390 +3129778 597037 +3237050 619608 +3413780 655660 +3580906 690092 +3384854 654516 +4174081 809847 +4763246 927262 +4907268 958499 +3945352 773189 +3879609 762837 +3019923 595770 +2246001 444557 +3142536 624063 +3524434 702204 +4459891 891498 +4769407 956485 +4315288 868234 +3915080 790272 +3609739 730999 +3557117 722669 +4273167 870939 +3982315 814265 +4862454 997411 +4378447 900996 +3930978 811491 +2952712 611477 +2149330 446513 +2695916 561831 +2107727 440634 +2587817 542698 +1943648 408882 +978451 206477 +978321 207092 +978191 207707 +1163652 247851 +977929 208936 +977798 209550 +977666 210165 +1516332 326956 +2474948 535283 +1537226 333484 +1175784 255847 +1058769 231081 +976867 213849 +1029262 225997 +976597 215076 +976462 215690 +976326 216303 +976190 216917 +1195957 266539 +1982930 443237 +1806175 404920 +975642 219369 +1099152 247866 +1295200 292931 +1249058 283321 +1084132 246627 +1807471 412373 +1770960 405214 +1018601 233740 +974527 224271 +1605955 370646 +1908578 441753 +974102 226107 +973960 226719 +973817 227331 +1199920 280909 +973531 228555 +1121923 264136 +1197074 282623 +1043152 246975 +1558524 370028 +1133717 269922 +1707969 407778 +1627938 389752 +972370 233445 +972223 234056 +1487912 359194 +1010106 244520 +1749019 424554 +2631138 640429 +2768834 675788 +2316097 566831 +2476073 607632 +1885832 464042 +1926884 475428 +2679356 662875 +2100190 520990 +1535195 381857 +972437 242528 +1497942 374590 +1377629 345423 +969821 243818 +969668 244427 +969514 245037 +1515931 384153 +1691768 429843 +1422540 362389 +1617271 413079 +968739 248081 +1327570 340862 +1816520 467620 +2361892 609596 +2227841 576491 +1426886 370187 +967797 251732 +1189134 310101 +1222998 319753 +1938331 508078 +2729862 717388 +2285532 602157 +2089111 551811 +2402789 636280 +2646619 702628 +3064360 815592 +3930643 1048802 +3386198 905809 +3171412 850489 +3144131 845291 +4088944 1102057 +4222854 1140995 +3539136 958644 +3545970 962887 +3226622 878347 +2397490 654260 +2666923 729587 +1733210 475323 +2066295 568066 +1235972 340629 +963891 266296 +1610722 446087 +1382071 383698 +1490784 414888 +1161933 324155 +2035999 569380 +2986793 837300 +3915106 1100192 +3409255 960353 +2752962 777349 +2057537 582379 +2070625 587490 +1282028 364615 +1460766 416441 +1165293 332998 +961339 275369 +1168269 335437 +960992 276577 +960818 277180 +960644 277784 +960469 278388 +1290955 375057 +1127149 328235 +959942 280198 +1555700 455154 +1108276 325007 +1728182 507976 +1834214 540395 +2348400 693488 +2127844 629811 +2785610 826404 +2987535 888352 +2921332 870665 +2957648 883512 +2918907 873937 +3519893 1056286 +4382718 1318214 +3658694 1102953 +3548141 1072058 +3874696 1173382 +4571144 1387426 +4780726 1454319 +4272806 1302741 +3557884 1087211 +2721108 833380 +3018490 926533 +3957761 1217566 +4289314 1322516 +4777114 1476206 +4776186 1479207 +4775255 1482208 +4774322 1485208 +4773388 1488208 +4269101 1333929 +4158186 1302140 +3418856 1072978 +4268221 1342490 +3448114 1086922 +4305263 1360088 +4109970 1301233 +3949678 1253215 +4547236 1445963 +3759889 1198199 +3254478 1039387 +3028432 969292 +2225702 713909 +2958442 950991 +3141587 1012041 +2477813 799930 +2189936 708512 +3137912 1017390 +3430505 1114639 +3750363 1221172 +2805010 915302 +1874226 612881 +2547228 834728 +3305990 1085676 +4117569 1355062 +4677414 1542561 +4038740 1334747 +3683182 1219808 +3963134 1315287 +4396915 1462318 +3941886 1313736 +3206382 1070849 +2535214 848467 +2629554 881878 +2911723 978545 +2463612 829671 +2424251 818112 +1726625 583893 +1038588 351947 +1395178 473762 +2308482 785512 +2103556 717256 +2560164 874743 +2181902 747032 +1691348 580265 +2558827 879676 +3477883 1198074 +4109090 1418404 +3372738 1166597 +2643732 916301 +2893216 1004808 +3183496 1107863 +3943928 1375274 +4639710 1621168 +4076268 1427169 +4718081 1655207 +4505009 1583637 +4715997 1661135 +4120770 1454387 +4713906 1667060 +4712858 1670021 +4711808 1672982 +4710755 1675942 +4427690 1578371 +4708646 1681861 +4707588 1684819 +4244075 1521939 +4348868 1562603 +4340696 1562747 +3870543 1396229 +3468687 1253730 +3638987 1317870 +3122683 1133108 +2649602 963329 +3335748 1215168 +3929802 1434371 +4587228 1677598 +4490021 1645247 +3902992 1432929 +3966138 1458940 +4130899 1522495 +3613161 1334255 +3896590 1441702 +3169817 1175067 +2527298 938689 +2299907 855876 +1708603 637054 +1724349 644159 +2195012 821555 +1364994 511872 +1750533 657703 +935887 352299 +1716023 647199 +2298601 868569 +1768754 669627 +1386953 526078 +2304934 875931 +2264610 862235 +2730670 1041649 +2822777 1078817 +2245811 859928 +2231080 855895 +1911932 734841 +2116874 815136 +2366108 912815 +2765647 1068950 +2326475 900886 +3164424 1227654 +3051822 1186175 +3549836 1382311 +3468015 1352959 +3343269 1306714 +3719832 1456588 +3237840 1270200 +2308065 907124 +2046345 805747 +1871498 738260 +2789219 1102303 +2205208 873104 +1897210 752538 +1797045 714114 +1020803 406392 +928848 370460 +928615 371044 +1213800 485879 +1519489 609353 +1568208 630034 +1815125 730559 +1287415 519104 +1173059 473851 +926974 375124 +957481 388170 +926502 376289 +1747394 710965 +1662899 677804 +925791 378035 +1670412 683316 +1158934 474936 +925077 379779 +924838 380360 +1015356 418334 +924360 381522 +1436648 594022 +923880 382683 +1671422 693556 +2239308 930850 +2903907 1209255 +2375286 990877 +2071595 865717 +2103129 880448 +2242474 940439 +2770645 1163989 +2468993 1039086 +1590439 670520 +1095482 462659 +920968 389638 +920723 390217 +1453330 617022 +1023294 435206 +1015232 432530 +1828848 780522 +1376267 588391 +1758430 753083 +2001800 858800 +1608886 691431 +2399704 1033079 +1576962 680061 +918004 396571 +1713613 741546 +1071171 464336 +917255 398301 +917004 398877 +1455100 634025 +2006214 875659 +1627121 711413 +956290 418827 +1346215 590611 +965991 424523 +1327221 584268 +914988 403481 +1258046 555704 +935957 414134 +914226 405205 +1478957 656619 +930490 413814 +1580052 703881 +2096393 935480 +1434964 641409 +1570180 703033 +2431008 1090295 +3328631 1495387 +3979260 1790688 +3471187 1564676 +2705834 1221731 +2055824 929796 +1299914 588901 +1041824 472768 +910366 413804 +1734732 789832 +1803828 822660 +1233081 563300 +909323 416090 +1114506 510826 +1709668 784914 +2045743 940764 +2389802 1100804 +2362310 1089940 +1758462 812673 +907484 420086 +984116 456311 +906956 421226 +1273919 592631 +906426 422365 +906160 422935 +1573986 735835 +1802370 843985 +2620792 1229231 +2830543 1329781 +2555888 1202709 +2015350 949899 +2781071 1312944 +3551309 1679303 +2812281 1332002 +3120871 1480564 +2236149 1062567 +1477848 703378 +1855933 884757 +2635857 1258595 +3478371 1663572 +3190851 1528526 +3044078 1460569 +3354394 1612054 +3854115 1855192 +3060995 1475790 +3306596 1596763 +3254073 1573921 +2714083 1314845 +2833495 1374894 +2110969 1025942 +1472416 716746 +898855 438246 +898580 438810 +898304 439375 +898028 439939 +897751 440503 +1229908 604443 +1197900 589647 +896919 442195 +1117721 551927 +896363 443322 +1372192 679730 +895805 444448 +895525 445010 +895246 445573 +1053539 525183 +1519475 758642 +894404 447260 +1426163 714294 +1322503 663415 +1697619 852923 +1260362 634227 +892995 450067 +1582516 798832 +1127980 570278 +892145 451750 +891861 452310 +891576 452870 +891292 453431 +891006 453990 +1114321 568657 +1692130 864864 +2500839 1280185 +2087945 1070480 +2710332 1391726 +2572486 1322987 +3220882 1659005 +3497422 1804227 +3130440 1617402 +2928601 1515450 +2770173 1435676 +2028575 1052952 +2480155 1289327 +2654952 1382316 +3279403 1710060 +3841585 2006284 +3533534 1848230 +3881661 2033426 +3804394 1995996 +4156658 2184145 +3768211 1983056 +3923205 2067771 +4421765 2334094 +4420297 2336872 +4337936 2296819 +4256645 2257203 +4415884 2345200 +4414410 2347974 +4412934 2350747 +4008792 2138698 +3760104 2009058 +4408495 2359062 +3800802 2036948 +4198580 2253524 +4404040 2367367 +4402552 2370134 +3918058 2112480 +3957586 2137003 +3223762 1743372 +3125747 1692906 +3969342 2153024 +3741042 2032235 +2951882 1605944 +2978111 1622640 +3326096 1814953 +3284658 1795021 +3088386 1690281 +3168912 1736942 +4019866 2206652 +3361810 1848171 +4221378 2324178 +3361082 1853274 +4166711 2300907 +4375466 2419773 +4366970 2418658 +4138070 2295281 +4370897 2428016 +3723170 2071269 +3124614 1740853 +3513665 1960503 +2771249 1548545 +2178269 1218990 +2461202 1379355 +1913422 1073938 +1173754 659758 +1033512 581784 +871111 491086 +870802 491633 +1304061 737321 +1604805 908694 +869874 493274 +1604080 910948 +1571400 893695 +1840296 1048154 +1815340 1035452 +2070515 1182726 +1768263 1011546 +1205967 690888 +2002054 1148630 +1604802 922057 +2304506 1326006 +1659855 956464 +1887779 1089382 +1410325 815040 +1009350 584158 +1086700 629837 +1856739 1077700 +2387558 1387807 +2914767 1696707 +3458538 2016151 +3628414 2118235 +3636370 2125945 +3932314 2302280 +3593289 2106822 +2785582 1635599 +2250227 1323158 +1750657 1030886 +889920 524789 +1522184 898927 +2225589 1316210 +1597789 946285 +1452020 861187 +1534004 911115 +1192020 709008 +859139 511743 +1303860 777750 +858495 512822 +1236204 739502 +857850 513901 +857527 514440 +1391095 835722 +2082622 1252949 +2529936 1524228 +2209077 1332811 +2337896 1412536 +2382626 1441606 +1552087 940421 +873451 529982 +1171591 711890 +854277 519817 +869193 529642 +853624 520891 +999374 610691 +852968 521963 +852640 522499 +960866 589650 +851983 523570 +851654 524105 +851324 524640 +1233667 761334 +850664 525709 +1079187 667873 +1625496 1007379 +1394066 865166 +2162770 1344112 +2836544 1765318 +2792493 1740339 +2142491 1337114 +2351822 1469810 +1873582 1172564 +1286007 805960 +1532248 961624 +1040828 654126 +1012025 636912 +846007 533172 +845672 533703 +992526 627255 +1383851 875781 +1402867 889050 +2020860 1282477 +2845428 1808273 +3582145 2279618 +3925633 2501675 +3934484 2510792 +3328603 2127094 +3593536 2299576 +4209816 2697676 +4208119 2700320 +3757716 2414634 +4003587 2576181 +4203022 2708248 +4092906 2640935 +3812056 2463111 +3996338 2585742 +4196202 2718802 +4194493 2721438 +3521879 2288184 +2908076 1891992 +2391494 1558044 +2300096 1500558 +2854394 1864734 +2591496 1695311 +2389268 1565161 +3181529 2087014 +2524583 1658341 +1889886 1243124 +1420983 935970 +1390176 916931 +1201744 793729 +1540995 1019189 +1450117 960394 +981813 651130 +833037 553217 +832689 553740 +832341 554264 +831993 554786 +1028575 686805 +1424756 952639 +1460165 977643 +2155565 1445206 +1863127 1250837 +2686381 1805990 +2932774 1974311 +3334312 2247667 +3285775 2217952 +3990823 2697523 +3466170 2346068 +3993195 2706443 +3909818 2653520 +3584621 2436106 +3354467 2282776 +3943907 2687528 +3936273 2685949 +3506277 2395768 +4126553 2823395 +4124778 2825987 +4123002 2828578 +4121224 2831168 +3458125 2378837 +2910480 2004808 +3395413 2341989 +3420969 2362789 +3427649 2370586 +3662756 2536591 +4108732 2849267 +3338711 2318391 +2850023 1981703 +3014826 2099106 +2642056 1842027 +2364812 1650943 +2678157 1872202 +2122379 1485664 +2685625 1882451 +2428651 1704606 +3002317 2110064 +3741249 2632907 +3836976 2703881 +3621200 2555233 +2931337 2071204 +2491012 1762430 +2961602 2098173 +2259065 1602588 +1487799 1056855 +1859604 1322725 +2211108 1574840 +2980488 2125647 +3225894 2303727 +3630029 2595780 +4065300 2910899 +3723731 2669864 +2965828 2129281 +2638019 1896447 +2824616 2033283 +2608796 1880415 +3012382 2174197 +2992567 2162757 +3122386 2259566 +2702701 1958443 +2237624 1623582 +1666616 1210867 +1821861 1325410 +2222057 1618689 +2538928 1851961 +2510145 1833384 +2525204 1846817 +2073635 1518561 +1774135 1300945 +2167326 1591361 +2611916 1920328 +2147530 1580983 +2075259 1529789 +1599246 1180445 +1929084 1425780 +2290591 1695196 +2610763 1934685 +2313046 1716317 +1736380 1290114 +1332876 991614 +1108827 826013 +1408662 1050749 +1767923 1320459 +1614741 1207629 +1304401 976811 +1370609 1027736 +1017680 764096 +799307 600923 +1179604 887992 +1167100 879728 +798173 602428 +797794 602930 +797415 603431 +1532095 1160902 +1349728 1024054 +890374 676419 +1646217 1252266 +1133476 863353 +902160 688058 +1010083 771373 +794372 607431 +954217 730610 +1594160 1222181 +1997745 1533588 +1745028 1341331 +2008970 1546222 +2531028 1950562 +2055628 1586249 +2167350 1674635 +1565705 1211337 +2239293 1734721 +2864544 2221968 +3063270 2379200 +3327820 2588026 +3137043 2442825 +3731823 2909750 +3067431 2394816 +3047767 2382547 +2628065 2057113 +2349004 1841060 +2192264 1720438 +1494764 1174575 +1686806 1327195 +2077668 1636843 +2345505 1850242 +3091064 2441526 +3211709 2540098 +2757626 2183788 +2684448 2128583 +3245760 2576988 +2893329 2300139 +2975930 2368858 +3004834 2394952 +3763422 3003440 +3899527 3116073 +3904115 3123761 +3902152 3126213 +3509956 2815628 +3898220 3131114 +3896252 3133563 +3870094 3116532 +3101745 2501005 +2995137 2418152 +2353478 1902547 +2795195 2262535 +3125412 2533077 +3272251 2655495 +3420562 2779418 +3878470 3155546 +3876487 3157982 +3227223 2632434 +2697566 2203219 +2950354 2412773 +2591550 2122065 +2080479 1705765 +1417286 1163509 +1778331 1461778 +2476459 2038243 +2971590 2448893 +3122858 2576850 +3293062 2720774 +3159115 2613447 +2894220 2397372 +2342529 1942872 +2280267 1893652 +1932848 1607190 +1717487 1429941 +2071169 1726613 +1401177 1169573 +921033 769775 +766896 641771 +1234546 1034439 +1464945 1229061 +806460 677469 +1080262 908635 +804073 677188 +1427258 1203567 +1435108 1211730 +1494271 1263293 +2156790 1825728 +1999086 1694389 +2074069 1760184 +2028809 1723967 +2137109 1818308 +2627943 2238770 +2889041 2464336 +3073790 2625265 +3530014 3018754 +3285618 2813332 +2859539 2451614 +3324984 2854288 +3236296 2781689 +2910278 2504648 +3239078 2791165 +3654085 3152786 +3525496 3045705 +3332077 2882266 +3224711 2792938 +3065544 2658456 +2650014 2301025 +2685436 2334742 +3384968 2946659 +3004771 2619013 +3063760 2673818 +2485732 2172112 +2102052 1839171 +2171673 1902496 +1616816 1418209 +1603642 1408438 +2318219 2038614 +2712468 2388335 +3383236 2982724 +2776577 2450984 +3072612 2715741 +3419735 3026378 +3153672 2794454 +3402634 3018877 +3738063 3320675 +3513748 3125359 +3199602 2849539 +2902640 2588340 +2404282 2146658 +2171510 1941282 +2357902 2110579 +1970184 1765760 +1362112 1222324 +1920744 1725807 +2131035 1917177 +2239307 2017130 +2139016 1929226 +1441206 1301498 +1988677 1798169 +2708012 2451688 +3022158 2739557 +2973340 2698710 +3073922 2793525 +3698155 3365062 +3696040 3367386 +3693924 3369707 +3691806 3372027 +3689686 3374346 +3687566 3376664 +3685443 3378980 +3418624 3138304 +2926054 2689514 +2890012 2659737 +2557141 2356358 +2597348 2396428 +2382596 2201061 +2238072 2070157 +2200642 2038102 +2151764 1995348 +1785648 1657933 +1755336 1631844 +1295701 1206064 +853769 795707 +812457 758158 +833403 778685 +745081 697040 +729828 683630 +1264340 1185801 +1207928 1134320 +728538 685005 +728108 685463 +1149400 1083443 +944267 891203 +726814 686834 +726383 687290 +725951 687747 +1240890 1177066 +1146644 1089037 +1144574 1088440 +1166437 1110628 +1422632 1356270 +2086500 1991674 +1442084 1378278 +1122510 1074194 +1697657 1626630 +2010763 1929061 +2464726 2367554 +1791691 1723220 +1872804 1803499 +2185420 2107195 +2130942 2057252 +2100414 2030331 +1579885 1529091 +1736722 1683001 +1702883 1652285 +1377874 1338615 +1491270 1450602 +942704 918150 +1104762 1077339 +1574601 1537447 +2028844 1983464 +2152725 2107221 +2255747 2210842 +1878881 1843795 +1910605 1877284 +1968012 1936122 +2394869 2359025 +1897362 1871314 +1800256 1777775 +2283471 2257791 +2140687 2119274 +2487697 2465910 +2875152 2853555 +3220457 3200286 +3544409 3526637 +3542192 3528863 +3504816 3496018 +3537754 3533312 +3171684 3171684 +2774709 2778198 +2566618 2573077 +1880482 1887585 +2580383 2593386 +2628677 2645246 +2140756 2156959 +2477466 2499355 +3033422 3064072 +2396030 2423282 +1984292 2009385 +1911741 1938351 +2536894 2575441 +3008452 3058005 +3159670 3215752 +2623521 2673445 +3201024 3266041 +3497568 3573096 +3024027 3093214 +3171197 3247831 +3133988 3213760 +2966302 3045633 +3486326 3584066 +3191382 3284981 +2877384 2965499 +3068615 3166565 +3346957 3458137 +3385456 3502316 +3472790 3597184 +2858571 2964690 +3225350 3349294 +3466003 3603724 +3463738 3605900 +3461472 3608076 +3406177 3554908 +3456935 3612423 +3454664 3614594 +3452393 3616764 +2848620 2988002 +3026127 3178191 +3172944 3336581 +3443292 3625430 +2900150 3057403 +3115886 3288972 +3436452 3631914 +3434169 3634072 +2983926 3161597 +3320941 3523111 +3031941 3220569 +2769842 2945871 +3418768 3640618 +3420445 3646993 +3418153 3649141 +3415859 3651288 +3413564 3653434 +3070944 3290881 +2433383 2610945 +2239368 2405802 +2448504 2633797 +2922772 3147921 +3399767 3666277 +3093411 3340112 +3340284 3611223 +3392850 3672679 +3390542 3674810 +3386187 3674719 +3236597 3516815 +3211324 3493757 +2581181 2811738 +2439278 2660513 +1988055 2171102 +1428246 1561719 +1876929 2054923 +2246378 2462513 +2891408 3173608 +2484273 2730180 +2674220 2942641 +3264056 3596219 +2941901 3245375 +3051698 3370752 +2629293 2907855 +2399551 2657127 +2453344 2720128 +2487962 2761998 +1878328 2087852 +1968388 2190725 +1789277 1993902 +1137787 1269510 +1447750 1617402 +1261662 1411291 +1041974 1167023 +1576436 1767862 +1996154 2241379 +2255636 2535944 +2317486 2608779 +1956927 2205690 +2006168 2264054 +1760574 1989407 +1783535 2017906 +1870263 2118712 +2335372 2648959 +2205748 2505102 +2231584 2537656 +1895005 2157646 +2503823 2854460 +2994268 3417916 +2974772 3399969 +2383078 2727158 +2157169 2471764 +2243586 2574047 +2851259 3275378 +3159659 3634260 +3278187 3775379 +2658340 3065411 +2295587 2650472 +2274241 2629162 +2053397 2376870 +1932290 2239528 +1839692 2134916 +1372807 1595135 +1446787 1683233 +1225275 1427334 +1601214 1867641 +1876716 2191768 +2214800 2589901 +2056378 2407709 +2560257 3001492 +2245597 2635957 +2404753 2826375 +1871606 2202554 +2330391 2745960 +2971254 3505567 +3230487 3816275 +2680788 3170936 +2909999 3446446 +3223287 3822358 +3099605 3680378 +2592255 3081894 +3173687 3777966 +3213671 3830446 +3036262 3623610 +3182397 3802866 +3037627 3634508 +2496561 2990942 +2531792 3037026 +2201598 2644316 +2605789 3133788 +2858489 3442088 +2723064 3283210 +2916298 3520693 +3187120 3852566 +3184699 3854568 +3182276 3856568 +3179852 3858567 +3177427 3860564 +2615319 3181677 +2252396 2743674 +2857967 3485791 +2225784 2718215 +2515814 3076353 +1906430 2334185 +1304512 1599262 +1399109 1717435 +957849 1177289 +1145601 1409863 +988712 1218347 +629646 776882 +749102 925460 +628669 777673 +1056490 1308575 +1472758 1826513 +1186875 1473856 +1805573 2245038 +1394585 1736251 +884328 1102402 +1212618 1513594 +735798 919610 +754249 943885 +1303104 1632838 +1278347 1603882 +1076340 1352176 +1290586 1623420 +1866611 2351028 +1386972 1749170 +831362 1049821 +1361890 1721979 +947523 1199600 +619341 785122 +1079144 1369773 +951633 1209484 +642745 817958 +856978 1092002 +890241 1135856 +1119514 1430235 +851562 1089322 +615386 788226 +645686 828107 +1045128 1342140 +1427514 1835572 +1314725 1692736 +1101543 1420100 +688280 888478 +1191387 1539919 +1063334 1376190 +610919 791693 +610422 792077 +609924 792460 +609426 792843 +608928 793226 +1020379 1330938 +640524 836560 +607431 794372 +606932 794754 +730117 957306 +1005823 1320523 +605433 795896 +604933 796277 +604432 796657 +1095370 1445610 +603431 797415 +602930 797794 +602428 798173 +601926 798552 +601425 798930 +924197 1229306 +1071316 1426860 +599918 800062 +599415 800438 +1191861 1593657 +1011218 1353889 +1074027 1439869 +1168311 1568323 +1620233 2177831 +2159926 2907071 +1891113 2548616 +1512384 2040888 +1403009 1895781 +931498 1260318 +1077064 1459187 +1055233 1431493 +860698 1169130 +592351 805680 +591844 806052 +591338 806424 +781491 1067146 +590324 807166 +762433 1043872 +933750 1280116 +1327663 1822551 +805440 1107129 +1361320 1873696 +1595875 2199438 +1455607 2008774 +1721004 2378173 +1148160 1588689 +1312307 1818221 +842357 1168645 +1124034 1561497 +684531 952205 +1067466 1486850 +744488 1038357 +1176942 1643692 +1018664 1424534 +1374787 1925105 +1775383 2489363 +1994807 2800750 +1432200 2013514 +1934365 2723124 +1953155 2753238 +1588865 2242706 +1191279 1683750 +1007489 1425881 +821615 1164368 +968300 1374078 +904298 1284968 +725308 1032009 +1187187 1691454 +1301803 1857235 +1709028 2441471 +2184391 3124738 +1893463 2712198 +1576438 2261116 +2030090 2915701 +1715426 2467072 +1742627 2509554 +1267982 1828470 +1636525 2363090 +1849923 2674819 +1585550 2295642 +1505947 2183320 +1595405 2316129 +1358489 1974841 +959836 1397197 +1132764 1651143 +1308653 1910096 +1121379 1638960 +1396567 2043918 +847516 1242040 +1059530 1554844 +562603 826727 +562083 827081 +561564 827434 +561044 827786 +560523 828139 +560003 828491 +660806 978947 +558961 829194 +558440 829545 +557919 829895 +1078490 1606415 +1188480 1772652 +1260250 1882255 +1444232 2159977 +1144916 1714654 +938853 1407963 +579859 870778 +678446 1020215 +915333 1378313 +611644 922273 +552170 833732 +924909 1398445 +854208 1293312 +811715 1230656 +1342519 2038203 +1192964 1813629 +1069841 1628678 +1104570 1683852 +1408971 2150838 +1919104 2933593 +1411606 2160779 +1439717 2206838 +1256801 1929106 +1667041 2562316 +1784491 2746616 +1353366 2085912 +1211798 1870290 +1503030 2322975 +1334023 2064613 +1540433 2387354 +1553218 2410492 +1587786 2467544 +1070613 1666115 +897900 1399267 +1168170 1822969 +1138411 1778988 +1237199 1936043 +747501 1171356 +537417 843316 +631903 992959 +998419 1571074 +1238186 1951068 +1253344 1977699 +1080689 1707633 +1061844 1680190 +1458724 2311400 +1814246 2878745 +2082031 3308257 +1597702 2542222 +1897254 3023076 +2108432 3364258 +2507744 4007001 +2409002 3854611 +2299646 3684780 +2586123 4149612 +2601590 4180279 +2639228 4246702 +2359847 3802486 +2545341 4107136 +2631218 4251669 +2628546 4253322 +2539735 4115394 +2623199 4256621 +2129012 3459577 +2113366 3438992 +2249323 3665390 +2272046 3707642 +2609814 4264842 +2607133 4266480 +2604452 4268118 +2134520 3502951 +1751172 2877909 +1877775 3090341 +1843648 3038478 +2088672 3447178 +1766309 2919282 +1920310 3178315 +2157068 3575248 +2458223 4080194 +2577584 4284398 +2537957 4224538 +2572198 4287633 +2569503 4289248 +2566808 4290862 +2176921 3644295 +2194874 3679600 +1784608 2996086 +1836931 3088339 +1934303 3256702 +2015202 3397768 +2417414 4081768 +2545207 4303710 +2542502 4305308 +2095033 3552689 +1848901 3139814 +1673444 2845939 +1569649 2673263 +1798896 3068107 +1321144 2256525 +970952 1660786 +1195980 2048643 +1124143 1928373 +1361105 2338237 +1487426 2558940 +1034597 1782478 +1335812 2304767 +1069972 1848773 +926028 1602378 +921140 1596233 +715835 1242265 +498730 866758 +498185 867071 +684710 1193446 +497095 867696 +680998 1190438 +1128182 1975028 +709846 1244492 +1114684 1957105 +1445582 2541791 +1595603 2809682 +1225799 2161659 +1426978 2520122 +1847346 3267301 +1572971 2786113 +1388121 2462312 +1062892 1888178 +1198142 2131576 +1221777 2176825 +1061354 1893788 +1505257 2689812 +1464288 2620465 +1069026 1915937 +1190041 2135975 +1603758 2882804 +2053491 3696679 +1768602 3188543 +1869072 3374673 +1927184 3484760 +2020388 3658720 +2275921 4127590 +2411521 4380019 +2347078 4269319 +2406015 4383046 +2253169 4110726 +1836478 3355508 +2111560 3863885 +1927456 3532269 +1560734 2864491 +1463049 2689227 +1562134 2875656 +1822178 3359389 +1916809 3539156 +1486389 2748560 +1232872 2283196 +1076097 1995857 +1438551 2672126 +1360666 2531263 +1304006 2429518 +1267172 2364455 +1501666 2806238 +1391549 2604389 +1697407 3181634 +1938217 3638512 +1712155 3219010 +1959247 3689155 +2279921 4299487 +2339649 4418828 +2287749 4327378 +2334094 4421765 +1998215 3791235 +2328536 4424694 +2299508 4376205 +2322974 4427617 +2320191 4429076 +2317408 4430532 +1942572 3719592 +1573027 3016614 +1895071 3639777 +2299198 4422747 +2238978 4313528 +2223051 4289434 +2297899 4440682 +2104646 4073488 +2292317 4443566 +2190735 4253210 +2286732 4446444 +2152924 4192737 +2225302 4340398 +2278346 4450746 +2275549 4452177 +2074344 4064813 +2224931 4366674 +2267153 4456458 +2264352 4457882 +1871320 3689849 +1815740 3585841 +1931550 3820506 +1898079 3760167 +1617559 3209456 +1873836 3723766 +2022639 4025770 +1831588 3651227 +1748242 3490549 +1800997 3601531 +1757494 3520063 +2085963 4184526 +1814222 3645136 +1685925 3392704 +1262219 2544061 +1455136 2937529 +1708297 3454047 +2061246 4174283 +2210974 4484595 +2208156 4485983 +2106255 4285761 +2202517 4488755 +2168876 4427226 +2196874 4491519 +2194052 4492898 +2191228 4494276 +1810199 3718703 +1531272 3150732 +1141887 2353295 +1350766 2788230 +1549588 3203765 +1484430 3073977 +1863593 3865352 +1845595 3834178 +1723832 3586984 +1737466 3621180 +1418701 2961588 +1625099 3397930 +2048328 4289784 +2151610 4513377 +2148774 4514728 +2145937 4516078 +2135904 4502258 +2140260 4518771 +2111058 4464364 +2134580 4521456 +1836729 3896891 +1506638 3201768 +1269833 2702940 +1548732 3301987 +1615799 3450615 +1646623 3522202 +1624773 3481164 +1439588 3089460 +1560426 3354288 +1214751 2615523 +1543344 3328501 +1560666 3371408 +1348694 2918307 +1474828 3196508 +1378360 2992366 +1149629 2499932 +1510822 3290813 +1641862 3582172 +1450180 3169221 +1669875 3655411 +1411381 3094702 +1421274 3121589 +1088729 2395199 +1364875 3007733 +1481302 3269758 +1163731 2573066 +851411 1885667 +579728 1286109 +410369 911920 +685618 1526138 +593771 1323918 +680995 1520959 +1070934 2395897 +975392 2185835 +1063619 2387581 +838604 1885660 +1122433 2528148 +1111213 2507122 +1466755 3314917 +1397466 3163694 +1723839 3909204 +2011983 4570416 +2011656 4577471 +2008780 4578734 +1738345 3969092 +1999066 4572200 +1995960 4572922 +1997266 4583768 +1793329 4122800 +1410726 3248788 +1035834 2389550 +984106 2274134 +1083271 2507614 +1344060 3116678 +1011436 2349431 +856146 1992157 +960893 2239771 +1195464 2791380 +989685 2314908 +1205031 2823516 +839664 1970853 +1149520 2702852 +785009 1849006 +479470 1131318 +389638 920968 +389060 921213 +677658 1607370 +957981 2276278 +1172499 2790900 +793194 1891368 +732696 1750194 +504893 1208169 +385004 922915 +576349 1384044 +750513 1805477 +955747 2303282 +660424 1594405 +769898 1862006 +1133128 2745364 +1348177 3272220 +1003651 2440358 +1347360 3281941 +1487496 3629776 +1385892 3387908 +1301676 3187750 +1336825 3279717 +1434887 3526636 +1459223 3592913 +1198636 2956620 +1504606 3718052 +1552986 3844548 +1186627 2942918 +1521940 3781368 +1416532 3525869 +1316873 3283770 +1060843 2650151 +956520 2393893 +1135945 2848136 +1377366 3459762 +1117007 2810912 +998573 2517484 +1108223 2799052 +1379216 3489908 +1249748 3168129 +1596407 4054374 +1573024 4002366 +1568232 3997550 +1815095 4635387 +1510844 3865544 +1743539 4469181 +1556066 3996048 +1811377 4660356 +1808448 4661493 +1805519 4662628 +1748838 4524694 +1799658 4664893 +1514972 3934317 +1178754 3066918 +1387617 3617131 +1212727 3167189 +1193621 3123168 +1032508 2706706 +1219941 3204102 +938608 2469864 +1009736 2662068 +662124 1748936 +722933 1913186 +552589 1465168 +352299 935887 +351711 936109 +351123 936330 +508433 1358421 +799849 2141115 +751072 2014405 +635206 1706924 +497602 1339728 +831714 2243600 +514831 1391470 +711054 1925534 +557227 1511891 +731053 1987371 +574274 1564200 +782013 2134182 +1087269 2973032 +858185 2351202 +1066909 2928762 +787652 2166407 +653624 1801293 +813293 2245717 +660129 1826374 +837854 2322648 +835368 2320324 +897749 2498519 +1000233 2789246 +1283105 3585151 +1312468 3674469 +1096097 3074800 +1040357 2924246 +862976 2430496 +969333 2735491 +877861 2482307 +853279 2417628 +1034688 2937501 +1234641 3512214 +1295235 3691998 +1013330 2894265 +1022297 2925768 +910255 2610375 +1090113 3132490 +1400428 4032356 +1637409 4724288 +1573413 4548882 +1395073 4041500 +1223408 3551424 +1031823 3001397 +978719 2852753 +768904 2245784 +1081815 3166213 +1343743 3940905 +1031877 3032507 +1196486 3523523 +1496171 4415171 +1375290 4066859 +1221225 3618765 +1314869 3904350 +1489983 4433537 +1589833 4740510 +1430397 4274014 +1583875 4742504 +1580895 4743498 +1307800 3932308 +1574933 4745480 +1343699 4057268 +1354610 4098840 +1232681 3737785 +1096355 3331446 +928962 2828782 +1215608 3709508 +937478 2866863 +1150188 3524838 +1157708 3555454 +958812 2950921 +760873 2346742 +738634 2283040 +780642 2418069 +592719 1839922 +782133 2433141 +824924 2571805 +975555 3047998 +810576 2538034 +1054525 3309048 +1123050 3531746 +890564 2806735 +799822 2526252 +1083694 3430357 +1376198 4365805 +1119222 3558378 +920220 2932119 +726783 2320870 +718433 2299270 +483080 1549467 +569799 1831666 +662206 2133441 +703682 2272106 +943574 3053476 +1026226 3328358 +1042252 3387892 +1098425 3578484 +969809 3166568 +1162730 3805019 +1212283 3976118 +1404225 4616056 +1452175 4784473 +1449168 4785385 +1254808 4152980 +1197757 3973176 +912023 3032237 +907150 3022922 +753527 2516742 +727822 2436458 +584197 1960149 +476208 1601492 +284417 958701 +302008 1020345 +531643 1800335 +692961 2352054 +934333 3178686 +1067826 3641298 +1067945 3650196 +1173164 4019197 +1222115 4196702 +1230232 4234488 +1391938 4802344 +1388921 4803217 +1385902 4804090 +1382884 4804959 +1379864 4805827 +1267636 4425434 +1373824 4807557 +1265006 4437312 +1171438 4118911 +1035920 3651133 +1052121 3717125 +1275602 4517510 +1355690 4812702 +1352666 4813553 +1349641 4814402 +1301169 4652740 +1343590 4816094 +1340564 4816937 +1337537 4817779 +1334510 4818618 +1331482 4819456 +1328454 4820292 +1325425 4821126 +1322395 4821957 +1319365 4822787 +1105834 4052248 +1218164 4474945 +1029050 3789625 +984882 3636002 +1160815 4296210 +1218831 4522209 +972968 3619036 +1031332 3845760 +804349 3006908 +712350 2669706 +642940 2415668 +695696 2620508 +704378 2659946 +648866 2456553 +623603 2366931 +588482 2239338 +757434 2889632 +827605 3165445 +651257 2497354 +560439 2154641 +486164 1873918 +697027 2693651 +554442 2148197 +700535 2721303 +482427 1878930 +516801 2018070 +610706 2391014 +733449 2879114 +972877 3829033 +771867 3045918 +1007226 3985199 +867749 3442445 +945126 3759372 +1006937 4015901 +807042 3227268 +838528 3362153 +990114 3980601 +1019185 4108495 +917732 3709493 +892810 3618507 +719121 2922452 +759950 3096762 +993289 4058625 +1105474 4529340 +1182495 4858159 +1088631 4484789 +1164138 4809034 +997648 4132618 +841021 3493432 +742242 3091660 +801451 3347550 +646274 2706907 +708609 2976272 +608423 2562620 +424600 1793389 +326022 1380890 +446517 1896585 +654719 2788783 +520766 2224490 +459718 1969293 +304487 1308042 +239966 1033809 +347194 1500041 +272074 1178858 +224271 974527 +400841 1746800 +259350 1133472 +222433 974948 +221821 975087 +221208 975227 +220595 975365 +219982 975504 +348769 1551144 +320303 1428737 +436321 1951988 +537498 2411744 +406799 1830717 +342016 1543755 +215690 976462 +215076 976597 +242773 1105666 +258840 1182388 +369526 1693095 +376250 1729117 +212007 977268 +211393 977401 +305150 1415201 +477067 2219268 +354076 1652178 +282725 1323303 +307906 1445607 +240036 1130444 +362153 1710840 +395160 1872575 +579769 2755968 +651398 3106146 +657832 3146669 +692512 3322979 +861401 4146427 +870593 4203933 +704262 3411544 +780604 3793394 +687298 3350631 +675196 3302169 +780610 3829975 +931125 4583177 +992392 4900526 +989313 4901149 +850291 4226110 +983153 4902388 +980073 4903005 +976992 4903620 +970338 4886241 +970829 4904843 +915192 4639053 +871086 4430137 +819139 4179818 +796200 4076338 +839688 4313387 +952332 4908469 +801174 4143300 +682380 3540885 +548895 2857893 +534495 2792387 +402279 2108823 +292005 1535986 +293236 1547761 +336718 1783397 +356657 1895532 +287483 1533192 +339126 1814905 +255972 1374674 +182441 983217 +181824 983331 +181206 983445 +180588 983559 +279942 1530098 +179352 983785 +339522 1869013 +234871 1297563 +191616 1062402 +207836 1156492 +329177 1838324 +423536 2373881 +523704 2946014 +668914 3776639 +660920 3745206 +582827 3314846 +598484 3416484 +621649 3561890 +627143 3606746 +652524 3766736 +714386 4139302 +847264 4927692 +844167 4928223 +841071 4928752 +837974 4929280 +834876 4929805 +750407 4448003 +761856 4533230 +825582 4931370 +822484 4931888 +733740 4416855 +629504 3804176 +566156 3434753 +570288 3473416 +625579 3825206 +604509 3711009 +611274 3767456 +631833 3909703 +651431 4047114 +791480 4936959 +788378 4937455 +679326 4271720 +767879 4848198 +663937 4209049 +706283 4495855 +686413 4387348 +769758 4940392 +738473 4759259 +647497 4190317 +733145 4764426 +693777 4527512 +754234 4942786 +751128 4943259 +748022 4943730 +744916 4944199 +618129 4120255 +506048 3387662 +594569 3997444 +732487 4946055 +729379 4946515 +726271 4946972 +626795 4288138 +645850 4437984 +683568 4717966 +539405 3739510 +650314 4528544 +707616 4949675 +580756 4080608 +576717 4070556 +463187 3284102 +536461 3820987 +545734 3904856 +418793 3010356 +484247 3496953 +540306 3919908 +531614 3874840 +469587 3438782 +515619 3793649 +575604 4255025 +644732 4788683 +652905 4872534 +660936 4956124 +566319 4267088 +654707 4956951 +646298 4917079 +648478 4957769 +581792 4469780 +642247 4958580 +639131 4958983 +545625 4254554 +463114 3629242 +415685 3273939 +517682 4097878 +553566 4404175 +600635 4803047 +584159 4695252 +614197 4962133 +611079 4962518 +600688 4903532 +518216 4252436 +500864 4131659 +565167 4686749 +589850 4917429 +514640 4313335 +526462 4436110 +579533 4909664 +583007 4965894 +579887 4966260 +559549 4818361 +573646 4966984 +570524 4967343 +567403 4967701 +564282 4968057 +552530 4892002 +515332 4588502 +406408 3639266 +411700 3707768 +422805 3829719 +466503 4250016 +492609 4513997 +539303 4970830 +536179 4971168 +518583 4836523 +452165 4242227 +526808 4972170 +521345 4950297 +520559 4972828 +517435 4973154 +487295 4712239 +511185 4973800 +421367 4125359 +373043 3675090 +407761 4042404 +460360 4592748 +495557 4975382 +492430 4975692 +434612 4419802 +486177 4976307 +483051 4976612 +479924 4976914 +476796 4977215 +457891 4811712 +470542 4977810 +459136 4889940 +464286 4978397 +393905 4252621 +356077 3870713 +416529 4559252 +413255 4555005 +351776 3904627 +420418 4699574 +355912 4006873 +318818 3615037 +237522 2712711 +272409 3133811 +311284 3607296 +308568 3602240 +256409 3015618 +307240 3640536 +263643 3147541 +230268 2770016 +230217 2790643 +240671 2939900 +290864 3580696 +230433 2859015 +192794 2410936 +145975 1840011 +193266 2455680 +213562 2735535 +198346 2561366 +162287 2112965 +131631 1728049 +161597 2139180 +90435 1207260 +128551 1730684 +111856 1518830 +114698 1570904 +130590 1804160 +94086 1311290 +106557 1498275 +123011 1745136 +139657 1999188 +160402 2317108 +203541 2967330 +201233 2960928 +148797 2209921 +126266 1893036 +117230 1774346 +123246 1883399 +139936 2159256 +79171 1233644 +108307 1704408 +80430 1278405 +62163 998066 +69553 1128126 +81186 1330434 +60282 998181 +59655 998219 +59028 998256 +77243 1320394 +94017 1624635 +57146 998366 +71223 1258162 +68888 1230602 +64518 1165666 +110297 2015729 +127214 2351973 +83145 1555335 +95378 1805449 +140287 2687597 +93409 1811391 +57185 1122634 +50244 998737 +54819 1103484 +48989 998799 +69015 1425394 +65628 1373308 +47106 998890 +66093 1420460 +83966 1829350 +90849 2006830 +119978 2687671 +88104 2001869 +94900 2187582 +85642 2003241 +63972 1518711 +41457 999140 +69753 1706988 +76554 1902713 +110061 2778977 +137365 3524388 +120315 3137606 +140628 3728509 +161562 4356209 +180091 4939595 +162133 4525116 +135502 3849450 +100386 2903729 +131630 3878069 +104304 3131025 +97730 2990144 +120975 3773970 +138288 4400403 +110373 3583849 +109218 3620272 +100289 3395068 +93993 3251153 +99857 3530778 +75989 2747958 +93286 3451947 +104612 3963242 +89035 3455430 +66377 2640493 +77366 3156588 +64844 2715331 +71152 3060049 +72472 3203398 +72941 3316316 +53828 2519331 +37715 1818710 +20105 999798 +28279 1451686 +24163 1281724 +18220 999834 +19619 1115038 +16964 999856 +30819 1886383 +31621 2012922 +21157 1402908 +24612 1702973 +13823 999904 +18978 1438254 +18470 1469680 +11938 999929 +11309 999936 +10681 999943 +17619 1752569 +13938 1478830 +8796 999961 +8168 999967 +7540 999972 +6911 999976 +6283 999980 +5655 999984 +6272 1247768 +6782 1541908 +6586 1746869 +5147 1638190 +4200 1671214 +4281 2271038 +2964 2358396 +866 1378086 +0 2071170 +-960 1527238 +-2043 1625592 +-1890 1002631 +-2513 999997 +-5252 1671901 +-6739 1787629 +-11316 2572898 +-17828 3546827 +-23311 4122281 +-26327 4189993 +-23591 3413268 +-29268 3881652 +-37777 4624816 +-43982 4999806 +-47123 4999778 +-50265 4999747 +-47787 4473635 +-56086 4958866 +-54105 4531933 +-59153 4707013 +-56681 4295512 +-57763 4178459 +-60366 4176887 +-67304 4462914 +-62165 3957234 +-76534 4684466 +-68018 4009030 +-74917 4257941 +-72974 4004429 +-69600 3691982 +-63510 3260224 +-62974 3131669 +-76826 3704715 +-83168 3892508 +-66128 3006534 +-60234 2662489 +-85142 3661697 +-75493 3161272 +-74726 3048900 +-85851 3415181 +-70315 2728884 +-87046 3297740 +-91670 3392147 +-115230 4166979 +-108312 3829718 +-130137 4501332 +-147633 4997820 +-134093 4444820 +-153833 4995011 +-129620 4124582 +-160194 4997433 +-148417 4540955 +-148762 4465551 +-148937 4387949 +-163979 4743221 +-138508 3934858 +-155412 4337558 +-160569 4404138 +-182244 4913847 +-183504 4865292 +-191590 4996328 +-158563 4068288 +-143103 3613270 +-160216 3982103 +-175049 4283752 +-207286 4995701 +-210425 4995570 +-213563 4995437 +-182516 4207264 +-174143 3956837 +-177540 3977131 +-190327 4204271 +-229256 4994741 +-232394 4994596 +-194263 4119347 +-164341 3438912 +-172050 3553411 +-125451 2557708 +-108917 2192452 +-139363 2770210 +-190687 3743519 +-197809 3835912 +-166997 3199322 +-145217 2748866 +-162580 3041277 +-122833 2270985 +-90370 1651544 +-118864 2147567 +-89799 1604171 +-120129 2122074 +-120968 2113364 +-82089 1418508 +-58400 998293 +-59028 998256 +-71523 1196806 +-60282 998181 +-60909 998143 +-65704 1065711 +-62163 998066 +-62791 998027 +-63418 997987 +-64045 997947 +-106969 1650576 +-108445 1657203 +-123188 1864523 +-120228 1802505 +-67179 997741 +-67806 997698 +-68433 997656 +-117138 1692131 +-123492 1767789 +-83583 1185773 +-70940 997481 +-71567 997436 +-72194 997391 +-74146 1015500 +-125714 1707003 +-119099 1603423 +-74700 997206 +-75327 997159 +-81954 1075882 +-76580 997063 +-77206 997015 +-77833 996966 +-149664 1901667 +-156169 1968505 +-211475 2644550 +-197888 2455233 +-155947 1919793 +-125546 1533598 +-189143 2292747 +-108619 1306642 +-101559 1212480 +-170970 2025852 +-194739 2290325 +-184505 2153927 +-211844 2454940 +-179277 2062416 +-157094 1794152 +-161755 1834116 +-222622 2506284 +-305607 3416184 +-232609 2581903 +-153038 1686823 +-123861 1355757 +-91606 995795 +-168222 1816135 +-205587 2204446 +-192933 2054801 +-224153 2371290 +-203673 2140286 +-126239 1317793 +-95985 995383 +-149788 1543183 +-127667 1306742 +-204155 2076163 +-231316 2337300 +-321857 3231436 +-401289 4003428 +-339360 3364300 +-383545 3778550 +-438260 4290752 +-405157 3942160 +-352364 3407428 +-399692 3841505 +-431466 4121733 +-430040 4083334 +-441617 4168114 +-382681 3590325 +-404835 3775663 +-452203 4192589 +-398612 3674068 +-375415 3440092 +-459647 4187556 +-394754 3575636 +-334039 3008355 +-291790 2612890 +-371939 3311734 +-410257 3632341 +-519680 4575368 +-478712 4191199 +-553999 4823460 +-456825 3955476 +-557622 4801770 +-579887 4966260 +-523990 4463205 +-447096 3787687 +-531892 4481869 +-546114 4577128 +-442459 3688669 +-346526 2873628 +-351186 2896961 +-468967 3848301 +-468337 3823127 +-439625 3570152 +-518317 4187517 +-490975 3946276 +-594433 4753456 +-623549 4960966 +-626666 4960574 +-629783 4960179 +-521730 4088596 +-411126 3205788 +-399190 3097291 +-517992 3999250 +-561565 4314376 +-637304 4872342 +-594580 4523607 +-551530 4175770 +-631474 4758014 +-557047 4177095 +-501029 3739107 +-619280 4599644 +-581380 4297721 +-501485 3689660 +-420580 3079906 +-446378 3253570 +-524208 3803115 +-640390 4624527 +-589460 4237148 +-692063 4951873 +-695174 4951438 +-588950 4175792 +-650902 4594166 +-641481 4507281 +-707616 4949675 +-586500 4084163 +-590423 4093201 +-532049 3672184 +-398391 2737561 +-316445 2164917 +-382867 2607889 +-448890 3044288 +-526998 3558510 +-485924 3266995 +-608374 4072673 +-741809 4944666 +-641205 4255842 +-546190 3609811 +-661550 4353735 +-627692 4113507 +-706012 4607353 +-760444 4941834 +-746782 4832846 +-766654 4940875 +-691305 4436869 +-772862 4939907 +-630805 4015399 +-730657 4632021 +-676318 4270106 +-738478 4643679 +-787703 4933230 +-791480 4936959 +-794582 4936460 +-797683 4935960 +-781043 4813788 +-738708 4534841 +-684581 4185982 +-703234 4283145 +-813186 4933430 +-816285 4932918 +-793590 4777128 +-822028 4929155 +-757631 4525483 +-828681 4930850 +-831779 4930329 +-834876 4929805 +-703172 4136327 +-841071 4928752 +-686162 4005791 +-724635 4214482 +-604282 3501335 +-719196 4151606 +-612534 3522731 +-754201 4321378 +-611996 3493619 +-696137 3959305 +-545570 3091554 +-632426 3570632 +-520200 2926301 +-364356 2042178 +-509800 2847030 +-528542 2941047 +-475509 2636430 +-395322 2183983 +-275725 1517816 +-224673 1232383 +-217777 1190316 +-180588 983559 +-181206 983445 +-252032 1363032 +-202363 1090578 +-283998 1525182 +-266494 1426200 +-388510 2071985 +-472396 2510650 +-615525 3260070 +-767456 4050794 +-867224 4561715 +-936907 4911436 +-919391 4803220 +-943078 4910255 +-938364 4869194 +-949247 4909066 +-952332 4908469 +-955416 4907869 +-958499 4907268 +-838279 4277487 +-819687 4168736 +-867831 4398982 +-932661 4712008 +-938524 4726038 +-976992 4903620 +-980073 4903005 +-975394 4863698 +-977278 4857257 +-989313 4901149 +-992392 4900526 +-995471 4899902 +-905276 4441637 +-1001628 4898647 +-913101 4451436 +-877725 4265359 +-721472 3494912 +-577595 2789099 +-384990 1853184 +-392309 1882471 +-341987 1635859 +-205248 978710 +-409488 1946528 +-519492 2461758 +-683239 3227683 +-585890 2759236 +-503237 2362679 +-444044 2078358 +-382108 1782980 +-210165 977666 +-210779 977534 +-390755 1806702 +-388630 1791431 +-228075 1048155 +-227985 1044584 +-213849 976867 +-214463 976732 +-215076 976597 +-348223 1576461 +-216303 976326 +-216917 976190 +-420468 1886635 +-411302 1840060 +-554789 2474678 +-405502 1803462 +-608058 2696409 +-750946 3320319 +-859510 3789269 +-1022894 4496474 +-1025455 4494671 +-1115230 4874040 +-948843 4134908 +-1036552 4504145 +-1124415 4871929 +-1127476 4871222 +-1130537 4870512 +-1133596 4869801 +-1136656 4869088 +-928056 3964255 +-1023790 4360842 +-917616 3897584 +-938552 3975314 +-1131452 4778927 +-1155004 4864768 +-1158060 4864041 +-1075608 4505161 +-966238 4035841 +-762162 3174634 +-960028 3987764 +-1070485 4434334 +-916486 3785986 +-1076787 4435997 +-964336 3961874 +-1030643 4222741 +-947852 3872964 +-1099442 4480178 +-1076052 4372989 +-1197752 4854420 +-1200801 4853666 +-1203851 4852911 +-1206900 4852153 +-1209948 4851394 +-979978 3918819 +-800946 3194361 +-630379 2507420 +-640314 2540189 +-735742 2911043 +-880943 3476350 +-741144 2916983 +-954593 3747202 +-805186 3152432 +-761513 2973654 +-942211 3669669 +-1086951 4222379 +-1193600 4624632 +-1060049 4096547 +-1255617 4839776 +-1258658 4838985 +-1217004 4666806 +-1195408 4572226 +-1134609 4328566 +-1160240 4415038 +-1273854 4835008 +-1276891 4834206 +-1279928 4833403 +-1282965 4832598 +-1286001 4831790 +-1289037 4830982 +-1109138 4146305 +-924165 3446143 +-1126688 4190810 +-879999 3265045 +-913524 3380980 +-870974 3215474 +-1082096 3984974 +-1252245 4600140 +-1316335 4823615 +-1319365 4822787 +-1322395 4821957 +-1293393 4704614 +-1164999 4227196 +-1326685 4802094 +-1289462 4655961 +-1028184 3703494 +-1283870 4613225 +-1195848 4286513 +-1346616 4815249 +-1104903 3941379 +-945212 3363601 +-994199 3529406 +-804186 2848003 +-665237 2350273 +-504685 1778777 +-437108 1536924 +-275908 967813 +-459205 1606942 +-482637 1684931 +-494728 1723052 +-687941 2390316 +-490167 1699113 +-496392 1716640 +-550071 1897806 +-462120 1590626 +-279594 960118 +-280198 959942 +-357906 1223309 +-461002 1572022 +-661361 2250013 +-700622 2378059 +-816388 2764582 +-651445 2200935 +-461561 1555812 +-285019 958522 +-285621 958342 +-286224 958163 +-398855 1332156 +-306763 1022234 +-288029 957622 +-288631 957440 +-460613 1524470 +-607242 2005210 +-447750 1475201 +-628905 2067375 +-717726 2354041 +-515184 1685932 +-610263 1992596 +-460712 1500922 +-310991 1010891 +-389771 1264144 +-538200 1741657 +-409130 1321032 +-446293 1437830 +-325750 1047151 +-297642 954678 +-298241 954491 +-362979 1159118 +-299440 954115 +-300040 953927 +-300639 953738 +-340746 1078608 +-519648 1641318 +-527899 1663745 +-303035 952979 +-336785 1056814 +-304233 952598 +-304831 952406 +-305429 952215 +-306028 952023 +-458083 1421986 +-371194 1149788 +-307822 951444 +-308419 951250 +-547247 1684252 +-337942 1037858 +-310212 950667 +-310809 950472 +-311406 950277 +-556602 1694910 +-312600 949885 +-313197 949688 +-313794 949491 +-509932 1539727 +-802674 2418564 +-921855 2771845 +-1112242 3337300 +-1204485 3606519 +-911026 2722138 +-1153401 3439172 +-1280123 3809086 +-1143450 3395341 +-1115612 3305809 +-818239 2419607 +-1051932 3104232 +-1022820 3012093 +-769453 2261289 +-879578 2579612 +-646049 1890830 +-656098 1916307 +-803018 2340623 +-911335 2650916 +-1198603 3479416 +-1140410 3303747 +-1378192 3984480 +-1443167 4163858 +-1488426 4285733 +-1404553 4036049 +-1199396 3439556 +-1272776 3642627 +-1176638 3360703 +-1360534 3878131 +-1362996 3877349 +-1575524 4472945 +-1664098 4714952 +-1410357 3988034 +-1227924 3465243 +-1204155 3391398 +-1284120 3609416 +-1409898 3955084 +-1307760 3661290 +-1512279 4225489 +-1523255 4247744 +-1320585 3675310 +-1518576 4218008 +-1696645 4703339 +-1403122 3882008 +-1113620 3075000 +-1275121 3514049 +-975224 2682319 +-727774 1997807 +-832081 2279684 +-1043498 2853343 +-780936 2131240 +-610271 1662249 +-345233 938517 +-345822 938300 +-487201 1319338 +-347001 937865 +-347590 937646 +-348179 937428 +-389581 1046881 +-349357 936990 +-349946 936770 +-350534 936550 +-546118 1456318 +-377414 1004519 +-475301 1262643 +-554112 1469206 +-389754 1031455 +-354063 935222 +-615787 1623461 +-564604 1485705 +-355825 934553 +-360441 944890 +-618226 1617620 +-385974 1008021 +-649960 1694264 +-467000 1215054 +-359345 933205 +-359932 932979 +-398347 1030627 +-639299 1650946 +-782141 2016061 +-701865 1805777 +-521178 1338409 +-363446 931615 +-364032 931387 +-611241 1560986 +-644232 1642198 +-543939 1383984 +-824185 2093172 +-993049 2517393 +-665766 1684625 +-839778 2121038 +-971818 2450034 +-899749 2264188 +-1264532 3176338 +-1432571 3591860 +-1293201 3236510 +-1156361 2888769 +-1374860 3428367 +-1005499 2502772 +-972449 2416117 +-889118 2205076 +-587350 1454035 +-805359 1990132 +-750914 1852246 +-533250 1312974 +-376871 926266 +-752214 1845455 +-655748 1605901 +-773384 1890591 +-993197 2423591 +-789135 1922198 +-600000 1458888 +-450872 1094332 +-668429 1619483 +-829944 2007230 +-1206941 2913813 +-1333397 3213392 +-1378126 3315300 +-1152667 2768015 +-873323 2093491 +-830587 1987531 +-938595 2242024 +-815349 1944197 +-609450 1450674 +-387902 921701 +-388481 921457 +-389060 921213 +-389638 920968 +-390217 920723 +-514929 1212861 +-707236 1662914 +-557329 1308157 +-908734 2129261 +-733320 1715262 +-924453 2158576 +-1081099 2519962 +-923350 2148535 +-842695 1957468 +-948933 2200436 +-838192 1940290 +-521807 1205826 +-513640 1184910 +-655086 1508610 +-839079 1929012 +-579743 1330522 +-853060 1954438 +-1133425 2592334 +-774157 1767601 +-922240 2102118 +-909671 2069932 +-528628 1200830 +-700010 1587435 +-742627 1681217 +-774458 1750302 +-1139565 2571090 +-817753 1841892 +-687407 1545683 +-850836 1909932 +-1020167 2286176 +-749898 1677674 +-612125 1367142 +-858271 1913669 +-1226639 2730416 +-1239472 2754349 +-1509182 3348074 +-1226204 2715741 +-1429717 3161176 +-1394918 3079078 +-1394104 3072144 +-1445100 3179214 +-1767008 3880934 +-2074737 4549227 +-1954038 4277453 +-1952464 4266913 +-1998349 4359946 +-1697869 3698230 +-1447411 3147475 +-1189643 2582668 +-1303465 2825100 +-1518155 3284986 +-1568513 3388359 +-1858956 4009175 +-1892241 4074250 +-1516506 3259878 +-1773810 3806722 +-1637403 3508225 +-1279675 2737283 +-1611062 3440498 +-1847987 3940016 +-1698548 3615493 +-1347343 2863249 +-1763371 3741251 +-1701037 3603128 +-1767652 3738145 +-1832413 3868808 +-2033063 4285480 +-2145937 4516078 +-2148774 4514728 +-2151610 4513377 +-2154446 4512024 +-1823869 3813539 +-1791334 3739472 +-1685340 3512540 +-1279486 2662380 +-1524044 3166165 +-1565286 3246621 +-1730334 3583197 +-1794670 3710470 +-1959043 4043827 +-1744889 3596012 +-1619903 3333098 +-2041972 4194836 +-2084999 4276396 +-1775524 3635854 +-1422775 2908870 +-1289647 2632497 +-1646056 3354682 +-1571894 3198454 +-1349506 2741592 +-1078559 2187678 +-1093575 2214627 +-659971 1334412 +-443885 896084 +-444448 895805 +-445010 895525 +-581393 1168136 +-446135 894966 +-446698 894685 +-849678 1699138 +-1091526 2179348 +-790105 1575057 +-942119 1875151 +-549490 1091969 +-450067 892995 +-730842 1447825 +-967808 1914273 +-699040 1380510 +-977031 1926500 +-1023276 2014547 +-1021282 2007496 +-889280 1745310 +-1205337 2361938 +-1234424 2415186 +-780771 1525236 +-568987 1109796 +-894361 1741733 +-1194871 2323372 +-958684 1861241 +-1185533 2298110 +-853592 1652106 +-483742 934829 +-460138 887848 +-460696 887558 +-705760 1357603 +-461811 886979 +-681849 1307590 +-484004 926759 +-602645 1152165 +-515396 983854 +-464595 885523 +-518334 986443 +-465707 884939 +-503391 955090 +-466819 884353 +-896393 1695567 +-1056818 1995983 +-1489488 2808884 +-1236862 2328945 +-1183678 2225424 +-859015 1612584 +-547186 1025649 +-785896 1470864 +-649507 1213765 +-830050 1548816 +-1125860 2097611 +-858179 1596480 +-577676 1073040 +-474580 880212 +-475133 879914 +-475686 879615 +-476238 879316 +-755801 1393404 +-477343 878717 +-929641 1708770 +-605463 1111236 +-478998 877816 +-750582 1373469 +-552300 1009132 +-609781 1112497 +-513971 936302 +-827540 1505289 +-541025 982658 +-482854 875701 +-808986 1464993 +-933855 1688610 +-1004505 1813667 +-1468316 2647167 +-1446497 2603973 +-1305450 2346588 +-1116048 2003168 +-1273230 2281917 +-981336 1756182 +-1286790 2299424 +-1114924 1989373 +-698160 1243903 +-842770 1499344 +-967484 1718690 +-1102814 1956222 +-1556399 2756761 +-1291267 2283795 +-868410 1533661 +-500667 882911 +-762732 1343088 +-540941 951146 +-700942 1230678 +-495459 868632 +-496004 868320 +-906974 1585462 +-1014868 1771485 +-940473 1639238 +-946889 1648022 +-744930 1294636 +-631400 1095736 +-499819 866130 +-633932 1096941 +-500907 865501 +-501450 865186 +-501994 864871 +-502537 864556 +-503080 864240 +-748536 1284050 +-731235 1252562 +-645696 1104445 +-505251 862973 +-505793 862655 +-857499 1460404 +-1019333 1733526 +-1248696 2120542 +-1327207 2250634 +-940040 1591803 +-708863 1198621 +-1047936 1769425 +-738481 1245129 +-727294 1224512 +-511203 859460 +-533727 896046 +-512283 858817 +-839139 1404768 +-1092014 1825490 +-787888 1315214 +-1140635 1901342 +-1363426 2269481 +-1139324 1893757 +-1600917 2657225 +-1316216 2181572 +-1830135 3029067 +-1842372 3044995 +-1661816 2742688 +-1403762 2313510 +-1163337 1914557 +-845645 1389749 +-520354 853951 +-520891 853624 +-521427 853296 +-521963 852968 +-1010894 1649630 +-1312607 2138962 +-1718257 2796047 +-1527722 2482500 +-1874043 3040978 +-1966007 3185724 +-1802340 2916416 +-2076311 3355019 +-2511760 4052950 +-2205179 3553266 +-2570262 4135732 +-2607420 4189648 +-2644562 4243382 +-2571910 4121036 +-2649892 4240056 +-2652556 4238390 +-2565088 4092909 +-2635172 4198871 +-2660540 4233382 +-2289031 3637172 +-2665858 4230035 +-2668515 4228360 +-2671172 4226682 +-2402605 3796436 +-2391793 3774103 +-2679134 4221640 +-2681786 4219955 +-2684437 4218270 +-2687087 4216582 +-2689736 4214893 +-2437271 3813988 +-2370693 3704670 +-2245081 3503527 +-2220231 3459959 +-2696464 4196307 +-2530318 3932312 +-2267518 3519039 +-2594790 4021392 +-2656128 4110780 +-2585104 3995351 +-2583730 3987732 +-2088250 3218574 +-2506170 3857395 +-2254060 3464590 +-1872045 2873465 +-1685355 2583358 +-2146240 3285303 +-1829027 2795898 +-1970140 3007481 +-1969085 3001754 +-1475725 2246577 +-1354140 2058661 +-825859 1253814 +-885907 1343141 +-718012 1087105 +-551646 834078 +-552170 833732 +-552694 833385 +-1014423 1527523 +-1304666 1961896 +-1160574 1742842 +-1106697 1659673 +-1251090 1873662 +-1749605 2616689 +-1405783 2099616 +-1415027 2110553 +-1084640 1615576 +-1554014 2311571 +-2052254 3048556 +-1751853 2598794 +-1240584 1837858 +-1750989 2590483 +-1340547 1980575 +-1738517 2565078 +-1972443 2906287 +-1555750 2289217 +-1052928 1547244 +-694833 1019657 +-563641 826020 +-564160 825665 +-564679 825311 +-645095 941573 +-778795 1135190 +-1301184 1894085 +-1383679 2011460 +-1577607 2290291 +-1801845 2612313 +-1536575 2224732 +-1504332 2175125 +-1048667 1514242 +-1496572 2158104 +-1422273 2048213 +-1124385 1617056 +-1631237 2342851 +-1593700 2285875 +-2021382 2895429 +-1910856 2733451 +-2246921 3209889 +-1780796 2540596 +-1944589 2770570 +-1922784 2735844 +-1523106 2164269 +-1376026 1952667 +-1542995 2186686 +-1080233 1528834 +-929840 1314233 +-1267634 1789285 +-1411097 1989133 +-1864827 2625230 +-2144687 3015192 +-2443544 3430786 +-2060740 2889478 +-2261189 3166328 +-1933117 2703338 +-1849618 2583138 +-2343190 3268110 +-1920633 2675207 +-1457832 2027891 +-1183270 1643787 +-1619864 2247320 +-1724848 2389802 +-1504250 2081403 +-1170808 1617883 +-641775 885665 +-1051999 1449868 +-650320 895089 +-729494 1002738 +-588801 808278 +-824141 1129848 +-589817 807537 +-592738 810468 +-963051 1315072 +-1356548 1849963 +-1065484 1451118 +-912929 1241711 +-593918 806749 +-593363 804935 +-593868 804562 +-805458 1089787 +-594879 803815 +-737759 995569 +-784814 1057678 +-1017910 1370017 +-668477 898532 +-888535 1192756 +-800798 1073570 +-809931 1084392 +-913159 1221000 +-599415 800438 +-866550 1155648 +-600420 799685 +-604783 804442 +-601425 798930 +-1048502 1391005 +-1074666 1423854 +-1049959 1389302 +-1064611 1406852 +-1489924 1966321 +-1941286 2558662 +-2470234 3251584 +-2729415 3588064 +-3029664 3977579 +-3032163 3975675 +-3016320 3949752 +-3037157 3971861 +-3039651 3969952 +-3042145 3968041 +-2880364 3752137 +-2705878 3520258 +-3032898 3940574 +-2948930 3826500 +-2915062 3777641 +-3047730 3944440 +-3059568 3954623 +-3062052 3952700 +-2631352 3392319 +-2779614 3578811 +-2848952 3663331 +-2295009 2947219 +-2216456 2842657 +-2312839 2962429 +-1780257 2277314 +-1866036 2383955 +-2028021 2587547 +-1870858 2383936 +-1304923 1660646 +-1742552 2214707 +-2311144 2933568 +-1784621 2262319 +-1443878 1828004 +-1465189 1852590 +-1834863 2317014 +-1280896 1615394 +-1294804 1630828 +-1542537 1940346 +-1219954 1532594 +-1319612 1655656 +-1876468 2351284 +-1436217 1797315 +-1906691 2383007 +-1696518 2117601 +-2063363 2572185 +-2483813 3092333 +-2409343 2995761 +-2184369 2712538 +-2414196 2994084 +-2598830 3218926 +-2635226 3259814 +-2338341 2888848 +-2810650 3467892 +-2226322 2743399 +-2589083 3186320 +-2535465 3116331 +-2988166 3668034 +-3160417 3874502 +-3162851 3872515 +-3165283 3870527 +-3167715 3868538 +-3170145 3866547 +-3172574 3864554 +-3151468 3833930 +-2999704 3644631 +-3156330 3830024 +-3182276 3856568 +-2667465 3228540 +-2774422 3353701 +-2847983 3438220 +-3147375 3794804 +-2656986 3199447 +-3042934 3659510 +-2706391 3250618 +-3057799 3668001 +-3204034 3838511 +-3206445 3836497 +-3026009 3615987 +-2998173 3578153 +-3213671 3830446 +-2939145 3498766 +-3218482 3826405 +-3220885 3824382 +-3223287 3822358 +-3225688 3820332 +-3228088 3818304 +-2848323 3364813 +-2655216 3132697 +-2368414 2790763 +-2195150 2583309 +-1809557 2126824 +-1839647 2159439 +-2420958 2838187 +-3063780 3587225 +-2610424 3052528 +-2082454 2432044 +-2126164 2479938 +-2577747 3002839 +-2309929 2687438 +-2310590 2684792 +-1950158 2263110 +-2416826 2801106 +-3042256 3521504 +-3039682 3514059 +-3273440 3779496 +-3275814 3777438 +-2633019 3032361 +-3152756 3626319 +-2668858 3065845 +-3119290 3578734 +-2853324 3269445 +-3063316 3505612 +-2494295 2850816 +-2882597 3290446 +-3297123 3758854 +-3299484 3756781 +-3068903 3489819 +-2908000 3302659 +-3124428 3543968 +-3308915 3748477 +-3311270 3746397 +-2802330 3166567 +-3315975 3742233 +-3300087 3719592 +-3134914 3528954 +-2938336 3303484 +-2649672 2975181 +-2965941 3326093 +-3330059 3729706 +-3332402 3727613 +-3121816 3487639 +-3129787 3492127 +-3333933 3715207 +-2819631 3138120 +-2666448 2963887 +-2182547 2422943 +-2158056 2392730 +-1601570 1773488 +-2246140 2484108 +-1841389 2033906 +-2099599 2316184 +-2717897 2994481 +-3362738 3700269 +-3224524 3543705 +-2567102 2817650 +-2696201 2955617 +-2103500 2302980 +-1545684 1690131 +-957870 1046065 +-1570086 1712488 +-1511609 1646629 +-1049645 1141961 +-1615068 1754897 +-1628504 1767266 +-1924009 2085321 +-2457724 2660427 +-2492634 2694818 +-2812454 3036749 +-2479856 2674254 +-2515484 2709258 +-2900832 3120356 +-2878911 3092877 +-2318333 2487500 +-2929467 3139271 +-3413564 3653434 +-3415859 3651288 +-3418153 3649141 +-2850567 3039370 +-3228196 3437679 +-2580245 2744224 +-2980254 3165667 +-2444617 2593438 +-2454413 2600556 +-2341048 2477321 +-2616153 2764957 +-2899172 3060220 +-2413032 2543872 +-1981963 2086802 +-1884257 1981433 +-1390207 1460065 +-1488893 1561744 +-2107230 2207557 +-2617317 2738484 +-3195845 3339590 +-3459204 3610250 +-2984333 3110729 +-2883160 3001494 +-2506109 2605689 +-1850426 1921534 +-1663412 1725163 +-1119604 1159708 +-1004726 1039408 +-695461 718563 +-695913 718126 +-696364 717689 +-696815 717251 +-851102 874963 +-697715 716375 +-1114183 1142544 +-698615 715498 +-699065 715059 +-1193768 1219547 +-850011 867275 +-1008566 1027758 +-700860 713299 +-1268217 1289106 +-849417 862324 +-702203 711977 +-1236604 1252242 +-938400 949074 +-953954 963593 +-1372777 1384906 +-1027519 1035296 +-704882 709325 +-817737 821858 +-705773 708438 +-706218 707995 +-706662 707551 +-707107 707107 +-707551 706662 +-707995 706218 +-819664 816580 +-708882 705327 +-746829 742151 +-709767 704436 +-710210 703990 +-710652 703544 +-1328106 1313170 +-1292931 1276785 +-1847419 1822057 +-1788619 1761848 +-2501394 2460860 +-3111250 3056990 +-3568698 3502056 +-3570898 3499813 +-3059396 2994727 +-3297346 3223593 +-3577488 3493076 +-2897081 2825170 +-2263736 2204772 +-1672730 1627114 +-2056346 1997754 +-2254834 2187835 +-2633899 2552426 +-2654943 2569586 +-3183562 3077339 +-3597184 3472790 +-3599365 3470529 +-3164934 3047812 +-3274836 3149684 +-2868827 2755723 +-3119530 2992776 +-3222266 3087452 +-3090897 2957856 +-3507545 3352351 +-3056124 2917232 +-3461119 3299667 +-3475882 3309575 +-3614830 3437547 +-3625430 3443292 +-3627593 3441013 +-3629754 3438733 +-3631914 3436452 +-3634072 3434169 +-3636229 3431885 +-3363892 3170858 +-2983572 2808824 +-2667362 2507975 +-3136380 2945257 +-3315541 3109582 +-3280516 3072861 +-3651288 3415859 +-3653434 3413564 +-3655578 3411268 +-3586720 3342798 +-3659862 3406672 +-3662002 3404372 +-3639160 3378876 +-3419905 3171305 +-2700518 2501057 +-2387239 2208132 +-2879269 2659892 +-3433366 3167775 +-2819956 2598538 +-2920241 2687558 +-3518260 3233847 +-3683319 3381295 +-3685443 3378980 +-3382379 3097208 +-2653367 2426596 +-3385197 3091977 +-3530308 3220452 +-3280338 2988648 +-3698155 3365062 +-3527810 3206010 +-2832848 2571194 +-2413193 2187536 +-2639892 2390016 +-2642025 2388929 +-2280833 2059734 +-2035521 1835881 +-1629488 1467815 +-1422246 1279518 +-1886057 1694640 +-1874536 1682162 +-2387916 2140148 +-1796644 1608192 +-1514180 1353643 +-2070228 1848398 +-1967877 1754793 +-2688620 2394463 +-3192921 2839994 +-3243756 2881562 +-2920873 2591450 +-2347230 2079869 +-3022162 2674536 +-2361938 2087610 +-1945918 1717732 +-2647372 2333972 +-2197081 1934535 +-2408873 2118333 +-2500403 2196039 +-3142315 2756319 +-3099206 2715062 +-3434944 3005372 +-3476172 3037590 +-3426156 2990091 +-3217229 2804195 +-3134337 2728482 +-2405556 2091413 +-1901218 1650840 +-1340460 1162454 +-1242208 1075883 +-1644011 1422080 +-1577672 1362963 +-1717659 1482016 +-995664 857979 +-757952 652310 +-758362 651834 +-948139 813917 +-1248616 1070496 +-1117628 956976 +-759998 649926 +-1015945 867699 +-1177037 1004006 +-1485386 1265415 +-1037720 882919 +-1640179 1393731 +-983176 834384 +-884492 749679 +-984417 833312 +-773461 653903 +-779215 657928 +-1184528 998879 +-764876 644177 +-978113 822714 +-1366458 1147896 +-2086633 1750645 +-1964479 1646058 +-1284817 1075188 +-1563496 1306730 +-907319 757346 +-1602202 1335663 +-2033163 1692765 +-2711688 2254807 +-2538107 2107776 +-2900868 2405953 +-2951396 2444732 +-2356721 1949649 +-2449388 2023719 +-2390632 1972648 +-2820722 2324563 +-3452413 2841499 +-3576706 2940031 +-3864554 3172574 +-3866547 3170145 +-3868538 3167715 +-3222972 2635719 +-2750761 2246665 +-2735997 2231743 +-3010079 2452162 +-2429841 1976932 +-2485128 2019320 +-1814940 1472859 +-1535850 1244772 +-1392662 1127272 +-909458 735204 +-778068 628180 +-1143073 921685 +-1411254 1136463 +-957269 769884 +-1084595 871164 +-1306812 1048302 +-1751279 1403039 +-1101336 881201 +-1294563 1034472 +-781608 623770 +-1069859 852713 +-825783 657329 +-782782 622296 +-783173 621804 +-783563 621312 +-783954 620819 +-1530798 1210687 +-2164076 1709330 +-2025432 1597754 +-1477204 1163781 +-1537602 1209800 +-2285640 1796039 +-1862855 1461925 +-1535229 1203255 +-2092770 1638112 +-2491630 1947795 +-2811065 2194665 +-3239792 2526108 +-3894293 3032497 +-3946921 3069498 +-3948849 3067017 +-3950775 3064535 +-3635038 2815968 +-3306016 2557761 +-2576282 1990603 +-2236101 1725514 +-1487282 1146189 +-1119981 862003 +-1747993 1343610 +-1811946 1390958 +-1132454 868209 +-867183 663971 +-1508279 1153333 +-1233294 941834 +-795135 606433 +-916338 697962 +-795896 605433 +-1075059 816724 +-981430 744622 +-797036 603932 +-797415 603431 +-1264638 955745 +-798173 602428 +-1203860 907437 +-798930 601425 +-799307 600923 +-1594391 1197102 +-1525218 1143668 +-1498512 1122173 +-2037265 1523625 +-2572878 1921679 +-2308375 1721863 +-1787689 1331726 +-2024152 1505900 +-2664670 1979825 +-3137759 2328267 +-3818716 2829829 +-3224416 2386291 +-2597301 1919658 +-1992551 1470753 +-1448548 1067806 +-805308 592857 +-1215722 893821 +-965871 709192 +-1596308 1170547 +-954065 698679 +-1213028 887152 +-1854917 1354812 +-1176214 857961 +-1313235 956645 +-808648 588293 +-809017 587785 +-809386 587277 +-999348 724152 +-810124 586259 +-810492 585750 +-810860 585241 +-811227 584731 +-1481309 1066312 +-1436325 1032560 +-1468984 1054639 +-1160910 832356 +-1014934 726728 +-813426 581669 +-813791 581158 +-814156 580646 +-814521 580134 +-873994 621666 +-1520510 1080091 +-1587308 1126041 +-2275471 1612078 +-2350918 1663311 +-2078720 1468768 +-2794202 1971677 +-2777116 1957008 +-2772745 1951322 +-3259917 2291108 +-3566122 2502967 +-3199313 2242514 +-2535973 1775180 +-2455439 1716508 +-2042465 1425903 +-2567705 1790190 +-1871427 1303002 +-1743017 1211970 +-1307974 908253 +-1557100 1079796 +-1165236 806968 +-1055239 729811 +-1513555 1045380 +-1381410 952829 +-823533 567269 +-823889 566751 +-1470514 1010202 +-2189247 1501929 +-2965854 2031979 +-3171594 2170010 +-2612127 1784813 +-2645920 1805466 +-2917177 1987875 +-2516473 1712506 +-2799714 1902684 +-2683963 1821555 +-2751093 1864592 +-3397220 2299399 +-3308016 2235992 +-4127933 2786423 +-4145968 2794807 +-4147724 2792201 +-4149477 2789595 +-3995303 2682304 +-4152979 2784378 +-3917068 2622644 +-4156475 2779157 +-4158221 2776545 +-4123194 2749413 +-4161706 2771318 +-3391094 2255086 +-3091633 2053143 +-2948153 1955190 +-2797335 1852640 +-1975806 1306766 +-2400996 1585812 +-2414643 1592647 +-2335568 1538386 +-1918262 1261789 +-1459368 958625 +-894658 586876 +-836497 547972 +-1402390 917419 +-2103218 1374002 +-2691628 1755990 +-3191071 2078964 +-3719223 2419724 +-4094846 2660444 +-3976035 2579700 +-4018150 2603439 +-3476456 2249364 +-3242652 2095198 +-2867879 1850490 +-3632405 2340567 +-4204723 2705606 +-4173048 2681519 +-3654482 2345055 +-3310571 2121434 +-3214940 2057305 +-3468570 2216537 +-4148520 2647379 +-4036832 2572538 +-4218270 2684437 +-3611167 2294901 +-3344874 2122721 +-2954949 1872664 +-3264254 2065809 +-3968660 2508107 +-3465169 2186866 +-2733795 1722896 +-2938674 1849436 +-2392641 1503696 +-1550140 972854 +-1760508 1103337 +-1600653 1001754 +-1061154 663186 +-1456586 909045 +-1149727 716533 +-1909578 1188423 +-1085297 674487 +-849672 527312 +-850003 526778 +-850334 526244 +-850664 525709 +-1511869 933020 +-2102754 1295850 +-1596558 982516 +-1502814 923525 +-1286744 789630 +-852640 522499 +-852968 521963 +-853296 521427 +-1144868 698611 +-853951 520354 +-854277 519817 +-854604 519281 +-1085526 658662 +-1098512 665597 +-855581 517669 +-1295076 782473 +-930423 561356 +-856555 516055 +-856880 515517 +-857203 514978 +-857527 514440 +-1166546 698827 +-1544069 923667 +-1976485 1180654 +-1259231 751129 +-1939606 1155320 +-1104764 657109 +-909474 540178 +-1583600 939227 +-860422 509582 +-1491252 881924 +-2267856 1339284 +-1564742 922734 +-1731664 1019702 +-1017152 598097 +-1800106 1056961 +-1655703 970774 +-885552 518470 +-891471 521184 +-1498289 874688 +-1045177 609285 +-1222731 711761 +-917963 533581 +-864871 501994 +-1251693 725464 +-1596122 923752 +-865816 500363 +-1430122 825282 +-2210678 1273868 +-2166041 1246334 +-1390795 799097 +-1731883 993626 +-1579591 904933 +-1786470 1021962 +-1077791 615659 +-868632 495459 +-1281149 729688 +-1959520 1114429 +-2769980 1573056 +-2409226 1366184 +-1574617 891601 +-984785 556802 +-870802 491633 +-1605981 905367 +-2446285 1377061 +-2721690 1529840 +-2290706 1285695 +-1951830 1093883 +-1453417 813353 +-1778878 994018 +-2431371 1356621 +-2096540 1168070 +-2962999 1648372 +-3519028 1954806 +-3209616 1780291 +-2490930 1379609 +-2755575 1523921 +-2058228 1136578 +-2801876 1544932 +-3611925 1988629 +-2915389 1602749 +-2871110 1576058 +-2595334 1422553 +-1773520 970652 +-1187749 649088 +-877816 478998 +-1060677 577916 +-1743645 948614 +-1362128 739944 +-1742683 945254 +-1828882 990523 +-2365410 1279186 +-2706520 1461457 +-2183083 1177042 +-2028174 1091876 +-1911136 1027320 +-2188146 1174454 +-2630526 1409766 +-1847014 988369 +-1189662 635648 +-882291 470704 +-882587 470150 +-1538850 818497 +-1533062 814183 +-2112145 1120023 +-1443503 764296 +-1646134 870259 +-2266736 1196530 +-2438910 1285456 +-1585499 834383 +-1357010 713050 +-1599029 838940 +-2250684 1179031 +-2488896 1301827 +-2583257 1349116 +-3356164 1750088 +-2659863 1384873 +-1947190 1012261 +-1383248 717988 +-1365848 707868 +-1324081 685166 +-1068920 552278 +-1677980 865625 +-1882690 969732 +-2377496 1222707 +-2183530 1121219 +-2206390 1131206 +-2558769 1309839 +-2703263 1381663 +-3266910 1667160 +-2419071 1232578 +-2977918 1514969 +-2099820 1066590 +-2608752 1323037 +-2015295 1020472 +-1596431 807115 +-1438865 726319 +-1027154 517683 +-927220 466586 +-1145584 575567 +-893841 448383 +-1613831 808287 +-1017749 508940 +-894685 446698 +-1484129 739830 +-1765699 878806 +-921990 458161 +-895805 444448 +-1458726 722596 +-1778423 879569 +-1621036 800462 +-2118882 1044641 +-1992007 980535 +-2213814 1087988 +-2299808 1128457 +-2805206 1374256 +-2070296 1012615 +-2690895 1314065 +-2209808 1077413 +-2849628 1387148 +-3211887 1560994 +-3600003 1746826 +-2866271 1388573 +-3246646 1570329 +-3968258 1916280 +-3641678 1755754 +-3472872 1671679 +-3978191 1911838 +-3570752 1713270 +-3818209 1829052 +-3326878 1591118 +-2827380 1350045 +-2524076 1203274 +-2023578 963117 +-1121187 532763 +-1941686 921150 +-1068094 505890 +-904023 427484 +-904291 426916 +-1098836 517916 +-1350583 635536 +-905094 425211 +-905361 424642 +-905628 424073 +-965273 451263 +-906160 422935 +-906426 422365 +-906691 421796 +-906956 421226 +-907220 420656 +-907484 420086 +-1257988 581379 +-921559 425196 +-1254806 577995 +-1388208 638387 +-908800 417233 +-909062 416662 +-909323 416090 +-1192584 544800 +-1521281 693801 +-1687595 768370 +-975870 443578 +-911251 413515 +-1356797 614671 +-1107959 501101 +-911403 411514 +-1465124 660421 +-1075006 483758 +-1344660 604088 +-912435 409222 +-1132003 506844 +-1626010 726805 +-1473616 657576 +-2008362 894685 +-2275551 1011999 +-1752742 778173 +-1094936 485300 +-914480 404631 +-914734 404056 +-1821412 803186 +-1929684 849483 +-1915818 841942 +-2795427 1226408 +-2080614 911248 +-2418944 1057615 +-2476551 1080949 +-3186929 1388627 +-3489431 1517827 +-4159292 1806095 +-4587524 1988622 +-4588773 1985740 +-4590020 1982856 +-4591265 1979971 +-4592508 1977086 +-4417339 1898386 +-4594989 1971314 +-4035807 1728415 +-4009914 1714345 +-4598697 1962649 +-4544677 1936220 +-4601159 1956868 +-4602388 1953977 +-4037783 1711276 +-4345544 1838491 +-4606063 1945298 +-4602927 1940567 +-3688406 1552282 +-3345138 1405342 +-4252555 1783419 +-3986920 1669073 +-3992573 1668492 +-3510005 1464238 +-4308133 1794008 +-4471060 1858560 +-4618195 1916319 +-4315130 1787385 +-4140385 1711957 +-4320664 1783320 +-3458549 1424946 +-3198308 1315375 +-2353090 966032 +-2572912 1054389 +-2542481 1040053 +-3000704 1225298 +-3257198 1327647 +-2419348 984363 +-2336185 948816 +-2843386 1152730 +-3354629 1357538 +-3614937 1460236 +-4184750 1687351 +-4242824 1707669 +-4639572 1863967 +-3859488 1547750 +-4594964 1839343 +-4643077 1855218 +-3881140 1547947 +-3781264 1505359 +-3982731 1582667 +-3631545 1440470 +-3438850 1361537 +-2812940 1111678 +-2560316 1009981 +-3442532 1355494 +-3465625 1362073 +-4344084 1704177 +-4655788 1823084 +-4656933 1820158 +-4658076 1817232 +-4564826 1777549 +-4660356 1811377 +-4036168 1565850 +-4607017 1783984 +-4660500 1801328 +-4664893 1799658 +-4585791 1765832 +-4667151 1793795 +-4371368 1676961 +-4091113 1566500 +-4448991 1700328 +-3651844 1393043 +-3876003 1475762 +-2988674 1135768 +-3796637 1440084 +-4337324 1642053 +-4671039 1765038 +-4678330 1764435 +-4260562 1603816 +-4680543 1758555 +-4681647 1755614 +-4682749 1752672 +-4197592 1568080 +-3557312 1326346 +-4315265 1605862 +-3452604 1282366 +-3608818 1337807 +-3298629 1220462 +-2506958 925761 +-2812398 1036545 +-2530482 930835 +-2312325 848938 +-2010251 736603 +-2629689 961705 +-2145876 783241 +-2444194 890387 +-1671302 607644 +-2156213 782412 +-1594839 577575 +-2171448 784853 +-2028786 731848 +-1196217 430664 +-941093 338147 +-1600336 573886 +-941518 336964 +-941729 336372 +-941940 335780 +-942151 335188 +-1063857 377735 +-942572 334004 +-1851549 654795 +-1644993 580584 +-2302498 811018 +-2526383 888094 +-2463605 864287 +-2005237 702067 +-2835753 990845 +-1903909 663906 +-1068016 371672 +-944652 328075 +-1613709 559302 +-1329716 459936 +-1734492 598724 +-1330745 458420 +-1142338 392714 +-945882 324512 +-1085808 371755 +-946289 323323 +-1715454 584924 +-1596694 543310 +-1721247 584486 +-2008330 680564 +-1679130 567832 +-1581030 533550 +-947702 319158 +-947902 318562 +-1041053 349140 +-1325424 443584 +-948501 316775 +-948700 316179 +-948898 315583 +-949096 314987 +-1477467 489312 +-1548407 511727 +-1422453 469110 +-2261504 744245 +-2187130 718246 +-1762610 577608 +-1413297 462155 +-1184492 386511 +-2134042 694875 +-1509133 490347 +-2450210 794420 +-2920962 945022 +-3351773 1082076 +-3945674 1271073 +-4145723 1332643 +-4761074 1527147 +-4573075 1463677 +-4402077 1405898 +-4243088 1352184 +-4757688 1512884 +-4360342 1383517 +-3825704 1211234 +-4160578 1314380 +-4550720 1434487 +-4366543 1373415 +-4770575 1497202 +-4771515 1494205 +-4772452 1491206 +-3998601 1246651 +-3185787 991042 +-3126533 970455 +-3748245 1160849 +-4696663 1451345 +-3812884 1175619 +-4510681 1387666 +-4005178 1229399 +-3688570 1129680 +-3845997 1175252 +-2943665 897498 +-2370187 721022 +-2122852 644324 +-2171486 657596 +-2982758 901230 +-2814971 848603 +-3367466 1012851 +-4243185 1273339 +-4170816 1248766 +-3841630 1147576 +-3668656 1093395 +-4296903 1277697 +-3918877 1162610 +-3373462 998496 +-3717240 1097710 +-4207872 1239721 +-4797062 1410033 +-4767502 1398090 +-4798830 1404004 +-4799712 1400988 +-4800591 1397972 +-4668672 1356375 +-4802344 1391938 +-4803217 1388921 +-4804090 1385902 +-4804959 1382884 +-4805827 1379864 +-4806693 1376844 +-3904512 1115767 +-4208407 1199750 +-3472328 987546 +-2992261 848981 +-2095461 593114 +-2042782 576817 +-2989654 842156 +-3653346 1026634 +-3709438 1039882 +-2824041 789762 +-3191735 890428 +-4152530 1155658 +-4099542 1138136 +-4818618 1334510 +-4819456 1331482 +-4422101 1218714 +-4750124 1305905 +-4192422 1149749 +-4667599 1276910 +-4823615 1316335 +-4824441 1313304 +-4825265 1310272 +-4106605 1112354 +-3208666 866966 +-4027574 1085516 +-4570610 1228796 +-4829358 1295107 +-4360314 1166385 +-3831266 1022286 +-4614060 1228051 +-4238678 1125290 +-4483534 1187280 +-4448278 1174953 +-4394725 1157855 +-4835807 1270816 +-4836605 1267777 +-3908548 1021889 +-4787043 1248359 +-4838985 1258658 +-4839776 1255617 +-4840563 1252576 +-4841350 1249534 +-4026677 1036572 +-3268214 839135 +-2937105 752154 +-2068758 528397 +-1704714 434273 +-1863529 473484 +-2762601 700072 +-2495682 630763 +-1778389 448285 +-2123734 533918 +-2772894 695268 +-3471699 868167 +-3208738 800266 +-4161729 1035167 +-4852911 1203851 +-4853666 1200801 +-4854420 1197752 +-3930350 967132 +-4809936 1180365 +-4752181 1163027 +-4809120 1173760 +-4858159 1182495 +-4326441 1050194 +-3578731 866315 +-2724255 657658 +-2450318 589898 +-3260130 782688 +-3630872 869283 +-4218608 1007193 +-3651685 869415 +-3236972 768529 +-4114855 974227 +-4450766 1050804 +-4866936 1145832 +-4867655 1142774 +-4866089 1139181 +-4869088 1136656 +-4869801 1133596 +-4870512 1130537 +-4661070 1078835 +-4871929 1124415 +-4872634 1121354 +-4873338 1118292 +-4135994 946358 +-4874739 1112167 +-4723047 1074437 +-4369810 991192 +-4499003 1017525 +-4877519 1099912 +-4140870 931059 +-3630866 813991 +-4522784 1010962 +-4153847 925755 +-3865301 858899 +-3429576 759816 +-2487181 549391 +-3267999 719712 +-3007484 660358 +-2342698 512847 +-1967326 429378 +-2779816 604878 +-2776847 602405 +-3036266 656686 +-2800971 603954 +-2274296 488896 +-2556194 547814 +-3106966 663807 +-3377091 719301 +-2428054 515567 +-1640323 347225 +-1826532 385443 +-2475840 520839 +-1860916 390257 +-1341002 280345 +-1436958 299463 +-2053141 426531 +-1335507 276570 +-979350 202172 +-1680084 345728 +-2037934 418031 +-1753325 358503 +-1297772 264507 +-2037756 413994 +-2148228 435032 +-1306650 263752 +-1587986 319502 +-2460527 493449 +-1816594 363123 +-2438987 485941 +-3377030 670630 +-3787685 749707 +-2899361 571986 +-2657777 522591 +-2244355 439837 +-2751432 537416 +-2410116 469178 +-1963502 380955 +-2821130 545511 +-1932448 372411 +-1804188 346518 +-1540678 294903 +-1058057 201835 +-982405 186764 +-982522 186147 +-1738790 328296 +-1318100 248009 +-1007668 188944 +-1351707 252574 +-1288227 239875 +-1217896 225988 +-1111611 205543 +-1487445 274071 +-1552459 285042 +-2061573 377179 +-1757872 320474 +-2624531 476769 +-2587263 468320 +-3029335 546374 +-3793965 681822 +-3701759 662850 +-4476917 798750 +-3505377 623140 +-4118225 729415 +-4224919 745575 +-3306733 581400 +-2711786 475038 +-1962725 342550 +-1039861 180812 +-1125587 194989 +-1151374 198711 +-985538 169453 +-985645 168833 +-985750 168214 +-1011626 171976 +-1661080 281308 +-1712152 288851 +-986170 165736 +-986274 165116 +-1870102 311874 +-2151990 357495 +-2864239 473966 +-2683657 442352 +-3340517 548467 +-3710032 606743 +-3693766 601700 +-4621015 749765 +-4935960 797683 +-4936460 794582 +-4004462 641984 +-4124536 658576 +-4926190 783405 +-4938442 782172 +-4938932 779069 +-4539009 713062 +-4564659 714154 +-4400175 685587 +-4079511 633000 +-3099630 478962 +-3666878 564256 +-3997158 612508 +-3470476 529570 +-3500664 531926 +-2592812 392311 +-3386493 510224 +-4132593 619980 +-3716972 555240 +-3409676 507146 +-3683138 545455 +-2991813 441152 +-2885078 423562 +-3488843 509962 +-3045979 443274 +-3020756 437666 +-2602033 375330 +-2907675 417552 +-2127082 304092 +-2416201 343876 +-2593068 367386 +-2181977 307744 +-2196123 308332 +-1845282 257893 +-1428402 198715 +-1395267 193212 +-1342675 185070 +-990719 135923 +-1801122 245955 +-2649555 360118 +-2557555 345977 +-1747698 235304 +-2339204 313446 +-2194284 292624 +-1380068 183160 +-2260939 298622 +-2117279 278294 +-2718943 355639 +-3148704 409839 +-2208331 286028 +-1580529 203704 +-1967090 252269 +-1994220 254475 +-2315747 294025 +-2618554 330800 +-2034996 255781 +-2856019 357153 +-2663568 331387 +-1824214 225795 +-1411594 173822 +-1119550 137146 +-1047737 127681 +-1274552 154509 +-1423186 171620 +-1607031 192765 +-992957 118473 +-993032 117849 +-993105 117225 +-1482891 174095 +-993252 115977 +-993324 115353 +-993397 114729 +-1494104 171605 +-2385566 272476 +-3139066 356541 +-2219984 250738 +-1920140 215650 +-1736652 193937 +-2618452 290745 +-1912561 211149 +-2273976 249603 +-2461616 268634 +-3081879 334364 +-3080348 332240 +-2871505 307889 +-3631582 387079 +-3947362 418228 +-3326565 350340 +-3502113 366604 +-4340337 451593 +-3963137 409830 +-3925770 403473 +-3304865 337561 +-2425540 246206 +-1607942 162195 +-1007341 100972 +-995076 99111 +-995138 98486 +-995200 97861 +-995261 97235 +-995322 96610 +-995383 95985 +-1409832 135056 +-1454443 138407 +-1366855 129206 +-1690927 158768 +-1492371 139179 +-1354137 125429 +-2244447 206473 +-3147136 287520 +-3310435 300341 +-3467086 312357 +-3626316 324406 +-4582743 407064 +-4375683 385901 +-3548468 310700 +-3049835 265110 +-2064416 178144 +-1952156 167221 +-1298514 110409 +-1675872 141434 +-2145611 179719 +-2363677 196490 +-2699429 222692 +-3406020 278829 +-3464224 281403 +-3659312 294936 +-3067950 245332 +-3012941 239028 +-2483663 195468 +-1885422 147194 +-1312795 101659 +-2051074 157533 +-2502487 190623 +-1864948 140881 +-1149451 86105 +-997253 74074 +-997299 73447 +-1533151 111942 +-1464325 105992 +-2143926 153829 +-2594450 184516 +-1701368 119926 +-1461916 102125 +-1231242 85233 +-1385178 95015 +-997698 67806 +-997741 67179 +-1427358 95205 +-1915835 126578 +-1627388 106493 +-1334561 86489 +-1088950 69885 +-1676094 106508 +-2581439 162410 +-1825764 113716 +-2750385 169570 +-1868977 114050 +-1879052 113479 +-998219 59655 +-1537208 90896 +-998293 58400 +-1332064 77086 +-1823715 104388 +-2660452 150606 +-2084096 116665 +-1383953 76600 +-998506 54636 +-1833835 99189 +-2668726 142664 +-3250862 171736 +-2316910 120938 +-1720560 88725 +-2027559 103279 +-1772025 89147 +-1350151 67073 +-1319357 64712 +-2245229 108710 +-1427446 68216 +-998890 47106 +-1584360 73719 +-2057359 94432 +-1387378 62806 +-2066315 92241 +-2553654 112388 +-3399665 147481 +-3804146 162634 +-4376347 184341 +-3623165 150335 +-4123840 168514 +-4995958 201008 +-4141692 164031 +-4996207 194729 +-4996328 191590 +-4288392 161745 +-3663583 135874 +-3145462 114679 +-3020592 108226 +-3348872 117882 +-2669727 92296 +-3350762 113732 +-2763026 92045 +-2910496 95127 +-3481394 111597 +-4323606 135875 +-3656031 112596 +-4120141 124298 +-4997820 147633 +-4997912 144493 +-4998002 141353 +-4846082 134009 +-4998175 135072 +-4583511 120984 +-4976949 128240 +-4998421 125650 +-4998499 122510 +-4998575 119369 +-4403888 102399 +-4140619 93675 +-4933651 108514 +-4580448 97866 +-4032764 83629 +-4180914 84074 +-3280199 63899 +-2679321 50510 +-3382760 61645 +-2813186 49497 +-3033743 51471 +-2559012 41808 +-1838670 28884 +-2454415 37015 +-2039291 29473 +-1685488 23300 +-1870042 24676 +-1201987 15105 +-1456391 17387 +-2195985 24837 +-2517522 26892 +-1744498 17538 +-1089157 10265 +-1712757 15067 +-2115750 17282 +-2272557 17135 +-1564762 10815 +-999980 6283 +-999984 5655 +-999987 5027 +-1631013 7174 +-2194923 8275 +-1369899 4304 +-999997 2513 +-999998 1885 +-999999 1257 +-1929547 1212 +-1008038 0 +-1000000 -628 +-999999 -1257 +-1918386 -3616 +-1111974 -2795 +-1307572 -4108 +-2143289 -8080 +-2435638 -10713 +-1688679 -8488 +-1720343 -9728 +-2448597 -15385 +-2077721 -14360 +-2999988 -22620 +-3880643 -31698 +-4682229 -41188 +-4999778 -47123 +-4999747 -50265 +-4999715 -53406 +-4853320 -54892 +-4463232 -53285 +-4999605 -62830 +-4601683 -60721 +-4999522 -69113 +-4999478 -72254 +-4293534 -64750 +-4981989 -78263 +-4527052 -73962 +-4096399 -69500 +-3396305 -59757 +-3842782 -70028 +-3332634 -62826 +-3128519 -60945 +-2612786 -52540 +-2262758 -46924 +-1495643 -31956 +-999758 -21989 +-1727196 -39075 +-2301362 -53511 +-2231752 -53296 +-2047841 -50191 +-2663374 -66952 +-1664679 -42893 +-1660274 -43824 +-2568325 -69407 +-3253534 -89970 +-3398488 -96116 +-3616843 -104565 +-2796973 -82621 +-3317357 -100079 +-3048147 -93875 +-3677019 -115555 +-4324996 -138639 +-3845339 -125682 +-3137743 -104528 +-3882854 -131793 +-4848642 -167624 +-4996905 -175893 +-4996794 -179032 +-4996680 -182172 +-4747160 -176062 +-4760508 -179552 +-4396967 -168607 +-4962078 -193399 +-4996083 -197869 +-4633488 -186424 +-4995830 -204147 +-4995701 -207286 +-4995570 -210425 +-4797918 -205119 +-4130632 -179192 +-3247295 -142916 +-2808153 -125357 +-3028289 -137090 +-2257845 -103634 +-2919706 -135851 +-3789742 -178720 +-2954229 -141178 +-3092259 -149722 +-3767489 -184788 +-3515849 -174660 +-4480833 -225421 +-4993526 -254359 +-4149356 -213973 +-4753026 -248097 +-4993038 -263771 +-4992871 -266908 +-4992702 -270046 +-4992532 -273182 +-4954845 -274243 +-4992184 -279456 +-4776443 -270390 +-4155151 -237838 +-3272021 -189351 +-3435650 -200986 +-2453473 -145076 +-2729028 -163090 +-2494727 -150661 +-1809380 -110413 +-2637647 -162619 +-1700193 -105895 +-998027 -62791 +-997987 -63418 +-997947 -64045 +-1100937 -71349 +-1182565 -77385 +-997825 -65926 +-1662878 -110915 +-2211297 -148890 +-3178105 -215993 +-3490807 -239448 +-4358634 -301728 +-4409832 -308056 +-4657438 -328294 +-4399452 -312887 +-4987179 -357835 +-4986953 -360969 +-4677493 -341524 +-4208104 -309910 +-4244286 -315256 +-4530094 -339347 +-4095813 -309404 +-4985557 -379767 +-4985317 -382899 +-4985076 -386031 +-4984832 -389164 +-4984587 -392295 +-4984339 -395427 +-4786880 -382789 +-3824382 -308240 +-3289791 -267233 +-3199659 -261935 +-3922678 -323606 +-3713250 -308678 +-3157091 -264442 +-2425001 -204656 +-2873367 -244314 +-2445231 -209458 +-1507820 -130114 +-1252284 -108856 +-996189 -87225 +-996134 -87851 +-996078 -88477 +-1513062 -135357 +-995966 -89729 +-995910 -90354 +-1392842 -127249 +-1809463 -166457 +-995738 -92232 +-1621927 -151261 +-1776174 -166772 +-2373209 -224334 +-2208616 -210176 +-1642587 -157353 +-1016571 -98028 +-995322 -96610 +-995261 -97235 +-1460906 -143655 +-2427880 -240281 +-2259755 -225076 +-1674965 -167892 +-1706330 -172119 +-1841108 -186883 +-2824726 -288519 +-3236124 -332594 +-3872309 -400437 +-4444364 -462417 +-3487396 -365063 +-2587911 -272548 +-2358868 -249925 +-1739326 -185389 +-1744141 -187011 +-1339300 -144454 +-994166 -107861 +-1129835 -123298 +-1009577 -110816 +-1985275 -219176 +-1175559 -130531 +-1228772 -137221 +-1291680 -145068 +-993682 -112232 +-1131996 -128574 +-1628878 -186048 +-1880376 -215971 +-2712891 -313316 +-2445308 -283970 +-2815600 -328764 +-2609814 -306398 +-3308711 -390558 +-3748020 -444801 +-3028547 -361347 +-2492781 -299011 +-3256712 -392721 +-3997159 -484559 +-3246320 -395608 +-3220980 -394574 +-3027883 -372850 +-2276649 -281796 +-1615604 -201005 +-992271 -124086 +-1571884 -197572 +-992115 -125333 +-1927130 -244683 +-1940151 -247575 +-1369172 -175589 +-2085136 -268740 +-1295829 -167839 +-2045903 -266297 +-2274169 -297462 +-1967045 -258547 +-1210649 -159901 +-991308 -131564 +-991225 -132187 +-1139201 -152649 +-991058 -133433 +-990974 -134055 +-990889 -134678 +-990805 -135301 +-1696465 -232749 +-990634 -136546 +-1824541 -252657 +-1670189 -232352 +-1569999 -219420 +-990288 -139035 +-1042923 -147093 +-1095596 -155224 +-1626192 -231441 +-2571516 -367630 +-1636346 -234985 +-2414954 -348344 +-2983476 -432264 +-3847390 -559902 +-3421066 -500055 +-3267968 -479774 +-2684766 -395877 +-3039224 -450095 +-2447619 -364052 +-3129437 -467474 +-2859933 -429053 +-1892703 -285163 +-2712068 -410355 +-2412040 -366509 +-2364010 -360731 +-1535166 -235242 +-1961096 -301771 +-2784532 -430272 +-2837618 -440301 +-2956846 -460704 +-2121186 -331866 +-2086300 -327751 +-2316057 -365336 +-2678075 -424165 +-2052227 -326363 +-1528864 -244118 +-2253342 -361250 +-1468620 -236392 +-2104990 -340180 +-2792068 -453016 +-2540512 -413840 +-1947276 -318460 +-1861766 -305677 +-986686 -162637 +-1880065 -311108 +-2595179 -431118 +-2965719 -494589 +-3627729 -607334 +-4128796 -693887 +-4852632 -818671 +-4308526 -729661 +-4725678 -803362 +-4928752 -841071 +-4928223 -844167 +-4927692 -847264 +-4927158 -850360 +-4508026 -780940 +-3747743 -651660 +-3465533 -604832 +-2756894 -482940 +-2512525 -441760 +-3157801 -557260 +-4025271 -712952 +-4737695 -842206 +-4922271 -878208 +-4017220 -719338 +-4637399 -833397 +-4920607 -887485 +-4920048 -890576 +-4522738 -821595 +-3846943 -701328 +-3618815 -662088 +-3860405 -708796 +-4704497 -866832 +-4916656 -909118 +-4006220 -743377 +-3788132 -705372 +-3362068 -628222 +-3419629 -641202 +-2753302 -518052 +-3306634 -624317 +-3811789 -722174 +-3967432 -754245 +-4115859 -785142 +-4910847 -939992 +-4031136 -774232 +-3247442 -625829 +-2436748 -471185 +-2697740 -523410 +-2526377 -491810 +-2876119 -561770 +-2549103 -499560 +-2875357 -565374 +-3069589 -605568 +-2100583 -415774 +-2374256 -471493 +-2339243 -466068 +-1539330 -307700 +-2245576 -450341 +-2149995 -432578 +-2675338 -540026 +-2620081 -530586 +-2524019 -512783 +-3205939 -653421 +-3408147 -696865 +-2594199 -532135 +-3257206 -670267 +-3831143 -790882 +-3909652 -809650 +-2943035 -611402 +-3887920 -810246 +-3210737 -671226 +-3732718 -782798 +-4542602 -955620 +-4344323 -916760 +-3596255 -761259 +-3098857 -658004 +-3693230 -786637 +-3163725 -675934 +-3035456 -650524 +-2905533 -624590 +-3002201 -647344 +-3718277 -804192 +-4619139 -1002069 +-4885674 -1063106 +-3989875 -870809 +-3105206 -679770 +-2549572 -559814 +-2524275 -555922 +-1847082 -408000 +-2046584 -453417 +-1321939 -293745 +-1192104 -265680 +-2089175 -466986 +-2588898 -580395 +-3291849 -740160 +-2555568 -576297 +-2703622 -611470 +-1897381 -430378 +-1812754 -412380 +-2032611 -463738 +-2242494 -513105 +-3016891 -692290 +-2527902 -581754 +-2076547 -479256 +-2209532 -511411 +-2987793 -693522 +-2469934 -574953 +-2451218 -572221 +-2839841 -664824 +-3228760 -758012 +-2718336 -639983 +-3020583 -713145 +-2868546 -679153 +-3166349 -751762 +-3070841 -731124 +-3758931 -897445 +-3092810 -740463 +-2479749 -595335 +-3287031 -791331 +-3112536 -751392 +-3122198 -755801 +-3491875 -847612 +-4000667 -973778 +-4068438 -992982 +-4440494 -1086746 +-4624130 -1134768 +-4508196 -1109322 +-4854420 -1197752 +-4853666 -1200801 +-4082402 -1012712 +-4718848 -1173742 +-4472384 -1115422 +-4473540 -1118697 +-4626606 -1160063 +-4849105 -1219091 +-4732165 -1192853 +-4062965 -1026881 +-3832130 -971102 +-3702270 -940669 +-2795258 -712087 +-3643961 -930731 +-3298394 -844675 +-2469932 -634171 +-2005932 -516379 +-2445763 -631242 +-2932530 -758841 +-2988169 -775242 +-3317680 -862954 +-3757944 -979992 +-3839335 -1003794 +-3435232 -900447 +-4048832 -1064004 +-4644504 -1223662 +-3701334 -977658 +-2948906 -780897 +-2385828 -633393 +-1563614 -416162 +-966196 -257807 +-966034 -258414 +-1643432 -440725 +-1688793 -454028 +-1546819 -416901 +-1700044 -459344 +-2073365 -561611 +-2569903 -697842 +-2223582 -605301 +-1639885 -447514 +-1241878 -339739 +-1438080 -394386 +-2355572 -647594 +-3286284 -905687 +-4244118 -1172532 +-3359363 -930371 +-2727688 -757275 +-3074266 -855575 +-3864199 -1078032 +-3261439 -912083 +-2379825 -667146 +-1999508 -561886 +-2689622 -757640 +-1738216 -490817 +-2028710 -574220 +-1410635 -400233 +-1259000 -358065 +-961684 -274161 +-961511 -274765 +-1300210 -372436 +-961165 -275973 +-1196879 -344466 +-1451224 -418655 +-1593474 -460776 +-2062710 -597868 +-2865547 -832518 +-2892313 -842266 +-2341800 -683548 +-3006135 -879511 +-3342100 -980085 +-3689309 -1084424 +-4497818 -1325145 +-4795287 -1416060 +-4536718 -1342804 +-3858566 -1144718 +-4449201 -1322983 +-3508517 -1045668 +-3241736 -968375 +-2884987 -863782 +-3527160 -1058467 +-3366540 -1012573 +-3414691 -1029395 +-3435628 -1038063 +-2665154 -807094 +-2999321 -910349 +-2356148 -716751 +-2558376 -780026 +-2554750 -780675 +-3457390 -1058878 +-3527759 -1082854 +-3717510 -1143656 +-3659050 -1128188 +-3641760 -1125363 +-3334519 -1032716 +-3951149 -1226411 +-3150840 -980171 +-3058416 -953527 +-3013070 -941468 +-3110627 -974096 +-3634135 -1140541 +-3732176 -1173886 +-2966215 -935016 +-2998547 -947280 +-2228950 -705695 +-1715470 -544311 +-1186442 -377274 +-2019545 -643587 +-1333250 -425802 +-1668945 -534169 +-1356881 -435229 +-952023 -306028 +-1833219 -590559 +-2677975 -864550 +-2089226 -675929 +-2914849 -945067 +-2043899 -664103 +-1096044 -356888 +-1069690 -349050 +-1963221 -641983 +-2550921 -835938 +-3306170 -1085735 +-3114056 -1024813 +-2545668 -839534 +-2618757 -865463 +-2848746 -943457 +-3513744 -1166143 +-3449676 -1147287 +-3063066 -1020847 +-3180671 -1062263 +-2383846 -797809 +-1462365 -490436 +-1098827 -369284 +-1615927 -544196 +-1591854 -537203 +-2089120 -706478 +-3000341 -1016727 +-3030558 -1029090 +-3607801 -1227634 +-4497264 -1533447 +-4731443 -1616615 +-4730427 -1619587 +-4728236 -1622157 +-4166668 -1432422 +-4170057 -1436517 +-4726341 -1631471 +-4725316 -1634440 +-4374587 -1516205 +-4188447 -1454638 +-3279630 -1141318 +-2924619 -1019834 +-2793423 -976054 +-3009774 -1053772 +-3370865 -1182574 +-2731701 -960269 +-3123469 -1100192 +-2627377 -927308 +-3255613 -1151339 +-2849134 -1009603 +-3486220 -1237823 +-4148147 -1475784 +-3397906 -1211276 +-3315667 -1184309 +-4220365 -1510445 +-3412622 -1223777 +-2963536 -1064836 +-3406236 -1226320 +-4269019 -1539972 +-3958867 -1430902 +-4272796 -1547405 +-4700132 -1705508 +-4128857 -1501149 +-4697985 -1711413 +-4620537 -1686488 +-4118557 -1506200 +-4694751 -1720265 +-3801396 -1395629 +-4646936 -1709371 +-4691500 -1729111 +-3885924 -1434980 +-4193365 -1551506 +-4427771 -1641397 +-4687140 -1740897 +-4131574 -1537504 +-3970036 -1480230 +-3134108 -1170798 +-3748889 -1403144 +-3866426 -1449906 +-3395941 -1275909 +-4168935 -1569325 +-4678330 -1764435 +-4663592 -1762225 +-4614384 -1746944 +-3889328 -1475242 +-3477591 -1321569 +-2902033 -1104930 +-2885713 -1100792 +-3548506 -1356178 +-3999007 -1531232 +-4065134 -1559482 +-3783166 -1454040 +-3244459 -1249331 +-3128151 -1206802 +-2930904 -1132823 +-3186162 -1233784 +-3277582 -1271554 +-2863820 -1113103 +-3278420 -1276621 +-2531891 -987754 +-3172878 -1240117 +-3689783 -1444822 +-4566050 -1791254 +-4332071 -1702606 +-4530720 -1783967 +-3664662 -1445618 +-3088443 -1220557 +-3101498 -1227970 +-3624599 -1437715 +-2717315 -1079813 +-2610225 -1039157 +-2349739 -937166 +-2538955 -1014482 +-2528751 -1012247 +-3188278 -1278578 +-3613170 -1451606 +-4497454 -1810154 +-3609875 -1455553 +-4287282 -1731826 +-4634872 -1875622 +-4633693 -1878534 +-4632512 -1881445 +-4631329 -1884355 +-4299056 -1752312 +-4628957 -1890173 +-4402934 -1801108 +-4251871 -1742432 +-3413426 -1401340 +-3335363 -1371742 +-4239466 -1746689 +-4216808 -1740454 +-4620599 -1910514 +-4142614 -1715927 +-3531289 -1465308 +-4121134 -1713100 +-4528338 -1885707 +-4614574 -1925021 +-4613364 -1927920 +-4612152 -1930818 +-4610938 -1933716 +-4436006 -1863632 +-4608504 -1939509 +-4385243 -1848792 +-4606063 -1945298 +-4604840 -1948192 +-4569744 -1936730 +-4602388 -1953977 +-4601159 -1956868 +-4594134 -1957290 +-4598697 -1962649 +-4144456 -1771866 +-4596227 -1968426 +-3954811 -1696668 +-3600116 -1547178 +-4372761 -1882485 +-3612035 -1557681 +-2859484 -1235276 +-2218367 -959973 +-1666381 -722351 +-2298717 -998175 +-1754296 -763081 +-1463427 -637653 +-1110504 -484706 +-1333121 -582870 +-1068298 -467883 +-1849588 -811450 +-2574492 -1131410 +-3247321 -1429532 +-3367715 -1485058 +-3028288 -1337655 +-2128896 -941975 +-2765837 -1225881 +-2917198 -1295162 +-2271758 -1010312 +-2522712 -1123817 +-2371045 -1058038 +-2273289 -1016129 +-2868892 -1284519 +-3006158 -1348247 +-2605353 -1170455 +-3005904 -1352673 +-2978461 -1342574 +-3810998 -1720731 +-4173763 -1887684 +-3472224 -1573025 +-3122796 -1417089 +-2304088 -1047315 +-1751094 -797281 +-1338856 -610603 +-2233738 -1020422 +-2215994 -1014000 +-2550964 -1169215 +-2432420 -1116731 +-2774456 -1275872 +-2298800 -1058886 +-2284853 -1054202 +-2671766 -1234755 +-1934497 -895503 +-1278559 -592836 +-906956 -421226 +-1089042 -506626 +-906426 -422365 +-1740713 -812448 +-1616966 -755928 +-1138080 -532922 +-905361 -424642 +-905094 -425211 +-1624247 -764313 +-2231912 -1051971 +-2507966 -1184011 +-3370881 -1593984 +-2582413 -1223128 +-2613715 -1239965 +-2234799 -1061925 +-3113604 -1481912 +-2296977 -1095011 +-2381098 -1136950 +-2089802 -999472 +-1213393 -581256 +-1840151 -882917 +-2428848 -1167255 +-3280105 -1578890 +-3044763 -1467964 +-2247916 -1085524 +-1651692 -798886 +-1234539 -598076 +-899680 -436551 +-1343781 -653085 +-1543901 -751544 +-1583825 -772209 +-898580 -438810 +-898304 -439375 +-1286898 -630445 +-1238960 -607926 +-2004168 -984957 +-2607935 -1283716 +-2499479 -1232281 +-2625328 -1296378 +-3206297 -1585765 +-2917844 -1445385 +-3397377 -1685586 +-3625779 -1801746 +-3828074 -1905272 +-3267348 -1628755 +-4002674 -1998452 +-3344922 -1672676 +-3477631 -1741771 +-4117821 -2065648 +-3929310 -1974175 +-3226362 -1623538 +-2574372 -1297478 +-2680025 -1352839 +-3409394 -1723703 +-3921215 -1985561 +-3897856 -1976811 +-4457882 -2264352 +-4047738 -2059223 +-3976906 -2026335 +-4453606 -2272751 +-3894428 -1990479 +-3565532 -1825203 +-3729917 -1912311 +-3813199 -1958036 +-3730888 -1918733 +-4445006 -2289525 +-4443566 -2292317 +-4442125 -2295109 +-4440682 -2297899 +-3668618 -1901306 +-3163407 -1641996 +-3700304 -1923630 +-4366890 -2273647 +-3719404 -1939501 +-3001286 -1567434 +-2839167 -1485038 +-3315712 -1736951 +-2695300 -1414104 +-2656140 -1395688 +-3071051 -1616169 +-3503774 -1846705 +-3007001 -1587290 +-2992755 -1582176 +-2208904 -1169554 +-2391355 -1268082 +-3184872 -1691430 +-2816036 -1497817 +-2047622 -1090758 +-1504464 -802634 +-1834442 -980159 +-2352356 -1258786 +-2789135 -1494769 +-2892687 -1552606 +-2037981 -1095505 +-2378869 -1280675 +-1621281 -874138 +-2011302 -1086056 +-1201142 -649564 +-1006911 -545343 +-1662174 -901586 +-2389377 -1297974 +-1805620 -982331 +-1720048 -937178 +-1194881 -652011 +-877515 -479550 +-877213 -480101 +-1678682 -920118 +-1621839 -890287 +-2435821 -1339104 +-2501165 -1377074 +-2401359 -1324090 +-2533338 -1398939 +-2028692 -1121932 +-2441207 -1352069 +-2201101 -1220894 +-1802011 -1001010 +-1246087 -693221 +-1966740 -1095753 +-2473254 -1379990 +-2725136 -1522778 +-3070965 -1718556 +-2952704 -1654812 +-3302202 -1853412 +-3772927 -2120733 +-4073420 -2293007 +-4111652 -2317932 +-4015638 -2267130 +-3309478 -1871193 +-3303926 -1870794 +-3741793 -2121835 +-2958825 -1680300 +-2365478 -1345308 +-3187471 -1815448 +-2533429 -1445042 +-2900123 -1656617 +-3417677 -1955105 +-2935181 -1681539 +-2734433 -1568815 +-2394070 -1375539 +-3112566 -1790962 +-3896404 -2245240 +-3045084 -1757230 +-3730273 -2155758 +-3489600 -2019597 +-3687859 -2137433 +-3015336 -1750180 +-2403002 -1396785 +-2236014 -1301600 +-1988649 -1159280 +-1662991 -970839 +-929815 -543601 +-1080950 -632872 +-862655 -505793 +-862337 -506335 +-862019 -506876 +-1227560 -722857 +-861381 -507959 +-1253385 -740187 +-1556636 -920592 +-2261086 -1339121 +-2851775 -1691376 +-2246298 -1334178 +-2622134 -1559634 +-2848943 -1696963 +-2823161 -1684010 +-2864647 -1711198 +-2594521 -1552051 +-2766775 -1657455 +-2888905 -1733085 +-2053975 -1233958 +-2567825 -1544857 +-2547902 -1535053 +-2856866 -1723644 +-2786394 -1683515 +-2454511 -1485100 +-2152396 -1304154 +-2785784 -1690322 +-1951674 -1185890 +-1349033 -820870 +-897335 -546790 +-1287656 -785742 +-2097744 -1281876 +-1611230 -985971 +-1310858 -803295 +-979373 -601007 +-886316 -544669 +-851654 -524105 +-851324 -524640 +-1045302 -645088 +-1553464 -960038 +-953756 -590248 +-850003 -526778 +-849672 -527312 +-849340 -527846 +-849009 -528379 +-848676 -528912 +-1477959 -922384 +-2009116 -1255630 +-1616882 -1011911 +-2399951 -1504086 +-2212940 -1388821 +-2277815 -1431531 +-2804936 -1765269 +-3455314 -2177612 +-3206588 -2023676 +-3743921 -2366077 +-3483517 -2204571 +-3013241 -1909606 +-3714598 -2357356 +-3539788 -2249539 +-3740148 -2380168 +-3725534 -2374158 +-4214893 -2689736 +-4213202 -2692383 +-3521321 -2253364 +-3270143 -2095528 +-2687841 -1724769 +-2553708 -1640962 +-2837240 -1825674 +-3502210 -2256674 +-4192377 -2705118 +-3578288 -2312064 +-2787944 -1803878 +-2177677 -1410960 +-2085285 -1352958 +-2509829 -1630649 +-1858314 -1209018 +-2385062 -1553853 +-2615196 -1706126 +-2909371 -1900650 +-2742270 -1793944 +-2675872 -1752910 +-3459593 -2269418 +-3817732 -2507781 +-3467678 -2280959 +-4047230 -2665819 +-4173855 -2752986 +-4172124 -2755609 +-3740041 -2473602 +-4001247 -2649975 +-4166923 -2763468 +-3440456 -2284795 +-3574968 -2377362 +-3354272 -2233640 +-3311055 -2207865 +-3830388 -2557643 +-4133949 -2764096 +-4154728 -2781768 +-3820289 -2561325 +-3582793 -2405359 +-4075138 -2739618 +-3805241 -2561646 +-3593420 -2422333 +-2878780 -1943224 +-2262805 -1529501 +-1874189 -1268540 +-1916799 -1299137 +-1724760 -1170562 +-2166738 -1472514 +-2966573 -2018807 +-2858840 -1948122 +-2330939 -1590536 +-2828730 -1932814 +-2863362 -1959117 +-3192043 -2186947 +-3099322 -2126284 +-2946672 -2024283 +-2144682 -1475322 +-2706457 -1864272 +-3329540 -2296553 +-3939076 -2720634 +-3331036 -2303767 +-2896681 -2006056 +-3635301 -2520959 +-3452200 -2397198 +-3960733 -2754012 +-3711072 -2583876 +-3867659 -2696511 +-3238784 -2261088 +-3813655 -2665988 +-3379515 -2365659 +-3544053 -2484154 +-3106068 -2180067 +-3570935 -2509695 +-2928462 -2060908 +-2632319 -1854971 +-3218568 -2271123 +-3607769 -2549153 +-4012460 -2838878 +-3413901 -2418608 +-3302344 -2342692 +-3826380 -2718061 +-4074425 -2898113 +-4072604 -2900672 +-4070780 -2903231 +-4068955 -2905788 +-4067129 -2908344 +-3879060 -2777544 +-4063471 -2913452 +-4061639 -2916005 +-3700100 -2659967 +-4057972 -2921107 +-4056136 -2923656 +-4054298 -2926204 +-3452330 -2495032 +-2914209 -2108915 +-2191072 -1587704 +-2266303 -1644391 +-1498367 -1088627 +-1723734 -1254021 +-1630141 -1187500 +-1060571 -773609 +-807537 -589817 +-807166 -590324 +-1185730 -868332 +-1377322 -1009968 +-1753532 -1287532 +-1253152 -921340 +-2013910 -1482614 +-1779329 -1311643 +-1997130 -1474134 +-1431782 -1058226 +-1611410 -1192555 +-1619975 -1200469 +-2420105 -1795756 +-2237717 -1662602 +-2485074 -1848811 +-2100621 -1564842 +-1392630 -1038791 +-1087731 -812425 +-860247 -643359 +-800438 -599415 +-800062 -599918 +-861622 -646924 +-1611274 -1211363 +-1340721 -1009279 +-888698 -669877 +-1390084 -1049178 +-1089304 -823236 +-1674989 -1267520 +-1240390 -939871 +-796657 -604432 +-796277 -604933 +-1004926 -764440 +-795516 -605933 +-795135 -606433 +-794754 -606932 +-794372 -607431 +-1178983 -902705 +-1218568 -934229 +-793226 -608928 +-792843 -609426 +-792460 -609924 +-960175 -739968 +-1715945 -1324129 +-2221486 -1716464 +-2619452 -2026588 +-3236608 -2507315 +-3950775 -3064535 +-3384420 -2628633 +-3645658 -2835208 +-3192238 -2485806 +-3668642 -2860487 +-3162480 -2469022 +-3205347 -2505734 +-3304754 -2586791 +-3884144 -3044244 +-3933382 -3086827 +-3931442 -3089298 +-3929500 -3091768 +-3836949 -3022853 +-3291584 -2596552 +-2562783 -2024255 +-2768788 -2189797 +-2899827 -2296397 +-2698078 -2139390 +-3237153 -2570154 +-3256835 -2589119 +-3628878 -2888608 +-3909997 -3116396 +-3908038 -3118852 +-3768303 -3011213 +-3904115 -3123761 +-3827415 -3066338 +-3142430 -2520805 +-2572190 -2066025 +-1885332 -1516279 +-1983165 -1597014 +-2558824 -2063237 +-2048012 -1653482 +-2546238 -2058373 +-2530440 -2048233 +-2806958 -2274977 +-2297385 -1864372 +-2485000 -2019217 +-3051906 -2483048 +-3088350 -2515926 +-3334526 -2719961 +-3823372 -3122714 +-3761311 -3075967 +-3399720 -2783827 +-3663477 -3003650 +-3864554 -3172574 +-3337714 -2743581 +-3836111 -3157301 +-3858567 -3179852 +-3856568 -3182276 +-3473409 -2869780 +-3696418 -3057943 +-3850563 -3189540 +-3848558 -3191959 +-3331921 -2767000 +-3638026 -3025070 +-3835231 -3193127 +-3669402 -3058967 +-3030562 -2529633 +-2599930 -2172954 +-3350012 -2803430 +-3647569 -3056337 +-3830446 -3213671 +-3828427 -3216077 +-3826405 -3218482 +-3824382 -3220885 +-3822358 -3223287 +-3820332 -3225688 +-3818304 -3228088 +-3816275 -3230487 +-3536722 -2997660 +-3812212 -3235280 +-3306169 -2809395 +-3636141 -3093723 +-2914506 -2482896 +-3540076 -3019666 +-3721023 -3178054 +-3458030 -2957196 +-2762806 -2365670 +-3412270 -2925496 +-3259060 -2797697 +-2900265 -2492860 +-2468260 -2124238 +-3036798 -2616857 +-3334520 -2877062 +-3783606 -3268688 +-3781552 -3271065 +-3779496 -3273440 +-3777438 -3275814 +-3775379 -3278187 +-3773319 -3280559 +-3771257 -3282929 +-3769193 -3285298 +-3341153 -2915906 +-3010472 -2630647 +-2343749 -2050641 +-2085584 -1827077 +-1576822 -1383128 +-847935 -744719 +-1289499 -1133970 +-1091095 -960712 +-750111 -661312 +-749695 -661783 +-871951 -770678 +-748863 -662725 +-748447 -663195 +-787821 -698968 +-747613 -664135 +-747195 -664605 +-746778 -665074 +-746359 -665543 +-745941 -666012 +-745523 -666480 +-1397820 -1251201 +-1046460 -937880 +-1756786 -1576495 +-1718064 -1543697 +-1501040 -1350404 +-879828 -792534 +-1003937 -905473 +-1167449 -1054279 +-1900485 -1718425 +-2313966 -2094940 +-2846006 -2579877 +-2223457 -2018088 +-2079540 -1889848 +-1439909 -1310217 +-2021967 -1842172 +-1503372 -1371421 +-1851940 -1691528 +-2050000 -1874796 +-1411755 -1292728 +-1246985 -1143292 +-1723442 -1582124 +-1075996 -989014 +-1781626 -1639667 +-2363287 -2177726 +-2200308 -2030101 +-2193389 -2026270 +-2865214 -2650246 +-3468780 -3212575 +-3055457 -2833349 +-3072518 -2852762 +-3232321 -3004920 +-3166042 -2947015 +-3657721 -3408971 +-3231330 -3015373 +-3508458 -3278107 +-3651288 -3415859 +-3649141 -3418153 +-3646993 -3420445 +-3644843 -3422736 +-3642692 -3425025 +-3499294 -3294341 +-3638385 -3429600 +-3600290 -3397965 +-3634072 -3434169 +-3150940 -2981363 +-3629754 -3438733 +-3627593 -3441013 +-3143515 -2985587 +-3326527 -3163384 +-2750659 -2619051 +-2579085 -2458777 +-3299974 -3149999 +-3601367 -3442023 +-3612423 -3456935 +-3610250 -3459204 +-3067337 -2942704 +-2576412 -2474837 +-3103787 -2985172 +-2921306 -2813201 +-2338497 -2254793 +-2786094 -2689748 +-2350136 -2271721 +-2080692 -2013798 +-1614327 -1564392 +-2078131 -2016383 +-1604826 -1559100 +-2253403 -2191951 +-2518466 -2452868 +-2693269 -2626416 +-2680322 -2617078 +-2580868 -2523141 +-1887851 -1847946 +-1603906 -1571977 +-1870029 -1835108 +-1985052 -1950432 +-1436738 -1413456 +-737201 -726167 +-711977 -702203 +-711536 -702650 +-1313320 -1298550 +-1106162 -1095097 +-827352 -820106 +-1226250 -1217039 +-1662546 -1652133 +-1003068 -998039 +-708438 -705773 +-707995 -706218 +-984722 -983485 +-1459036 -1459036 +-1847296 -1849619 +-1925761 -1930607 +-1335946 -1340992 +-1711587 -1720213 +-1384787 -1393515 +-953727 -960945 +-1209178 -1219861 +-1195993 -1208078 +-1650539 -1669312 +-1712375 -1734030 +-2309579 -2341726 +-1946083 -1975652 +-1370730 -1393308 +-1793365 -1825196 +-1125178 -1146589 +-774210 -789935 +-1144640 -1169358 +-699065 -715059 +-947286 -970178 +-698165 -715936 +-697715 -716375 +-697265 -716813 +-1374400 -1414709 +-1332772 -1373586 +-1270279 -1310826 +-1800239 -1860040 +-1666317 -1723835 +-2212165 -2291404 +-2601988 -2698582 +-2946660 -3059894 +-3466003 -3603724 +-3272747 -3407070 +-2751224 -2867747 +-2841679 -2965761 +-2752673 -2876485 +-2217886 -2320560 +-2354105 -2466186 +-2853787 -2993422 +-3152816 -3311246 +-3201792 -3366916 +-3062150 -3224127 +-3043352 -3208370 +-2810427 -2966546 +-2405923 -2542770 +-1919350 -2031076 +-1829598 -1938537 +-1736498 -1842212 +-1626460 -1727648 +-1740201 -1850794 +-2350472 -2502999 +-2001247 -2133796 +-2311476 -2467679 +-2903518 -3103635 +-3046997 -3261108 +-2831015 -3033768 +-3408971 -3657721 +-3406672 -3659862 +-2923327 -3144553 +-2877939 -3099634 +-2256249 -2433118 +-1872631 -2021975 +-2321029 -2509293 +-2557178 -2768084 +-3162108 -3427223 +-3388232 -3676939 +-3385921 -3679067 +-3383609 -3681194 +-3381295 -3683319 +-3241778 -3535797 +-3376664 -3687566 +-3374346 -3689686 +-3372027 -3691806 +-3284280 -3600277 +-2868301 -3148246 +-3157460 -3470003 +-2973026 -3271440 +-2496339 -2750376 +-3068952 -3385532 +-3121428 -3447772 +-3353428 -3708709 +-3288206 -3641173 +-3348765 -3712920 +-2974464 -3302086 +-2311449 -2569288 +-1932416 -2150691 +-1453809 -1620069 +-1505645 -1679955 +-1465210 -1636908 +-1027480 -1149336 +-1571368 -1759951 +-1738935 -1950093 +-1799541 -2020612 +-1936761 -2177443 +-2484681 -2796990 +-2205070 -2485377 +-1751801 -1976990 +-1372880 -1551322 +-1419763 -1606332 +-1093726 -1239019 +-661312 -750111 +-660840 -750526 +-1161694 -1321026 +-796728 -907152 +-865777 -987021 +-658952 -752185 +-658479 -752599 +-658006 -753012 +-657533 -753426 +-657060 -753839 +-867948 -997053 +-1463912 -1683801 +-1215704 -1400086 +-1227788 -1415799 +-1019062 -1176603 +-1671557 -1932422 +-1407643 -1629389 +-1855254 -2150243 +-1777156 -2062345 +-1864470 -2166422 +-1329456 -1546727 +-1303307 -1518233 +-835188 -974155 +-650403 -759589 +-649926 -759998 +-649448 -760406 +-648970 -760814 +-733236 -860697 +-1092789 -1284386 +-647535 -762036 +-647056 -762442 +-646577 -762849 +-646097 -763255 +-645618 -763661 +-1112065 -1317069 +-1547991 -1835695 +-2122515 -2520210 +-1869313 -2222398 +-2008389 -2390792 +-2416978 -2880851 +-2422354 -2890946 +-2169971 -2593048 +-2067770 -2474078 +-2445460 -2929722 +-2111293 -2532614 +-1987861 -2387598 +-1789341 -2151907 +-2275324 -2739863 +-2819485 -3399465 +-2223893 -2684788 +-2564150 -3099525 +-2572255 -3113303 +-2122767 -2572560 +-2406609 -2920281 +-3015228 -3663493 +-3175001 -3862560 +-3020523 -3679340 +-2849875 -3475921 +-2582317 -3153627 +-2579624 -3154379 +-2443127 -2991303 +-2179205 -2671589 +-1951606 -2395636 +-1890168 -2323199 +-2141122 -2635026 +-2561960 -3156992 +-1940286 -2394002 +-2006072 -2478354 +-2499778 -3092263 +-3094077 -3832341 +-3138457 -3892312 +-3136011 -3894283 +-3133563 -3896252 +-3131114 -3898220 +-3128664 -3900187 +-3126213 -3902152 +-2513069 -3140865 +-2808750 -3514936 +-3048825 -3820291 +-3116396 -3909997 +-2751635 -3456801 +-3111480 -3913910 +-2906102 -3660285 +-3106560 -3917817 +-3104097 -3919768 +-3101634 -3921717 +-3099169 -3923666 +-2727864 -3458044 +-2741746 -3480136 +-2756565 -3503473 +-2414367 -3072525 +-2030711 -2587628 +-2350483 -2998975 +-1794696 -2292814 +-1825728 -2335481 +-1686291 -2159908 +-1807924 -2318705 +-2216174 -2845981 +-2416927 -3107811 +-2545181 -3276974 +-2153790 -2776650 +-2188655 -2825261 +-2437986 -3151202 +-2260930 -2926146 +-2548647 -3302803 +-2892027 -3752663 +-2440181 -3170471 +-2161537 -2812088 +-1869785 -2435694 +-1561614 -2036901 +-1676565 -2189686 +-1687143 -2206372 +-1265440 -1657043 +-985912 -1292697 +-816334 -1071747 +-1378833 -1812601 +-1968206 -2590762 +-2475287 -3262489 +-2145916 -2832063 +-1576556 -2083370 +-1109403 -1467958 +-604529 -800957 +-811031 -1075962 +-704749 -936184 +-1178770 -1567921 +-1445024 -1924592 +-894103 -1192393 +-756213 -1009822 +-598912 -800815 +-598408 -801191 +-597905 -801567 +-689490 -925561 +-596897 -802318 +-616203 -829355 +-978204 -1318306 +-595384 -803441 +-641886 -867333 +-594374 -804189 +-848669 -1149762 +-593363 -804935 +-1007936 -1369132 +-1296145 -1762939 +-934989 -1273392 +-591338 -806424 +-1072590 -1464650 +-1649367 -2255225 +-2070221 -2834406 +-1873019 -2567797 +-2215223 -3040949 +-2540337 -3491858 +-2938926 -4045085 +-2936384 -4046931 +-2893207 -3992699 +-2931296 -4050618 +-2928750 -4052458 +-2926204 -4054298 +-2923656 -4056136 +-2691352 -3738798 +-2212063 -3077051 +-2452220 -3415644 +-2806902 -3914861 +-2910899 -4065300 +-2615983 -3658282 +-2211274 -3096432 +-2175343 -3050169 +-1627900 -2285605 +-1102940 -1550612 +-749796 -1055534 +-1097645 -1547280 +-1191157 -1681336 +-698717 -987564 +-577060 -816702 +-667144 -945457 +-1008101 -1430557 +-618013 -878170 +-575005 -818150 +-1089317 -1552014 +-1299745 -1854299 +-959740 -1371058 +-1357601 -1942028 +-1532210 -2194738 +-1962714 -2815160 +-1531142 -2199090 +-1002173 -1441294 +-1219568 -1756298 +-1540110 -2220887 +-1480013 -2137092 +-1617611 -2338916 +-1844745 -2670917 +-1329084 -1926905 +-1462934 -2123815 +-1265988 -1840372 +-1607640 -2340181 +-1909956 -2783997 +-1346830 -1965817 +-1509978 -2206919 +-1728772 -2530110 +-1966896 -2882497 +-2188022 -3210890 +-2082155 -3059661 +-2262043 -3328496 +-1934021 -2849675 +-1939898 -2862203 +-1980815 -2926532 +-2170372 -3210936 +-1800975 -2668046 +-1259272 -1868072 +-1645024 -2443628 +-1115711 -1659603 +-1658911 -2470956 +-1588664 -2369538 +-1994911 -2979512 +-1447340 -2164625 +-1788401 -2678353 +-2170770 -3255424 +-2572371 -3862948 +-2721765 -4092866 +-2766085 -4165185 +-2763468 -4166923 +-2456254 -3708744 +-2041674 -3086973 +-2347842 -3554746 +-2343804 -3553485 +-2315782 -3515806 +-2567762 -3903697 +-2745114 -4179037 +-2742488 -4180761 +-2463799 -3761067 +-2501116 -3823272 +-2504388 -3833528 +-2590883 -3971375 +-2495506 -3830436 +-2307936 -3547400 +-2253157 -3467967 +-1877270 -2893394 +-2083518 -3215704 +-2621272 -4051250 +-2096236 -3244260 +-1796361 -2783990 +-2141157 -3322934 +-2535263 -3939996 +-2027359 -3155029 +-1822822 -2840645 +-1739774 -2714976 +-1423702 -2224812 +-1946303 -3045691 +-1609309 -2521834 +-1560045 -2448025 +-1560543 -2452206 +-1554594 -2446250 +-1369909 -2158631 +-1890424 -2982973 +-1650114 -2607400 +-2136742 -3381037 +-2127209 -3370641 +-2594113 -4116195 +-2304328 -3661477 +-1961130 -3120499 +-1575639 -2510616 +-1104888 -1762983 +-1537423 -2456573 +-1158127 -1853104 +-1678926 -2690186 +-1397899 -2243025 +-1493525 -2399822 +-1894015 -3047604 +-2299601 -3705410 +-2633889 -4250015 +-2155522 -3483013 +-2474580 -4004184 +-1975796 -3201586 +-1872553 -3038561 +-1976107 -3211112 +-2080184 -3384996 +-1659017 -2703455 +-1262782 -2060672 +-1186243 -1938505 +-695403 -1138002 +-520891 -853624 +-520354 -853951 +-519817 -854277 +-788064 -1296954 +-518743 -854930 +-1000854 -1651825 +-734378 -1213749 +-713605 -1181092 +-1194989 -1980643 +-782568 -1298918 +-761952 -1266498 +-549490 -914649 +-1015675 -1693042 +-1362571 -2274528 +-1788974 -2990579 +-1693937 -2835752 +-1528514 -2562479 +-1806765 -3033283 +-1359697 -2285990 +-1729011 -2911060 +-2126079 -3584714 +-2501126 -4223116 +-2545207 -4303710 +-2040518 -3455280 +-1555826 -2638319 +-1397342 -2372973 +-1876370 -3191045 +-1405650 -2393957 +-1044448 -1781359 +-1309854 -2237241 +-1140950 -1951563 +-1527098 -2615829 +-1746955 -2996755 +-2127192 -3654294 +-2222342 -3823275 +-1930095 -3325307 +-1486725 -2565148 +-1084650 -1874134 +-1316504 -2278048 +-1071912 -1857505 +-913386 -1585097 +-1153354 -2004449 +-927574 -1614404 +-1063093 -1852965 +-924748 -1614179 +-955440 -1670184 +-847249 -1483219 +-495459 -868632 +-536223 -941473 +-494367 -869253 +-493820 -869564 +-764911 -1348897 +-492727 -870184 +-970023 -1715627 +-974770 -1726555 +-1010536 -1792534 +-1024581 -1820120 +-870006 -1547799 +-655719 -1168286 +-1042417 -1859999 +-718304 -1283570 +-958077 -1714558 +-953138 -1708239 +-1138444 -2043365 +-682474 -1226769 +-485603 -874179 +-485054 -874484 +-595207 -1074667 +-1007028 -1820922 +-568279 -1029096 +-489155 -887127 +-496573 -901920 +-481754 -876307 +-558841 -1018044 +-880282 -1606005 +-1156186 -2112518 +-852974 -1560834 +-877244 -1607645 +-571992 -1049805 +-969051 -1781210 +-656538 -1208590 +-476791 -879017 +-476238 -879316 +-925921 -1712170 +-560675 -1038333 +-734529 -1362345 +-530459 -985333 +-950252 -1767764 +-1022322 -1904707 +-988612 -1844681 +-579300 -1082566 +-471258 -881995 +-470704 -882291 +-470150 -882587 +-515656 -969482 +-469040 -883177 +-475066 -895881 +-467930 -883766 +-850621 -1608988 +-1173709 -2223502 +-839434 -1592666 +-1076109 -2044826 +-649555 -1236171 +-961473 -1832580 +-1241157 -2369278 +-1311034 -2506499 +-1203151 -2303765 +-1485199 -2848185 +-1582831 -3040072 +-1737282 -3341844 +-1447789 -2789254 +-1617708 -3121408 +-1495109 -2889293 +-1152562 -2230755 +-1443274 -2797730 +-1449310 -2813769 +-1391204 -2705132 +-1456108 -2835714 +-1671408 -3260042 +-1520059 -2969434 +-1887111 -3692186 +-1722442 -3375239 +-1778274 -3490060 +-1648132 -3239671 +-1194638 -2351911 +-1542866 -3042209 +-1186191 -2342567 +-946408 -1871946 +-550784 -1091123 +-753027 -1494108 +-731505 -1453678 +-731450 -1455846 +-448383 -893841 +-708400 -1414395 +-497448 -994769 +-446698 -894685 +-599906 -1203436 +-1019477 -2048335 +-989531 -1991302 +-773396 -1558815 +-1088146 -2196675 +-672992 -1360738 +-442758 -896641 +-787311 -1596930 +-752593 -1528932 +-456696 -929276 +-865853 -1764618 +-950085 -1939366 +-1140640 -2332045 +-1313785 -2690321 +-1178500 -2417141 +-806204 -1656190 +-713134 -1467338 +-1133648 -2336316 +-1472512 -3039536 +-1505997 -3113640 +-1389992 -2878412 +-1662954 -3449199 +-1597767 -3319321 +-1705110 -3548026 +-1746007 -3638981 +-1474933 -3078974 +-1451440 -3034824 +-1209017 -2532027 +-1254469 -2631466 +-1182487 -2484489 +-978678 -2059606 +-1096785 -2311907 +-825518 -1742932 +-469440 -992750 +-426916 -904291 +-851285 -1806126 +-957863 -2035562 +-896040 -1907291 +-640341 -1365244 +-655699 -1400276 +-560764 -1199500 +-422935 -906160 +-422365 -906426 +-705597 -1516750 +-543643 -1170537 +-542457 -1169906 +-814731 -1760011 +-574834 -1243826 +-554779 -1202415 +-683123 -1483034 +-1096475 -2384346 +-1397439 -3043847 +-1556822 -3396635 +-1689677 -3692618 +-1953872 -4277090 +-1764397 -3868752 +-1369697 -3008308 +-1512896 -3328363 +-1322437 -2914215 +-1567532 -3460098 +-1345920 -2975896 +-1281341 -2837855 +-941530 -2088757 +-744681 -1654827 +-507494 -1129648 +-802494 -1789304 +-527638 -1178446 +-690420 -1544611 +-499516 -1119406 +-637603 -1431272 +-406354 -913716 +-693367 -1561727 +-963122 -2172998 +-834606 -1886240 +-528347 -1196113 +-403481 -914988 +-402906 -915241 +-406436 -924833 +-401756 -915747 +-544520 -1243280 +-400605 -916251 +-400029 -916502 +-399453 -916754 +-398877 -917004 +-398301 -917255 +-705320 -1627094 +-956378 -2210059 +-1101927 -2550799 +-1320458 -3061950 +-1498773 -3481451 +-1611299 -3749316 +-1228694 -2863997 +-1199026 -2799697 +-1350817 -3159609 +-1550116 -3632088 +-1649690 -3872138 +-1408366 -3311472 +-1145905 -2699059 +-1407074 -3320014 +-1121895 -2651765 +-1277453 -3024743 +-1346545 -3193937 +-1275598 -3030973 +-1634177 -3889834 +-1342933 -3202218 +-1319282 -3151373 +-1535376 -3674037 +-1629309 -3905707 +-1703883 -4091705 +-1919221 -4616990 +-1881346 -4533912 +-1651321 -3986641 +-1331400 -3220006 +-1550019 -3755417 +-1474693 -3579292 +-1575827 -3831592 +-1805603 -4398142 +-1895989 -4626578 +-1574058 -3847893 +-1613098 -3950410 +-1300574 -3190779 +-1058208 -2600841 +-802205 -1975198 +-606482 -1495982 +-375124 -926974 +-410376 -1015919 +-373959 -927445 +-373376 -927680 +-637120 -1585845 +-884588 -2205821 +-544200 -1359497 +-371044 -928615 +-370460 -928848 +-597066 -1499750 +-369293 -929313 +-706989 -1782378 +-992289 -2506235 +-1273122 -3221451 +-1568509 -3976193 +-1741032 -4421677 +-1461488 -3718576 +-1227978 -3130214 +-1542695 -3939732 +-1193621 -3053916 +-1312950 -3365458 +-1576470 -4048447 +-1757126 -4520779 +-1454662 -3749566 +-1679254 -4336556 +-1583162 -4096046 +-1264254 -3277073 +-1549083 -4022902 +-1739768 -4526583 +-1750396 -4562794 +-1613097 -4212806 +-1784994 -4670524 +-1782059 -4671645 +-1779124 -4672763 +-1703962 -4483824 +-1773250 -4674995 +-1770313 -4676109 +-1736895 -4596560 +-1764435 -4678330 +-1761495 -4679438 +-1666926 -4436666 +-1475322 -3934201 +-1192900 -3187164 +-1525056 -4082422 +-1476450 -3959898 +-1743842 -4686045 +-1740897 -4687140 +-1737952 -4688232 +-1735006 -4689323 +-1526352 -4133358 +-1273851 -3456267 +-1140743 -3101118 +-1397463 -3806390 +-1582385 -4318464 +-1312090 -3587782 +-1126660 -3086754 +-837107 -2297935 +-680352 -1871285 +-628965 -1733336 +-917911 -2534594 +-863202 -2388216 +-1189356 -3297062 +-1112222 -3089314 +-1367205 -3805059 +-1083902 -3022567 +-1154851 -3226793 +-1263475 -3537305 +-1372347 -3849746 +-1675942 -4710755 +-1672982 -4711808 +-1670021 -4712858 +-1667060 -4713906 +-1465718 -4152876 +-1356125 -3850067 +-1597346 -4544007 +-1655207 -4718081 +-1652242 -4719120 +-1649277 -4720157 +-1646311 -4721193 +-1643344 -4722226 +-1564964 -4506118 +-1637409 -4724288 +-1496282 -4325887 +-1397548 -4048671 +-1131340 -3284159 +-1253996 -3647659 +-1569639 -4575159 +-1619587 -4730427 +-1377762 -4032378 +-1290451 -3784611 +-1101424 -3236893 +-1201371 -3537907 +-1179190 -3479766 +-1132909 -3350115 +-889943 -2637101 +-1061875 -3153112 +-1211157 -3603872 +-909366 -2711515 +-1103710 -3297875 +-1390883 -4164639 +-1202061 -3606802 +-1382343 -4156446 +-1176688 -3545517 +-1382705 -4175047 +-1151371 -3483872 +-950719 -2882807 +-677381 -2058329 +-419053 -1276059 +-311406 -950277 +-310809 -950472 +-310212 -950667 +-309614 -950862 +-351739 -1082541 +-462431 -1426265 +-421044 -1301403 +-419858 -1300525 +-306626 -951830 +-439119 -1366057 +-305429 -952215 +-305109 -953274 +-304233 -952598 +-303634 -952789 +-442489 -1391532 +-327305 -1031546 +-581745 -1837452 +-849740 -2689791 +-584783 -1855145 +-318276 -1011906 +-299440 -954115 +-298841 -954303 +-298241 -954491 +-297642 -954678 +-297042 -954865 +-296442 -955051 +-462504 -1493372 +-295241 -955423 +-294641 -955608 +-294040 -955793 +-319719 -1041591 +-292839 -956162 +-348863 -1141648 +-291637 -956529 +-291036 -956712 +-436015 -1436536 +-368116 -1215576 +-513488 -1699469 +-327595 -1086691 +-523893 -1741808 +-335183 -1116941 +-490046 -1636730 +-654112 -2189706 +-371746 -1247316 +-412104 -1385908 +-465119 -1567803 +-322502 -1089586 +-283212 -959057 +-513095 -1741553 +-340185 -1157340 +-453628 -1546874 +-280801 -959766 +-490346 -1679900 +-330918 -1136363 +-366216 -1260523 +-278388 -960469 +-277784 -960644 +-370085 -1282862 +-276577 -960992 +-275973 -961165 +-275369 -961339 +-281643 -985582 +-466469 -1636250 +-399377 -1404255 +-272952 -962028 +-276481 -976804 +-501862 -1777332 +-449017 -1594011 +-544696 -1938336 +-724551 -2584598 +-539798 -1930216 +-620850 -2225436 +-550029 -1976373 +-428627 -1543906 +-421978 -1523667 +-446488 -1616116 +-340495 -1235485 +-494171 -1797508 +-438063 -1597346 +-529219 -1934498 +-756931 -2773721 +-773285 -2840676 +-705587 -2598424 +-638933 -2358823 +-550630 -2037896 +-469224 -1740954 +-598649 -2226726 +-827944 -3087342 +-581591 -2174168 +-784529 -2940216 +-781852 -2937590 +-981750 -3698000 +-823189 -3108614 +-881909 -3338834 +-855515 -3247170 +-787395 -2996257 +-916812 -3497665 +-961630 -3678066 +-1192552 -4573043 +-1258658 -4838985 +-1009251 -3890159 +-998158 -3857369 +-878307 -3403020 +-912278 -3543843 +-997493 -3884980 +-1031643 -4028492 +-1234233 -4832220 +-1148808 -4509584 +-1231274 -4846026 +-1228229 -4846798 +-1134242 -4487752 +-1194942 -4740453 +-1219091 -4849105 +-1216044 -4849870 +-1212996 -4850633 +-1209948 -4851394 +-1205861 -4847979 +-1067324 -4302552 +-1025548 -4145287 +-1160103 -4701831 +-1194701 -4855171 +-1191650 -4855921 +-1188599 -4856669 +-1124068 -4605524 +-956355 -3929084 +-1179442 -4858900 +-1176389 -4859641 +-1150285 -4764894 +-1060028 -4403143 +-1167227 -4861850 +-974450 -4070142 +-1109968 -4649081 +-1111861 -4669997 +-1067816 -4497540 +-1118640 -4724811 +-1135556 -4809737 +-1042010 -4425952 +-857279 -3651587 +-740410 -3162714 +-836206 -3582049 +-657723 -2825503 +-601094 -2589600 +-639740 -2763976 +-858970 -3721794 +-1065636 -4630522 +-960448 -4185479 +-1101672 -4814786 +-1112167 -4874739 +-1109104 -4875437 +-1039074 -4580903 +-1076460 -4759584 +-1099912 -4877519 +-1096847 -4878209 +-1049204 -4680053 +-1067917 -4777586 +-1056028 -4738381 +-1084584 -4880950 +-870095 -3927342 +-871969 -3947540 +-1075381 -4882986 +-883343 -4023029 +-1023611 -4675881 +-885060 -4055170 +-925524 -4253394 +-925949 -4268255 +-1008399 -4662455 +-917990 -4257382 +-914902 -4256040 +-779838 -3638858 +-697657 -3265400 +-651703 -3059719 +-478382 -2252929 +-638312 -3015443 +-620397 -2939927 +-784696 -3730100 +-898619 -4285005 +-1023164 -4894194 +-945415 -4536520 +-1017013 -4895476 +-861526 -4160152 +-868391 -4206612 +-814237 -3956834 +-819758 -3996383 +-925127 -4524503 +-936292 -4593815 +-828531 -4078188 +-831955 -4108269 +-788721 -3907397 +-879253 -4370054 +-886469 -4420283 +-980073 -4903005 +-933893 -4687302 +-791210 -3984223 +-761940 -3849488 +-587046 -2975702 +-598107 -3041832 +-744104 -3796941 +-838237 -4291558 +-951714 -4888856 +-952332 -4908469 +-876941 -4535130 +-808620 -4195947 +-943078 -4910255 +-939992 -4910847 +-839759 -4402169 +-933820 -4912024 +-912970 -4818846 +-804018 -4258402 +-766679 -4074684 +-659263 -3515950 +-629979 -3371472 +-788056 -4232177 +-669538 -3608287 +-803533 -4345635 +-631138 -3425328 +-783581 -4267721 +-684412 -3740836 +-600448 -3293596 +-773054 -4255528 +-890576 -4920048 +-791758 -4389853 +-621217 -3456733 +-590946 -3300200 +-701707 -3933000 +-776803 -4369779 +-615045 -3472496 +-522456 -2960579 +-424906 -2416664 +-320245 -1828136 +-483857 -2772374 +-420349 -2417456 +-391068 -2257466 +-494473 -2865077 +-456779 -2656629 +-534492 -3120349 +-456421 -2674669 +-456937 -2687876 +-559176 -3301842 +-426025 -2525245 +-358878 -2135412 +-308426 -1842291 +-359171 -2153712 +-361994 -2179076 +-359538 -2172733 +-317534 -1926413 +-467902 -2849824 +-508490 -3109244 +-487134 -2990454 +-576119 -3550785 +-573994 -3551800 +-611845 -3801180 +-468243 -2920727 +-473849 -2967624 +-537064 -3377153 +-673847 -4254502 +-745329 -4725033 +-775966 -4939421 +-772862 -4939907 +-763966 -4903215 +-755288 -4867621 +-763549 -4941355 +-691009 -4490602 +-731230 -4771928 +-754234 -4942786 +-751128 -4943259 +-605389 -4001061 +-624032 -4141866 +-691625 -4610154 +-576979 -3862501 +-621450 -4178173 +-567176 -3829809 +-490541 -3326756 +-415063 -2827186 +-392006 -2681860 +-518861 -3565373 +-485929 -3353865 +-510447 -3538757 +-541370 -3769899 +-496588 -3473566 +-494413 -3473928 +-532233 -3756580 +-650608 -4612960 +-651090 -4637441 +-627857 -4492467 +-688951 -4952307 +-609909 -4404411 +-682728 -4953169 +-575647 -4195787 +-505290 -3700234 +-523308 -3850224 +-652485 -4823350 +-667164 -4955289 +-586747 -4378807 +-502282 -3766432 +-613757 -4624522 +-654707 -4956951 +-651593 -4957361 +-648478 -4957769 +-552456 -4244393 +-562080 -4339637 +-474616 -3682520 +-534847 -4170513 +-612171 -4797345 +-621807 -4897360 +-626666 -4960574 +-623549 -4960966 +-620432 -4961357 +-617315 -4961746 +-614197 -4962133 +-611079 -4962518 +-571142 -4662344 +-457107 -3750978 +-339213 -2798193 +-311992 -2587246 +-245975 -2050634 +-288662 -2419354 +-323838 -2728748 +-251936 -2134343 +-280608 -2390140 +-270315 -2315028 +-254428 -2190920 +-364788 -3158562 +-353175 -3074962 +-328896 -2879534 +-425850 -3749270 +-518581 -4591419 +-446000 -3971174 +-339664 -3041592 +-387563 -3490398 +-423804 -3838771 +-333506 -3038366 +-254407 -2331247 +-291683 -2688485 +-220063 -2040308 +-316287 -2949826 +-399660 -3749627 +-460778 -4348960 +-444162 -4217424 +-358829 -3427839 +-325325 -3126757 +-256110 -2476632 +-340904 -3316982 +-291179 -2850764 +-196637 -1937205 +-114362 -1133742 +-99737 -995014 +-134619 -1351569 +-177047 -1788948 +-97861 -995200 +-98061 -1003712 +-161315 -1661940 +-169360 -1756296 +-101158 -1055971 +-122704 -1289429 +-179198 -1895719 +-186745 -1988892 +-122822 -1316986 +-211337 -2281603 +-203334 -2210324 +-192592 -2108081 +-243857 -2687857 +-177732 -1972776 +-217633 -2432771 +-160676 -1808897 +-193319 -2192018 +-117559 -1342624 +-194827 -2241301 +-243524 -2822066 +-301146 -3515597 +-328213 -3860099 +-375799 -4452906 +-357090 -4263174 +-286644 -3448190 +-238642 -2892768 +-207359 -2532988 +-219980 -2708077 +-295471 -3665953 +-340743 -4261081 +-361456 -4556133 +-280299 -3561540 +-286722 -3672648 +-246048 -3177380 +-238939 -3110970 +-301031 -3951919 +-237405 -3142715 +-179764 -2399745 +-206888 -2785332 +-265691 -3607677 +-308492 -4225096 +-329997 -4559060 +-357835 -4987179 +-322868 -4539792 +-313728 -4450793 +-331430 -4744425 +-315615 -4559246 +-342166 -4988278 +-278290 -4094745 +-274514 -4077051 +-303954 -4556997 +-329628 -4989123 +-315876 -4827088 +-323358 -4989533 +-320223 -4989735 +-282509 -4445775 +-313953 -4990134 +-281516 -4519878 +-236651 -3838422 +-257352 -4217328 +-245167 -4059597 +-197549 -3305630 +-151736 -2566107 +-163582 -2796259 +-184907 -3195233 +-191732 -3349644 +-202612 -3579142 +-161784 -2890105 +-175430 -3169557 +-191412 -3498140 +-219864 -4064920 +-188277 -3521971 +-230993 -4372556 +-202050 -3870848 +-170042 -3297441 +-125504 -2463876 +-121366 -2412473 +-159433 -3209339 +-183310 -3737344 +-138204 -2854372 +-180956 -3786590 +-134133 -2844283 +-148424 -3189924 +-115195 -2509733 +-135673 -2996988 +-102687 -2300333 +-81275 -1846721 +-82606 -1904187 +-107003 -2502887 +-100488 -2385618 +-95822 -2309354 +-121850 -2981893 +-101056 -2511713 +-66104 -1669096 +-56739 -1455771 +-38318 -999266 +-48919 -1296992 +-37062 -999313 +-72523 -1989180 +-95460 -2664296 +-72660 -2064197 +-43363 -1254319 +-58806 -1732532 +-55166 -1655976 +-32667 -999466 +-60154 -1876570 +-67184 -2137833 +-57086 -1853604 +-46192 -1531141 +-54255 -1836677 +-62189 -2151064 +-59596 -2107226 +-47707 -1725188 +-32189 -1191099 +-53234 -2016798 +-65195 -2530190 +-48955 -1947463 +-29073 -1186191 +-23874 -999715 +-24333 -1046486 +-22618 -999744 +-31150 -1416250 +-21361 -999772 +-20733 -999785 +-26845 -1334965 +-35630 -1829049 +-45906 -2435103 +-51080 -2803037 +-41224 -2342974 +-37295 -2198190 +-27987 -1713002 +-21587 -1374140 +-17264 -1144754 +-30631 -2119449 +-42673 -3086869 +-48269 -3657984 +-41296 -3286042 +-41232 -3453699 +-42725 -3777562 +-44512 -4167034 +-39069 -3886172 +-29792 -3160914 +-33992 -3864205 +-32998 -4039805 +-33046 -4382731 +-33575 -4857760 +-31416 -4999901 +-28274 -4999920 +-23878 -4750259 +-17118 -3891964 +-15211 -4034914 +-14380 -4577261 +-11305 -4497934 +-7216 -3828026 +-4014 -3193869 +-1695 -2698447 +0 -1807234 +1195 -1902640 +2108 -1677326 +1885 -999998 +2513 -999997 +4336 -1380070 +3770 -999993 +4398 -999990 +9077 -1805713 +8486 -1500601 +6283 -999980 +6911 -999976 +7540 -999972 +8168 -999967 +8796 -999961 +13740 -1457770 +14711 -1463311 +10681 -999943 +11309 -999936 +11938 -999929 +12566 -999921 +13194 -999913 +21732 -1572057 +34028 -2354468 +43223 -2866093 +42707 -2718560 +47343 -2897778 +58323 -3437587 +71956 -4089623 +70220 -3853340 +54425 -2886996 +54831 -2814699 +69806 -3471415 +63030 -3039442 +50327 -2355452 +42238 -1920376 +63124 -2790232 +78174 -3362041 +87566 -3666808 +103572 -4225800 +91198 -3627889 +72853 -2827387 +81508 -3087965 +82171 -3040648 +101334 -3664462 +118815 -4201090 +132886 -4596421 +147633 -4997820 +150774 -4997726 +144523 -4692695 +127211 -4047934 +144526 -4508663 +163334 -4997332 +166474 -4997228 +139113 -4098515 +172753 -4997014 +164275 -4666857 +179032 -4996794 +182172 -4996680 +170368 -4593646 +188451 -4996448 +189821 -4950198 +194729 -4996207 +197869 -4996083 +201008 -4995958 +204147 -4995830 +180727 -4355619 +210425 -4995570 +208422 -4875188 +216702 -4995302 +219841 -4995165 +222979 -4995026 +226118 -4994884 +212897 -4638332 +232394 -4994596 +228350 -4842144 +238670 -4994300 +193557 -3997597 +211177 -4305512 +214833 -4324504 +223069 -4434080 +193107 -3791031 +158759 -3078644 +198335 -3799680 +224352 -4246860 +236585 -4425632 +270046 -4992702 +268949 -4915172 +276319 -4992359 +279456 -4992184 +265844 -4696145 +269791 -4713382 +268514 -4639974 +292002 -4991466 +238121 -4027021 +224912 -3763509 +233984 -3874432 +203181 -3329612 +191687 -3109115 +196291 -3151553 +153686 -2442766 +167605 -2637560 +206301 -3214592 +207156 -3196484 +245539 -3752216 +211936 -3207779 +192529 -2886477 +235724 -3500942 +209933 -3088936 +174833 -2548803 +221854 -3204811 +246893 -3534286 +275199 -3904196 +212576 -2988998 +245696 -3424289 +310924 -4295559 +293163 -4015144 +253538 -3442656 +213156 -2869711 +252286 -3367875 +295165 -3907323 +264041 -3466322 +311057 -4049943 +355209 -4587047 +341056 -4368621 +300862 -3822815 +342603 -4318490 +394018 -4927309 +332694 -4127792 +396457 -4880610 +345079 -4215294 +308043 -3734026 +304860 -3667327 +269693 -3219772 +256769 -3042496 +226203 -2660364 +312032 -3642688 +383146 -4440061 +384423 -4422419 +403542 -4608806 +349188 -3959402 +309691 -3486509 +351626 -3930592 +346819 -3849605 +313390 -3454262 +240787 -2635606 +313336 -3406095 +338674 -3656350 +275602 -2955199 +364507 -3882114 +375816 -3975720 +358972 -3772231 +296262 -3092634 +380029 -3940980 +364690 -3757206 +320042 -3275813 +313861 -3191819 +227326 -2296980 +229234 -2301501 +305698 -3049772 +383947 -3806314 +425368 -4190584 +458381 -4487744 +406917 -3959282 +382038 -3694379 +382427 -3675575 +482587 -4610088 +523684 -4972500 +506400 -4779554 +529932 -4971838 +497590 -4640738 +502048 -4654719 +539303 -4970830 +542426 -4970490 +524662 -4779863 +425640 -3855402 +410141 -3693732 +350474 -3138395 +343756 -3060792 +261004 -2310884 +178039 -1567494 +275140 -2408892 +256850 -2236296 +203302 -1760313 +115353 -993324 +115977 -993252 +116601 -993179 +117225 -993105 +117849 -993032 +118473 -992957 +195925 -1633375 +119721 -992808 +120345 -992732 +120968 -992656 +196693 -1605644 +122216 -992504 +192334 -1553874 +240890 -1936186 +289206 -2312672 +266883 -2123328 +175528 -1389444 +272598 -2146985 +351524 -2754751 +290782 -2267397 +321458 -2494170 +433721 -3348622 +560243 -4304218 +648478 -4957769 +643067 -4892496 +654707 -4956951 +532428 -4011724 +615652 -4616553 +598729 -4468226 +528384 -3924517 +499255 -3690626 +464208 -3415394 +340782 -2495546 +267642 -1950797 +359307 -2606764 +356276 -2572821 +374912 -2694932 +467764 -3346965 +453119 -3227379 +438380 -3108210 +561279 -3961593 +673716 -4733773 +609826 -4265649 +710726 -4949229 +713836 -4948782 +643827 -4443675 +511064 -3511794 +625214 -4277323 +678026 -4618349 +729379 -4946515 +732487 -4946055 +732244 -4923067 +738702 -4945131 +741809 -4944666 +744916 -4944199 +701269 -4634734 +667256 -4391287 +754234 -4942786 +757339 -4942311 +760444 -4941834 +710729 -4599526 +625976 -4034243 +569922 -3657822 +577321 -3690067 +655965 -4175553 +779069 -4938932 +782172 -4938442 +771044 -4848461 +788378 -4937455 +656497 -4094987 +618046 -3839706 +770495 -4767724 +779723 -4805652 +663160 -4071061 +779560 -4766746 +810086 -4933940 +813186 -4933430 +796555 -4813687 +819385 -4932404 +822484 -4931888 +825582 -4931370 +811800 -4830404 +831779 -4930329 +834876 -4929805 +779872 -4587502 +841071 -4928752 +844167 -4928223 +847264 -4927692 +820759 -4755647 +853455 -4926623 +759315 -4366875 +703554 -4031180 +555883 -3173290 +496195 -2822126 +410900 -2328431 +485302 -2739980 +364995 -2053220 +389905 -2185382 +280838 -1568371 +303645 -1689616 +355109 -1968879 +300308 -1659069 +397841 -2190048 +248793 -1364685 +304751 -1665696 +336789 -1834298 +501801 -2723391 +629760 -3405842 +491991 -2651446 +406246 -2181703 +427070 -2285559 +497186 -2651571 +393656 -2092172 +391814 -2075207 +367087 -1937560 +489175 -2573129 +415169 -2176392 +265854 -1388912 +380400 -1980604 +405023 -2101672 +504805 -2610619 +431848 -2225815 +573543 -2946230 +474250 -2428036 +429079 -2189463 +513064 -2609323 +366051 -1855492 +255653 -1291617 +382137 -1924289 +233625 -1172585 +292768 -1464631 +196631 -980478 +197247 -980354 +361893 -1792853 +374257 -1848116 +511581 -2518102 +410291 -2013048 +349035 -1707022 +368741 -1797641 +508536 -2471264 +495109 -2398376 +659956 -3186809 +832507 -4007345 +638789 -3065193 +814538 -3896257 +873434 -4164913 +767280 -3647312 +636271 -3015150 +774764 -3660050 +637652 -3003012 +656096 -3080343 +804907 -3767386 +956124 -4461437 +945687 -4399249 +1026879 -4762381 +825667 -3817573 +963298 -4440417 +1041427 -4786046 +872845 -3999205 +860650 -3931471 +757607 -3450388 +595574 -2704325 +704733 -3190437 +817685 -3690778 +776445 -3494236 +586901 -2633415 +643430 -2878540 +582473 -2598165 +595684 -2649293 +631157 -2798843 +432836 -1913791 +543975 -2398188 +383600 -1686242 +222433 -974948 +223046 -974808 +409261 -1783493 +370458 -1609756 +413724 -1792608 +635814 -2747011 +732004 -3153576 +678806 -2916072 +588196 -2519652 +586979 -2507320 +446687 -1902667 +438328 -1861805 +613640 -2599122 +627597 -2650788 +417102 -1756792 +557160 -2340163 +678693 -2842691 +829515 -3464769 +922663 -3843168 +1106183 -4594865 +966222 -4002440 +1176389 -4859641 +1179442 -4858900 +959000 -3939952 +1016727 -4165724 +891369 -3642175 +1046159 -4263052 +825230 -3353671 +994195 -4029419 +1169625 -4727649 +1164120 -4692749 +1206900 -4852153 +1209948 -4851394 +1108723 -4433657 +941829 -3756239 +953609 -3793115 +1104864 -4383102 +925006 -3659887 +964109 -3804535 +1097374 -4319024 +1227727 -4819375 +988813 -3871363 +1121892 -4380907 +1166664 -4543857 +1145509 -4449854 +1113388 -4313849 +1136161 -4390679 +1090471 -4203220 +1171685 -4504612 +1052819 -4037211 +949209 -3630559 +1145072 -4368481 +1266280 -4818549 +1273854 -4835008 +1114161 -4218123 +906029 -3421445 +816906 -3077073 +845242 -3175760 +760810 -2851322 +651478 -2435427 +475537 -1773242 +585579 -2178109 +360731 -1338416 +405991 -1502584 +457359 -1688483 +406967 -1498713 +413729 -1519838 +263267 -964723 +492537 -1800413 +329364 -1200987 +295894 -1076290 +453526 -1645619 +266296 -963891 +432422 -1561380 +286955 -1033607 +493439 -1773033 +343099 -1229837 +515532 -1843447 +525668 -1875147 +760992 -2708040 +956857 -3396843 +906295 -3209621 +1141536 -4033026 +1220903 -4303110 +1077437 -3788395 +1177634 -4130832 +1373824 -4807557 +1117404 -3900964 +1332757 -4641762 +1299762 -4516143 +1280599 -4439067 +1154944 -3994070 +1288159 -4444293 +1394956 -4801468 +1339382 -4599395 +1227507 -4205375 +1292619 -4418123 +1358550 -4632668 +1410033 -4797062 +1377975 -4677136 +1153178 -3905073 +1343202 -4538065 +1422085 -4793503 +1425096 -4792609 +1428107 -4791713 +1405610 -4705424 +1199481 -4006206 +1020614 -3401019 +1307570 -4347330 +1276073 -4232964 +1219131 -4034902 +1056899 -3490048 +787582 -2594843 +886910 -2915504 +857336 -2811940 +613779 -2008583 +570519 -1862826 +545369 -1776720 +706024 -2294966 +550240 -1784592 +738875 -2391054 +870799 -2811706 +900979 -2902699 +983271 -3160804 +1037602 -3328083 +833681 -2668110 +1001695 -3198760 +1185059 -3775984 +910120 -2893574 +984969 -3124682 +992500 -3141688 +895818 -2829458 +1111313 -3502455 +1159044 -3644940 +1074567 -3371940 +1288693 -4035091 +1262578 -3944768 +1316505 -4104371 +1097395 -3413891 +1082950 -3361703 +1271482 -3938464 +1005972 -3109355 +969273 -2989506 +1069689 -3292166 +865742 -2658795 +593153 -1817763 +573340 -1753307 +669900 -2044245 +434381 -1322734 +336567 -1022712 +347144 -1052625 +313794 -949491 +314390 -949294 +314987 -949096 +491457 -1477717 +596727 -1790489 +786460 -2354852 +564367 -1686323 +380799 -1135453 +318562 -947902 +319158 -947702 +455317 -1349207 +446751 -1321085 +320944 -947098 +594698 -1751322 +482954 -1419316 +786083 -2305411 +742888 -2174254 +1045742 -3054362 +1294969 -3774555 +1561408 -4541868 +1628501 -4727366 +1334679 -3866541 +1614148 -4666650 +1637409 -4724288 +1347153 -3878957 +1322683 -3800792 +1048842 -3007806 +1228567 -3516105 +980823 -2801419 +1201006 -3423403 +1313528 -3736625 +1150058 -3265039 +1051983 -2980624 +749619 -2119680 +520812 -1469748 +847442 -2386746 +1167832 -3282552 +1212727 -3401974 +1458523 -4083376 +1396003 -3900601 +1367601 -3813687 +1656483 -4610145 +1680712 -4668356 +1350241 -3743057 +1041748 -2882197 +1173969 -3241640 +1254305 -3456683 +1502121 -4131530 +1337934 -3672753 +1447679 -3966262 +1658848 -4535959 +1720265 -4694751 +1723215 -4693669 +1669668 -4539003 +1729111 -4691500 +1732059 -4690413 +1472855 -3980790 +1737952 -4688232 +1677080 -4515321 +1624009 -4364032 +1332896 -3574879 +1063214 -2846116 +1361502 -3637630 +1619051 -4317481 +1540621 -4100495 +1407050 -3737849 +1472804 -3905080 +1276362 -3377794 +1621078 -4281920 +1269676 -3347372 +1370516 -3606391 +1424684 -3741848 +1159754 -3040279 +1391216 -3640185 +1487237 -3884107 +1760588 -4589362 +1480498 -3852006 +1425432 -3701786 +1514590 -3925969 +1500591 -3882416 +1523053 -3933178 +1430918 -3688363 +1113812 -2865642 +1067361 -2741032 +1147331 -2940932 +1214480 -3107287 +1229459 -3139792 +895566 -2282869 +1140042 -2900696 +1460589 -3709440 +1310891 -3323128 +1414336 -3578773 +1213207 -3064211 +1351396 -3406980 +1469652 -3698333 +1177118 -2956764 +1298760 -3256358 +1508330 -3774916 +1842372 -4602532 +1506432 -3756457 +1220783 -3038631 +1360174 -3379446 +1587320 -3936664 +1872709 -4636050 +1691440 -4179740 +1878534 -4633693 +1881445 -4632512 +1614891 -3969045 +1837060 -4506973 +1649014 -4038369 +1893082 -4627768 +1765861 -4309040 +1898896 -4625386 +1616153 -3929643 +1868713 -4535635 +1907611 -4621798 +1739566 -4207160 +1831848 -4422473 +1865848 -4496563 +1534968 -3692609 +1492615 -3584366 +1160392 -2781641 +1337354 -3200186 +1281697 -3061593 +1189902 -2837316 +1027498 -2445756 +716210 -1701801 +648352 -1537859 +389060 -921213 +493779 -1167119 +513640 -1211940 +608952 -1434322 +811640 -1908399 +1162312 -2728169 +945434 -2215253 +648756 -1517463 +602797 -1407516 +524105 -1221650 +817188 -1901508 +897200 -2084077 +634356 -1470978 +964735 -2233220 +1344844 -3107751 +1504759 -3471307 +1291622 -2974500 +1353589 -3111853 +1549086 -3555186 +1523444 -3490347 +1150033 -2630318 +845748 -1931062 +857340 -1954186 +990855 -2254663 +837150 -1901668 +657276 -1490526 +544632 -1232981 +900495 -2035151 +713446 -1609680 +541201 -1218992 +568790 -1278964 +597031 -1340197 +859776 -1926742 +904755 -2024121 +880284 -1966058 +881238 -1964879 +1281112 -2851668 +1628065 -3617879 +1749549 -3881321 +2057572 -4557016 +2060435 -4555723 +2063297 -4554427 +2066158 -4553130 +1693182 -3724992 +1688072 -3707564 +1484854 -3255804 +1439407 -3150909 +1124456 -2457386 +1062869 -2318940 +820645 -1787496 +911922 -1983025 +607905 -1319738 +792889 -1718490 +537622 -1163308 +878777 -1898365 +950324 -2049544 +897879 -1933254 +816846 -1755890 +526974 -1130924 +623928 -1336799 +423504 -905894 +424073 -905628 +424642 -905361 +719061 -1530578 +694886 -1476709 +964669 -2046687 +852160 -1805042 +589867 -1247423 +428052 -903754 +428620 -903485 +648029 -1363763 +603213 -1267393 +886408 -1859394 +642468 -1345511 +732019 -1530582 +538177 -1123464 +636185 -1325919 +557359 -1159763 +433722 -901047 +508575 -1054855 +574443 -1189564 +435420 -900228 +770005 -1589431 +436551 -899680 +842464 -1733445 +490892 -1008442 +438246 -898855 +438810 -898580 +694183 -1419260 +766267 -1564145 +1042522 -2124673 +637071 -1296297 +653379 -1327374 +1066006 -2162218 +997940 -2020953 +957206 -1935398 +1071110 -2162285 +727814 -1466942 +820318 -1650783 +802267 -1611915 +694561 -1393318 +446698 -894685 +889027 -1777825 +702388 -1402393 +898008 -1790158 +652467 -1298641 +449506 -893277 +742905 -1474024 +450628 -892712 +754864 -1493081 +972102 -1919771 +995695 -1963302 +716157 -1409914 +802263 -1576979 +1168677 -2293657 +1132257 -2218732 +900248 -1761360 +1040729 -2033063 +1434467 -2797895 +1076631 -2096697 +930742 -1809785 +824002 -1599762 +1211270 -2347999 +1285782 -2488598 +1077210 -2081705 +1067067 -2058932 +1264423 -2435989 +834835 -1605893 +1030714 -1979645 +692784 -1328559 +653398 -1251111 +628326 -1201264 +1057433 -2018562 +1032673 -1968288 +692187 -1317304 +465707 -884939 +466263 -884646 +716087 -1356572 +1085218 -2052738 +1070728 -2022253 +806415 -1520742 +469040 -883177 +469595 -882882 +482669 -906089 +470704 -882291 +760139 -1422658 +1094230 -2044843 +1368657 -2553818 +1591919 -2965932 +1530003 -2846282 +1469604 -2729807 +1857891 -3445866 +2207823 -4088740 +2378428 -4398077 +2381191 -4396582 +2383953 -4395084 +2233242 -4111066 +2287490 -4204629 +2392233 -4390583 +2325930 -4262517 +2397749 -4387573 +2400505 -4386066 +2403260 -4384557 +2336528 -4256461 +2408768 -4381534 +2221831 -4035487 +2311214 -4191596 +2162197 -3915520 +2185991 -3952739 +2422521 -4373944 +2425269 -4372421 +2428016 -4370897 +2349408 -4223134 +2433507 -4367842 +2088946 -3743863 +2330259 -4170191 +2441736 -4363247 +2444477 -4361712 +2447193 -4360134 +2449956 -4358637 +2452694 -4357097 +2455431 -4355555 +2458167 -4354011 +2444711 -4323830 +2463637 -4350919 +2378042 -4193605 +2437817 -4292730 +2291305 -4028841 +2474564 -4344713 +2023008 -3546711 +2469257 -4322756 +2482749 -4340041 +2485476 -4338480 +2488201 -4336918 +2458072 -4278172 +2266746 -3939447 +2496372 -4332220 +2499093 -4330650 +2501814 -4329080 +2410456 -4164954 +2222938 -3835386 +1878179 -3235862 +2301406 -3959296 +2515401 -4321198 +2518116 -4319617 +2520830 -4318034 +2347688 -4015657 +2095885 -3579789 +1839014 -3136529 +1770859 -3015944 +1936543 -3293378 +1675400 -2845174 +1959616 -3323054 +2413784 -4087345 +2076196 -3510656 +2045796 -3454296 +1656116 -2792325 +1883240 -3170729 +2095919 -3523762 +1903905 -3196366 +2334864 -3914285 +2564111 -4292474 +2231080 -3729636 +2400510 -4007150 +2314192 -3857561 +2289152 -3810392 +1845336 -3067274 +1414850 -2348388 +1320510 -2188689 +1295228 -2143739 +1336053 -2208173 +1678020 -2769432 +1366483 -2252071 +1600072 -2633313 +2119405 -3483069 +1712019 -2809588 +1868309 -3061743 +1429816 -2339843 +918190 -1500465 +1290011 -2105106 +1535184 -2501662 +1547681 -2518476 +1481635 -2407610 +1040842 -1688957 +690691 -1119197 +774063 -1252532 +1173805 -1896700 +1371577 -2213162 +1054405 -1698991 +896594 -1442682 +528379 -849009 +528912 -848676 +529446 -848344 +827612 -1324251 +1144971 -1829494 +1511839 -2412322 +1257044 -2002967 +1129589 -1797372 +1261582 -2004599 +1591093 -2524658 +1313973 -2082037 +1599039 -2530211 +1577495 -2492653 +1827517 -2883709 +1325309 -2088354 +1382226 -2175017 +1042572 -1638277 +949796 -1490421 +856396 -1341998 +1037496 -1623536 +660160 -1031628 +1110463 -1732916 +1323282 -2062173 +1857810 -2891172 +1506839 -2341745 +1456644 -2260616 +1299221 -2013526 +1661182 -2570943 +1495369 -2311135 +1294161 -1997410 +1658010 -2555454 +1547103 -2381238 +1621758 -2492714 +1435764 -2203803 +1962520 -3008204 +1533610 -2347535 +1395188 -2132721 +1902400 -2904074 +1566666 -2388289 +1105534 -1683014 +1272845 -1935071 +1195201 -1814547 +998379 -1513662 +1272425 -1926513 +1300466 -1966281 +1655240 -2499278 +1640418 -2473520 +1157122 -1742400 +1683586 -2531698 +1569273 -2356588 +1329971 -1994509 +1013554 -1517923 +1481884 -2216289 +1788172 -2670736 +1724909 -2572751 +1515086 -2256727 +1192652 -1774050 +1585054 -2354546 +1878709 -2786978 +2229764 -3303273 +2257569 -3339937 +2570465 -3797703 +2202735 -3250003 +2751473 -4054147 +2662075 -3917125 +2527252 -3713717 +2815611 -4131868 +2818207 -4130098 +2820802 -4128326 +2823395 -4126553 +2825987 -4124778 +2660576 -3878118 +2831168 -4121224 +2647356 -3848473 +2674317 -3882440 +2783580 -4035632 +2641484 -3824478 +2256004 -3261975 +2267317 -3273934 +2470939 -3563171 +2742593 -3949604 +2854428 -4105148 +2431538 -3492278 +2818742 -4042978 +2862161 -4099761 +2864736 -4097961 +2851405 -4073439 +2619732 -3737477 +2428098 -3459453 +2600879 -3700676 +2330043 -3310891 +1922724 -2728465 +2272788 -3220928 +2175977 -3079621 +2457795 -3473839 +2642903 -3730496 +2174005 -3064556 +2495858 -3513572 +2507607 -3525418 +2462806 -3457830 +2690911 -3773075 +2905788 -4068955 +2908344 -4067129 +2342688 -3271749 +2686407 -3746804 +2904182 -4045171 +2918556 -4059806 +2921107 -4057972 +2378807 -3300239 +2624218 -3635893 +2608586 -3609453 +2125215 -2936733 +2688723 -3710506 +2189128 -3017060 +2461142 -3387471 +2846675 -3912940 +2944007 -4041388 +2633661 -3610592 +2834667 -3881035 +2951620 -4035832 +2372936 -3240307 +2134005 -2910203 +1863402 -2537829 +1742900 -2370589 +1987064 -2699132 +2435288 -3303627 +2462040 -3335529 +2468508 -3339896 +2120497 -2865268 +2204827 -2975306 +2515063 -3389501 +2519580 -3391134 +2008168 -2699273 +1642439 -2204786 +1425870 -1911558 +1411306 -1889555 +1221290 -1633008 +1167788 -1559426 +1605478 -2141096 +1517807 -2021530 +1401051 -1863584 +1521182 -2020731 +1127858 -1496283 +836553 -1108371 +715539 -946799 +1263446 -1669605 +1489229 -1965403 +1342072 -1768884 +1198378 -1577432 +799602 -1051149 +605933 -795516 +710671 -931809 +606932 -794754 +607431 -794372 +691787 -903511 +608429 -793608 +608928 -793226 +609426 -792843 +876698 -1139073 +610422 -792077 +610919 -791693 +1157867 -1498538 +1110193 -1434972 +1036277 -1337694 +1234547 -1591568 +1597605 -2056950 +1103291 -1418670 +664432 -853254 +614891 -788612 +615386 -788226 +615882 -787839 +616376 -787452 +705185 -899744 +617366 -786676 +617860 -786288 +618354 -785900 +828784 -1051987 +992307 -1257922 +619834 -784733 +620327 -784344 +881701 -1113388 +1193590 -1505289 +1028182 -1295013 +1205522 -1516418 +1728548 -2171527 +1955675 -2453694 +2462362 -3085431 +2350757 -2941793 +2389516 -2986448 +1931479 -2410880 +1738594 -2167328 +2296553 -2859196 +2209559 -2747351 +2042921 -2536889 +2127017 -2637925 +2004616 -2482928 +2116113 -2617662 +1811834 -2238386 +1813043 -2237006 +1638746 -2019356 +1108719 -1364472 +1625482 -1997874 +1386478 -1701930 +1330202 -1630756 +1851045 -2266373 +2148076 -2626680 +2007540 -2451686 +2011217 -2453032 +2615643 -3186150 +2986548 -3633296 +3177427 -3860564 +2700400 -3276779 +2399042 -2907375 +2432349 -2943969 +2716437 -3283609 +2110656 -2548083 +1512853 -1824054 +1983199 -2388096 +1749718 -2104256 +1488952 -1788365 +1991470 -2388879 +2566335 -3074533 +2576650 -3082951 +2259327 -2699826 +2558106 -3052958 +2462539 -2935155 +2453255 -2920362 +2345247 -2788230 +1867378 -2217268 +2085788 -2473447 +1834516 -2172702 +1666213 -1970860 +1424375 -1682659 +1713269 -2021362 +1690028 -1991403 +1344026 -1581684 +1835047 -2156783 +1355936 -1591643 +896125 -1050563 +953499 -1116404 +695644 -813460 +650403 -759589 +907521 -1058524 +691137 -805111 +1207930 -1405341 +1321128 -1535085 +1160662 -1346920 +653856 -757821 +653738 -756721 +654213 -756310 +654688 -755899 +655163 -755488 +655637 -755076 +905597 -1041624 +860451 -988442 +1103661 -1266221 +1014068 -1161957 +995625 -1139378 +658479 -752599 +658952 -752185 +659425 -751771 +659897 -751356 +709383 -806678 +1124164 -1276730 +1459995 -1656040 +1578991 -1788747 +1477414 -1671558 +1163200 -1314389 +1286050 -1451368 +1928501 -2173651 +1503222 -1692168 +1592463 -1790358 +1556653 -1747886 +2168224 -2431510 +2461576 -2756994 +2935787 -3283961 +2921885 -3264279 +2644522 -2950681 +3019052 -3364316 +2555315 -2843949 +2956496 -3286289 +2585710 -2870512 +2249303 -2493900 +2511871 -2781504 +3015403 -3334871 +3355758 -3706601 +3274655 -3612455 +3211489 -3538303 +3362738 -3700269 +2762456 -3035899 +2993224 -3285361 +2416884 -2649425 +2424179 -2654071 +2048919 -2240395 +1673065 -1827110 +1120598 -1222233 +1434310 -1562425 +1811751 -1971093 +1957416 -2126885 +2315955 -2513295 +1844205 -1998826 +2180322 -2360146 +1887565 -2040670 +1764076 -1904762 +2363764 -2549061 +2030921 -2187368 +1613655 -1735771 +1828808 -1964728 +1397563 -1499542 +1705625 -1827779 +1225573 -1311693 +1168384 -1248912 +843930 -900961 +684089 -729399 +1133220 -1206757 +685005 -728538 +685463 -728108 +905870 -961017 +686377 -727246 +1236484 -1308460 +787701 -832504 +1325827 -1399476 +688203 -725518 +982923 -1034917 +689114 -724653 +812836 -853682 +1311814 -1376001 +1202066 -1259298 +1380412 -1444316 +1384459 -1446730 +698410 -728906 +692294 -721615 +973334 -1013283 +941353 -978758 +1560893 -1620875 +903313 -936847 +694558 -719437 +1184025 -1224895 +1104058 -1140732 +1476903 -1524046 +1342647 -1383763 +1934657 -1991398 +2405805 -2473253 +2216770 -2276055 +1660334 -1702596 +1186988 -1215673 +1220922 -1248856 +1332033 -1360797 +1009580 -1030086 +700411 -713740 +700860 -713299 +1278090 -1299142 +701755 -712418 +1270219 -1287900 +845452 -856144 +1372308 -1387917 +2037931 -2058522 +2459609 -2481341 +2730176 -2750840 +2978198 -2996969 +2601491 -2614601 +2219724 -2228108 +1925006 -1929851 +1590258 -1592257 +1255160 -1255160 +1063856 -1062520 +1102634 -1099866 +1468037 -1462513 +1732514 -1723827 +1163381 -1156094 +1713854 -1700980 +1359869 -1347959 +1509734 -1494632 +1992630 -1970220 +1929513 -1905417 +2536018 -2501203 +2332792 -2297878 +1980240 -1948152 +1435077 -1410050 +1289240 -1265164 +1445374 -1416601 +856250 -838150 +1348431 -1318270 +715498 -698615 +715936 -698165 +1085916 -1057632 +739974 -719794 +1353694 -1315123 +1467241 -1423644 +1169467 -1133293 +1399374 -1354384 +2057418 -1988769 +2537732 -2449974 +2883631 -2780413 +3334197 -3210811 +3038719 -2922591 +2728893 -2621306 +2033639 -1951008 +1581864 -1515681 +1351262 -1293100 +1489184 -1423294 +1590418 -1518138 +2230804 -2126743 +2872212 -2734788 +3288672 -3127385 +2643779 -2510958 +2975776 -2822721 +2792858 -2645880 +2843692 -2690651 +2996469 -2831639 +2914562 -2750774 +2585638 -2437264 +3185122 -2998570 +3642692 -3425025 +3369369 -3164048 +3205197 -3006093 +3649141 -3418153 +3288277 -3076254 +2743389 -2563269 +2807972 -2620309 +3110530 -2898992 +2618265 -2437133 +2143275 -1992491 +2768391 -2570388 +2154649 -1998023 +2808513 -2601075 +2499995 -2312428 +2069420 -1911747 +2772837 -2558342 +2756357 -2539932 +2852960 -2625638 +3105708 -2854645 +3680113 -3378352 +3417961 -3133740 +3654665 -3346537 +3689686 -3374346 +3691806 -3372027 +3332923 -3040391 +2769571 -2523298 +2494840 -2270129 +2237080 -2033018 +2485798 -2256198 +3188792 -2890608 +2938354 -2660228 +2465694 -2229489 +3087239 -2787969 +3623110 -3267763 +3289883 -2963472 +2728711 -2454873 +2647904 -2379168 +2037209 -1828140 +1359345 -1218301 +1272560 -1139080 +1264807 -1130709 +1405774 -1255142 +1963624 -1751001 +2081618 -1853872 +1999111 -1778141 +1672436 -1485694 +2182790 -1936609 +2005225 -1776820 +1339050 -1185024 +905554 -800378 +749695 -661783 +750111 -661312 +1328271 -1169546 +775435 -681908 +1243447 -1092087 +751771 -659425 +752185 -658952 +752599 -658479 +1026478 -896969 +753426 -657533 +779401 -679340 +754251 -656586 +1152035 -1001590 +1440401 -1250710 +1040011 -901903 +775865 -671981 +932379 -806513 +1684822 -1455531 +1732048 -1494431 +1094882 -943478 +1119041 -963071 +758362 -651834 +758771 -651357 +759180 -650880 +840233 -719455 +759998 -649926 +1271839 -1086253 +1110482 -947235 +1264934 -1077609 +770480 -655544 +1154986 -981442 +1550410 -1315774 +2033451 -1723516 +1833330 -1551919 +1103132 -932614 +1311545 -1107400 +1500375 -1265225 +2173672 -1830662 +2831522 -2381661 +3169230 -2662318 +3084941 -2588206 +2402998 -2013497 +1701435 -1423832 +1698241 -1419346 +1329830 -1110018 +1600787 -1334483 +2325266 -1935964 +1749575 -1454796 +988487 -820891 +769712 -638392 +770113 -637908 +1068734 -884134 +1319957 -1090568 +1768984 -1459690 +1221998 -1007051 +1253604 -1031775 +1651125 -1357215 +1462987 -1201027 +1901168 -1558750 +1499736 -1228044 +1886758 -1542974 +1513511 -1236150 +1748893 -1426565 +2311013 -1882668 +2494689 -2029693 +2068233 -1680568 +1626730 -1320123 +1679374 -1361096 +1882227 -1523544 +1995330 -1613020 +2760807 -2228964 +2882582 -2324289 +2181525 -1756751 +1937061 -1557882 +2528508 -2030939 +2363902 -1896282 +1845832 -1478790 +2279102 -1823555 +3050432 -2437569 +2370151 -1891525 +2731994 -2177489 +2495669 -1986568 +2206249 -1753924 +2940667 -2334758 +2815120 -2232197 +3487652 -2761901 +2981576 -2358089 +2842595 -2245269 +3065843 -2418478 +3185168 -2509362 +3687058 -2901012 +3138647 -2466325 +3064402 -2404872 +2377770 -1863605 +2993512 -2343167 +3570288 -2791020 +3941128 -3076932 +3943061 -3074455 +3944992 -3071977 +3946921 -3069498 +3948849 -3067017 +3950775 -3064535 +3805332 -2947891 +3532174 -2732732 +3740892 -2890456 +3958465 -3054596 +3327151 -2564102 +3681222 -2833285 +3554612 -2732284 +3134328 -2406098 +3778879 -2897122 +3969952 -3039651 +3640270 -2783600 +3858022 -2946268 +3751332 -2861061 +3977579 -3029664 +3669760 -2791562 +3249116 -2468359 +2500695 -1897306 +2031557 -1539355 +2519533 -1906614 +2145940 -1621784 +2805239 -2117279 +3015812 -2273238 +3135774 -2360574 +3335188 -2507409 +3261930 -2449127 +2843256 -2131985 +2286896 -1712560 +2931421 -2192345 +3074000 -2295966 +3873670 -2889448 +4009713 -2987006 +4011589 -2984486 +4013463 -2981965 +4015336 -2979443 +4017207 -2976919 +4019077 -2974395 +4020945 -2971869 +3497197 -2581372 +3017541 -2224398 +3554754 -2616962 +3886712 -2857581 +4018011 -2950227 +4032120 -2956689 +3775102 -2764576 +3420284 -2501437 +3766744 -2751190 +3830138 -2793804 +4041388 -2944007 +3458913 -2516369 +3665873 -2663413 +3048717 -2212097 +2390913 -1732514 +2847522 -2060656 +2973057 -2148656 +2534238 -1829095 +2373055 -1710494 +2702318 -1945248 +3108859 -2234929 +2683564 -1926632 +2031021 -1456214 +1800486 -1289211 +1440476 -1030063 +2087479 -1490744 +1321509 -942484 +1810140 -1289254 +1328939 -945266 +815249 -579110 +1037848 -736252 +1094290 -775259 +824817 -583571 +816702 -577060 +975809 -688562 +817426 -576033 +817788 -575519 +818150 -575005 +818511 -574491 +818872 -573977 +1469850 -1028894 +2105068 -1471577 +1513171 -1056388 +1903475 -1327092 +1160493 -808006 +821982 -571548 +821388 -570370 +1559301 -1081323 +1112592 -770510 +822462 -568820 +1385989 -957273 +1644276 -1134140 +1485470 -1023227 +1681599 -1156769 +995332 -683766 +1182206 -811050 +1054565 -722508 +825311 -564679 +825665 -564160 +826020 -563641 +826374 -563122 +826727 -562603 +1150506 -781883 +1561242 -1059585 +1607433 -1089460 +1853835 -1254763 +1415416 -956724 +828842 -559482 +1371781 -924721 +1215583 -818317 +1410012 -947917 +869432 -583705 +1635884 -1096784 +1278386 -855934 +1598455 -1068780 +1515674 -1012052 +1055496 -703822 +832341 -554264 +832689 -553740 +931221 -618421 +1569250 -1040714 +1297565 -859361 +1653951 -1093896 +859156 -567456 +834771 -550597 +835117 -550073 +835462 -549548 +835807 -549023 +1534603 -1006666 +2304074 -1509352 +2141246 -1400765 +2560408 -1672677 +2629319 -1715340 +2963012 -1930385 +2486758 -1617883 +3278632 -2130145 +3097465 -2009673 +3091712 -2003181 +2809552 -1817859 +2083696 -1346353 +2603114 -1679651 +3409014 -2196623 +4197134 -2700723 +3643221 -2341062 +4208119 -2700320 +3675924 -2355555 +4211510 -2695030 +4213202 -2692383 +4214893 -2689736 +3445091 -2195441 +3198762 -2035639 +3936591 -2501708 +3693728 -2344111 +3960765 -2510088 +3382601 -2140706 +4191771 -2649109 +3542611 -2235740 +4230035 -2665858 +3944433 -2482404 +3857851 -2424531 +3807456 -2389524 +3810628 -2388179 +3199417 -2002325 +2821286 -1763209 +2577179 -1608400 +3084179 -1922123 +3890394 -2421180 +3047636 -1894036 +2570005 -1594961 +3131542 -1940730 +2780890 -1721001 +2262970 -1398512 +2053233 -1267113 +2415375 -1488507 +2187151 -1345965 +2681739 -1648011 +3198431 -1962766 +3479855 -2132458 +3226511 -1974421 +3183438 -1945315 +3211797 -1959874 +4022230 -2450942 +4257598 -2590696 +4273019 -2596402 +3740131 -2269388 +3887322 -2355359 +3918308 -2370769 +4250938 -2568379 +3718044 -2243222 +4282777 -2580275 +3665957 -2205517 +4286016 -2574891 +3683590 -2209826 +4289248 -2569503 +3836264 -2294866 +3666494 -2190182 +3084246 -1839747 +3744362 -2230317 +3649925 -2170960 +4298905 -2553315 +3507425 -2080239 +3373102 -1997708 +2589352 -1531339 +2646990 -1563181 +2721887 -1605106 +2038968 -1200660 +2296034 -1350094 +2312722 -1357951 +1787189 -1047867 +1438670 -842308 +2096295 -1225565 +2658177 -1551820 +2245404 -1308956 +2918207 -1698710 +2387345 -1387684 +2935360 -1703760 +3121879 -1809399 +3817000 -2209079 +4329080 -2501814 +4330650 -2499093 +4332220 -2496372 +4333787 -2493649 +3742586 -2150344 +4210494 -2415668 +3840765 -2200339 +3853440 -2204386 +4226322 -2414172 +3877951 -2211944 +4181796 -2381773 +4259583 -2422534 +4347819 -2469102 +3722050 -2110639 +3648259 -2065767 +2902566 -1641123 +2847770 -1607781 +2325207 -1310829 +1693846 -953498 +1494308 -839939 +1546732 -868128 +2292095 -1284581 +2280731 -1276330 +2714556 -1516865 +2501392 -1395690 +3031114 -1688760 +3469247 -1930007 +3720764 -2066870 +3341851 -1853638 +3215856 -1781111 +2761071 -1526961 +3034823 -1675865 +3091944 -1704874 +3137468 -1727406 +3137843 -1725044 +3560988 -1954757 +2774504 -1520760 +2466964 -1350176 +1813899 -991271 +1182595 -645307 +2020554 -1100910 +1780515 -968673 +1334720 -725056 +1635218 -886964 +1593241 -862900 +2225177 -1203349 +1756508 -948473 +1810370 -976089 +1994043 -1073502 +1630523 -876478 +1380523 -740974 +881402 -472366 +881699 -471812 +1569049 -838357 +1013468 -540687 +882587 -470150 +882882 -469595 +883177 -469040 +883471 -468485 +883766 -467930 +1474340 -779437 +1290084 -680990 +1407294 -741731 +2237215 -1177355 +2681612 -1409072 +2244525 -1177603 +3062943 -1604537 +3603177 -1884656 +3170186 -1655643 +3594939 -1874598 +3104091 -1616163 +3047569 -1584301 +3603664 -1870516 +3458841 -1792586 +2964575 -1534065 +2804977 -1449245 +3654450 -1885233 +4079029 -2101018 +4298248 -2210517 +3715784 -1908014 +3877716 -1988087 +3965111 -2029748 +3212195 -1641783 +3797672 -1938017 +2963995 -1510231 +2724685 -1386141 +2138808 -1086394 +1494864 -758125 +892145 -451750 +892428 -451189 +1458151 -736054 +954489 -481060 +1466327 -737871 +1688154 -848167 +1036004 -519697 +1163839 -582909 +1884481 -942362 +1480334 -739100 +1557645 -776477 +1347500 -670665 +938373 -466302 +1685840 -836418 +1825601 -904331 +2569410 -1270774 +1948749 -962285 +2286233 -1127148 +1491276 -734057 +2143436 -1053401 +2632129 -1291518 +3464514 -1697248 +3387951 -1657101 +3228496 -1576596 +2975963 -1450960 +3408085 -1658996 +4115032 -1999927 +4378654 -2124649 +3772682 -1827687 +2996294 -1449239 +3514001 -1696919 +4169495 -2010229 +3961178 -1906727 +3140932 -1509469 +2735695 -1312605 +2024981 -970035 +1475014 -705442 +1142179 -545379 +1180524 -562778 +902946 -429755 +1579230 -750414 +2407058 -1141926 +2450222 -1160518 +2556184 -1208740 +2919941 -1378504 +3782487 -1782807 +3875923 -1823871 +3719676 -1747493 +3868450 -1814420 +3898579 -1825564 +3334472 -1558860 +3411432 -1592227 +3286769 -1531528 +2755728 -1281974 +3629218 -1685551 +4310825 -1998824 +3549512 -1643113 +4165050 -1924876 +4540058 -2094725 +4541373 -2091872 +4542687 -2089018 +4543998 -2086164 +4545308 -2083308 +4438339 -2030906 +3932760 -1796574 +4272859 -1948695 +4550530 -2071878 +4551831 -2069018 +3787037 -1718514 +4306872 -1951147 +3462330 -1565922 +2851842 -1287656 +2702586 -1218221 +2893080 -1301902 +2933830 -1318023 +3502533 -1570869 +2651153 -1187029 +2647424 -1183363 +2650091 -1182558 +3353770 -1494036 +3513005 -1562328 +4119657 -1829022 +4387016 -1944424 +4512491 -1996646 +4188827 -1850288 +3852989 -1699050 +3741072 -1646890 +3425959 -1505603 +3161602 -1387057 +3926035 -1719488 +3781510 -1653359 +3773761 -1647147 +3841365 -1673782 +4272802 -1858577 +4586274 -1991504 +4385815 -1901184 +4588773 -1985740 +4590020 -1982856 +4157776 -1793031 +4053728 -1745140 +3183001 -1367920 +2301881 -987538 +1727661 -739906 +988083 -422432 +919739 -392530 +919986 -391952 +1701579 -723680 +1760136 -747279 +1180569 -500344 +1224539 -518072 +921213 -389060 +921457 -388481 +1054873 -443948 +921944 -387323 +922187 -386743 +1154541 -483334 +922673 -385584 +1380240 -575783 +1203127 -501011 +923398 -383844 +923639 -383264 +1485046 -615126 +2317499 -958234 +2084282 -860271 +2887843 -1189811 +3760419 -1546555 +4257478 -1747855 +4626578 -1895989 +4627768 -1893082 +4217244 -1722056 +4322411 -1761832 +4207060 -1711732 +4273696 -1735716 +4633693 -1878534 +4634872 -1875622 +4636050 -1872709 +4637226 -1869796 +3823218 -1538784 +3015473 -1211479 +2617272 -1049591 +3152960 -1262116 +2798552 -1118208 +3542022 -1412694 +3607345 -1436120 +3817981 -1517198 +4052463 -1607430 +4202685 -1663961 +4511309 -1782876 +4651192 -1834779 +4652344 -1831857 +4653494 -1828933 +4654642 -1826009 +4655788 -1823084 +4638426 -1812925 +4658076 -1817232 +4659216 -1814305 +4660356 -1811377 +4623076 -1793544 +4662628 -1805519 +4663762 -1802589 +3961652 -1528357 +4666023 -1796727 +4285800 -1647224 +4668277 -1790862 +3974190 -1521730 +4397952 -1680822 +4257628 -1624127 +4672763 -1779124 +4673881 -1776187 +4674995 -1773250 +4019373 -1521681 +4633294 -1750776 +4123548 -1555199 +4679438 -1761495 +4479463 -1683006 +4211269 -1579222 +4682749 -1752672 +4683850 -1749729 +4003940 -1492871 +3730538 -1388264 +3292433 -1222875 +2971588 -1101583 +2196176 -812565 +2357520 -870576 +1598975 -589322 +1193731 -439113 +1323305 -485833 +1183045 -433495 +939166 -343463 +939382 -342873 +1590435 -579374 +939812 -341692 +940026 -341102 +940241 -340511 +1339428 -484126 +2030750 -732556 +1446233 -520676 +941093 -338147 +941306 -337555 +1088666 -389628 +1211394 -432693 +941940 -335780 +1771717 -630323 +2469338 -876767 +2332682 -826596 +3221438 -1139253 +3212830 -1133938 +3504988 -1234576 +3131950 -1100968 +2654820 -931370 +2957620 -1035512 +2537423 -886605 +1786089 -622821 +2488227 -865908 +1794646 -623276 +1846072 -639837 +1012237 -350123 +1420228 -490244 +945473 -325700 +945678 -325106 +1368706 -469574 +1865182 -638595 +1833533 -626472 +2690674 -917448 +3574750 -1216387 +4495699 -1526609 +4134408 -1401029 +4736499 -1601742 +4737504 -1598766 +4531704 -1526143 +4739510 -1592811 +4442809 -1489993 +4313182 -1443505 +3645914 -1217642 +3044462 -1014646 +3219942 -1070882 +3018518 -1001787 +3309598 -1096083 +3362610 -1111296 +3935878 -1298010 +4439874 -1461130 +4750405 -1560016 +4751384 -1557031 +4752362 -1554046 +4753337 -1551059 +4754311 -1548072 +4311177 -1400786 +3382197 -1096593 +3142517 -1016701 +2559975 -826455 +1935538 -623521 +1140504 -366615 +952215 -305429 +952406 -304831 +1271405 -406051 +1695609 -540355 +2335228 -742573 +2645264 -839330 +1890806 -598637 +2293259 -724470 +3161963 -996720 +3442655 -1082823 +3413674 -1071351 +3095489 -969356 +3975354 -1242144 +4435546 -1382878 +4774322 -1485208 +4775255 -1482208 +4772326 -1478012 +4679807 -1446137 +4575968 -1410899 +4778965 -1470202 +4779888 -1467199 +4176619 -1279153 +4437285 -1355937 +3931717 -1198746 +4738232 -1441392 +4784473 -1452175 +3831716 -1160367 +4683238 -1415023 +4335166 -1306882 +4161257 -1251604 +3814098 -1144575 +2911893 -871838 +3640747 -1087568 +4372422 -1303143 +3460363 -1028949 +3840077 -1139233 +4190728 -1240396 +4795287 -1416060 +4796176 -1413047 +4797062 -1410033 +4797947 -1407018 +4798830 -1404004 +3999853 -1167517 +3258171 -948807 +4049774 -1176568 +3995458 -1158066 +4442736 -1284682 +4408815 -1271872 +4444040 -1279010 +3791616 -1088661 +4244713 -1215869 +3406402 -973425 +2570722 -732872 +3288745 -935334 +2467089 -699976 +2196666 -621760 +2296678 -648509 +1545559 -435369 +2402066 -675009 +3004893 -842374 +3892703 -1088620 +3875364 -1081146 +4433168 -1233760 +4817779 -1337537 +4818618 -1334510 +4819456 -1331482 +4820292 -1328454 +4141837 -1138675 +4390175 -1203981 +3446430 -942836 +3710232 -1012499 +3860946 -1051022 +4530703 -1230285 +4826088 -1307240 +4826908 -1304208 +4827727 -1301174 +4760125 -1279747 +4120771 -1105082 +4700218 -1257310 +4679573 -1248637 +4533650 -1206650 +3626398 -962742 +2785793 -737703 +3380922 -893026 +4206643 -1108302 +3642774 -957295 +4471540 -1172086 +4571312 -1195169 +4791223 -1249449 +3883478 -1010123 +3650018 -946950 +3852338 -996856 +3580215 -924040 +4379110 -1127298 +4203469 -1079267 +3469682 -888540 +3720424 -950261 +4577951 -1166224 +4017480 -1020758 +4206395 -1065944 +3800339 -960504 +4575409 -1153339 +4849105 -1219091 +4849870 -1216044 +4756874 -1189550 +4851394 -1209948 +4688151 -1166107 +4852911 -1203851 +4443580 -1099346 +4664659 -1150931 +4855171 -1194701 +4144682 -1017111 +4856669 -1188599 +4857415 -1185547 +4858159 -1182495 +4614126 -1120026 +4073763 -986149 +3475287 -838963 +2626514 -632316 +2192772 -526438 +1309074 -313411 +1860092 -444097 +2057203 -489791 +2015452 -478513 +2018396 -477873 +1327900 -313511 +1952435 -459666 +1449642 -340331 +973674 -227943 +973817 -227331 +973960 -226719 +1818869 -422193 +2137712 -494787 +2202606 -508350 +1564852 -360124 +1777279 -407835 +1181023 -270230 +1803416 -411448 +1827918 -415830 +1260493 -285914 +995825 -225223 +975504 -219982 +984894 -221450 +1792602 -401877 +2229818 -498423 +1788308 -398555 +1874006 -416418 +1230479 -272610 +1498918 -331095 +1187148 -261446 +976732 -214463 +1727020 -378067 +977001 -213235 +1387859 -301993 +977268 -212007 +977401 -211393 +977534 -210779 +977666 -210165 +1053976 -225876 +977929 -208936 +978060 -208321 +1615252 -342979 +1495561 -316582 +1039528 -219366 +1536380 -323206 +978710 -205248 +1266906 -264855 +1722485 -358967 +1426939 -296440 +979223 -202787 +1128265 -232913 +1493319 -307295 +1591098 -326374 +1716984 -351072 +979855 -199710 +1241240 -252172 +1474393 -298575 +980230 -197863 +980354 -197247 +980478 -196631 +980601 -196015 +980724 -195398 +1013822 -201331 +980969 -194166 +981091 -193549 +981212 -192933 +1796763 -352120 +1308662 -255611 +1391278 -270840 +981694 -190466 +1480018 -286186 +1911850 -368441 +2410627 -462992 +2412877 -461852 +2637802 -503188 +2710082 -515211 +3611939 -684311 +3637733 -686831 +3154074 -593460 +4027807 -755239 +4743562 -886363 +4915510 -915296 +4195354 -778472 +4748142 -877959 +4917226 -906029 +4917794 -902939 +4770670 -872828 +4119451 -751008 +3586753 -651565 +4568728 -826984 +4894168 -882716 +4921164 -884393 +4921718 -881301 +4922271 -878208 +4922822 -875115 +3957231 -700900 +3185176 -562091 +2739309 -481634 +2103436 -368470 +2830174 -493944 +1987820 -345643 +1343205 -232688 +2100394 -362499 +2512219 -431949 +3404498 -583165 +2729633 -465800 +2488444 -423033 +3220781 -545448 +2629487 -443612 +3235270 -543721 +2978548 -498652 +3183837 -530964 +4089385 -679340 +4932918 -816285 +4933430 -813186 +4933940 -810086 +4934448 -806986 +4934954 -803885 +4834753 -784445 +4935960 -797683 +4936460 -794582 +4519096 -724489 +4141269 -661248 +4667922 -742333 +4188540 -663400 +4938932 -779069 +4540631 -713317 +4450956 -696364 +4662966 -726533 +4108497 -637498 +4079377 -630354 +4274784 -657800 +4767206 -730507 +4331965 -661027 +4943259 -751128 +4943730 -748022 +4944199 -744916 +4944666 -741809 +4519911 -675183 +4908114 -730020 +4946055 -732487 +4308849 -635353 +4936795 -724777 +4328642 -632715 +4284306 -623485 +3986926 -577651 +3252948 -469221 +4075461 -585250 +4072337 -582190 +4812170 -684873 +4950560 -701396 +4735338 -667868 +4346632 -610260 +3840199 -536698 +3889203 -541055 +3785152 -524156 +2848834 -392673 +2013437 -276236 +1122952 -153346 +990889 -134678 +990974 -134055 +1152462 -155164 +1097767 -147097 +1643714 -219202 +1904368 -252744 +2843050 -375506 +2419334 -317996 +2286063 -299018 +1422977 -185217 +991716 -128449 +1364804 -175901 +1546648 -198350 +991956 -126580 +1688259 -214354 +2390933 -302045 +3163454 -397618 +4130237 -516498 +4119572 -512536 +3706366 -458762 +3045203 -374983 +2492369 -305318 +3200262 -389995 +3596516 -435991 +3741079 -451130 +4416475 -529760 +3970357 -473718 +3706709 -439899 +3546811 -418663 +3003113 -352572 +2041165 -238337 +2950176 -342599 +2064411 -238422 +1280828 -147110 +993540 -113481 +1081173 -122802 +1440575 -162707 +993752 -111608 +993822 -110983 +993892 -110359 +1429920 -157865 +994030 -109110 +1730239 -188820 +1739614 -188737 +2539955 -273954 +3500035 -375282 +3838546 -409138 +4665290 -494294 +4972500 -523684 +4972828 -520559 +4973154 -517435 +4112371 -425262 +4710014 -484074 +4974121 -508060 +4974439 -504934 +4819142 -486112 +4498652 -450928 +3627482 -361304 +3106758 -307467 +2607633 -256416 +1978589 -193305 +2551351 -247645 +2944578 -283946 +2680948 -256824 +1958833 -186406 +1538491 -145430 +995621 -93483 +995679 -92857 +995738 -92232 +995795 -91606 +1211770 -110706 +2151286 -195177 +1180043 -106313 +996022 -89103 +996078 -88477 +1478842 -130422 +996189 -87225 +1345998 -117002 +1225125 -105720 +996351 -85347 +1052407 -89483 +1495606 -126221 +1588401 -133047 +1912594 -158992 +1748706 -144261 +2365905 -193681 +1549168 -125841 +2477216 -199660 +2767614 -221316 +3555952 -282108 +3429342 -269895 +3111645 -242925 +2513321 -194625 +2850519 -218935 +2518285 -191826 +2417170 -182596 +2860796 -214301 +3266196 -242606 +3765752 -277332 +4128926 -301471 +4766192 -344990 +4246230 -304672 +4072615 -289642 +3566324 -251383 +4225721 -295195 +3692403 -255608 +3148174 -215946 +3687465 -250610 +4419244 -297555 +4988914 -332763 +4022809 -265784 +3894317 -254837 +2924718 -189543 +2142192 -137478 +2495717 -158592 +1599634 -100640 +1903532 -118559 +2338606 -144182 +1433165 -87455 +998181 -60282 +1715048 -102493 +1893394 -111958 +1630373 -95377 +2060991 -119269 +2794252 -159941 +3009425 -170361 +2787591 -156046 +2403874 -133051 +2390249 -130790 +1656556 -89600 +1953402 -104425 +1821930 -96249 +1607343 -83900 +2417934 -124687 +2599717 -132424 +2141133 -107716 +2921363 -145127 +3668223 -179919 +3892988 -188492 +3577268 -170952 +2584976 -121904 +3069521 -142822 +2376026 -109058 +3016877 -136574 +2218308 -99026 +1729312 -76108 +1468964 -63725 +2330576 -99636 +2258193 -95120 +1408299 -58434 +2115955 -86465 +1859047 -74797 +2398010 -94973 +2909709 -113407 +2363692 -90639 +1864625 -70328 +1385440 -51383 +1641673 -59853 +1248422 -44730 +1949734 -68631 +1119800 -38713 +1007399 -34193 +1682735 -56057 +1807716 -59084 +2739991 -87831 +2588791 -81356 +2873795 -88505 +3016305 -90997 +4011744 -118505 +4633069 -133945 +3902688 -110375 +3638156 -100606 +4614530 -124704 +4074449 -107547 +3259876 -83996 +3892344 -97846 +3620718 -88741 +2841678 -67861 +3028591 -70421 +2904008 -65698 +2274699 -50031 +1316091 -28120 +1854180 -38451 +2205832 -44357 +1920172 -37406 +1236237 -23305 +999834 -18220 +999845 -17592 +1222010 -20733 +999867 -16336 +1913961 -30067 +1723846 -25997 +1296494 -18737 +999904 -13823 +1618882 -21362 +999921 -12566 +999929 -11938 +1707403 -19311 +2255924 -24097 +1924917 -19352 +2295611 -21636 +1492606 -13130 +2077048 -16966 +1950848 -14709 +1673041 -11563 +1282820 -8060 +2099908 -11875 +1322252 -6646 +999990 -4398 +1393069 -5252 +1835591 -5767 +2037258 -5120 +1674129 -3156 +1711827 -2151 +2437406 -1531 +0 1 +1 2 +2 3 +3 4 +4 5 +5 6 +6 7 +7 8 +8 9 +9 10 +10 11 +11 12 +12 13 +13 14 +14 15 +15 16 +16 17 +17 18 +18 19 +19 20 +20 21 +21 22 +22 23 +23 24 +24 25 +25 26 +26 27 +27 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 49 +49 50 +50 51 +51 52 +52 53 +53 54 +54 55 +55 56 +56 57 +57 58 +58 59 +59 60 +60 61 +61 62 +62 63 +63 64 +64 65 +65 66 +66 67 +67 68 +68 69 +69 70 +70 71 +71 72 +72 73 +73 74 +74 75 +75 76 +76 77 +77 78 +78 79 +79 80 +80 81 +81 82 +82 83 +83 84 +84 85 +85 86 +86 87 +87 88 +88 89 +89 90 +90 91 +91 92 +92 93 +93 94 +94 95 +95 96 +96 97 +97 98 +98 99 +99 100 +100 101 +101 102 +102 103 +103 104 +104 105 +105 106 +106 107 +107 108 +108 109 +109 110 +110 111 +111 112 +112 113 +113 114 +114 115 +115 116 +116 117 +117 118 +118 119 +119 120 +120 121 +121 122 +122 123 +123 124 +124 125 +125 126 +126 127 +127 128 +128 129 +129 130 +130 131 +131 132 +132 133 +133 134 +134 135 +135 136 +136 137 +137 138 +138 139 +139 140 +140 141 +141 142 +142 143 +143 144 +144 145 +145 146 +146 147 +147 148 +148 149 +149 150 +150 151 +151 152 +152 153 +153 154 +154 155 +155 156 +156 157 +157 158 +158 159 +159 160 +160 161 +161 162 +162 163 +163 164 +164 165 +165 166 +166 167 +167 168 +168 169 +169 170 +170 171 +171 172 +172 173 +173 174 +174 175 +175 176 +176 177 +177 178 +178 179 +179 180 +180 181 +181 182 +182 183 +183 184 +184 185 +185 186 +186 187 +187 188 +188 189 +189 190 +190 191 +191 192 +192 193 +193 194 +194 195 +195 196 +196 197 +197 198 +198 199 +199 200 +200 201 +201 202 +202 203 +203 204 +204 205 +205 206 +206 207 +207 208 +208 209 +209 210 +210 211 +211 212 +212 213 +213 214 +214 215 +215 216 +216 217 +217 218 +218 219 +219 220 +220 221 +221 222 +222 223 +223 224 +224 225 +225 226 +226 227 +227 228 +228 229 +229 230 +230 231 +231 232 +232 233 +233 234 +234 235 +235 236 +236 237 +237 238 +238 239 +239 240 +240 241 +241 242 +242 243 +243 244 +244 245 +245 246 +246 247 +247 248 +248 249 +249 250 +250 251 +251 252 +252 253 +253 254 +254 255 +255 256 +256 257 +257 258 +258 259 +259 260 +260 261 +261 262 +262 263 +263 264 +264 265 +265 266 +266 267 +267 268 +268 269 +269 270 +270 271 +271 272 +272 273 +273 274 +274 275 +275 276 +276 277 +277 278 +278 279 +279 280 +280 281 +281 282 +282 283 +283 284 +284 285 +285 286 +286 287 +287 288 +288 289 +289 290 +290 291 +291 292 +292 293 +293 294 +294 295 +295 296 +296 297 +297 298 +298 299 +299 300 +300 301 +301 302 +302 303 +303 304 +304 305 +305 306 +306 307 +307 308 +308 309 +309 310 +310 311 +311 312 +312 313 +313 314 +314 315 +315 316 +316 317 +317 318 +318 319 +319 320 +320 321 +321 322 +322 323 +323 324 +324 325 +325 326 +326 327 +327 328 +328 329 +329 330 +330 331 +331 332 +332 333 +333 334 +334 335 +335 336 +336 337 +337 338 +338 339 +339 340 +340 341 +341 342 +342 343 +343 344 +344 345 +345 346 +346 347 +347 348 +348 349 +349 350 +350 351 +351 352 +352 353 +353 354 +354 355 +355 356 +356 357 +357 358 +358 359 +359 360 +360 361 +361 362 +362 363 +363 364 +364 365 +365 366 +366 367 +367 368 +368 369 +369 370 +370 371 +371 372 +372 373 +373 374 +374 375 +375 376 +376 377 +377 378 +378 379 +379 380 +380 381 +381 382 +382 383 +383 384 +384 385 +385 386 +386 387 +387 388 +388 389 +389 390 +390 391 +391 392 +392 393 +393 394 +394 395 +395 396 +396 397 +397 398 +398 399 +399 400 +400 401 +401 402 +402 403 +403 404 +404 405 +405 406 +406 407 +407 408 +408 409 +409 410 +410 411 +411 412 +412 413 +413 414 +414 415 +415 416 +416 417 +417 418 +418 419 +419 420 +420 421 +421 422 +422 423 +423 424 +424 425 +425 426 +426 427 +427 428 +428 429 +429 430 +430 431 +431 432 +432 433 +433 434 +434 435 +435 436 +436 437 +437 438 +438 439 +439 440 +440 441 +441 442 +442 443 +443 444 +444 445 +445 446 +446 447 +447 448 +448 449 +449 450 +450 451 +451 452 +452 453 +453 454 +454 455 +455 456 +456 457 +457 458 +458 459 +459 460 +460 461 +461 462 +462 463 +463 464 +464 465 +465 466 +466 467 +467 468 +468 469 +469 470 +470 471 +471 472 +472 473 +473 474 +474 475 +475 476 +476 477 +477 478 +478 479 +479 480 +480 481 +481 482 +482 483 +483 484 +484 485 +485 486 +486 487 +487 488 +488 489 +489 490 +490 491 +491 492 +492 493 +493 494 +494 495 +495 496 +496 497 +497 498 +498 499 +499 500 +500 501 +501 502 +502 503 +503 504 +504 505 +505 506 +506 507 +507 508 +508 509 +509 510 +510 511 +511 512 +512 513 +513 514 +514 515 +515 516 +516 517 +517 518 +518 519 +519 520 +520 521 +521 522 +522 523 +523 524 +524 525 +525 526 +526 527 +527 528 +528 529 +529 530 +530 531 +531 532 +532 533 +533 534 +534 535 +535 536 +536 537 +537 538 +538 539 +539 540 +540 541 +541 542 +542 543 +543 544 +544 545 +545 546 +546 547 +547 548 +548 549 +549 550 +550 551 +551 552 +552 553 +553 554 +554 555 +555 556 +556 557 +557 558 +558 559 +559 560 +560 561 +561 562 +562 563 +563 564 +564 565 +565 566 +566 567 +567 568 +568 569 +569 570 +570 571 +571 572 +572 573 +573 574 +574 575 +575 576 +576 577 +577 578 +578 579 +579 580 +580 581 +581 582 +582 583 +583 584 +584 585 +585 586 +586 587 +587 588 +588 589 +589 590 +590 591 +591 592 +592 593 +593 594 +594 595 +595 596 +596 597 +597 598 +598 599 +599 600 +600 601 +601 602 +602 603 +603 604 +604 605 +605 606 +606 607 +607 608 +608 609 +609 610 +610 611 +611 612 +612 613 +613 614 +614 615 +615 616 +616 617 +617 618 +618 619 +619 620 +620 621 +621 622 +622 623 +623 624 +624 625 +625 626 +626 627 +627 628 +628 629 +629 630 +630 631 +631 632 +632 633 +633 634 +634 635 +635 636 +636 637 +637 638 +638 639 +639 640 +640 641 +641 642 +642 643 +643 644 +644 645 +645 646 +646 647 +647 648 +648 649 +649 650 +650 651 +651 652 +652 653 +653 654 +654 655 +655 656 +656 657 +657 658 +658 659 +659 660 +660 661 +661 662 +662 663 +663 664 +664 665 +665 666 +666 667 +667 668 +668 669 +669 670 +670 671 +671 672 +672 673 +673 674 +674 675 +675 676 +676 677 +677 678 +678 679 +679 680 +680 681 +681 682 +682 683 +683 684 +684 685 +685 686 +686 687 +687 688 +688 689 +689 690 +690 691 +691 692 +692 693 +693 694 +694 695 +695 696 +696 697 +697 698 +698 699 +699 700 +700 701 +701 702 +702 703 +703 704 +704 705 +705 706 +706 707 +707 708 +708 709 +709 710 +710 711 +711 712 +712 713 +713 714 +714 715 +715 716 +716 717 +717 718 +718 719 +719 720 +720 721 +721 722 +722 723 +723 724 +724 725 +725 726 +726 727 +727 728 +728 729 +729 730 +730 731 +731 732 +732 733 +733 734 +734 735 +735 736 +736 737 +737 738 +738 739 +739 740 +740 741 +741 742 +742 743 +743 744 +744 745 +745 746 +746 747 +747 748 +748 749 +749 750 +750 751 +751 752 +752 753 +753 754 +754 755 +755 756 +756 757 +757 758 +758 759 +759 760 +760 761 +761 762 +762 763 +763 764 +764 765 +765 766 +766 767 +767 768 +768 769 +769 770 +770 771 +771 772 +772 773 +773 774 +774 775 +775 776 +776 777 +777 778 +778 779 +779 780 +780 781 +781 782 +782 783 +783 784 +784 785 +785 786 +786 787 +787 788 +788 789 +789 790 +790 791 +791 792 +792 793 +793 794 +794 795 +795 796 +796 797 +797 798 +798 799 +799 800 +800 801 +801 802 +802 803 +803 804 +804 805 +805 806 +806 807 +807 808 +808 809 +809 810 +810 811 +811 812 +812 813 +813 814 +814 815 +815 816 +816 817 +817 818 +818 819 +819 820 +820 821 +821 822 +822 823 +823 824 +824 825 +825 826 +826 827 +827 828 +828 829 +829 830 +830 831 +831 832 +832 833 +833 834 +834 835 +835 836 +836 837 +837 838 +838 839 +839 840 +840 841 +841 842 +842 843 +843 844 +844 845 +845 846 +846 847 +847 848 +848 849 +849 850 +850 851 +851 852 +852 853 +853 854 +854 855 +855 856 +856 857 +857 858 +858 859 +859 860 +860 861 +861 862 +862 863 +863 864 +864 865 +865 866 +866 867 +867 868 +868 869 +869 870 +870 871 +871 872 +872 873 +873 874 +874 875 +875 876 +876 877 +877 878 +878 879 +879 880 +880 881 +881 882 +882 883 +883 884 +884 885 +885 886 +886 887 +887 888 +888 889 +889 890 +890 891 +891 892 +892 893 +893 894 +894 895 +895 896 +896 897 +897 898 +898 899 +899 900 +900 901 +901 902 +902 903 +903 904 +904 905 +905 906 +906 907 +907 908 +908 909 +909 910 +910 911 +911 912 +912 913 +913 914 +914 915 +915 916 +916 917 +917 918 +918 919 +919 920 +920 921 +921 922 +922 923 +923 924 +924 925 +925 926 +926 927 +927 928 +928 929 +929 930 +930 931 +931 932 +932 933 +933 934 +934 935 +935 936 +936 937 +937 938 +938 939 +939 940 +940 941 +941 942 +942 943 +943 944 +944 945 +945 946 +946 947 +947 948 +948 949 +949 950 +950 951 +951 952 +952 953 +953 954 +954 955 +955 956 +956 957 +957 958 +958 959 +959 960 +960 961 +961 962 +962 963 +963 964 +964 965 +965 966 +966 967 +967 968 +968 969 +969 970 +970 971 +971 972 +972 973 +973 974 +974 975 +975 976 +976 977 +977 978 +978 979 +979 980 +980 981 +981 982 +982 983 +983 984 +984 985 +985 986 +986 987 +987 988 +988 989 +989 990 +990 991 +991 992 +992 993 +993 994 +994 995 +995 996 +996 997 +997 998 +998 999 +999 1000 +1000 1001 +1001 1002 +1002 1003 +1003 1004 +1004 1005 +1005 1006 +1006 1007 +1007 1008 +1008 1009 +1009 1010 +1010 1011 +1011 1012 +1012 1013 +1013 1014 +1014 1015 +1015 1016 +1016 1017 +1017 1018 +1018 1019 +1019 1020 +1020 1021 +1021 1022 +1022 1023 +1023 1024 +1024 1025 +1025 1026 +1026 1027 +1027 1028 +1028 1029 +1029 1030 +1030 1031 +1031 1032 +1032 1033 +1033 1034 +1034 1035 +1035 1036 +1036 1037 +1037 1038 +1038 1039 +1039 1040 +1040 1041 +1041 1042 +1042 1043 +1043 1044 +1044 1045 +1045 1046 +1046 1047 +1047 1048 +1048 1049 +1049 1050 +1050 1051 +1051 1052 +1052 1053 +1053 1054 +1054 1055 +1055 1056 +1056 1057 +1057 1058 +1058 1059 +1059 1060 +1060 1061 +1061 1062 +1062 1063 +1063 1064 +1064 1065 +1065 1066 +1066 1067 +1067 1068 +1068 1069 +1069 1070 +1070 1071 +1071 1072 +1072 1073 +1073 1074 +1074 1075 +1075 1076 +1076 1077 +1077 1078 +1078 1079 +1079 1080 +1080 1081 +1081 1082 +1082 1083 +1083 1084 +1084 1085 +1085 1086 +1086 1087 +1087 1088 +1088 1089 +1089 1090 +1090 1091 +1091 1092 +1092 1093 +1093 1094 +1094 1095 +1095 1096 +1096 1097 +1097 1098 +1098 1099 +1099 1100 +1100 1101 +1101 1102 +1102 1103 +1103 1104 +1104 1105 +1105 1106 +1106 1107 +1107 1108 +1108 1109 +1109 1110 +1110 1111 +1111 1112 +1112 1113 +1113 1114 +1114 1115 +1115 1116 +1116 1117 +1117 1118 +1118 1119 +1119 1120 +1120 1121 +1121 1122 +1122 1123 +1123 1124 +1124 1125 +1125 1126 +1126 1127 +1127 1128 +1128 1129 +1129 1130 +1130 1131 +1131 1132 +1132 1133 +1133 1134 +1134 1135 +1135 1136 +1136 1137 +1137 1138 +1138 1139 +1139 1140 +1140 1141 +1141 1142 +1142 1143 +1143 1144 +1144 1145 +1145 1146 +1146 1147 +1147 1148 +1148 1149 +1149 1150 +1150 1151 +1151 1152 +1152 1153 +1153 1154 +1154 1155 +1155 1156 +1156 1157 +1157 1158 +1158 1159 +1159 1160 +1160 1161 +1161 1162 +1162 1163 +1163 1164 +1164 1165 +1165 1166 +1166 1167 +1167 1168 +1168 1169 +1169 1170 +1170 1171 +1171 1172 +1172 1173 +1173 1174 +1174 1175 +1175 1176 +1176 1177 +1177 1178 +1178 1179 +1179 1180 +1180 1181 +1181 1182 +1182 1183 +1183 1184 +1184 1185 +1185 1186 +1186 1187 +1187 1188 +1188 1189 +1189 1190 +1190 1191 +1191 1192 +1192 1193 +1193 1194 +1194 1195 +1195 1196 +1196 1197 +1197 1198 +1198 1199 +1199 1200 +1200 1201 +1201 1202 +1202 1203 +1203 1204 +1204 1205 +1205 1206 +1206 1207 +1207 1208 +1208 1209 +1209 1210 +1210 1211 +1211 1212 +1212 1213 +1213 1214 +1214 1215 +1215 1216 +1216 1217 +1217 1218 +1218 1219 +1219 1220 +1220 1221 +1221 1222 +1222 1223 +1223 1224 +1224 1225 +1225 1226 +1226 1227 +1227 1228 +1228 1229 +1229 1230 +1230 1231 +1231 1232 +1232 1233 +1233 1234 +1234 1235 +1235 1236 +1236 1237 +1237 1238 +1238 1239 +1239 1240 +1240 1241 +1241 1242 +1242 1243 +1243 1244 +1244 1245 +1245 1246 +1246 1247 +1247 1248 +1248 1249 +1249 1250 +1250 1251 +1251 1252 +1252 1253 +1253 1254 +1254 1255 +1255 1256 +1256 1257 +1257 1258 +1258 1259 +1259 1260 +1260 1261 +1261 1262 +1262 1263 +1263 1264 +1264 1265 +1265 1266 +1266 1267 +1267 1268 +1268 1269 +1269 1270 +1270 1271 +1271 1272 +1272 1273 +1273 1274 +1274 1275 +1275 1276 +1276 1277 +1277 1278 +1278 1279 +1279 1280 +1280 1281 +1281 1282 +1282 1283 +1283 1284 +1284 1285 +1285 1286 +1286 1287 +1287 1288 +1288 1289 +1289 1290 +1290 1291 +1291 1292 +1292 1293 +1293 1294 +1294 1295 +1295 1296 +1296 1297 +1297 1298 +1298 1299 +1299 1300 +1300 1301 +1301 1302 +1302 1303 +1303 1304 +1304 1305 +1305 1306 +1306 1307 +1307 1308 +1308 1309 +1309 1310 +1310 1311 +1311 1312 +1312 1313 +1313 1314 +1314 1315 +1315 1316 +1316 1317 +1317 1318 +1318 1319 +1319 1320 +1320 1321 +1321 1322 +1322 1323 +1323 1324 +1324 1325 +1325 1326 +1326 1327 +1327 1328 +1328 1329 +1329 1330 +1330 1331 +1331 1332 +1332 1333 +1333 1334 +1334 1335 +1335 1336 +1336 1337 +1337 1338 +1338 1339 +1339 1340 +1340 1341 +1341 1342 +1342 1343 +1343 1344 +1344 1345 +1345 1346 +1346 1347 +1347 1348 +1348 1349 +1349 1350 +1350 1351 +1351 1352 +1352 1353 +1353 1354 +1354 1355 +1355 1356 +1356 1357 +1357 1358 +1358 1359 +1359 1360 +1360 1361 +1361 1362 +1362 1363 +1363 1364 +1364 1365 +1365 1366 +1366 1367 +1367 1368 +1368 1369 +1369 1370 +1370 1371 +1371 1372 +1372 1373 +1373 1374 +1374 1375 +1375 1376 +1376 1377 +1377 1378 +1378 1379 +1379 1380 +1380 1381 +1381 1382 +1382 1383 +1383 1384 +1384 1385 +1385 1386 +1386 1387 +1387 1388 +1388 1389 +1389 1390 +1390 1391 +1391 1392 +1392 1393 +1393 1394 +1394 1395 +1395 1396 +1396 1397 +1397 1398 +1398 1399 +1399 1400 +1400 1401 +1401 1402 +1402 1403 +1403 1404 +1404 1405 +1405 1406 +1406 1407 +1407 1408 +1408 1409 +1409 1410 +1410 1411 +1411 1412 +1412 1413 +1413 1414 +1414 1415 +1415 1416 +1416 1417 +1417 1418 +1418 1419 +1419 1420 +1420 1421 +1421 1422 +1422 1423 +1423 1424 +1424 1425 +1425 1426 +1426 1427 +1427 1428 +1428 1429 +1429 1430 +1430 1431 +1431 1432 +1432 1433 +1433 1434 +1434 1435 +1435 1436 +1436 1437 +1437 1438 +1438 1439 +1439 1440 +1440 1441 +1441 1442 +1442 1443 +1443 1444 +1444 1445 +1445 1446 +1446 1447 +1447 1448 +1448 1449 +1449 1450 +1450 1451 +1451 1452 +1452 1453 +1453 1454 +1454 1455 +1455 1456 +1456 1457 +1457 1458 +1458 1459 +1459 1460 +1460 1461 +1461 1462 +1462 1463 +1463 1464 +1464 1465 +1465 1466 +1466 1467 +1467 1468 +1468 1469 +1469 1470 +1470 1471 +1471 1472 +1472 1473 +1473 1474 +1474 1475 +1475 1476 +1476 1477 +1477 1478 +1478 1479 +1479 1480 +1480 1481 +1481 1482 +1482 1483 +1483 1484 +1484 1485 +1485 1486 +1486 1487 +1487 1488 +1488 1489 +1489 1490 +1490 1491 +1491 1492 +1492 1493 +1493 1494 +1494 1495 +1495 1496 +1496 1497 +1497 1498 +1498 1499 +1499 1500 +1500 1501 +1501 1502 +1502 1503 +1503 1504 +1504 1505 +1505 1506 +1506 1507 +1507 1508 +1508 1509 +1509 1510 +1510 1511 +1511 1512 +1512 1513 +1513 1514 +1514 1515 +1515 1516 +1516 1517 +1517 1518 +1518 1519 +1519 1520 +1520 1521 +1521 1522 +1522 1523 +1523 1524 +1524 1525 +1525 1526 +1526 1527 +1527 1528 +1528 1529 +1529 1530 +1530 1531 +1531 1532 +1532 1533 +1533 1534 +1534 1535 +1535 1536 +1536 1537 +1537 1538 +1538 1539 +1539 1540 +1540 1541 +1541 1542 +1542 1543 +1543 1544 +1544 1545 +1545 1546 +1546 1547 +1547 1548 +1548 1549 +1549 1550 +1550 1551 +1551 1552 +1552 1553 +1553 1554 +1554 1555 +1555 1556 +1556 1557 +1557 1558 +1558 1559 +1559 1560 +1560 1561 +1561 1562 +1562 1563 +1563 1564 +1564 1565 +1565 1566 +1566 1567 +1567 1568 +1568 1569 +1569 1570 +1570 1571 +1571 1572 +1572 1573 +1573 1574 +1574 1575 +1575 1576 +1576 1577 +1577 1578 +1578 1579 +1579 1580 +1580 1581 +1581 1582 +1582 1583 +1583 1584 +1584 1585 +1585 1586 +1586 1587 +1587 1588 +1588 1589 +1589 1590 +1590 1591 +1591 1592 +1592 1593 +1593 1594 +1594 1595 +1595 1596 +1596 1597 +1597 1598 +1598 1599 +1599 1600 +1600 1601 +1601 1602 +1602 1603 +1603 1604 +1604 1605 +1605 1606 +1606 1607 +1607 1608 +1608 1609 +1609 1610 +1610 1611 +1611 1612 +1612 1613 +1613 1614 +1614 1615 +1615 1616 +1616 1617 +1617 1618 +1618 1619 +1619 1620 +1620 1621 +1621 1622 +1622 1623 +1623 1624 +1624 1625 +1625 1626 +1626 1627 +1627 1628 +1628 1629 +1629 1630 +1630 1631 +1631 1632 +1632 1633 +1633 1634 +1634 1635 +1635 1636 +1636 1637 +1637 1638 +1638 1639 +1639 1640 +1640 1641 +1641 1642 +1642 1643 +1643 1644 +1644 1645 +1645 1646 +1646 1647 +1647 1648 +1648 1649 +1649 1650 +1650 1651 +1651 1652 +1652 1653 +1653 1654 +1654 1655 +1655 1656 +1656 1657 +1657 1658 +1658 1659 +1659 1660 +1660 1661 +1661 1662 +1662 1663 +1663 1664 +1664 1665 +1665 1666 +1666 1667 +1667 1668 +1668 1669 +1669 1670 +1670 1671 +1671 1672 +1672 1673 +1673 1674 +1674 1675 +1675 1676 +1676 1677 +1677 1678 +1678 1679 +1679 1680 +1680 1681 +1681 1682 +1682 1683 +1683 1684 +1684 1685 +1685 1686 +1686 1687 +1687 1688 +1688 1689 +1689 1690 +1690 1691 +1691 1692 +1692 1693 +1693 1694 +1694 1695 +1695 1696 +1696 1697 +1697 1698 +1698 1699 +1699 1700 +1700 1701 +1701 1702 +1702 1703 +1703 1704 +1704 1705 +1705 1706 +1706 1707 +1707 1708 +1708 1709 +1709 1710 +1710 1711 +1711 1712 +1712 1713 +1713 1714 +1714 1715 +1715 1716 +1716 1717 +1717 1718 +1718 1719 +1719 1720 +1720 1721 +1721 1722 +1722 1723 +1723 1724 +1724 1725 +1725 1726 +1726 1727 +1727 1728 +1728 1729 +1729 1730 +1730 1731 +1731 1732 +1732 1733 +1733 1734 +1734 1735 +1735 1736 +1736 1737 +1737 1738 +1738 1739 +1739 1740 +1740 1741 +1741 1742 +1742 1743 +1743 1744 +1744 1745 +1745 1746 +1746 1747 +1747 1748 +1748 1749 +1749 1750 +1750 1751 +1751 1752 +1752 1753 +1753 1754 +1754 1755 +1755 1756 +1756 1757 +1757 1758 +1758 1759 +1759 1760 +1760 1761 +1761 1762 +1762 1763 +1763 1764 +1764 1765 +1765 1766 +1766 1767 +1767 1768 +1768 1769 +1769 1770 +1770 1771 +1771 1772 +1772 1773 +1773 1774 +1774 1775 +1775 1776 +1776 1777 +1777 1778 +1778 1779 +1779 1780 +1780 1781 +1781 1782 +1782 1783 +1783 1784 +1784 1785 +1785 1786 +1786 1787 +1787 1788 +1788 1789 +1789 1790 +1790 1791 +1791 1792 +1792 1793 +1793 1794 +1794 1795 +1795 1796 +1796 1797 +1797 1798 +1798 1799 +1799 1800 +1800 1801 +1801 1802 +1802 1803 +1803 1804 +1804 1805 +1805 1806 +1806 1807 +1807 1808 +1808 1809 +1809 1810 +1810 1811 +1811 1812 +1812 1813 +1813 1814 +1814 1815 +1815 1816 +1816 1817 +1817 1818 +1818 1819 +1819 1820 +1820 1821 +1821 1822 +1822 1823 +1823 1824 +1824 1825 +1825 1826 +1826 1827 +1827 1828 +1828 1829 +1829 1830 +1830 1831 +1831 1832 +1832 1833 +1833 1834 +1834 1835 +1835 1836 +1836 1837 +1837 1838 +1838 1839 +1839 1840 +1840 1841 +1841 1842 +1842 1843 +1843 1844 +1844 1845 +1845 1846 +1846 1847 +1847 1848 +1848 1849 +1849 1850 +1850 1851 +1851 1852 +1852 1853 +1853 1854 +1854 1855 +1855 1856 +1856 1857 +1857 1858 +1858 1859 +1859 1860 +1860 1861 +1861 1862 +1862 1863 +1863 1864 +1864 1865 +1865 1866 +1866 1867 +1867 1868 +1868 1869 +1869 1870 +1870 1871 +1871 1872 +1872 1873 +1873 1874 +1874 1875 +1875 1876 +1876 1877 +1877 1878 +1878 1879 +1879 1880 +1880 1881 +1881 1882 +1882 1883 +1883 1884 +1884 1885 +1885 1886 +1886 1887 +1887 1888 +1888 1889 +1889 1890 +1890 1891 +1891 1892 +1892 1893 +1893 1894 +1894 1895 +1895 1896 +1896 1897 +1897 1898 +1898 1899 +1899 1900 +1900 1901 +1901 1902 +1902 1903 +1903 1904 +1904 1905 +1905 1906 +1906 1907 +1907 1908 +1908 1909 +1909 1910 +1910 1911 +1911 1912 +1912 1913 +1913 1914 +1914 1915 +1915 1916 +1916 1917 +1917 1918 +1918 1919 +1919 1920 +1920 1921 +1921 1922 +1922 1923 +1923 1924 +1924 1925 +1925 1926 +1926 1927 +1927 1928 +1928 1929 +1929 1930 +1930 1931 +1931 1932 +1932 1933 +1933 1934 +1934 1935 +1935 1936 +1936 1937 +1937 1938 +1938 1939 +1939 1940 +1940 1941 +1941 1942 +1942 1943 +1943 1944 +1944 1945 +1945 1946 +1946 1947 +1947 1948 +1948 1949 +1949 1950 +1950 1951 +1951 1952 +1952 1953 +1953 1954 +1954 1955 +1955 1956 +1956 1957 +1957 1958 +1958 1959 +1959 1960 +1960 1961 +1961 1962 +1962 1963 +1963 1964 +1964 1965 +1965 1966 +1966 1967 +1967 1968 +1968 1969 +1969 1970 +1970 1971 +1971 1972 +1972 1973 +1973 1974 +1974 1975 +1975 1976 +1976 1977 +1977 1978 +1978 1979 +1979 1980 +1980 1981 +1981 1982 +1982 1983 +1983 1984 +1984 1985 +1985 1986 +1986 1987 +1987 1988 +1988 1989 +1989 1990 +1990 1991 +1991 1992 +1992 1993 +1993 1994 +1994 1995 +1995 1996 +1996 1997 +1997 1998 +1998 1999 +1999 2000 +2000 2001 +2001 2002 +2002 2003 +2003 2004 +2004 2005 +2005 2006 +2006 2007 +2007 2008 +2008 2009 +2009 2010 +2010 2011 +2011 2012 +2012 2013 +2013 2014 +2014 2015 +2015 2016 +2016 2017 +2017 2018 +2018 2019 +2019 2020 +2020 2021 +2021 2022 +2022 2023 +2023 2024 +2024 2025 +2025 2026 +2026 2027 +2027 2028 +2028 2029 +2029 2030 +2030 2031 +2031 2032 +2032 2033 +2033 2034 +2034 2035 +2035 2036 +2036 2037 +2037 2038 +2038 2039 +2039 2040 +2040 2041 +2041 2042 +2042 2043 +2043 2044 +2044 2045 +2045 2046 +2046 2047 +2047 2048 +2048 2049 +2049 2050 +2050 2051 +2051 2052 +2052 2053 +2053 2054 +2054 2055 +2055 2056 +2056 2057 +2057 2058 +2058 2059 +2059 2060 +2060 2061 +2061 2062 +2062 2063 +2063 2064 +2064 2065 +2065 2066 +2066 2067 +2067 2068 +2068 2069 +2069 2070 +2070 2071 +2071 2072 +2072 2073 +2073 2074 +2074 2075 +2075 2076 +2076 2077 +2077 2078 +2078 2079 +2079 2080 +2080 2081 +2081 2082 +2082 2083 +2083 2084 +2084 2085 +2085 2086 +2086 2087 +2087 2088 +2088 2089 +2089 2090 +2090 2091 +2091 2092 +2092 2093 +2093 2094 +2094 2095 +2095 2096 +2096 2097 +2097 2098 +2098 2099 +2099 2100 +2100 2101 +2101 2102 +2102 2103 +2103 2104 +2104 2105 +2105 2106 +2106 2107 +2107 2108 +2108 2109 +2109 2110 +2110 2111 +2111 2112 +2112 2113 +2113 2114 +2114 2115 +2115 2116 +2116 2117 +2117 2118 +2118 2119 +2119 2120 +2120 2121 +2121 2122 +2122 2123 +2123 2124 +2124 2125 +2125 2126 +2126 2127 +2127 2128 +2128 2129 +2129 2130 +2130 2131 +2131 2132 +2132 2133 +2133 2134 +2134 2135 +2135 2136 +2136 2137 +2137 2138 +2138 2139 +2139 2140 +2140 2141 +2141 2142 +2142 2143 +2143 2144 +2144 2145 +2145 2146 +2146 2147 +2147 2148 +2148 2149 +2149 2150 +2150 2151 +2151 2152 +2152 2153 +2153 2154 +2154 2155 +2155 2156 +2156 2157 +2157 2158 +2158 2159 +2159 2160 +2160 2161 +2161 2162 +2162 2163 +2163 2164 +2164 2165 +2165 2166 +2166 2167 +2167 2168 +2168 2169 +2169 2170 +2170 2171 +2171 2172 +2172 2173 +2173 2174 +2174 2175 +2175 2176 +2176 2177 +2177 2178 +2178 2179 +2179 2180 +2180 2181 +2181 2182 +2182 2183 +2183 2184 +2184 2185 +2185 2186 +2186 2187 +2187 2188 +2188 2189 +2189 2190 +2190 2191 +2191 2192 +2192 2193 +2193 2194 +2194 2195 +2195 2196 +2196 2197 +2197 2198 +2198 2199 +2199 2200 +2200 2201 +2201 2202 +2202 2203 +2203 2204 +2204 2205 +2205 2206 +2206 2207 +2207 2208 +2208 2209 +2209 2210 +2210 2211 +2211 2212 +2212 2213 +2213 2214 +2214 2215 +2215 2216 +2216 2217 +2217 2218 +2218 2219 +2219 2220 +2220 2221 +2221 2222 +2222 2223 +2223 2224 +2224 2225 +2225 2226 +2226 2227 +2227 2228 +2228 2229 +2229 2230 +2230 2231 +2231 2232 +2232 2233 +2233 2234 +2234 2235 +2235 2236 +2236 2237 +2237 2238 +2238 2239 +2239 2240 +2240 2241 +2241 2242 +2242 2243 +2243 2244 +2244 2245 +2245 2246 +2246 2247 +2247 2248 +2248 2249 +2249 2250 +2250 2251 +2251 2252 +2252 2253 +2253 2254 +2254 2255 +2255 2256 +2256 2257 +2257 2258 +2258 2259 +2259 2260 +2260 2261 +2261 2262 +2262 2263 +2263 2264 +2264 2265 +2265 2266 +2266 2267 +2267 2268 +2268 2269 +2269 2270 +2270 2271 +2271 2272 +2272 2273 +2273 2274 +2274 2275 +2275 2276 +2276 2277 +2277 2278 +2278 2279 +2279 2280 +2280 2281 +2281 2282 +2282 2283 +2283 2284 +2284 2285 +2285 2286 +2286 2287 +2287 2288 +2288 2289 +2289 2290 +2290 2291 +2291 2292 +2292 2293 +2293 2294 +2294 2295 +2295 2296 +2296 2297 +2297 2298 +2298 2299 +2299 2300 +2300 2301 +2301 2302 +2302 2303 +2303 2304 +2304 2305 +2305 2306 +2306 2307 +2307 2308 +2308 2309 +2309 2310 +2310 2311 +2311 2312 +2312 2313 +2313 2314 +2314 2315 +2315 2316 +2316 2317 +2317 2318 +2318 2319 +2319 2320 +2320 2321 +2321 2322 +2322 2323 +2323 2324 +2324 2325 +2325 2326 +2326 2327 +2327 2328 +2328 2329 +2329 2330 +2330 2331 +2331 2332 +2332 2333 +2333 2334 +2334 2335 +2335 2336 +2336 2337 +2337 2338 +2338 2339 +2339 2340 +2340 2341 +2341 2342 +2342 2343 +2343 2344 +2344 2345 +2345 2346 +2346 2347 +2347 2348 +2348 2349 +2349 2350 +2350 2351 +2351 2352 +2352 2353 +2353 2354 +2354 2355 +2355 2356 +2356 2357 +2357 2358 +2358 2359 +2359 2360 +2360 2361 +2361 2362 +2362 2363 +2363 2364 +2364 2365 +2365 2366 +2366 2367 +2367 2368 +2368 2369 +2369 2370 +2370 2371 +2371 2372 +2372 2373 +2373 2374 +2374 2375 +2375 2376 +2376 2377 +2377 2378 +2378 2379 +2379 2380 +2380 2381 +2381 2382 +2382 2383 +2383 2384 +2384 2385 +2385 2386 +2386 2387 +2387 2388 +2388 2389 +2389 2390 +2390 2391 +2391 2392 +2392 2393 +2393 2394 +2394 2395 +2395 2396 +2396 2397 +2397 2398 +2398 2399 +2399 2400 +2400 2401 +2401 2402 +2402 2403 +2403 2404 +2404 2405 +2405 2406 +2406 2407 +2407 2408 +2408 2409 +2409 2410 +2410 2411 +2411 2412 +2412 2413 +2413 2414 +2414 2415 +2415 2416 +2416 2417 +2417 2418 +2418 2419 +2419 2420 +2420 2421 +2421 2422 +2422 2423 +2423 2424 +2424 2425 +2425 2426 +2426 2427 +2427 2428 +2428 2429 +2429 2430 +2430 2431 +2431 2432 +2432 2433 +2433 2434 +2434 2435 +2435 2436 +2436 2437 +2437 2438 +2438 2439 +2439 2440 +2440 2441 +2441 2442 +2442 2443 +2443 2444 +2444 2445 +2445 2446 +2446 2447 +2447 2448 +2448 2449 +2449 2450 +2450 2451 +2451 2452 +2452 2453 +2453 2454 +2454 2455 +2455 2456 +2456 2457 +2457 2458 +2458 2459 +2459 2460 +2460 2461 +2461 2462 +2462 2463 +2463 2464 +2464 2465 +2465 2466 +2466 2467 +2467 2468 +2468 2469 +2469 2470 +2470 2471 +2471 2472 +2472 2473 +2473 2474 +2474 2475 +2475 2476 +2476 2477 +2477 2478 +2478 2479 +2479 2480 +2480 2481 +2481 2482 +2482 2483 +2483 2484 +2484 2485 +2485 2486 +2486 2487 +2487 2488 +2488 2489 +2489 2490 +2490 2491 +2491 2492 +2492 2493 +2493 2494 +2494 2495 +2495 2496 +2496 2497 +2497 2498 +2498 2499 +2499 2500 +2500 2501 +2501 2502 +2502 2503 +2503 2504 +2504 2505 +2505 2506 +2506 2507 +2507 2508 +2508 2509 +2509 2510 +2510 2511 +2511 2512 +2512 2513 +2513 2514 +2514 2515 +2515 2516 +2516 2517 +2517 2518 +2518 2519 +2519 2520 +2520 2521 +2521 2522 +2522 2523 +2523 2524 +2524 2525 +2525 2526 +2526 2527 +2527 2528 +2528 2529 +2529 2530 +2530 2531 +2531 2532 +2532 2533 +2533 2534 +2534 2535 +2535 2536 +2536 2537 +2537 2538 +2538 2539 +2539 2540 +2540 2541 +2541 2542 +2542 2543 +2543 2544 +2544 2545 +2545 2546 +2546 2547 +2547 2548 +2548 2549 +2549 2550 +2550 2551 +2551 2552 +2552 2553 +2553 2554 +2554 2555 +2555 2556 +2556 2557 +2557 2558 +2558 2559 +2559 2560 +2560 2561 +2561 2562 +2562 2563 +2563 2564 +2564 2565 +2565 2566 +2566 2567 +2567 2568 +2568 2569 +2569 2570 +2570 2571 +2571 2572 +2572 2573 +2573 2574 +2574 2575 +2575 2576 +2576 2577 +2577 2578 +2578 2579 +2579 2580 +2580 2581 +2581 2582 +2582 2583 +2583 2584 +2584 2585 +2585 2586 +2586 2587 +2587 2588 +2588 2589 +2589 2590 +2590 2591 +2591 2592 +2592 2593 +2593 2594 +2594 2595 +2595 2596 +2596 2597 +2597 2598 +2598 2599 +2599 2600 +2600 2601 +2601 2602 +2602 2603 +2603 2604 +2604 2605 +2605 2606 +2606 2607 +2607 2608 +2608 2609 +2609 2610 +2610 2611 +2611 2612 +2612 2613 +2613 2614 +2614 2615 +2615 2616 +2616 2617 +2617 2618 +2618 2619 +2619 2620 +2620 2621 +2621 2622 +2622 2623 +2623 2624 +2624 2625 +2625 2626 +2626 2627 +2627 2628 +2628 2629 +2629 2630 +2630 2631 +2631 2632 +2632 2633 +2633 2634 +2634 2635 +2635 2636 +2636 2637 +2637 2638 +2638 2639 +2639 2640 +2640 2641 +2641 2642 +2642 2643 +2643 2644 +2644 2645 +2645 2646 +2646 2647 +2647 2648 +2648 2649 +2649 2650 +2650 2651 +2651 2652 +2652 2653 +2653 2654 +2654 2655 +2655 2656 +2656 2657 +2657 2658 +2658 2659 +2659 2660 +2660 2661 +2661 2662 +2662 2663 +2663 2664 +2664 2665 +2665 2666 +2666 2667 +2667 2668 +2668 2669 +2669 2670 +2670 2671 +2671 2672 +2672 2673 +2673 2674 +2674 2675 +2675 2676 +2676 2677 +2677 2678 +2678 2679 +2679 2680 +2680 2681 +2681 2682 +2682 2683 +2683 2684 +2684 2685 +2685 2686 +2686 2687 +2687 2688 +2688 2689 +2689 2690 +2690 2691 +2691 2692 +2692 2693 +2693 2694 +2694 2695 +2695 2696 +2696 2697 +2697 2698 +2698 2699 +2699 2700 +2700 2701 +2701 2702 +2702 2703 +2703 2704 +2704 2705 +2705 2706 +2706 2707 +2707 2708 +2708 2709 +2709 2710 +2710 2711 +2711 2712 +2712 2713 +2713 2714 +2714 2715 +2715 2716 +2716 2717 +2717 2718 +2718 2719 +2719 2720 +2720 2721 +2721 2722 +2722 2723 +2723 2724 +2724 2725 +2725 2726 +2726 2727 +2727 2728 +2728 2729 +2729 2730 +2730 2731 +2731 2732 +2732 2733 +2733 2734 +2734 2735 +2735 2736 +2736 2737 +2737 2738 +2738 2739 +2739 2740 +2740 2741 +2741 2742 +2742 2743 +2743 2744 +2744 2745 +2745 2746 +2746 2747 +2747 2748 +2748 2749 +2749 2750 +2750 2751 +2751 2752 +2752 2753 +2753 2754 +2754 2755 +2755 2756 +2756 2757 +2757 2758 +2758 2759 +2759 2760 +2760 2761 +2761 2762 +2762 2763 +2763 2764 +2764 2765 +2765 2766 +2766 2767 +2767 2768 +2768 2769 +2769 2770 +2770 2771 +2771 2772 +2772 2773 +2773 2774 +2774 2775 +2775 2776 +2776 2777 +2777 2778 +2778 2779 +2779 2780 +2780 2781 +2781 2782 +2782 2783 +2783 2784 +2784 2785 +2785 2786 +2786 2787 +2787 2788 +2788 2789 +2789 2790 +2790 2791 +2791 2792 +2792 2793 +2793 2794 +2794 2795 +2795 2796 +2796 2797 +2797 2798 +2798 2799 +2799 2800 +2800 2801 +2801 2802 +2802 2803 +2803 2804 +2804 2805 +2805 2806 +2806 2807 +2807 2808 +2808 2809 +2809 2810 +2810 2811 +2811 2812 +2812 2813 +2813 2814 +2814 2815 +2815 2816 +2816 2817 +2817 2818 +2818 2819 +2819 2820 +2820 2821 +2821 2822 +2822 2823 +2823 2824 +2824 2825 +2825 2826 +2826 2827 +2827 2828 +2828 2829 +2829 2830 +2830 2831 +2831 2832 +2832 2833 +2833 2834 +2834 2835 +2835 2836 +2836 2837 +2837 2838 +2838 2839 +2839 2840 +2840 2841 +2841 2842 +2842 2843 +2843 2844 +2844 2845 +2845 2846 +2846 2847 +2847 2848 +2848 2849 +2849 2850 +2850 2851 +2851 2852 +2852 2853 +2853 2854 +2854 2855 +2855 2856 +2856 2857 +2857 2858 +2858 2859 +2859 2860 +2860 2861 +2861 2862 +2862 2863 +2863 2864 +2864 2865 +2865 2866 +2866 2867 +2867 2868 +2868 2869 +2869 2870 +2870 2871 +2871 2872 +2872 2873 +2873 2874 +2874 2875 +2875 2876 +2876 2877 +2877 2878 +2878 2879 +2879 2880 +2880 2881 +2881 2882 +2882 2883 +2883 2884 +2884 2885 +2885 2886 +2886 2887 +2887 2888 +2888 2889 +2889 2890 +2890 2891 +2891 2892 +2892 2893 +2893 2894 +2894 2895 +2895 2896 +2896 2897 +2897 2898 +2898 2899 +2899 2900 +2900 2901 +2901 2902 +2902 2903 +2903 2904 +2904 2905 +2905 2906 +2906 2907 +2907 2908 +2908 2909 +2909 2910 +2910 2911 +2911 2912 +2912 2913 +2913 2914 +2914 2915 +2915 2916 +2916 2917 +2917 2918 +2918 2919 +2919 2920 +2920 2921 +2921 2922 +2922 2923 +2923 2924 +2924 2925 +2925 2926 +2926 2927 +2927 2928 +2928 2929 +2929 2930 +2930 2931 +2931 2932 +2932 2933 +2933 2934 +2934 2935 +2935 2936 +2936 2937 +2937 2938 +2938 2939 +2939 2940 +2940 2941 +2941 2942 +2942 2943 +2943 2944 +2944 2945 +2945 2946 +2946 2947 +2947 2948 +2948 2949 +2949 2950 +2950 2951 +2951 2952 +2952 2953 +2953 2954 +2954 2955 +2955 2956 +2956 2957 +2957 2958 +2958 2959 +2959 2960 +2960 2961 +2961 2962 +2962 2963 +2963 2964 +2964 2965 +2965 2966 +2966 2967 +2967 2968 +2968 2969 +2969 2970 +2970 2971 +2971 2972 +2972 2973 +2973 2974 +2974 2975 +2975 2976 +2976 2977 +2977 2978 +2978 2979 +2979 2980 +2980 2981 +2981 2982 +2982 2983 +2983 2984 +2984 2985 +2985 2986 +2986 2987 +2987 2988 +2988 2989 +2989 2990 +2990 2991 +2991 2992 +2992 2993 +2993 2994 +2994 2995 +2995 2996 +2996 2997 +2997 2998 +2998 2999 +2999 3000 +3000 3001 +3001 3002 +3002 3003 +3003 3004 +3004 3005 +3005 3006 +3006 3007 +3007 3008 +3008 3009 +3009 3010 +3010 3011 +3011 3012 +3012 3013 +3013 3014 +3014 3015 +3015 3016 +3016 3017 +3017 3018 +3018 3019 +3019 3020 +3020 3021 +3021 3022 +3022 3023 +3023 3024 +3024 3025 +3025 3026 +3026 3027 +3027 3028 +3028 3029 +3029 3030 +3030 3031 +3031 3032 +3032 3033 +3033 3034 +3034 3035 +3035 3036 +3036 3037 +3037 3038 +3038 3039 +3039 3040 +3040 3041 +3041 3042 +3042 3043 +3043 3044 +3044 3045 +3045 3046 +3046 3047 +3047 3048 +3048 3049 +3049 3050 +3050 3051 +3051 3052 +3052 3053 +3053 3054 +3054 3055 +3055 3056 +3056 3057 +3057 3058 +3058 3059 +3059 3060 +3060 3061 +3061 3062 +3062 3063 +3063 3064 +3064 3065 +3065 3066 +3066 3067 +3067 3068 +3068 3069 +3069 3070 +3070 3071 +3071 3072 +3072 3073 +3073 3074 +3074 3075 +3075 3076 +3076 3077 +3077 3078 +3078 3079 +3079 3080 +3080 3081 +3081 3082 +3082 3083 +3083 3084 +3084 3085 +3085 3086 +3086 3087 +3087 3088 +3088 3089 +3089 3090 +3090 3091 +3091 3092 +3092 3093 +3093 3094 +3094 3095 +3095 3096 +3096 3097 +3097 3098 +3098 3099 +3099 3100 +3100 3101 +3101 3102 +3102 3103 +3103 3104 +3104 3105 +3105 3106 +3106 3107 +3107 3108 +3108 3109 +3109 3110 +3110 3111 +3111 3112 +3112 3113 +3113 3114 +3114 3115 +3115 3116 +3116 3117 +3117 3118 +3118 3119 +3119 3120 +3120 3121 +3121 3122 +3122 3123 +3123 3124 +3124 3125 +3125 3126 +3126 3127 +3127 3128 +3128 3129 +3129 3130 +3130 3131 +3131 3132 +3132 3133 +3133 3134 +3134 3135 +3135 3136 +3136 3137 +3137 3138 +3138 3139 +3139 3140 +3140 3141 +3141 3142 +3142 3143 +3143 3144 +3144 3145 +3145 3146 +3146 3147 +3147 3148 +3148 3149 +3149 3150 +3150 3151 +3151 3152 +3152 3153 +3153 3154 +3154 3155 +3155 3156 +3156 3157 +3157 3158 +3158 3159 +3159 3160 +3160 3161 +3161 3162 +3162 3163 +3163 3164 +3164 3165 +3165 3166 +3166 3167 +3167 3168 +3168 3169 +3169 3170 +3170 3171 +3171 3172 +3172 3173 +3173 3174 +3174 3175 +3175 3176 +3176 3177 +3177 3178 +3178 3179 +3179 3180 +3180 3181 +3181 3182 +3182 3183 +3183 3184 +3184 3185 +3185 3186 +3186 3187 +3187 3188 +3188 3189 +3189 3190 +3190 3191 +3191 3192 +3192 3193 +3193 3194 +3194 3195 +3195 3196 +3196 3197 +3197 3198 +3198 3199 +3199 3200 +3200 3201 +3201 3202 +3202 3203 +3203 3204 +3204 3205 +3205 3206 +3206 3207 +3207 3208 +3208 3209 +3209 3210 +3210 3211 +3211 3212 +3212 3213 +3213 3214 +3214 3215 +3215 3216 +3216 3217 +3217 3218 +3218 3219 +3219 3220 +3220 3221 +3221 3222 +3222 3223 +3223 3224 +3224 3225 +3225 3226 +3226 3227 +3227 3228 +3228 3229 +3229 3230 +3230 3231 +3231 3232 +3232 3233 +3233 3234 +3234 3235 +3235 3236 +3236 3237 +3237 3238 +3238 3239 +3239 3240 +3240 3241 +3241 3242 +3242 3243 +3243 3244 +3244 3245 +3245 3246 +3246 3247 +3247 3248 +3248 3249 +3249 3250 +3250 3251 +3251 3252 +3252 3253 +3253 3254 +3254 3255 +3255 3256 +3256 3257 +3257 3258 +3258 3259 +3259 3260 +3260 3261 +3261 3262 +3262 3263 +3263 3264 +3264 3265 +3265 3266 +3266 3267 +3267 3268 +3268 3269 +3269 3270 +3270 3271 +3271 3272 +3272 3273 +3273 3274 +3274 3275 +3275 3276 +3276 3277 +3277 3278 +3278 3279 +3279 3280 +3280 3281 +3281 3282 +3282 3283 +3283 3284 +3284 3285 +3285 3286 +3286 3287 +3287 3288 +3288 3289 +3289 3290 +3290 3291 +3291 3292 +3292 3293 +3293 3294 +3294 3295 +3295 3296 +3296 3297 +3297 3298 +3298 3299 +3299 3300 +3300 3301 +3301 3302 +3302 3303 +3303 3304 +3304 3305 +3305 3306 +3306 3307 +3307 3308 +3308 3309 +3309 3310 +3310 3311 +3311 3312 +3312 3313 +3313 3314 +3314 3315 +3315 3316 +3316 3317 +3317 3318 +3318 3319 +3319 3320 +3320 3321 +3321 3322 +3322 3323 +3323 3324 +3324 3325 +3325 3326 +3326 3327 +3327 3328 +3328 3329 +3329 3330 +3330 3331 +3331 3332 +3332 3333 +3333 3334 +3334 3335 +3335 3336 +3336 3337 +3337 3338 +3338 3339 +3339 3340 +3340 3341 +3341 3342 +3342 3343 +3343 3344 +3344 3345 +3345 3346 +3346 3347 +3347 3348 +3348 3349 +3349 3350 +3350 3351 +3351 3352 +3352 3353 +3353 3354 +3354 3355 +3355 3356 +3356 3357 +3357 3358 +3358 3359 +3359 3360 +3360 3361 +3361 3362 +3362 3363 +3363 3364 +3364 3365 +3365 3366 +3366 3367 +3367 3368 +3368 3369 +3369 3370 +3370 3371 +3371 3372 +3372 3373 +3373 3374 +3374 3375 +3375 3376 +3376 3377 +3377 3378 +3378 3379 +3379 3380 +3380 3381 +3381 3382 +3382 3383 +3383 3384 +3384 3385 +3385 3386 +3386 3387 +3387 3388 +3388 3389 +3389 3390 +3390 3391 +3391 3392 +3392 3393 +3393 3394 +3394 3395 +3395 3396 +3396 3397 +3397 3398 +3398 3399 +3399 3400 +3400 3401 +3401 3402 +3402 3403 +3403 3404 +3404 3405 +3405 3406 +3406 3407 +3407 3408 +3408 3409 +3409 3410 +3410 3411 +3411 3412 +3412 3413 +3413 3414 +3414 3415 +3415 3416 +3416 3417 +3417 3418 +3418 3419 +3419 3420 +3420 3421 +3421 3422 +3422 3423 +3423 3424 +3424 3425 +3425 3426 +3426 3427 +3427 3428 +3428 3429 +3429 3430 +3430 3431 +3431 3432 +3432 3433 +3433 3434 +3434 3435 +3435 3436 +3436 3437 +3437 3438 +3438 3439 +3439 3440 +3440 3441 +3441 3442 +3442 3443 +3443 3444 +3444 3445 +3445 3446 +3446 3447 +3447 3448 +3448 3449 +3449 3450 +3450 3451 +3451 3452 +3452 3453 +3453 3454 +3454 3455 +3455 3456 +3456 3457 +3457 3458 +3458 3459 +3459 3460 +3460 3461 +3461 3462 +3462 3463 +3463 3464 +3464 3465 +3465 3466 +3466 3467 +3467 3468 +3468 3469 +3469 3470 +3470 3471 +3471 3472 +3472 3473 +3473 3474 +3474 3475 +3475 3476 +3476 3477 +3477 3478 +3478 3479 +3479 3480 +3480 3481 +3481 3482 +3482 3483 +3483 3484 +3484 3485 +3485 3486 +3486 3487 +3487 3488 +3488 3489 +3489 3490 +3490 3491 +3491 3492 +3492 3493 +3493 3494 +3494 3495 +3495 3496 +3496 3497 +3497 3498 +3498 3499 +3499 3500 +3500 3501 +3501 3502 +3502 3503 +3503 3504 +3504 3505 +3505 3506 +3506 3507 +3507 3508 +3508 3509 +3509 3510 +3510 3511 +3511 3512 +3512 3513 +3513 3514 +3514 3515 +3515 3516 +3516 3517 +3517 3518 +3518 3519 +3519 3520 +3520 3521 +3521 3522 +3522 3523 +3523 3524 +3524 3525 +3525 3526 +3526 3527 +3527 3528 +3528 3529 +3529 3530 +3530 3531 +3531 3532 +3532 3533 +3533 3534 +3534 3535 +3535 3536 +3536 3537 +3537 3538 +3538 3539 +3539 3540 +3540 3541 +3541 3542 +3542 3543 +3543 3544 +3544 3545 +3545 3546 +3546 3547 +3547 3548 +3548 3549 +3549 3550 +3550 3551 +3551 3552 +3552 3553 +3553 3554 +3554 3555 +3555 3556 +3556 3557 +3557 3558 +3558 3559 +3559 3560 +3560 3561 +3561 3562 +3562 3563 +3563 3564 +3564 3565 +3565 3566 +3566 3567 +3567 3568 +3568 3569 +3569 3570 +3570 3571 +3571 3572 +3572 3573 +3573 3574 +3574 3575 +3575 3576 +3576 3577 +3577 3578 +3578 3579 +3579 3580 +3580 3581 +3581 3582 +3582 3583 +3583 3584 +3584 3585 +3585 3586 +3586 3587 +3587 3588 +3588 3589 +3589 3590 +3590 3591 +3591 3592 +3592 3593 +3593 3594 +3594 3595 +3595 3596 +3596 3597 +3597 3598 +3598 3599 +3599 3600 +3600 3601 +3601 3602 +3602 3603 +3603 3604 +3604 3605 +3605 3606 +3606 3607 +3607 3608 +3608 3609 +3609 3610 +3610 3611 +3611 3612 +3612 3613 +3613 3614 +3614 3615 +3615 3616 +3616 3617 +3617 3618 +3618 3619 +3619 3620 +3620 3621 +3621 3622 +3622 3623 +3623 3624 +3624 3625 +3625 3626 +3626 3627 +3627 3628 +3628 3629 +3629 3630 +3630 3631 +3631 3632 +3632 3633 +3633 3634 +3634 3635 +3635 3636 +3636 3637 +3637 3638 +3638 3639 +3639 3640 +3640 3641 +3641 3642 +3642 3643 +3643 3644 +3644 3645 +3645 3646 +3646 3647 +3647 3648 +3648 3649 +3649 3650 +3650 3651 +3651 3652 +3652 3653 +3653 3654 +3654 3655 +3655 3656 +3656 3657 +3657 3658 +3658 3659 +3659 3660 +3660 3661 +3661 3662 +3662 3663 +3663 3664 +3664 3665 +3665 3666 +3666 3667 +3667 3668 +3668 3669 +3669 3670 +3670 3671 +3671 3672 +3672 3673 +3673 3674 +3674 3675 +3675 3676 +3676 3677 +3677 3678 +3678 3679 +3679 3680 +3680 3681 +3681 3682 +3682 3683 +3683 3684 +3684 3685 +3685 3686 +3686 3687 +3687 3688 +3688 3689 +3689 3690 +3690 3691 +3691 3692 +3692 3693 +3693 3694 +3694 3695 +3695 3696 +3696 3697 +3697 3698 +3698 3699 +3699 3700 +3700 3701 +3701 3702 +3702 3703 +3703 3704 +3704 3705 +3705 3706 +3706 3707 +3707 3708 +3708 3709 +3709 3710 +3710 3711 +3711 3712 +3712 3713 +3713 3714 +3714 3715 +3715 3716 +3716 3717 +3717 3718 +3718 3719 +3719 3720 +3720 3721 +3721 3722 +3722 3723 +3723 3724 +3724 3725 +3725 3726 +3726 3727 +3727 3728 +3728 3729 +3729 3730 +3730 3731 +3731 3732 +3732 3733 +3733 3734 +3734 3735 +3735 3736 +3736 3737 +3737 3738 +3738 3739 +3739 3740 +3740 3741 +3741 3742 +3742 3743 +3743 3744 +3744 3745 +3745 3746 +3746 3747 +3747 3748 +3748 3749 +3749 3750 +3750 3751 +3751 3752 +3752 3753 +3753 3754 +3754 3755 +3755 3756 +3756 3757 +3757 3758 +3758 3759 +3759 3760 +3760 3761 +3761 3762 +3762 3763 +3763 3764 +3764 3765 +3765 3766 +3766 3767 +3767 3768 +3768 3769 +3769 3770 +3770 3771 +3771 3772 +3772 3773 +3773 3774 +3774 3775 +3775 3776 +3776 3777 +3777 3778 +3778 3779 +3779 3780 +3780 3781 +3781 3782 +3782 3783 +3783 3784 +3784 3785 +3785 3786 +3786 3787 +3787 3788 +3788 3789 +3789 3790 +3790 3791 +3791 3792 +3792 3793 +3793 3794 +3794 3795 +3795 3796 +3796 3797 +3797 3798 +3798 3799 +3799 3800 +3800 3801 +3801 3802 +3802 3803 +3803 3804 +3804 3805 +3805 3806 +3806 3807 +3807 3808 +3808 3809 +3809 3810 +3810 3811 +3811 3812 +3812 3813 +3813 3814 +3814 3815 +3815 3816 +3816 3817 +3817 3818 +3818 3819 +3819 3820 +3820 3821 +3821 3822 +3822 3823 +3823 3824 +3824 3825 +3825 3826 +3826 3827 +3827 3828 +3828 3829 +3829 3830 +3830 3831 +3831 3832 +3832 3833 +3833 3834 +3834 3835 +3835 3836 +3836 3837 +3837 3838 +3838 3839 +3839 3840 +3840 3841 +3841 3842 +3842 3843 +3843 3844 +3844 3845 +3845 3846 +3846 3847 +3847 3848 +3848 3849 +3849 3850 +3850 3851 +3851 3852 +3852 3853 +3853 3854 +3854 3855 +3855 3856 +3856 3857 +3857 3858 +3858 3859 +3859 3860 +3860 3861 +3861 3862 +3862 3863 +3863 3864 +3864 3865 +3865 3866 +3866 3867 +3867 3868 +3868 3869 +3869 3870 +3870 3871 +3871 3872 +3872 3873 +3873 3874 +3874 3875 +3875 3876 +3876 3877 +3877 3878 +3878 3879 +3879 3880 +3880 3881 +3881 3882 +3882 3883 +3883 3884 +3884 3885 +3885 3886 +3886 3887 +3887 3888 +3888 3889 +3889 3890 +3890 3891 +3891 3892 +3892 3893 +3893 3894 +3894 3895 +3895 3896 +3896 3897 +3897 3898 +3898 3899 +3899 3900 +3900 3901 +3901 3902 +3902 3903 +3903 3904 +3904 3905 +3905 3906 +3906 3907 +3907 3908 +3908 3909 +3909 3910 +3910 3911 +3911 3912 +3912 3913 +3913 3914 +3914 3915 +3915 3916 +3916 3917 +3917 3918 +3918 3919 +3919 3920 +3920 3921 +3921 3922 +3922 3923 +3923 3924 +3924 3925 +3925 3926 +3926 3927 +3927 3928 +3928 3929 +3929 3930 +3930 3931 +3931 3932 +3932 3933 +3933 3934 +3934 3935 +3935 3936 +3936 3937 +3937 3938 +3938 3939 +3939 3940 +3940 3941 +3941 3942 +3942 3943 +3943 3944 +3944 3945 +3945 3946 +3946 3947 +3947 3948 +3948 3949 +3949 3950 +3950 3951 +3951 3952 +3952 3953 +3953 3954 +3954 3955 +3955 3956 +3956 3957 +3957 3958 +3958 3959 +3959 3960 +3960 3961 +3961 3962 +3962 3963 +3963 3964 +3964 3965 +3965 3966 +3966 3967 +3967 3968 +3968 3969 +3969 3970 +3970 3971 +3971 3972 +3972 3973 +3973 3974 +3974 3975 +3975 3976 +3976 3977 +3977 3978 +3978 3979 +3979 3980 +3980 3981 +3981 3982 +3982 3983 +3983 3984 +3984 3985 +3985 3986 +3986 3987 +3987 3988 +3988 3989 +3989 3990 +3990 3991 +3991 3992 +3992 3993 +3993 3994 +3994 3995 +3995 3996 +3996 3997 +3997 3998 +3998 3999 +3999 4000 +4000 4001 +4001 4002 +4002 4003 +4003 4004 +4004 4005 +4005 4006 +4006 4007 +4007 4008 +4008 4009 +4009 4010 +4010 4011 +4011 4012 +4012 4013 +4013 4014 +4014 4015 +4015 4016 +4016 4017 +4017 4018 +4018 4019 +4019 4020 +4020 4021 +4021 4022 +4022 4023 +4023 4024 +4024 4025 +4025 4026 +4026 4027 +4027 4028 +4028 4029 +4029 4030 +4030 4031 +4031 4032 +4032 4033 +4033 4034 +4034 4035 +4035 4036 +4036 4037 +4037 4038 +4038 4039 +4039 4040 +4040 4041 +4041 4042 +4042 4043 +4043 4044 +4044 4045 +4045 4046 +4046 4047 +4047 4048 +4048 4049 +4049 4050 +4050 4051 +4051 4052 +4052 4053 +4053 4054 +4054 4055 +4055 4056 +4056 4057 +4057 4058 +4058 4059 +4059 4060 +4060 4061 +4061 4062 +4062 4063 +4063 4064 +4064 4065 +4065 4066 +4066 4067 +4067 4068 +4068 4069 +4069 4070 +4070 4071 +4071 4072 +4072 4073 +4073 4074 +4074 4075 +4075 4076 +4076 4077 +4077 4078 +4078 4079 +4079 4080 +4080 4081 +4081 4082 +4082 4083 +4083 4084 +4084 4085 +4085 4086 +4086 4087 +4087 4088 +4088 4089 +4089 4090 +4090 4091 +4091 4092 +4092 4093 +4093 4094 +4094 4095 +4095 4096 +4096 4097 +4097 4098 +4098 4099 +4099 4100 +4100 4101 +4101 4102 +4102 4103 +4103 4104 +4104 4105 +4105 4106 +4106 4107 +4107 4108 +4108 4109 +4109 4110 +4110 4111 +4111 4112 +4112 4113 +4113 4114 +4114 4115 +4115 4116 +4116 4117 +4117 4118 +4118 4119 +4119 4120 +4120 4121 +4121 4122 +4122 4123 +4123 4124 +4124 4125 +4125 4126 +4126 4127 +4127 4128 +4128 4129 +4129 4130 +4130 4131 +4131 4132 +4132 4133 +4133 4134 +4134 4135 +4135 4136 +4136 4137 +4137 4138 +4138 4139 +4139 4140 +4140 4141 +4141 4142 +4142 4143 +4143 4144 +4144 4145 +4145 4146 +4146 4147 +4147 4148 +4148 4149 +4149 4150 +4150 4151 +4151 4152 +4152 4153 +4153 4154 +4154 4155 +4155 4156 +4156 4157 +4157 4158 +4158 4159 +4159 4160 +4160 4161 +4161 4162 +4162 4163 +4163 4164 +4164 4165 +4165 4166 +4166 4167 +4167 4168 +4168 4169 +4169 4170 +4170 4171 +4171 4172 +4172 4173 +4173 4174 +4174 4175 +4175 4176 +4176 4177 +4177 4178 +4178 4179 +4179 4180 +4180 4181 +4181 4182 +4182 4183 +4183 4184 +4184 4185 +4185 4186 +4186 4187 +4187 4188 +4188 4189 +4189 4190 +4190 4191 +4191 4192 +4192 4193 +4193 4194 +4194 4195 +4195 4196 +4196 4197 +4197 4198 +4198 4199 +4199 4200 +4200 4201 +4201 4202 +4202 4203 +4203 4204 +4204 4205 +4205 4206 +4206 4207 +4207 4208 +4208 4209 +4209 4210 +4210 4211 +4211 4212 +4212 4213 +4213 4214 +4214 4215 +4215 4216 +4216 4217 +4217 4218 +4218 4219 +4219 4220 +4220 4221 +4221 4222 +4222 4223 +4223 4224 +4224 4225 +4225 4226 +4226 4227 +4227 4228 +4228 4229 +4229 4230 +4230 4231 +4231 4232 +4232 4233 +4233 4234 +4234 4235 +4235 4236 +4236 4237 +4237 4238 +4238 4239 +4239 4240 +4240 4241 +4241 4242 +4242 4243 +4243 4244 +4244 4245 +4245 4246 +4246 4247 +4247 4248 +4248 4249 +4249 4250 +4250 4251 +4251 4252 +4252 4253 +4253 4254 +4254 4255 +4255 4256 +4256 4257 +4257 4258 +4258 4259 +4259 4260 +4260 4261 +4261 4262 +4262 4263 +4263 4264 +4264 4265 +4265 4266 +4266 4267 +4267 4268 +4268 4269 +4269 4270 +4270 4271 +4271 4272 +4272 4273 +4273 4274 +4274 4275 +4275 4276 +4276 4277 +4277 4278 +4278 4279 +4279 4280 +4280 4281 +4281 4282 +4282 4283 +4283 4284 +4284 4285 +4285 4286 +4286 4287 +4287 4288 +4288 4289 +4289 4290 +4290 4291 +4291 4292 +4292 4293 +4293 4294 +4294 4295 +4295 4296 +4296 4297 +4297 4298 +4298 4299 +4299 4300 +4300 4301 +4301 4302 +4302 4303 +4303 4304 +4304 4305 +4305 4306 +4306 4307 +4307 4308 +4308 4309 +4309 4310 +4310 4311 +4311 4312 +4312 4313 +4313 4314 +4314 4315 +4315 4316 +4316 4317 +4317 4318 +4318 4319 +4319 4320 +4320 4321 +4321 4322 +4322 4323 +4323 4324 +4324 4325 +4325 4326 +4326 4327 +4327 4328 +4328 4329 +4329 4330 +4330 4331 +4331 4332 +4332 4333 +4333 4334 +4334 4335 +4335 4336 +4336 4337 +4337 4338 +4338 4339 +4339 4340 +4340 4341 +4341 4342 +4342 4343 +4343 4344 +4344 4345 +4345 4346 +4346 4347 +4347 4348 +4348 4349 +4349 4350 +4350 4351 +4351 4352 +4352 4353 +4353 4354 +4354 4355 +4355 4356 +4356 4357 +4357 4358 +4358 4359 +4359 4360 +4360 4361 +4361 4362 +4362 4363 +4363 4364 +4364 4365 +4365 4366 +4366 4367 +4367 4368 +4368 4369 +4369 4370 +4370 4371 +4371 4372 +4372 4373 +4373 4374 +4374 4375 +4375 4376 +4376 4377 +4377 4378 +4378 4379 +4379 4380 +4380 4381 +4381 4382 +4382 4383 +4383 4384 +4384 4385 +4385 4386 +4386 4387 +4387 4388 +4388 4389 +4389 4390 +4390 4391 +4391 4392 +4392 4393 +4393 4394 +4394 4395 +4395 4396 +4396 4397 +4397 4398 +4398 4399 +4399 4400 +4400 4401 +4401 4402 +4402 4403 +4403 4404 +4404 4405 +4405 4406 +4406 4407 +4407 4408 +4408 4409 +4409 4410 +4410 4411 +4411 4412 +4412 4413 +4413 4414 +4414 4415 +4415 4416 +4416 4417 +4417 4418 +4418 4419 +4419 4420 +4420 4421 +4421 4422 +4422 4423 +4423 4424 +4424 4425 +4425 4426 +4426 4427 +4427 4428 +4428 4429 +4429 4430 +4430 4431 +4431 4432 +4432 4433 +4433 4434 +4434 4435 +4435 4436 +4436 4437 +4437 4438 +4438 4439 +4439 4440 +4440 4441 +4441 4442 +4442 4443 +4443 4444 +4444 4445 +4445 4446 +4446 4447 +4447 4448 +4448 4449 +4449 4450 +4450 4451 +4451 4452 +4452 4453 +4453 4454 +4454 4455 +4455 4456 +4456 4457 +4457 4458 +4458 4459 +4459 4460 +4460 4461 +4461 4462 +4462 4463 +4463 4464 +4464 4465 +4465 4466 +4466 4467 +4467 4468 +4468 4469 +4469 4470 +4470 4471 +4471 4472 +4472 4473 +4473 4474 +4474 4475 +4475 4476 +4476 4477 +4477 4478 +4478 4479 +4479 4480 +4480 4481 +4481 4482 +4482 4483 +4483 4484 +4484 4485 +4485 4486 +4486 4487 +4487 4488 +4488 4489 +4489 4490 +4490 4491 +4491 4492 +4492 4493 +4493 4494 +4494 4495 +4495 4496 +4496 4497 +4497 4498 +4498 4499 +4499 4500 +4500 4501 +4501 4502 +4502 4503 +4503 4504 +4504 4505 +4505 4506 +4506 4507 +4507 4508 +4508 4509 +4509 4510 +4510 4511 +4511 4512 +4512 4513 +4513 4514 +4514 4515 +4515 4516 +4516 4517 +4517 4518 +4518 4519 +4519 4520 +4520 4521 +4521 4522 +4522 4523 +4523 4524 +4524 4525 +4525 4526 +4526 4527 +4527 4528 +4528 4529 +4529 4530 +4530 4531 +4531 4532 +4532 4533 +4533 4534 +4534 4535 +4535 4536 +4536 4537 +4537 4538 +4538 4539 +4539 4540 +4540 4541 +4541 4542 +4542 4543 +4543 4544 +4544 4545 +4545 4546 +4546 4547 +4547 4548 +4548 4549 +4549 4550 +4550 4551 +4551 4552 +4552 4553 +4553 4554 +4554 4555 +4555 4556 +4556 4557 +4557 4558 +4558 4559 +4559 4560 +4560 4561 +4561 4562 +4562 4563 +4563 4564 +4564 4565 +4565 4566 +4566 4567 +4567 4568 +4568 4569 +4569 4570 +4570 4571 +4571 4572 +4572 4573 +4573 4574 +4574 4575 +4575 4576 +4576 4577 +4577 4578 +4578 4579 +4579 4580 +4580 4581 +4581 4582 +4582 4583 +4583 4584 +4584 4585 +4585 4586 +4586 4587 +4587 4588 +4588 4589 +4589 4590 +4590 4591 +4591 4592 +4592 4593 +4593 4594 +4594 4595 +4595 4596 +4596 4597 +4597 4598 +4598 4599 +4599 4600 +4600 4601 +4601 4602 +4602 4603 +4603 4604 +4604 4605 +4605 4606 +4606 4607 +4607 4608 +4608 4609 +4609 4610 +4610 4611 +4611 4612 +4612 4613 +4613 4614 +4614 4615 +4615 4616 +4616 4617 +4617 4618 +4618 4619 +4619 4620 +4620 4621 +4621 4622 +4622 4623 +4623 4624 +4624 4625 +4625 4626 +4626 4627 +4627 4628 +4628 4629 +4629 4630 +4630 4631 +4631 4632 +4632 4633 +4633 4634 +4634 4635 +4635 4636 +4636 4637 +4637 4638 +4638 4639 +4639 4640 +4640 4641 +4641 4642 +4642 4643 +4643 4644 +4644 4645 +4645 4646 +4646 4647 +4647 4648 +4648 4649 +4649 4650 +4650 4651 +4651 4652 +4652 4653 +4653 4654 +4654 4655 +4655 4656 +4656 4657 +4657 4658 +4658 4659 +4659 4660 +4660 4661 +4661 4662 +4662 4663 +4663 4664 +4664 4665 +4665 4666 +4666 4667 +4667 4668 +4668 4669 +4669 4670 +4670 4671 +4671 4672 +4672 4673 +4673 4674 +4674 4675 +4675 4676 +4676 4677 +4677 4678 +4678 4679 +4679 4680 +4680 4681 +4681 4682 +4682 4683 +4683 4684 +4684 4685 +4685 4686 +4686 4687 +4687 4688 +4688 4689 +4689 4690 +4690 4691 +4691 4692 +4692 4693 +4693 4694 +4694 4695 +4695 4696 +4696 4697 +4697 4698 +4698 4699 +4699 4700 +4700 4701 +4701 4702 +4702 4703 +4703 4704 +4704 4705 +4705 4706 +4706 4707 +4707 4708 +4708 4709 +4709 4710 +4710 4711 +4711 4712 +4712 4713 +4713 4714 +4714 4715 +4715 4716 +4716 4717 +4717 4718 +4718 4719 +4719 4720 +4720 4721 +4721 4722 +4722 4723 +4723 4724 +4724 4725 +4725 4726 +4726 4727 +4727 4728 +4728 4729 +4729 4730 +4730 4731 +4731 4732 +4732 4733 +4733 4734 +4734 4735 +4735 4736 +4736 4737 +4737 4738 +4738 4739 +4739 4740 +4740 4741 +4741 4742 +4742 4743 +4743 4744 +4744 4745 +4745 4746 +4746 4747 +4747 4748 +4748 4749 +4749 4750 +4750 4751 +4751 4752 +4752 4753 +4753 4754 +4754 4755 +4755 4756 +4756 4757 +4757 4758 +4758 4759 +4759 4760 +4760 4761 +4761 4762 +4762 4763 +4763 4764 +4764 4765 +4765 4766 +4766 4767 +4767 4768 +4768 4769 +4769 4770 +4770 4771 +4771 4772 +4772 4773 +4773 4774 +4774 4775 +4775 4776 +4776 4777 +4777 4778 +4778 4779 +4779 4780 +4780 4781 +4781 4782 +4782 4783 +4783 4784 +4784 4785 +4785 4786 +4786 4787 +4787 4788 +4788 4789 +4789 4790 +4790 4791 +4791 4792 +4792 4793 +4793 4794 +4794 4795 +4795 4796 +4796 4797 +4797 4798 +4798 4799 +4799 4800 +4800 4801 +4801 4802 +4802 4803 +4803 4804 +4804 4805 +4805 4806 +4806 4807 +4807 4808 +4808 4809 +4809 4810 +4810 4811 +4811 4812 +4812 4813 +4813 4814 +4814 4815 +4815 4816 +4816 4817 +4817 4818 +4818 4819 +4819 4820 +4820 4821 +4821 4822 +4822 4823 +4823 4824 +4824 4825 +4825 4826 +4826 4827 +4827 4828 +4828 4829 +4829 4830 +4830 4831 +4831 4832 +4832 4833 +4833 4834 +4834 4835 +4835 4836 +4836 4837 +4837 4838 +4838 4839 +4839 4840 +4840 4841 +4841 4842 +4842 4843 +4843 4844 +4844 4845 +4845 4846 +4846 4847 +4847 4848 +4848 4849 +4849 4850 +4850 4851 +4851 4852 +4852 4853 +4853 4854 +4854 4855 +4855 4856 +4856 4857 +4857 4858 +4858 4859 +4859 4860 +4860 4861 +4861 4862 +4862 4863 +4863 4864 +4864 4865 +4865 4866 +4866 4867 +4867 4868 +4868 4869 +4869 4870 +4870 4871 +4871 4872 +4872 4873 +4873 4874 +4874 4875 +4875 4876 +4876 4877 +4877 4878 +4878 4879 +4879 4880 +4880 4881 +4881 4882 +4882 4883 +4883 4884 +4884 4885 +4885 4886 +4886 4887 +4887 4888 +4888 4889 +4889 4890 +4890 4891 +4891 4892 +4892 4893 +4893 4894 +4894 4895 +4895 4896 +4896 4897 +4897 4898 +4898 4899 +4899 4900 +4900 4901 +4901 4902 +4902 4903 +4903 4904 +4904 4905 +4905 4906 +4906 4907 +4907 4908 +4908 4909 +4909 4910 +4910 4911 +4911 4912 +4912 4913 +4913 4914 +4914 4915 +4915 4916 +4916 4917 +4917 4918 +4918 4919 +4919 4920 +4920 4921 +4921 4922 +4922 4923 +4923 4924 +4924 4925 +4925 4926 +4926 4927 +4927 4928 +4928 4929 +4929 4930 +4930 4931 +4931 4932 +4932 4933 +4933 4934 +4934 4935 +4935 4936 +4936 4937 +4937 4938 +4938 4939 +4939 4940 +4940 4941 +4941 4942 +4942 4943 +4943 4944 +4944 4945 +4945 4946 +4946 4947 +4947 4948 +4948 4949 +4949 4950 +4950 4951 +4951 4952 +4952 4953 +4953 4954 +4954 4955 +4955 4956 +4956 4957 +4957 4958 +4958 4959 +4959 4960 +4960 4961 +4961 4962 +4962 4963 +4963 4964 +4964 4965 +4965 4966 +4966 4967 +4967 4968 +4968 4969 +4969 4970 +4970 4971 +4971 4972 +4972 4973 +4973 4974 +4974 4975 +4975 4976 +4976 4977 +4977 4978 +4978 4979 +4979 4980 +4980 4981 +4981 4982 +4982 4983 +4983 4984 +4984 4985 +4985 4986 +4986 4987 +4987 4988 +4988 4989 +4989 4990 +4990 4991 +4991 4992 +4992 4993 +4993 4994 +4994 4995 +4995 4996 +4996 4997 +4997 4998 +4998 4999 +4999 5000 +5000 5001 +5001 5002 +5002 5003 +5003 5004 +5004 5005 +5005 5006 +5006 5007 +5007 5008 +5008 5009 +5009 5010 +5010 5011 +5011 5012 +5012 5013 +5013 5014 +5014 5015 +5015 5016 +5016 5017 +5017 5018 +5018 5019 +5019 5020 +5020 5021 +5021 5022 +5022 5023 +5023 5024 +5024 5025 +5025 5026 +5026 5027 +5027 5028 +5028 5029 +5029 5030 +5030 5031 +5031 5032 +5032 5033 +5033 5034 +5034 5035 +5035 5036 +5036 5037 +5037 5038 +5038 5039 +5039 5040 +5040 5041 +5041 5042 +5042 5043 +5043 5044 +5044 5045 +5045 5046 +5046 5047 +5047 5048 +5048 5049 +5049 5050 +5050 5051 +5051 5052 +5052 5053 +5053 5054 +5054 5055 +5055 5056 +5056 5057 +5057 5058 +5058 5059 +5059 5060 +5060 5061 +5061 5062 +5062 5063 +5063 5064 +5064 5065 +5065 5066 +5066 5067 +5067 5068 +5068 5069 +5069 5070 +5070 5071 +5071 5072 +5072 5073 +5073 5074 +5074 5075 +5075 5076 +5076 5077 +5077 5078 +5078 5079 +5079 5080 +5080 5081 +5081 5082 +5082 5083 +5083 5084 +5084 5085 +5085 5086 +5086 5087 +5087 5088 +5088 5089 +5089 5090 +5090 5091 +5091 5092 +5092 5093 +5093 5094 +5094 5095 +5095 5096 +5096 5097 +5097 5098 +5098 5099 +5099 5100 +5100 5101 +5101 5102 +5102 5103 +5103 5104 +5104 5105 +5105 5106 +5106 5107 +5107 5108 +5108 5109 +5109 5110 +5110 5111 +5111 5112 +5112 5113 +5113 5114 +5114 5115 +5115 5116 +5116 5117 +5117 5118 +5118 5119 +5119 5120 +5120 5121 +5121 5122 +5122 5123 +5123 5124 +5124 5125 +5125 5126 +5126 5127 +5127 5128 +5128 5129 +5129 5130 +5130 5131 +5131 5132 +5132 5133 +5133 5134 +5134 5135 +5135 5136 +5136 5137 +5137 5138 +5138 5139 +5139 5140 +5140 5141 +5141 5142 +5142 5143 +5143 5144 +5144 5145 +5145 5146 +5146 5147 +5147 5148 +5148 5149 +5149 5150 +5150 5151 +5151 5152 +5152 5153 +5153 5154 +5154 5155 +5155 5156 +5156 5157 +5157 5158 +5158 5159 +5159 5160 +5160 5161 +5161 5162 +5162 5163 +5163 5164 +5164 5165 +5165 5166 +5166 5167 +5167 5168 +5168 5169 +5169 5170 +5170 5171 +5171 5172 +5172 5173 +5173 5174 +5174 5175 +5175 5176 +5176 5177 +5177 5178 +5178 5179 +5179 5180 +5180 5181 +5181 5182 +5182 5183 +5183 5184 +5184 5185 +5185 5186 +5186 5187 +5187 5188 +5188 5189 +5189 5190 +5190 5191 +5191 5192 +5192 5193 +5193 5194 +5194 5195 +5195 5196 +5196 5197 +5197 5198 +5198 5199 +5199 5200 +5200 5201 +5201 5202 +5202 5203 +5203 5204 +5204 5205 +5205 5206 +5206 5207 +5207 5208 +5208 5209 +5209 5210 +5210 5211 +5211 5212 +5212 5213 +5213 5214 +5214 5215 +5215 5216 +5216 5217 +5217 5218 +5218 5219 +5219 5220 +5220 5221 +5221 5222 +5222 5223 +5223 5224 +5224 5225 +5225 5226 +5226 5227 +5227 5228 +5228 5229 +5229 5230 +5230 5231 +5231 5232 +5232 5233 +5233 5234 +5234 5235 +5235 5236 +5236 5237 +5237 5238 +5238 5239 +5239 5240 +5240 5241 +5241 5242 +5242 5243 +5243 5244 +5244 5245 +5245 5246 +5246 5247 +5247 5248 +5248 5249 +5249 5250 +5250 5251 +5251 5252 +5252 5253 +5253 5254 +5254 5255 +5255 5256 +5256 5257 +5257 5258 +5258 5259 +5259 5260 +5260 5261 +5261 5262 +5262 5263 +5263 5264 +5264 5265 +5265 5266 +5266 5267 +5267 5268 +5268 5269 +5269 5270 +5270 5271 +5271 5272 +5272 5273 +5273 5274 +5274 5275 +5275 5276 +5276 5277 +5277 5278 +5278 5279 +5279 5280 +5280 5281 +5281 5282 +5282 5283 +5283 5284 +5284 5285 +5285 5286 +5286 5287 +5287 5288 +5288 5289 +5289 5290 +5290 5291 +5291 5292 +5292 5293 +5293 5294 +5294 5295 +5295 5296 +5296 5297 +5297 5298 +5298 5299 +5299 5300 +5300 5301 +5301 5302 +5302 5303 +5303 5304 +5304 5305 +5305 5306 +5306 5307 +5307 5308 +5308 5309 +5309 5310 +5310 5311 +5311 5312 +5312 5313 +5313 5314 +5314 5315 +5315 5316 +5316 5317 +5317 5318 +5318 5319 +5319 5320 +5320 5321 +5321 5322 +5322 5323 +5323 5324 +5324 5325 +5325 5326 +5326 5327 +5327 5328 +5328 5329 +5329 5330 +5330 5331 +5331 5332 +5332 5333 +5333 5334 +5334 5335 +5335 5336 +5336 5337 +5337 5338 +5338 5339 +5339 5340 +5340 5341 +5341 5342 +5342 5343 +5343 5344 +5344 5345 +5345 5346 +5346 5347 +5347 5348 +5348 5349 +5349 5350 +5350 5351 +5351 5352 +5352 5353 +5353 5354 +5354 5355 +5355 5356 +5356 5357 +5357 5358 +5358 5359 +5359 5360 +5360 5361 +5361 5362 +5362 5363 +5363 5364 +5364 5365 +5365 5366 +5366 5367 +5367 5368 +5368 5369 +5369 5370 +5370 5371 +5371 5372 +5372 5373 +5373 5374 +5374 5375 +5375 5376 +5376 5377 +5377 5378 +5378 5379 +5379 5380 +5380 5381 +5381 5382 +5382 5383 +5383 5384 +5384 5385 +5385 5386 +5386 5387 +5387 5388 +5388 5389 +5389 5390 +5390 5391 +5391 5392 +5392 5393 +5393 5394 +5394 5395 +5395 5396 +5396 5397 +5397 5398 +5398 5399 +5399 5400 +5400 5401 +5401 5402 +5402 5403 +5403 5404 +5404 5405 +5405 5406 +5406 5407 +5407 5408 +5408 5409 +5409 5410 +5410 5411 +5411 5412 +5412 5413 +5413 5414 +5414 5415 +5415 5416 +5416 5417 +5417 5418 +5418 5419 +5419 5420 +5420 5421 +5421 5422 +5422 5423 +5423 5424 +5424 5425 +5425 5426 +5426 5427 +5427 5428 +5428 5429 +5429 5430 +5430 5431 +5431 5432 +5432 5433 +5433 5434 +5434 5435 +5435 5436 +5436 5437 +5437 5438 +5438 5439 +5439 5440 +5440 5441 +5441 5442 +5442 5443 +5443 5444 +5444 5445 +5445 5446 +5446 5447 +5447 5448 +5448 5449 +5449 5450 +5450 5451 +5451 5452 +5452 5453 +5453 5454 +5454 5455 +5455 5456 +5456 5457 +5457 5458 +5458 5459 +5459 5460 +5460 5461 +5461 5462 +5462 5463 +5463 5464 +5464 5465 +5465 5466 +5466 5467 +5467 5468 +5468 5469 +5469 5470 +5470 5471 +5471 5472 +5472 5473 +5473 5474 +5474 5475 +5475 5476 +5476 5477 +5477 5478 +5478 5479 +5479 5480 +5480 5481 +5481 5482 +5482 5483 +5483 5484 +5484 5485 +5485 5486 +5486 5487 +5487 5488 +5488 5489 +5489 5490 +5490 5491 +5491 5492 +5492 5493 +5493 5494 +5494 5495 +5495 5496 +5496 5497 +5497 5498 +5498 5499 +5499 5500 +5500 5501 +5501 5502 +5502 5503 +5503 5504 +5504 5505 +5505 5506 +5506 5507 +5507 5508 +5508 5509 +5509 5510 +5510 5511 +5511 5512 +5512 5513 +5513 5514 +5514 5515 +5515 5516 +5516 5517 +5517 5518 +5518 5519 +5519 5520 +5520 5521 +5521 5522 +5522 5523 +5523 5524 +5524 5525 +5525 5526 +5526 5527 +5527 5528 +5528 5529 +5529 5530 +5530 5531 +5531 5532 +5532 5533 +5533 5534 +5534 5535 +5535 5536 +5536 5537 +5537 5538 +5538 5539 +5539 5540 +5540 5541 +5541 5542 +5542 5543 +5543 5544 +5544 5545 +5545 5546 +5546 5547 +5547 5548 +5548 5549 +5549 5550 +5550 5551 +5551 5552 +5552 5553 +5553 5554 +5554 5555 +5555 5556 +5556 5557 +5557 5558 +5558 5559 +5559 5560 +5560 5561 +5561 5562 +5562 5563 +5563 5564 +5564 5565 +5565 5566 +5566 5567 +5567 5568 +5568 5569 +5569 5570 +5570 5571 +5571 5572 +5572 5573 +5573 5574 +5574 5575 +5575 5576 +5576 5577 +5577 5578 +5578 5579 +5579 5580 +5580 5581 +5581 5582 +5582 5583 +5583 5584 +5584 5585 +5585 5586 +5586 5587 +5587 5588 +5588 5589 +5589 5590 +5590 5591 +5591 5592 +5592 5593 +5593 5594 +5594 5595 +5595 5596 +5596 5597 +5597 5598 +5598 5599 +5599 5600 +5600 5601 +5601 5602 +5602 5603 +5603 5604 +5604 5605 +5605 5606 +5606 5607 +5607 5608 +5608 5609 +5609 5610 +5610 5611 +5611 5612 +5612 5613 +5613 5614 +5614 5615 +5615 5616 +5616 5617 +5617 5618 +5618 5619 +5619 5620 +5620 5621 +5621 5622 +5622 5623 +5623 5624 +5624 5625 +5625 5626 +5626 5627 +5627 5628 +5628 5629 +5629 5630 +5630 5631 +5631 5632 +5632 5633 +5633 5634 +5634 5635 +5635 5636 +5636 5637 +5637 5638 +5638 5639 +5639 5640 +5640 5641 +5641 5642 +5642 5643 +5643 5644 +5644 5645 +5645 5646 +5646 5647 +5647 5648 +5648 5649 +5649 5650 +5650 5651 +5651 5652 +5652 5653 +5653 5654 +5654 5655 +5655 5656 +5656 5657 +5657 5658 +5658 5659 +5659 5660 +5660 5661 +5661 5662 +5662 5663 +5663 5664 +5664 5665 +5665 5666 +5666 5667 +5667 5668 +5668 5669 +5669 5670 +5670 5671 +5671 5672 +5672 5673 +5673 5674 +5674 5675 +5675 5676 +5676 5677 +5677 5678 +5678 5679 +5679 5680 +5680 5681 +5681 5682 +5682 5683 +5683 5684 +5684 5685 +5685 5686 +5686 5687 +5687 5688 +5688 5689 +5689 5690 +5690 5691 +5691 5692 +5692 5693 +5693 5694 +5694 5695 +5695 5696 +5696 5697 +5697 5698 +5698 5699 +5699 5700 +5700 5701 +5701 5702 +5702 5703 +5703 5704 +5704 5705 +5705 5706 +5706 5707 +5707 5708 +5708 5709 +5709 5710 +5710 5711 +5711 5712 +5712 5713 +5713 5714 +5714 5715 +5715 5716 +5716 5717 +5717 5718 +5718 5719 +5719 5720 +5720 5721 +5721 5722 +5722 5723 +5723 5724 +5724 5725 +5725 5726 +5726 5727 +5727 5728 +5728 5729 +5729 5730 +5730 5731 +5731 5732 +5732 5733 +5733 5734 +5734 5735 +5735 5736 +5736 5737 +5737 5738 +5738 5739 +5739 5740 +5740 5741 +5741 5742 +5742 5743 +5743 5744 +5744 5745 +5745 5746 +5746 5747 +5747 5748 +5748 5749 +5749 5750 +5750 5751 +5751 5752 +5752 5753 +5753 5754 +5754 5755 +5755 5756 +5756 5757 +5757 5758 +5758 5759 +5759 5760 +5760 5761 +5761 5762 +5762 5763 +5763 5764 +5764 5765 +5765 5766 +5766 5767 +5767 5768 +5768 5769 +5769 5770 +5770 5771 +5771 5772 +5772 5773 +5773 5774 +5774 5775 +5775 5776 +5776 5777 +5777 5778 +5778 5779 +5779 5780 +5780 5781 +5781 5782 +5782 5783 +5783 5784 +5784 5785 +5785 5786 +5786 5787 +5787 5788 +5788 5789 +5789 5790 +5790 5791 +5791 5792 +5792 5793 +5793 5794 +5794 5795 +5795 5796 +5796 5797 +5797 5798 +5798 5799 +5799 5800 +5800 5801 +5801 5802 +5802 5803 +5803 5804 +5804 5805 +5805 5806 +5806 5807 +5807 5808 +5808 5809 +5809 5810 +5810 5811 +5811 5812 +5812 5813 +5813 5814 +5814 5815 +5815 5816 +5816 5817 +5817 5818 +5818 5819 +5819 5820 +5820 5821 +5821 5822 +5822 5823 +5823 5824 +5824 5825 +5825 5826 +5826 5827 +5827 5828 +5828 5829 +5829 5830 +5830 5831 +5831 5832 +5832 5833 +5833 5834 +5834 5835 +5835 5836 +5836 5837 +5837 5838 +5838 5839 +5839 5840 +5840 5841 +5841 5842 +5842 5843 +5843 5844 +5844 5845 +5845 5846 +5846 5847 +5847 5848 +5848 5849 +5849 5850 +5850 5851 +5851 5852 +5852 5853 +5853 5854 +5854 5855 +5855 5856 +5856 5857 +5857 5858 +5858 5859 +5859 5860 +5860 5861 +5861 5862 +5862 5863 +5863 5864 +5864 5865 +5865 5866 +5866 5867 +5867 5868 +5868 5869 +5869 5870 +5870 5871 +5871 5872 +5872 5873 +5873 5874 +5874 5875 +5875 5876 +5876 5877 +5877 5878 +5878 5879 +5879 5880 +5880 5881 +5881 5882 +5882 5883 +5883 5884 +5884 5885 +5885 5886 +5886 5887 +5887 5888 +5888 5889 +5889 5890 +5890 5891 +5891 5892 +5892 5893 +5893 5894 +5894 5895 +5895 5896 +5896 5897 +5897 5898 +5898 5899 +5899 5900 +5900 5901 +5901 5902 +5902 5903 +5903 5904 +5904 5905 +5905 5906 +5906 5907 +5907 5908 +5908 5909 +5909 5910 +5910 5911 +5911 5912 +5912 5913 +5913 5914 +5914 5915 +5915 5916 +5916 5917 +5917 5918 +5918 5919 +5919 5920 +5920 5921 +5921 5922 +5922 5923 +5923 5924 +5924 5925 +5925 5926 +5926 5927 +5927 5928 +5928 5929 +5929 5930 +5930 5931 +5931 5932 +5932 5933 +5933 5934 +5934 5935 +5935 5936 +5936 5937 +5937 5938 +5938 5939 +5939 5940 +5940 5941 +5941 5942 +5942 5943 +5943 5944 +5944 5945 +5945 5946 +5946 5947 +5947 5948 +5948 5949 +5949 5950 +5950 5951 +5951 5952 +5952 5953 +5953 5954 +5954 5955 +5955 5956 +5956 5957 +5957 5958 +5958 5959 +5959 5960 +5960 5961 +5961 5962 +5962 5963 +5963 5964 +5964 5965 +5965 5966 +5966 5967 +5967 5968 +5968 5969 +5969 5970 +5970 5971 +5971 5972 +5972 5973 +5973 5974 +5974 5975 +5975 5976 +5976 5977 +5977 5978 +5978 5979 +5979 5980 +5980 5981 +5981 5982 +5982 5983 +5983 5984 +5984 5985 +5985 5986 +5986 5987 +5987 5988 +5988 5989 +5989 5990 +5990 5991 +5991 5992 +5992 5993 +5993 5994 +5994 5995 +5995 5996 +5996 5997 +5997 5998 +5998 5999 +5999 6000 +6000 6001 +6001 6002 +6002 6003 +6003 6004 +6004 6005 +6005 6006 +6006 6007 +6007 6008 +6008 6009 +6009 6010 +6010 6011 +6011 6012 +6012 6013 +6013 6014 +6014 6015 +6015 6016 +6016 6017 +6017 6018 +6018 6019 +6019 6020 +6020 6021 +6021 6022 +6022 6023 +6023 6024 +6024 6025 +6025 6026 +6026 6027 +6027 6028 +6028 6029 +6029 6030 +6030 6031 +6031 6032 +6032 6033 +6033 6034 +6034 6035 +6035 6036 +6036 6037 +6037 6038 +6038 6039 +6039 6040 +6040 6041 +6041 6042 +6042 6043 +6043 6044 +6044 6045 +6045 6046 +6046 6047 +6047 6048 +6048 6049 +6049 6050 +6050 6051 +6051 6052 +6052 6053 +6053 6054 +6054 6055 +6055 6056 +6056 6057 +6057 6058 +6058 6059 +6059 6060 +6060 6061 +6061 6062 +6062 6063 +6063 6064 +6064 6065 +6065 6066 +6066 6067 +6067 6068 +6068 6069 +6069 6070 +6070 6071 +6071 6072 +6072 6073 +6073 6074 +6074 6075 +6075 6076 +6076 6077 +6077 6078 +6078 6079 +6079 6080 +6080 6081 +6081 6082 +6082 6083 +6083 6084 +6084 6085 +6085 6086 +6086 6087 +6087 6088 +6088 6089 +6089 6090 +6090 6091 +6091 6092 +6092 6093 +6093 6094 +6094 6095 +6095 6096 +6096 6097 +6097 6098 +6098 6099 +6099 6100 +6100 6101 +6101 6102 +6102 6103 +6103 6104 +6104 6105 +6105 6106 +6106 6107 +6107 6108 +6108 6109 +6109 6110 +6110 6111 +6111 6112 +6112 6113 +6113 6114 +6114 6115 +6115 6116 +6116 6117 +6117 6118 +6118 6119 +6119 6120 +6120 6121 +6121 6122 +6122 6123 +6123 6124 +6124 6125 +6125 6126 +6126 6127 +6127 6128 +6128 6129 +6129 6130 +6130 6131 +6131 6132 +6132 6133 +6133 6134 +6134 6135 +6135 6136 +6136 6137 +6137 6138 +6138 6139 +6139 6140 +6140 6141 +6141 6142 +6142 6143 +6143 6144 +6144 6145 +6145 6146 +6146 6147 +6147 6148 +6148 6149 +6149 6150 +6150 6151 +6151 6152 +6152 6153 +6153 6154 +6154 6155 +6155 6156 +6156 6157 +6157 6158 +6158 6159 +6159 6160 +6160 6161 +6161 6162 +6162 6163 +6163 6164 +6164 6165 +6165 6166 +6166 6167 +6167 6168 +6168 6169 +6169 6170 +6170 6171 +6171 6172 +6172 6173 +6173 6174 +6174 6175 +6175 6176 +6176 6177 +6177 6178 +6178 6179 +6179 6180 +6180 6181 +6181 6182 +6182 6183 +6183 6184 +6184 6185 +6185 6186 +6186 6187 +6187 6188 +6188 6189 +6189 6190 +6190 6191 +6191 6192 +6192 6193 +6193 6194 +6194 6195 +6195 6196 +6196 6197 +6197 6198 +6198 6199 +6199 6200 +6200 6201 +6201 6202 +6202 6203 +6203 6204 +6204 6205 +6205 6206 +6206 6207 +6207 6208 +6208 6209 +6209 6210 +6210 6211 +6211 6212 +6212 6213 +6213 6214 +6214 6215 +6215 6216 +6216 6217 +6217 6218 +6218 6219 +6219 6220 +6220 6221 +6221 6222 +6222 6223 +6223 6224 +6224 6225 +6225 6226 +6226 6227 +6227 6228 +6228 6229 +6229 6230 +6230 6231 +6231 6232 +6232 6233 +6233 6234 +6234 6235 +6235 6236 +6236 6237 +6237 6238 +6238 6239 +6239 6240 +6240 6241 +6241 6242 +6242 6243 +6243 6244 +6244 6245 +6245 6246 +6246 6247 +6247 6248 +6248 6249 +6249 6250 +6250 6251 +6251 6252 +6252 6253 +6253 6254 +6254 6255 +6255 6256 +6256 6257 +6257 6258 +6258 6259 +6259 6260 +6260 6261 +6261 6262 +6262 6263 +6263 6264 +6264 6265 +6265 6266 +6266 6267 +6267 6268 +6268 6269 +6269 6270 +6270 6271 +6271 6272 +6272 6273 +6273 6274 +6274 6275 +6275 6276 +6276 6277 +6277 6278 +6278 6279 +6279 6280 +6280 6281 +6281 6282 +6282 6283 +6283 6284 +6284 6285 +6285 6286 +6286 6287 +6287 6288 +6288 6289 +6289 6290 +6290 6291 +6291 6292 +6292 6293 +6293 6294 +6294 6295 +6295 6296 +6296 6297 +6297 6298 +6298 6299 +6299 6300 +6300 6301 +6301 6302 +6302 6303 +6303 6304 +6304 6305 +6305 6306 +6306 6307 +6307 6308 +6308 6309 +6309 6310 +6310 6311 +6311 6312 +6312 6313 +6313 6314 +6314 6315 +6315 6316 +6316 6317 +6317 6318 +6318 6319 +6319 6320 +6320 6321 +6321 6322 +6322 6323 +6323 6324 +6324 6325 +6325 6326 +6326 6327 +6327 6328 +6328 6329 +6329 6330 +6330 6331 +6331 6332 +6332 6333 +6333 6334 +6334 6335 +6335 6336 +6336 6337 +6337 6338 +6338 6339 +6339 6340 +6340 6341 +6341 6342 +6342 6343 +6343 6344 +6344 6345 +6345 6346 +6346 6347 +6347 6348 +6348 6349 +6349 6350 +6350 6351 +6351 6352 +6352 6353 +6353 6354 +6354 6355 +6355 6356 +6356 6357 +6357 6358 +6358 6359 +6359 6360 +6360 6361 +6361 6362 +6362 6363 +6363 6364 +6364 6365 +6365 6366 +6366 6367 +6367 6368 +6368 6369 +6369 6370 +6370 6371 +6371 6372 +6372 6373 +6373 6374 +6374 6375 +6375 6376 +6376 6377 +6377 6378 +6378 6379 +6379 6380 +6380 6381 +6381 6382 +6382 6383 +6383 6384 +6384 6385 +6385 6386 +6386 6387 +6387 6388 +6388 6389 +6389 6390 +6390 6391 +6391 6392 +6392 6393 +6393 6394 +6394 6395 +6395 6396 +6396 6397 +6397 6398 +6398 6399 +6399 6400 +6400 6401 +6401 6402 +6402 6403 +6403 6404 +6404 6405 +6405 6406 +6406 6407 +6407 6408 +6408 6409 +6409 6410 +6410 6411 +6411 6412 +6412 6413 +6413 6414 +6414 6415 +6415 6416 +6416 6417 +6417 6418 +6418 6419 +6419 6420 +6420 6421 +6421 6422 +6422 6423 +6423 6424 +6424 6425 +6425 6426 +6426 6427 +6427 6428 +6428 6429 +6429 6430 +6430 6431 +6431 6432 +6432 6433 +6433 6434 +6434 6435 +6435 6436 +6436 6437 +6437 6438 +6438 6439 +6439 6440 +6440 6441 +6441 6442 +6442 6443 +6443 6444 +6444 6445 +6445 6446 +6446 6447 +6447 6448 +6448 6449 +6449 6450 +6450 6451 +6451 6452 +6452 6453 +6453 6454 +6454 6455 +6455 6456 +6456 6457 +6457 6458 +6458 6459 +6459 6460 +6460 6461 +6461 6462 +6462 6463 +6463 6464 +6464 6465 +6465 6466 +6466 6467 +6467 6468 +6468 6469 +6469 6470 +6470 6471 +6471 6472 +6472 6473 +6473 6474 +6474 6475 +6475 6476 +6476 6477 +6477 6478 +6478 6479 +6479 6480 +6480 6481 +6481 6482 +6482 6483 +6483 6484 +6484 6485 +6485 6486 +6486 6487 +6487 6488 +6488 6489 +6489 6490 +6490 6491 +6491 6492 +6492 6493 +6493 6494 +6494 6495 +6495 6496 +6496 6497 +6497 6498 +6498 6499 +6499 6500 +6500 6501 +6501 6502 +6502 6503 +6503 6504 +6504 6505 +6505 6506 +6506 6507 +6507 6508 +6508 6509 +6509 6510 +6510 6511 +6511 6512 +6512 6513 +6513 6514 +6514 6515 +6515 6516 +6516 6517 +6517 6518 +6518 6519 +6519 6520 +6520 6521 +6521 6522 +6522 6523 +6523 6524 +6524 6525 +6525 6526 +6526 6527 +6527 6528 +6528 6529 +6529 6530 +6530 6531 +6531 6532 +6532 6533 +6533 6534 +6534 6535 +6535 6536 +6536 6537 +6537 6538 +6538 6539 +6539 6540 +6540 6541 +6541 6542 +6542 6543 +6543 6544 +6544 6545 +6545 6546 +6546 6547 +6547 6548 +6548 6549 +6549 6550 +6550 6551 +6551 6552 +6552 6553 +6553 6554 +6554 6555 +6555 6556 +6556 6557 +6557 6558 +6558 6559 +6559 6560 +6560 6561 +6561 6562 +6562 6563 +6563 6564 +6564 6565 +6565 6566 +6566 6567 +6567 6568 +6568 6569 +6569 6570 +6570 6571 +6571 6572 +6572 6573 +6573 6574 +6574 6575 +6575 6576 +6576 6577 +6577 6578 +6578 6579 +6579 6580 +6580 6581 +6581 6582 +6582 6583 +6583 6584 +6584 6585 +6585 6586 +6586 6587 +6587 6588 +6588 6589 +6589 6590 +6590 6591 +6591 6592 +6592 6593 +6593 6594 +6594 6595 +6595 6596 +6596 6597 +6597 6598 +6598 6599 +6599 6600 +6600 6601 +6601 6602 +6602 6603 +6603 6604 +6604 6605 +6605 6606 +6606 6607 +6607 6608 +6608 6609 +6609 6610 +6610 6611 +6611 6612 +6612 6613 +6613 6614 +6614 6615 +6615 6616 +6616 6617 +6617 6618 +6618 6619 +6619 6620 +6620 6621 +6621 6622 +6622 6623 +6623 6624 +6624 6625 +6625 6626 +6626 6627 +6627 6628 +6628 6629 +6629 6630 +6630 6631 +6631 6632 +6632 6633 +6633 6634 +6634 6635 +6635 6636 +6636 6637 +6637 6638 +6638 6639 +6639 6640 +6640 6641 +6641 6642 +6642 6643 +6643 6644 +6644 6645 +6645 6646 +6646 6647 +6647 6648 +6648 6649 +6649 6650 +6650 6651 +6651 6652 +6652 6653 +6653 6654 +6654 6655 +6655 6656 +6656 6657 +6657 6658 +6658 6659 +6659 6660 +6660 6661 +6661 6662 +6662 6663 +6663 6664 +6664 6665 +6665 6666 +6666 6667 +6667 6668 +6668 6669 +6669 6670 +6670 6671 +6671 6672 +6672 6673 +6673 6674 +6674 6675 +6675 6676 +6676 6677 +6677 6678 +6678 6679 +6679 6680 +6680 6681 +6681 6682 +6682 6683 +6683 6684 +6684 6685 +6685 6686 +6686 6687 +6687 6688 +6688 6689 +6689 6690 +6690 6691 +6691 6692 +6692 6693 +6693 6694 +6694 6695 +6695 6696 +6696 6697 +6697 6698 +6698 6699 +6699 6700 +6700 6701 +6701 6702 +6702 6703 +6703 6704 +6704 6705 +6705 6706 +6706 6707 +6707 6708 +6708 6709 +6709 6710 +6710 6711 +6711 6712 +6712 6713 +6713 6714 +6714 6715 +6715 6716 +6716 6717 +6717 6718 +6718 6719 +6719 6720 +6720 6721 +6721 6722 +6722 6723 +6723 6724 +6724 6725 +6725 6726 +6726 6727 +6727 6728 +6728 6729 +6729 6730 +6730 6731 +6731 6732 +6732 6733 +6733 6734 +6734 6735 +6735 6736 +6736 6737 +6737 6738 +6738 6739 +6739 6740 +6740 6741 +6741 6742 +6742 6743 +6743 6744 +6744 6745 +6745 6746 +6746 6747 +6747 6748 +6748 6749 +6749 6750 +6750 6751 +6751 6752 +6752 6753 +6753 6754 +6754 6755 +6755 6756 +6756 6757 +6757 6758 +6758 6759 +6759 6760 +6760 6761 +6761 6762 +6762 6763 +6763 6764 +6764 6765 +6765 6766 +6766 6767 +6767 6768 +6768 6769 +6769 6770 +6770 6771 +6771 6772 +6772 6773 +6773 6774 +6774 6775 +6775 6776 +6776 6777 +6777 6778 +6778 6779 +6779 6780 +6780 6781 +6781 6782 +6782 6783 +6783 6784 +6784 6785 +6785 6786 +6786 6787 +6787 6788 +6788 6789 +6789 6790 +6790 6791 +6791 6792 +6792 6793 +6793 6794 +6794 6795 +6795 6796 +6796 6797 +6797 6798 +6798 6799 +6799 6800 +6800 6801 +6801 6802 +6802 6803 +6803 6804 +6804 6805 +6805 6806 +6806 6807 +6807 6808 +6808 6809 +6809 6810 +6810 6811 +6811 6812 +6812 6813 +6813 6814 +6814 6815 +6815 6816 +6816 6817 +6817 6818 +6818 6819 +6819 6820 +6820 6821 +6821 6822 +6822 6823 +6823 6824 +6824 6825 +6825 6826 +6826 6827 +6827 6828 +6828 6829 +6829 6830 +6830 6831 +6831 6832 +6832 6833 +6833 6834 +6834 6835 +6835 6836 +6836 6837 +6837 6838 +6838 6839 +6839 6840 +6840 6841 +6841 6842 +6842 6843 +6843 6844 +6844 6845 +6845 6846 +6846 6847 +6847 6848 +6848 6849 +6849 6850 +6850 6851 +6851 6852 +6852 6853 +6853 6854 +6854 6855 +6855 6856 +6856 6857 +6857 6858 +6858 6859 +6859 6860 +6860 6861 +6861 6862 +6862 6863 +6863 6864 +6864 6865 +6865 6866 +6866 6867 +6867 6868 +6868 6869 +6869 6870 +6870 6871 +6871 6872 +6872 6873 +6873 6874 +6874 6875 +6875 6876 +6876 6877 +6877 6878 +6878 6879 +6879 6880 +6880 6881 +6881 6882 +6882 6883 +6883 6884 +6884 6885 +6885 6886 +6886 6887 +6887 6888 +6888 6889 +6889 6890 +6890 6891 +6891 6892 +6892 6893 +6893 6894 +6894 6895 +6895 6896 +6896 6897 +6897 6898 +6898 6899 +6899 6900 +6900 6901 +6901 6902 +6902 6903 +6903 6904 +6904 6905 +6905 6906 +6906 6907 +6907 6908 +6908 6909 +6909 6910 +6910 6911 +6911 6912 +6912 6913 +6913 6914 +6914 6915 +6915 6916 +6916 6917 +6917 6918 +6918 6919 +6919 6920 +6920 6921 +6921 6922 +6922 6923 +6923 6924 +6924 6925 +6925 6926 +6926 6927 +6927 6928 +6928 6929 +6929 6930 +6930 6931 +6931 6932 +6932 6933 +6933 6934 +6934 6935 +6935 6936 +6936 6937 +6937 6938 +6938 6939 +6939 6940 +6940 6941 +6941 6942 +6942 6943 +6943 6944 +6944 6945 +6945 6946 +6946 6947 +6947 6948 +6948 6949 +6949 6950 +6950 6951 +6951 6952 +6952 6953 +6953 6954 +6954 6955 +6955 6956 +6956 6957 +6957 6958 +6958 6959 +6959 6960 +6960 6961 +6961 6962 +6962 6963 +6963 6964 +6964 6965 +6965 6966 +6966 6967 +6967 6968 +6968 6969 +6969 6970 +6970 6971 +6971 6972 +6972 6973 +6973 6974 +6974 6975 +6975 6976 +6976 6977 +6977 6978 +6978 6979 +6979 6980 +6980 6981 +6981 6982 +6982 6983 +6983 6984 +6984 6985 +6985 6986 +6986 6987 +6987 6988 +6988 6989 +6989 6990 +6990 6991 +6991 6992 +6992 6993 +6993 6994 +6994 6995 +6995 6996 +6996 6997 +6997 6998 +6998 6999 +6999 7000 +7000 7001 +7001 7002 +7002 7003 +7003 7004 +7004 7005 +7005 7006 +7006 7007 +7007 7008 +7008 7009 +7009 7010 +7010 7011 +7011 7012 +7012 7013 +7013 7014 +7014 7015 +7015 7016 +7016 7017 +7017 7018 +7018 7019 +7019 7020 +7020 7021 +7021 7022 +7022 7023 +7023 7024 +7024 7025 +7025 7026 +7026 7027 +7027 7028 +7028 7029 +7029 7030 +7030 7031 +7031 7032 +7032 7033 +7033 7034 +7034 7035 +7035 7036 +7036 7037 +7037 7038 +7038 7039 +7039 7040 +7040 7041 +7041 7042 +7042 7043 +7043 7044 +7044 7045 +7045 7046 +7046 7047 +7047 7048 +7048 7049 +7049 7050 +7050 7051 +7051 7052 +7052 7053 +7053 7054 +7054 7055 +7055 7056 +7056 7057 +7057 7058 +7058 7059 +7059 7060 +7060 7061 +7061 7062 +7062 7063 +7063 7064 +7064 7065 +7065 7066 +7066 7067 +7067 7068 +7068 7069 +7069 7070 +7070 7071 +7071 7072 +7072 7073 +7073 7074 +7074 7075 +7075 7076 +7076 7077 +7077 7078 +7078 7079 +7079 7080 +7080 7081 +7081 7082 +7082 7083 +7083 7084 +7084 7085 +7085 7086 +7086 7087 +7087 7088 +7088 7089 +7089 7090 +7090 7091 +7091 7092 +7092 7093 +7093 7094 +7094 7095 +7095 7096 +7096 7097 +7097 7098 +7098 7099 +7099 7100 +7100 7101 +7101 7102 +7102 7103 +7103 7104 +7104 7105 +7105 7106 +7106 7107 +7107 7108 +7108 7109 +7109 7110 +7110 7111 +7111 7112 +7112 7113 +7113 7114 +7114 7115 +7115 7116 +7116 7117 +7117 7118 +7118 7119 +7119 7120 +7120 7121 +7121 7122 +7122 7123 +7123 7124 +7124 7125 +7125 7126 +7126 7127 +7127 7128 +7128 7129 +7129 7130 +7130 7131 +7131 7132 +7132 7133 +7133 7134 +7134 7135 +7135 7136 +7136 7137 +7137 7138 +7138 7139 +7139 7140 +7140 7141 +7141 7142 +7142 7143 +7143 7144 +7144 7145 +7145 7146 +7146 7147 +7147 7148 +7148 7149 +7149 7150 +7150 7151 +7151 7152 +7152 7153 +7153 7154 +7154 7155 +7155 7156 +7156 7157 +7157 7158 +7158 7159 +7159 7160 +7160 7161 +7161 7162 +7162 7163 +7163 7164 +7164 7165 +7165 7166 +7166 7167 +7167 7168 +7168 7169 +7169 7170 +7170 7171 +7171 7172 +7172 7173 +7173 7174 +7174 7175 +7175 7176 +7176 7177 +7177 7178 +7178 7179 +7179 7180 +7180 7181 +7181 7182 +7182 7183 +7183 7184 +7184 7185 +7185 7186 +7186 7187 +7187 7188 +7188 7189 +7189 7190 +7190 7191 +7191 7192 +7192 7193 +7193 7194 +7194 7195 +7195 7196 +7196 7197 +7197 7198 +7198 7199 +7199 7200 +7200 7201 +7201 7202 +7202 7203 +7203 7204 +7204 7205 +7205 7206 +7206 7207 +7207 7208 +7208 7209 +7209 7210 +7210 7211 +7211 7212 +7212 7213 +7213 7214 +7214 7215 +7215 7216 +7216 7217 +7217 7218 +7218 7219 +7219 7220 +7220 7221 +7221 7222 +7222 7223 +7223 7224 +7224 7225 +7225 7226 +7226 7227 +7227 7228 +7228 7229 +7229 7230 +7230 7231 +7231 7232 +7232 7233 +7233 7234 +7234 7235 +7235 7236 +7236 7237 +7237 7238 +7238 7239 +7239 7240 +7240 7241 +7241 7242 +7242 7243 +7243 7244 +7244 7245 +7245 7246 +7246 7247 +7247 7248 +7248 7249 +7249 7250 +7250 7251 +7251 7252 +7252 7253 +7253 7254 +7254 7255 +7255 7256 +7256 7257 +7257 7258 +7258 7259 +7259 7260 +7260 7261 +7261 7262 +7262 7263 +7263 7264 +7264 7265 +7265 7266 +7266 7267 +7267 7268 +7268 7269 +7269 7270 +7270 7271 +7271 7272 +7272 7273 +7273 7274 +7274 7275 +7275 7276 +7276 7277 +7277 7278 +7278 7279 +7279 7280 +7280 7281 +7281 7282 +7282 7283 +7283 7284 +7284 7285 +7285 7286 +7286 7287 +7287 7288 +7288 7289 +7289 7290 +7290 7291 +7291 7292 +7292 7293 +7293 7294 +7294 7295 +7295 7296 +7296 7297 +7297 7298 +7298 7299 +7299 7300 +7300 7301 +7301 7302 +7302 7303 +7303 7304 +7304 7305 +7305 7306 +7306 7307 +7307 7308 +7308 7309 +7309 7310 +7310 7311 +7311 7312 +7312 7313 +7313 7314 +7314 7315 +7315 7316 +7316 7317 +7317 7318 +7318 7319 +7319 7320 +7320 7321 +7321 7322 +7322 7323 +7323 7324 +7324 7325 +7325 7326 +7326 7327 +7327 7328 +7328 7329 +7329 7330 +7330 7331 +7331 7332 +7332 7333 +7333 7334 +7334 7335 +7335 7336 +7336 7337 +7337 7338 +7338 7339 +7339 7340 +7340 7341 +7341 7342 +7342 7343 +7343 7344 +7344 7345 +7345 7346 +7346 7347 +7347 7348 +7348 7349 +7349 7350 +7350 7351 +7351 7352 +7352 7353 +7353 7354 +7354 7355 +7355 7356 +7356 7357 +7357 7358 +7358 7359 +7359 7360 +7360 7361 +7361 7362 +7362 7363 +7363 7364 +7364 7365 +7365 7366 +7366 7367 +7367 7368 +7368 7369 +7369 7370 +7370 7371 +7371 7372 +7372 7373 +7373 7374 +7374 7375 +7375 7376 +7376 7377 +7377 7378 +7378 7379 +7379 7380 +7380 7381 +7381 7382 +7382 7383 +7383 7384 +7384 7385 +7385 7386 +7386 7387 +7387 7388 +7388 7389 +7389 7390 +7390 7391 +7391 7392 +7392 7393 +7393 7394 +7394 7395 +7395 7396 +7396 7397 +7397 7398 +7398 7399 +7399 7400 +7400 7401 +7401 7402 +7402 7403 +7403 7404 +7404 7405 +7405 7406 +7406 7407 +7407 7408 +7408 7409 +7409 7410 +7410 7411 +7411 7412 +7412 7413 +7413 7414 +7414 7415 +7415 7416 +7416 7417 +7417 7418 +7418 7419 +7419 7420 +7420 7421 +7421 7422 +7422 7423 +7423 7424 +7424 7425 +7425 7426 +7426 7427 +7427 7428 +7428 7429 +7429 7430 +7430 7431 +7431 7432 +7432 7433 +7433 7434 +7434 7435 +7435 7436 +7436 7437 +7437 7438 +7438 7439 +7439 7440 +7440 7441 +7441 7442 +7442 7443 +7443 7444 +7444 7445 +7445 7446 +7446 7447 +7447 7448 +7448 7449 +7449 7450 +7450 7451 +7451 7452 +7452 7453 +7453 7454 +7454 7455 +7455 7456 +7456 7457 +7457 7458 +7458 7459 +7459 7460 +7460 7461 +7461 7462 +7462 7463 +7463 7464 +7464 7465 +7465 7466 +7466 7467 +7467 7468 +7468 7469 +7469 7470 +7470 7471 +7471 7472 +7472 7473 +7473 7474 +7474 7475 +7475 7476 +7476 7477 +7477 7478 +7478 7479 +7479 7480 +7480 7481 +7481 7482 +7482 7483 +7483 7484 +7484 7485 +7485 7486 +7486 7487 +7487 7488 +7488 7489 +7489 7490 +7490 7491 +7491 7492 +7492 7493 +7493 7494 +7494 7495 +7495 7496 +7496 7497 +7497 7498 +7498 7499 +7499 7500 +7500 7501 +7501 7502 +7502 7503 +7503 7504 +7504 7505 +7505 7506 +7506 7507 +7507 7508 +7508 7509 +7509 7510 +7510 7511 +7511 7512 +7512 7513 +7513 7514 +7514 7515 +7515 7516 +7516 7517 +7517 7518 +7518 7519 +7519 7520 +7520 7521 +7521 7522 +7522 7523 +7523 7524 +7524 7525 +7525 7526 +7526 7527 +7527 7528 +7528 7529 +7529 7530 +7530 7531 +7531 7532 +7532 7533 +7533 7534 +7534 7535 +7535 7536 +7536 7537 +7537 7538 +7538 7539 +7539 7540 +7540 7541 +7541 7542 +7542 7543 +7543 7544 +7544 7545 +7545 7546 +7546 7547 +7547 7548 +7548 7549 +7549 7550 +7550 7551 +7551 7552 +7552 7553 +7553 7554 +7554 7555 +7555 7556 +7556 7557 +7557 7558 +7558 7559 +7559 7560 +7560 7561 +7561 7562 +7562 7563 +7563 7564 +7564 7565 +7565 7566 +7566 7567 +7567 7568 +7568 7569 +7569 7570 +7570 7571 +7571 7572 +7572 7573 +7573 7574 +7574 7575 +7575 7576 +7576 7577 +7577 7578 +7578 7579 +7579 7580 +7580 7581 +7581 7582 +7582 7583 +7583 7584 +7584 7585 +7585 7586 +7586 7587 +7587 7588 +7588 7589 +7589 7590 +7590 7591 +7591 7592 +7592 7593 +7593 7594 +7594 7595 +7595 7596 +7596 7597 +7597 7598 +7598 7599 +7599 7600 +7600 7601 +7601 7602 +7602 7603 +7603 7604 +7604 7605 +7605 7606 +7606 7607 +7607 7608 +7608 7609 +7609 7610 +7610 7611 +7611 7612 +7612 7613 +7613 7614 +7614 7615 +7615 7616 +7616 7617 +7617 7618 +7618 7619 +7619 7620 +7620 7621 +7621 7622 +7622 7623 +7623 7624 +7624 7625 +7625 7626 +7626 7627 +7627 7628 +7628 7629 +7629 7630 +7630 7631 +7631 7632 +7632 7633 +7633 7634 +7634 7635 +7635 7636 +7636 7637 +7637 7638 +7638 7639 +7639 7640 +7640 7641 +7641 7642 +7642 7643 +7643 7644 +7644 7645 +7645 7646 +7646 7647 +7647 7648 +7648 7649 +7649 7650 +7650 7651 +7651 7652 +7652 7653 +7653 7654 +7654 7655 +7655 7656 +7656 7657 +7657 7658 +7658 7659 +7659 7660 +7660 7661 +7661 7662 +7662 7663 +7663 7664 +7664 7665 +7665 7666 +7666 7667 +7667 7668 +7668 7669 +7669 7670 +7670 7671 +7671 7672 +7672 7673 +7673 7674 +7674 7675 +7675 7676 +7676 7677 +7677 7678 +7678 7679 +7679 7680 +7680 7681 +7681 7682 +7682 7683 +7683 7684 +7684 7685 +7685 7686 +7686 7687 +7687 7688 +7688 7689 +7689 7690 +7690 7691 +7691 7692 +7692 7693 +7693 7694 +7694 7695 +7695 7696 +7696 7697 +7697 7698 +7698 7699 +7699 7700 +7700 7701 +7701 7702 +7702 7703 +7703 7704 +7704 7705 +7705 7706 +7706 7707 +7707 7708 +7708 7709 +7709 7710 +7710 7711 +7711 7712 +7712 7713 +7713 7714 +7714 7715 +7715 7716 +7716 7717 +7717 7718 +7718 7719 +7719 7720 +7720 7721 +7721 7722 +7722 7723 +7723 7724 +7724 7725 +7725 7726 +7726 7727 +7727 7728 +7728 7729 +7729 7730 +7730 7731 +7731 7732 +7732 7733 +7733 7734 +7734 7735 +7735 7736 +7736 7737 +7737 7738 +7738 7739 +7739 7740 +7740 7741 +7741 7742 +7742 7743 +7743 7744 +7744 7745 +7745 7746 +7746 7747 +7747 7748 +7748 7749 +7749 7750 +7750 7751 +7751 7752 +7752 7753 +7753 7754 +7754 7755 +7755 7756 +7756 7757 +7757 7758 +7758 7759 +7759 7760 +7760 7761 +7761 7762 +7762 7763 +7763 7764 +7764 7765 +7765 7766 +7766 7767 +7767 7768 +7768 7769 +7769 7770 +7770 7771 +7771 7772 +7772 7773 +7773 7774 +7774 7775 +7775 7776 +7776 7777 +7777 7778 +7778 7779 +7779 7780 +7780 7781 +7781 7782 +7782 7783 +7783 7784 +7784 7785 +7785 7786 +7786 7787 +7787 7788 +7788 7789 +7789 7790 +7790 7791 +7791 7792 +7792 7793 +7793 7794 +7794 7795 +7795 7796 +7796 7797 +7797 7798 +7798 7799 +7799 7800 +7800 7801 +7801 7802 +7802 7803 +7803 7804 +7804 7805 +7805 7806 +7806 7807 +7807 7808 +7808 7809 +7809 7810 +7810 7811 +7811 7812 +7812 7813 +7813 7814 +7814 7815 +7815 7816 +7816 7817 +7817 7818 +7818 7819 +7819 7820 +7820 7821 +7821 7822 +7822 7823 +7823 7824 +7824 7825 +7825 7826 +7826 7827 +7827 7828 +7828 7829 +7829 7830 +7830 7831 +7831 7832 +7832 7833 +7833 7834 +7834 7835 +7835 7836 +7836 7837 +7837 7838 +7838 7839 +7839 7840 +7840 7841 +7841 7842 +7842 7843 +7843 7844 +7844 7845 +7845 7846 +7846 7847 +7847 7848 +7848 7849 +7849 7850 +7850 7851 +7851 7852 +7852 7853 +7853 7854 +7854 7855 +7855 7856 +7856 7857 +7857 7858 +7858 7859 +7859 7860 +7860 7861 +7861 7862 +7862 7863 +7863 7864 +7864 7865 +7865 7866 +7866 7867 +7867 7868 +7868 7869 +7869 7870 +7870 7871 +7871 7872 +7872 7873 +7873 7874 +7874 7875 +7875 7876 +7876 7877 +7877 7878 +7878 7879 +7879 7880 +7880 7881 +7881 7882 +7882 7883 +7883 7884 +7884 7885 +7885 7886 +7886 7887 +7887 7888 +7888 7889 +7889 7890 +7890 7891 +7891 7892 +7892 7893 +7893 7894 +7894 7895 +7895 7896 +7896 7897 +7897 7898 +7898 7899 +7899 7900 +7900 7901 +7901 7902 +7902 7903 +7903 7904 +7904 7905 +7905 7906 +7906 7907 +7907 7908 +7908 7909 +7909 7910 +7910 7911 +7911 7912 +7912 7913 +7913 7914 +7914 7915 +7915 7916 +7916 7917 +7917 7918 +7918 7919 +7919 7920 +7920 7921 +7921 7922 +7922 7923 +7923 7924 +7924 7925 +7925 7926 +7926 7927 +7927 7928 +7928 7929 +7929 7930 +7930 7931 +7931 7932 +7932 7933 +7933 7934 +7934 7935 +7935 7936 +7936 7937 +7937 7938 +7938 7939 +7939 7940 +7940 7941 +7941 7942 +7942 7943 +7943 7944 +7944 7945 +7945 7946 +7946 7947 +7947 7948 +7948 7949 +7949 7950 +7950 7951 +7951 7952 +7952 7953 +7953 7954 +7954 7955 +7955 7956 +7956 7957 +7957 7958 +7958 7959 +7959 7960 +7960 7961 +7961 7962 +7962 7963 +7963 7964 +7964 7965 +7965 7966 +7966 7967 +7967 7968 +7968 7969 +7969 7970 +7970 7971 +7971 7972 +7972 7973 +7973 7974 +7974 7975 +7975 7976 +7976 7977 +7977 7978 +7978 7979 +7979 7980 +7980 7981 +7981 7982 +7982 7983 +7983 7984 +7984 7985 +7985 7986 +7986 7987 +7987 7988 +7988 7989 +7989 7990 +7990 7991 +7991 7992 +7992 7993 +7993 7994 +7994 7995 +7995 7996 +7996 7997 +7997 7998 +7998 7999 +7999 8000 +8000 8001 +8001 8002 +8002 8003 +8003 8004 +8004 8005 +8005 8006 +8006 8007 +8007 8008 +8008 8009 +8009 8010 +8010 8011 +8011 8012 +8012 8013 +8013 8014 +8014 8015 +8015 8016 +8016 8017 +8017 8018 +8018 8019 +8019 8020 +8020 8021 +8021 8022 +8022 8023 +8023 8024 +8024 8025 +8025 8026 +8026 8027 +8027 8028 +8028 8029 +8029 8030 +8030 8031 +8031 8032 +8032 8033 +8033 8034 +8034 8035 +8035 8036 +8036 8037 +8037 8038 +8038 8039 +8039 8040 +8040 8041 +8041 8042 +8042 8043 +8043 8044 +8044 8045 +8045 8046 +8046 8047 +8047 8048 +8048 8049 +8049 8050 +8050 8051 +8051 8052 +8052 8053 +8053 8054 +8054 8055 +8055 8056 +8056 8057 +8057 8058 +8058 8059 +8059 8060 +8060 8061 +8061 8062 +8062 8063 +8063 8064 +8064 8065 +8065 8066 +8066 8067 +8067 8068 +8068 8069 +8069 8070 +8070 8071 +8071 8072 +8072 8073 +8073 8074 +8074 8075 +8075 8076 +8076 8077 +8077 8078 +8078 8079 +8079 8080 +8080 8081 +8081 8082 +8082 8083 +8083 8084 +8084 8085 +8085 8086 +8086 8087 +8087 8088 +8088 8089 +8089 8090 +8090 8091 +8091 8092 +8092 8093 +8093 8094 +8094 8095 +8095 8096 +8096 8097 +8097 8098 +8098 8099 +8099 8100 +8100 8101 +8101 8102 +8102 8103 +8103 8104 +8104 8105 +8105 8106 +8106 8107 +8107 8108 +8108 8109 +8109 8110 +8110 8111 +8111 8112 +8112 8113 +8113 8114 +8114 8115 +8115 8116 +8116 8117 +8117 8118 +8118 8119 +8119 8120 +8120 8121 +8121 8122 +8122 8123 +8123 8124 +8124 8125 +8125 8126 +8126 8127 +8127 8128 +8128 8129 +8129 8130 +8130 8131 +8131 8132 +8132 8133 +8133 8134 +8134 8135 +8135 8136 +8136 8137 +8137 8138 +8138 8139 +8139 8140 +8140 8141 +8141 8142 +8142 8143 +8143 8144 +8144 8145 +8145 8146 +8146 8147 +8147 8148 +8148 8149 +8149 8150 +8150 8151 +8151 8152 +8152 8153 +8153 8154 +8154 8155 +8155 8156 +8156 8157 +8157 8158 +8158 8159 +8159 8160 +8160 8161 +8161 8162 +8162 8163 +8163 8164 +8164 8165 +8165 8166 +8166 8167 +8167 8168 +8168 8169 +8169 8170 +8170 8171 +8171 8172 +8172 8173 +8173 8174 +8174 8175 +8175 8176 +8176 8177 +8177 8178 +8178 8179 +8179 8180 +8180 8181 +8181 8182 +8182 8183 +8183 8184 +8184 8185 +8185 8186 +8186 8187 +8187 8188 +8188 8189 +8189 8190 +8190 8191 +8191 8192 +8192 8193 +8193 8194 +8194 8195 +8195 8196 +8196 8197 +8197 8198 +8198 8199 +8199 8200 +8200 8201 +8201 8202 +8202 8203 +8203 8204 +8204 8205 +8205 8206 +8206 8207 +8207 8208 +8208 8209 +8209 8210 +8210 8211 +8211 8212 +8212 8213 +8213 8214 +8214 8215 +8215 8216 +8216 8217 +8217 8218 +8218 8219 +8219 8220 +8220 8221 +8221 8222 +8222 8223 +8223 8224 +8224 8225 +8225 8226 +8226 8227 +8227 8228 +8228 8229 +8229 8230 +8230 8231 +8231 8232 +8232 8233 +8233 8234 +8234 8235 +8235 8236 +8236 8237 +8237 8238 +8238 8239 +8239 8240 +8240 8241 +8241 8242 +8242 8243 +8243 8244 +8244 8245 +8245 8246 +8246 8247 +8247 8248 +8248 8249 +8249 8250 +8250 8251 +8251 8252 +8252 8253 +8253 8254 +8254 8255 +8255 8256 +8256 8257 +8257 8258 +8258 8259 +8259 8260 +8260 8261 +8261 8262 +8262 8263 +8263 8264 +8264 8265 +8265 8266 +8266 8267 +8267 8268 +8268 8269 +8269 8270 +8270 8271 +8271 8272 +8272 8273 +8273 8274 +8274 8275 +8275 8276 +8276 8277 +8277 8278 +8278 8279 +8279 8280 +8280 8281 +8281 8282 +8282 8283 +8283 8284 +8284 8285 +8285 8286 +8286 8287 +8287 8288 +8288 8289 +8289 8290 +8290 8291 +8291 8292 +8292 8293 +8293 8294 +8294 8295 +8295 8296 +8296 8297 +8297 8298 +8298 8299 +8299 8300 +8300 8301 +8301 8302 +8302 8303 +8303 8304 +8304 8305 +8305 8306 +8306 8307 +8307 8308 +8308 8309 +8309 8310 +8310 8311 +8311 8312 +8312 8313 +8313 8314 +8314 8315 +8315 8316 +8316 8317 +8317 8318 +8318 8319 +8319 8320 +8320 8321 +8321 8322 +8322 8323 +8323 8324 +8324 8325 +8325 8326 +8326 8327 +8327 8328 +8328 8329 +8329 8330 +8330 8331 +8331 8332 +8332 8333 +8333 8334 +8334 8335 +8335 8336 +8336 8337 +8337 8338 +8338 8339 +8339 8340 +8340 8341 +8341 8342 +8342 8343 +8343 8344 +8344 8345 +8345 8346 +8346 8347 +8347 8348 +8348 8349 +8349 8350 +8350 8351 +8351 8352 +8352 8353 +8353 8354 +8354 8355 +8355 8356 +8356 8357 +8357 8358 +8358 8359 +8359 8360 +8360 8361 +8361 8362 +8362 8363 +8363 8364 +8364 8365 +8365 8366 +8366 8367 +8367 8368 +8368 8369 +8369 8370 +8370 8371 +8371 8372 +8372 8373 +8373 8374 +8374 8375 +8375 8376 +8376 8377 +8377 8378 +8378 8379 +8379 8380 +8380 8381 +8381 8382 +8382 8383 +8383 8384 +8384 8385 +8385 8386 +8386 8387 +8387 8388 +8388 8389 +8389 8390 +8390 8391 +8391 8392 +8392 8393 +8393 8394 +8394 8395 +8395 8396 +8396 8397 +8397 8398 +8398 8399 +8399 8400 +8400 8401 +8401 8402 +8402 8403 +8403 8404 +8404 8405 +8405 8406 +8406 8407 +8407 8408 +8408 8409 +8409 8410 +8410 8411 +8411 8412 +8412 8413 +8413 8414 +8414 8415 +8415 8416 +8416 8417 +8417 8418 +8418 8419 +8419 8420 +8420 8421 +8421 8422 +8422 8423 +8423 8424 +8424 8425 +8425 8426 +8426 8427 +8427 8428 +8428 8429 +8429 8430 +8430 8431 +8431 8432 +8432 8433 +8433 8434 +8434 8435 +8435 8436 +8436 8437 +8437 8438 +8438 8439 +8439 8440 +8440 8441 +8441 8442 +8442 8443 +8443 8444 +8444 8445 +8445 8446 +8446 8447 +8447 8448 +8448 8449 +8449 8450 +8450 8451 +8451 8452 +8452 8453 +8453 8454 +8454 8455 +8455 8456 +8456 8457 +8457 8458 +8458 8459 +8459 8460 +8460 8461 +8461 8462 +8462 8463 +8463 8464 +8464 8465 +8465 8466 +8466 8467 +8467 8468 +8468 8469 +8469 8470 +8470 8471 +8471 8472 +8472 8473 +8473 8474 +8474 8475 +8475 8476 +8476 8477 +8477 8478 +8478 8479 +8479 8480 +8480 8481 +8481 8482 +8482 8483 +8483 8484 +8484 8485 +8485 8486 +8486 8487 +8487 8488 +8488 8489 +8489 8490 +8490 8491 +8491 8492 +8492 8493 +8493 8494 +8494 8495 +8495 8496 +8496 8497 +8497 8498 +8498 8499 +8499 8500 +8500 8501 +8501 8502 +8502 8503 +8503 8504 +8504 8505 +8505 8506 +8506 8507 +8507 8508 +8508 8509 +8509 8510 +8510 8511 +8511 8512 +8512 8513 +8513 8514 +8514 8515 +8515 8516 +8516 8517 +8517 8518 +8518 8519 +8519 8520 +8520 8521 +8521 8522 +8522 8523 +8523 8524 +8524 8525 +8525 8526 +8526 8527 +8527 8528 +8528 8529 +8529 8530 +8530 8531 +8531 8532 +8532 8533 +8533 8534 +8534 8535 +8535 8536 +8536 8537 +8537 8538 +8538 8539 +8539 8540 +8540 8541 +8541 8542 +8542 8543 +8543 8544 +8544 8545 +8545 8546 +8546 8547 +8547 8548 +8548 8549 +8549 8550 +8550 8551 +8551 8552 +8552 8553 +8553 8554 +8554 8555 +8555 8556 +8556 8557 +8557 8558 +8558 8559 +8559 8560 +8560 8561 +8561 8562 +8562 8563 +8563 8564 +8564 8565 +8565 8566 +8566 8567 +8567 8568 +8568 8569 +8569 8570 +8570 8571 +8571 8572 +8572 8573 +8573 8574 +8574 8575 +8575 8576 +8576 8577 +8577 8578 +8578 8579 +8579 8580 +8580 8581 +8581 8582 +8582 8583 +8583 8584 +8584 8585 +8585 8586 +8586 8587 +8587 8588 +8588 8589 +8589 8590 +8590 8591 +8591 8592 +8592 8593 +8593 8594 +8594 8595 +8595 8596 +8596 8597 +8597 8598 +8598 8599 +8599 8600 +8600 8601 +8601 8602 +8602 8603 +8603 8604 +8604 8605 +8605 8606 +8606 8607 +8607 8608 +8608 8609 +8609 8610 +8610 8611 +8611 8612 +8612 8613 +8613 8614 +8614 8615 +8615 8616 +8616 8617 +8617 8618 +8618 8619 +8619 8620 +8620 8621 +8621 8622 +8622 8623 +8623 8624 +8624 8625 +8625 8626 +8626 8627 +8627 8628 +8628 8629 +8629 8630 +8630 8631 +8631 8632 +8632 8633 +8633 8634 +8634 8635 +8635 8636 +8636 8637 +8637 8638 +8638 8639 +8639 8640 +8640 8641 +8641 8642 +8642 8643 +8643 8644 +8644 8645 +8645 8646 +8646 8647 +8647 8648 +8648 8649 +8649 8650 +8650 8651 +8651 8652 +8652 8653 +8653 8654 +8654 8655 +8655 8656 +8656 8657 +8657 8658 +8658 8659 +8659 8660 +8660 8661 +8661 8662 +8662 8663 +8663 8664 +8664 8665 +8665 8666 +8666 8667 +8667 8668 +8668 8669 +8669 8670 +8670 8671 +8671 8672 +8672 8673 +8673 8674 +8674 8675 +8675 8676 +8676 8677 +8677 8678 +8678 8679 +8679 8680 +8680 8681 +8681 8682 +8682 8683 +8683 8684 +8684 8685 +8685 8686 +8686 8687 +8687 8688 +8688 8689 +8689 8690 +8690 8691 +8691 8692 +8692 8693 +8693 8694 +8694 8695 +8695 8696 +8696 8697 +8697 8698 +8698 8699 +8699 8700 +8700 8701 +8701 8702 +8702 8703 +8703 8704 +8704 8705 +8705 8706 +8706 8707 +8707 8708 +8708 8709 +8709 8710 +8710 8711 +8711 8712 +8712 8713 +8713 8714 +8714 8715 +8715 8716 +8716 8717 +8717 8718 +8718 8719 +8719 8720 +8720 8721 +8721 8722 +8722 8723 +8723 8724 +8724 8725 +8725 8726 +8726 8727 +8727 8728 +8728 8729 +8729 8730 +8730 8731 +8731 8732 +8732 8733 +8733 8734 +8734 8735 +8735 8736 +8736 8737 +8737 8738 +8738 8739 +8739 8740 +8740 8741 +8741 8742 +8742 8743 +8743 8744 +8744 8745 +8745 8746 +8746 8747 +8747 8748 +8748 8749 +8749 8750 +8750 8751 +8751 8752 +8752 8753 +8753 8754 +8754 8755 +8755 8756 +8756 8757 +8757 8758 +8758 8759 +8759 8760 +8760 8761 +8761 8762 +8762 8763 +8763 8764 +8764 8765 +8765 8766 +8766 8767 +8767 8768 +8768 8769 +8769 8770 +8770 8771 +8771 8772 +8772 8773 +8773 8774 +8774 8775 +8775 8776 +8776 8777 +8777 8778 +8778 8779 +8779 8780 +8780 8781 +8781 8782 +8782 8783 +8783 8784 +8784 8785 +8785 8786 +8786 8787 +8787 8788 +8788 8789 +8789 8790 +8790 8791 +8791 8792 +8792 8793 +8793 8794 +8794 8795 +8795 8796 +8796 8797 +8797 8798 +8798 8799 +8799 8800 +8800 8801 +8801 8802 +8802 8803 +8803 8804 +8804 8805 +8805 8806 +8806 8807 +8807 8808 +8808 8809 +8809 8810 +8810 8811 +8811 8812 +8812 8813 +8813 8814 +8814 8815 +8815 8816 +8816 8817 +8817 8818 +8818 8819 +8819 8820 +8820 8821 +8821 8822 +8822 8823 +8823 8824 +8824 8825 +8825 8826 +8826 8827 +8827 8828 +8828 8829 +8829 8830 +8830 8831 +8831 8832 +8832 8833 +8833 8834 +8834 8835 +8835 8836 +8836 8837 +8837 8838 +8838 8839 +8839 8840 +8840 8841 +8841 8842 +8842 8843 +8843 8844 +8844 8845 +8845 8846 +8846 8847 +8847 8848 +8848 8849 +8849 8850 +8850 8851 +8851 8852 +8852 8853 +8853 8854 +8854 8855 +8855 8856 +8856 8857 +8857 8858 +8858 8859 +8859 8860 +8860 8861 +8861 8862 +8862 8863 +8863 8864 +8864 8865 +8865 8866 +8866 8867 +8867 8868 +8868 8869 +8869 8870 +8870 8871 +8871 8872 +8872 8873 +8873 8874 +8874 8875 +8875 8876 +8876 8877 +8877 8878 +8878 8879 +8879 8880 +8880 8881 +8881 8882 +8882 8883 +8883 8884 +8884 8885 +8885 8886 +8886 8887 +8887 8888 +8888 8889 +8889 8890 +8890 8891 +8891 8892 +8892 8893 +8893 8894 +8894 8895 +8895 8896 +8896 8897 +8897 8898 +8898 8899 +8899 8900 +8900 8901 +8901 8902 +8902 8903 +8903 8904 +8904 8905 +8905 8906 +8906 8907 +8907 8908 +8908 8909 +8909 8910 +8910 8911 +8911 8912 +8912 8913 +8913 8914 +8914 8915 +8915 8916 +8916 8917 +8917 8918 +8918 8919 +8919 8920 +8920 8921 +8921 8922 +8922 8923 +8923 8924 +8924 8925 +8925 8926 +8926 8927 +8927 8928 +8928 8929 +8929 8930 +8930 8931 +8931 8932 +8932 8933 +8933 8934 +8934 8935 +8935 8936 +8936 8937 +8937 8938 +8938 8939 +8939 8940 +8940 8941 +8941 8942 +8942 8943 +8943 8944 +8944 8945 +8945 8946 +8946 8947 +8947 8948 +8948 8949 +8949 8950 +8950 8951 +8951 8952 +8952 8953 +8953 8954 +8954 8955 +8955 8956 +8956 8957 +8957 8958 +8958 8959 +8959 8960 +8960 8961 +8961 8962 +8962 8963 +8963 8964 +8964 8965 +8965 8966 +8966 8967 +8967 8968 +8968 8969 +8969 8970 +8970 8971 +8971 8972 +8972 8973 +8973 8974 +8974 8975 +8975 8976 +8976 8977 +8977 8978 +8978 8979 +8979 8980 +8980 8981 +8981 8982 +8982 8983 +8983 8984 +8984 8985 +8985 8986 +8986 8987 +8987 8988 +8988 8989 +8989 8990 +8990 8991 +8991 8992 +8992 8993 +8993 8994 +8994 8995 +8995 8996 +8996 8997 +8997 8998 +8998 8999 +8999 9000 +9000 9001 +9001 9002 +9002 9003 +9003 9004 +9004 9005 +9005 9006 +9006 9007 +9007 9008 +9008 9009 +9009 9010 +9010 9011 +9011 9012 +9012 9013 +9013 9014 +9014 9015 +9015 9016 +9016 9017 +9017 9018 +9018 9019 +9019 9020 +9020 9021 +9021 9022 +9022 9023 +9023 9024 +9024 9025 +9025 9026 +9026 9027 +9027 9028 +9028 9029 +9029 9030 +9030 9031 +9031 9032 +9032 9033 +9033 9034 +9034 9035 +9035 9036 +9036 9037 +9037 9038 +9038 9039 +9039 9040 +9040 9041 +9041 9042 +9042 9043 +9043 9044 +9044 9045 +9045 9046 +9046 9047 +9047 9048 +9048 9049 +9049 9050 +9050 9051 +9051 9052 +9052 9053 +9053 9054 +9054 9055 +9055 9056 +9056 9057 +9057 9058 +9058 9059 +9059 9060 +9060 9061 +9061 9062 +9062 9063 +9063 9064 +9064 9065 +9065 9066 +9066 9067 +9067 9068 +9068 9069 +9069 9070 +9070 9071 +9071 9072 +9072 9073 +9073 9074 +9074 9075 +9075 9076 +9076 9077 +9077 9078 +9078 9079 +9079 9080 +9080 9081 +9081 9082 +9082 9083 +9083 9084 +9084 9085 +9085 9086 +9086 9087 +9087 9088 +9088 9089 +9089 9090 +9090 9091 +9091 9092 +9092 9093 +9093 9094 +9094 9095 +9095 9096 +9096 9097 +9097 9098 +9098 9099 +9099 9100 +9100 9101 +9101 9102 +9102 9103 +9103 9104 +9104 9105 +9105 9106 +9106 9107 +9107 9108 +9108 9109 +9109 9110 +9110 9111 +9111 9112 +9112 9113 +9113 9114 +9114 9115 +9115 9116 +9116 9117 +9117 9118 +9118 9119 +9119 9120 +9120 9121 +9121 9122 +9122 9123 +9123 9124 +9124 9125 +9125 9126 +9126 9127 +9127 9128 +9128 9129 +9129 9130 +9130 9131 +9131 9132 +9132 9133 +9133 9134 +9134 9135 +9135 9136 +9136 9137 +9137 9138 +9138 9139 +9139 9140 +9140 9141 +9141 9142 +9142 9143 +9143 9144 +9144 9145 +9145 9146 +9146 9147 +9147 9148 +9148 9149 +9149 9150 +9150 9151 +9151 9152 +9152 9153 +9153 9154 +9154 9155 +9155 9156 +9156 9157 +9157 9158 +9158 9159 +9159 9160 +9160 9161 +9161 9162 +9162 9163 +9163 9164 +9164 9165 +9165 9166 +9166 9167 +9167 9168 +9168 9169 +9169 9170 +9170 9171 +9171 9172 +9172 9173 +9173 9174 +9174 9175 +9175 9176 +9176 9177 +9177 9178 +9178 9179 +9179 9180 +9180 9181 +9181 9182 +9182 9183 +9183 9184 +9184 9185 +9185 9186 +9186 9187 +9187 9188 +9188 9189 +9189 9190 +9190 9191 +9191 9192 +9192 9193 +9193 9194 +9194 9195 +9195 9196 +9196 9197 +9197 9198 +9198 9199 +9199 9200 +9200 9201 +9201 9202 +9202 9203 +9203 9204 +9204 9205 +9205 9206 +9206 9207 +9207 9208 +9208 9209 +9209 9210 +9210 9211 +9211 9212 +9212 9213 +9213 9214 +9214 9215 +9215 9216 +9216 9217 +9217 9218 +9218 9219 +9219 9220 +9220 9221 +9221 9222 +9222 9223 +9223 9224 +9224 9225 +9225 9226 +9226 9227 +9227 9228 +9228 9229 +9229 9230 +9230 9231 +9231 9232 +9232 9233 +9233 9234 +9234 9235 +9235 9236 +9236 9237 +9237 9238 +9238 9239 +9239 9240 +9240 9241 +9241 9242 +9242 9243 +9243 9244 +9244 9245 +9245 9246 +9246 9247 +9247 9248 +9248 9249 +9249 9250 +9250 9251 +9251 9252 +9252 9253 +9253 9254 +9254 9255 +9255 9256 +9256 9257 +9257 9258 +9258 9259 +9259 9260 +9260 9261 +9261 9262 +9262 9263 +9263 9264 +9264 9265 +9265 9266 +9266 9267 +9267 9268 +9268 9269 +9269 9270 +9270 9271 +9271 9272 +9272 9273 +9273 9274 +9274 9275 +9275 9276 +9276 9277 +9277 9278 +9278 9279 +9279 9280 +9280 9281 +9281 9282 +9282 9283 +9283 9284 +9284 9285 +9285 9286 +9286 9287 +9287 9288 +9288 9289 +9289 9290 +9290 9291 +9291 9292 +9292 9293 +9293 9294 +9294 9295 +9295 9296 +9296 9297 +9297 9298 +9298 9299 +9299 9300 +9300 9301 +9301 9302 +9302 9303 +9303 9304 +9304 9305 +9305 9306 +9306 9307 +9307 9308 +9308 9309 +9309 9310 +9310 9311 +9311 9312 +9312 9313 +9313 9314 +9314 9315 +9315 9316 +9316 9317 +9317 9318 +9318 9319 +9319 9320 +9320 9321 +9321 9322 +9322 9323 +9323 9324 +9324 9325 +9325 9326 +9326 9327 +9327 9328 +9328 9329 +9329 9330 +9330 9331 +9331 9332 +9332 9333 +9333 9334 +9334 9335 +9335 9336 +9336 9337 +9337 9338 +9338 9339 +9339 9340 +9340 9341 +9341 9342 +9342 9343 +9343 9344 +9344 9345 +9345 9346 +9346 9347 +9347 9348 +9348 9349 +9349 9350 +9350 9351 +9351 9352 +9352 9353 +9353 9354 +9354 9355 +9355 9356 +9356 9357 +9357 9358 +9358 9359 +9359 9360 +9360 9361 +9361 9362 +9362 9363 +9363 9364 +9364 9365 +9365 9366 +9366 9367 +9367 9368 +9368 9369 +9369 9370 +9370 9371 +9371 9372 +9372 9373 +9373 9374 +9374 9375 +9375 9376 +9376 9377 +9377 9378 +9378 9379 +9379 9380 +9380 9381 +9381 9382 +9382 9383 +9383 9384 +9384 9385 +9385 9386 +9386 9387 +9387 9388 +9388 9389 +9389 9390 +9390 9391 +9391 9392 +9392 9393 +9393 9394 +9394 9395 +9395 9396 +9396 9397 +9397 9398 +9398 9399 +9399 9400 +9400 9401 +9401 9402 +9402 9403 +9403 9404 +9404 9405 +9405 9406 +9406 9407 +9407 9408 +9408 9409 +9409 9410 +9410 9411 +9411 9412 +9412 9413 +9413 9414 +9414 9415 +9415 9416 +9416 9417 +9417 9418 +9418 9419 +9419 9420 +9420 9421 +9421 9422 +9422 9423 +9423 9424 +9424 9425 +9425 9426 +9426 9427 +9427 9428 +9428 9429 +9429 9430 +9430 9431 +9431 9432 +9432 9433 +9433 9434 +9434 9435 +9435 9436 +9436 9437 +9437 9438 +9438 9439 +9439 9440 +9440 9441 +9441 9442 +9442 9443 +9443 9444 +9444 9445 +9445 9446 +9446 9447 +9447 9448 +9448 9449 +9449 9450 +9450 9451 +9451 9452 +9452 9453 +9453 9454 +9454 9455 +9455 9456 +9456 9457 +9457 9458 +9458 9459 +9459 9460 +9460 9461 +9461 9462 +9462 9463 +9463 9464 +9464 9465 +9465 9466 +9466 9467 +9467 9468 +9468 9469 +9469 9470 +9470 9471 +9471 9472 +9472 9473 +9473 9474 +9474 9475 +9475 9476 +9476 9477 +9477 9478 +9478 9479 +9479 9480 +9480 9481 +9481 9482 +9482 9483 +9483 9484 +9484 9485 +9485 9486 +9486 9487 +9487 9488 +9488 9489 +9489 9490 +9490 9491 +9491 9492 +9492 9493 +9493 9494 +9494 9495 +9495 9496 +9496 9497 +9497 9498 +9498 9499 +9499 9500 +9500 9501 +9501 9502 +9502 9503 +9503 9504 +9504 9505 +9505 9506 +9506 9507 +9507 9508 +9508 9509 +9509 9510 +9510 9511 +9511 9512 +9512 9513 +9513 9514 +9514 9515 +9515 9516 +9516 9517 +9517 9518 +9518 9519 +9519 9520 +9520 9521 +9521 9522 +9522 9523 +9523 9524 +9524 9525 +9525 9526 +9526 9527 +9527 9528 +9528 9529 +9529 9530 +9530 9531 +9531 9532 +9532 9533 +9533 9534 +9534 9535 +9535 9536 +9536 9537 +9537 9538 +9538 9539 +9539 9540 +9540 9541 +9541 9542 +9542 9543 +9543 9544 +9544 9545 +9545 9546 +9546 9547 +9547 9548 +9548 9549 +9549 9550 +9550 9551 +9551 9552 +9552 9553 +9553 9554 +9554 9555 +9555 9556 +9556 9557 +9557 9558 +9558 9559 +9559 9560 +9560 9561 +9561 9562 +9562 9563 +9563 9564 +9564 9565 +9565 9566 +9566 9567 +9567 9568 +9568 9569 +9569 9570 +9570 9571 +9571 9572 +9572 9573 +9573 9574 +9574 9575 +9575 9576 +9576 9577 +9577 9578 +9578 9579 +9579 9580 +9580 9581 +9581 9582 +9582 9583 +9583 9584 +9584 9585 +9585 9586 +9586 9587 +9587 9588 +9588 9589 +9589 9590 +9590 9591 +9591 9592 +9592 9593 +9593 9594 +9594 9595 +9595 9596 +9596 9597 +9597 9598 +9598 9599 +9599 9600 +9600 9601 +9601 9602 +9602 9603 +9603 9604 +9604 9605 +9605 9606 +9606 9607 +9607 9608 +9608 9609 +9609 9610 +9610 9611 +9611 9612 +9612 9613 +9613 9614 +9614 9615 +9615 9616 +9616 9617 +9617 9618 +9618 9619 +9619 9620 +9620 9621 +9621 9622 +9622 9623 +9623 9624 +9624 9625 +9625 9626 +9626 9627 +9627 9628 +9628 9629 +9629 9630 +9630 9631 +9631 9632 +9632 9633 +9633 9634 +9634 9635 +9635 9636 +9636 9637 +9637 9638 +9638 9639 +9639 9640 +9640 9641 +9641 9642 +9642 9643 +9643 9644 +9644 9645 +9645 9646 +9646 9647 +9647 9648 +9648 9649 +9649 9650 +9650 9651 +9651 9652 +9652 9653 +9653 9654 +9654 9655 +9655 9656 +9656 9657 +9657 9658 +9658 9659 +9659 9660 +9660 9661 +9661 9662 +9662 9663 +9663 9664 +9664 9665 +9665 9666 +9666 9667 +9667 9668 +9668 9669 +9669 9670 +9670 9671 +9671 9672 +9672 9673 +9673 9674 +9674 9675 +9675 9676 +9676 9677 +9677 9678 +9678 9679 +9679 9680 +9680 9681 +9681 9682 +9682 9683 +9683 9684 +9684 9685 +9685 9686 +9686 9687 +9687 9688 +9688 9689 +9689 9690 +9690 9691 +9691 9692 +9692 9693 +9693 9694 +9694 9695 +9695 9696 +9696 9697 +9697 9698 +9698 9699 +9699 9700 +9700 9701 +9701 9702 +9702 9703 +9703 9704 +9704 9705 +9705 9706 +9706 9707 +9707 9708 +9708 9709 +9709 9710 +9710 9711 +9711 9712 +9712 9713 +9713 9714 +9714 9715 +9715 9716 +9716 9717 +9717 9718 +9718 9719 +9719 9720 +9720 9721 +9721 9722 +9722 9723 +9723 9724 +9724 9725 +9725 9726 +9726 9727 +9727 9728 +9728 9729 +9729 9730 +9730 9731 +9731 9732 +9732 9733 +9733 9734 +9734 9735 +9735 9736 +9736 9737 +9737 9738 +9738 9739 +9739 9740 +9740 9741 +9741 9742 +9742 9743 +9743 9744 +9744 9745 +9745 9746 +9746 9747 +9747 9748 +9748 9749 +9749 9750 +9750 9751 +9751 9752 +9752 9753 +9753 9754 +9754 9755 +9755 9756 +9756 9757 +9757 9758 +9758 9759 +9759 9760 +9760 9761 +9761 9762 +9762 9763 +9763 9764 +9764 9765 +9765 9766 +9766 9767 +9767 9768 +9768 9769 +9769 9770 +9770 9771 +9771 9772 +9772 9773 +9773 9774 +9774 9775 +9775 9776 +9776 9777 +9777 9778 +9778 9779 +9779 9780 +9780 9781 +9781 9782 +9782 9783 +9783 9784 +9784 9785 +9785 9786 +9786 9787 +9787 9788 +9788 9789 +9789 9790 +9790 9791 +9791 9792 +9792 9793 +9793 9794 +9794 9795 +9795 9796 +9796 9797 +9797 9798 +9798 9799 +9799 9800 +9800 9801 +9801 9802 +9802 9803 +9803 9804 +9804 9805 +9805 9806 +9806 9807 +9807 9808 +9808 9809 +9809 9810 +9810 9811 +9811 9812 +9812 9813 +9813 9814 +9814 9815 +9815 9816 +9816 9817 +9817 9818 +9818 9819 +9819 9820 +9820 9821 +9821 9822 +9822 9823 +9823 9824 +9824 9825 +9825 9826 +9826 9827 +9827 9828 +9828 9829 +9829 9830 +9830 9831 +9831 9832 +9832 9833 +9833 9834 +9834 9835 +9835 9836 +9836 9837 +9837 9838 +9838 9839 +9839 9840 +9840 9841 +9841 9842 +9842 9843 +9843 9844 +9844 9845 +9845 9846 +9846 9847 +9847 9848 +9848 9849 +9849 9850 +9850 9851 +9851 9852 +9852 9853 +9853 9854 +9854 9855 +9855 9856 +9856 9857 +9857 9858 +9858 9859 +9859 9860 +9860 9861 +9861 9862 +9862 9863 +9863 9864 +9864 9865 +9865 9866 +9866 9867 +9867 9868 +9868 9869 +9869 9870 +9870 9871 +9871 9872 +9872 9873 +9873 9874 +9874 9875 +9875 9876 +9876 9877 +9877 9878 +9878 9879 +9879 9880 +9880 9881 +9881 9882 +9882 9883 +9883 9884 +9884 9885 +9885 9886 +9886 9887 +9887 9888 +9888 9889 +9889 9890 +9890 9891 +9891 9892 +9892 9893 +9893 9894 +9894 9895 +9895 9896 +9896 9897 +9897 9898 +9898 9899 +9899 9900 +9900 9901 +9901 9902 +9902 9903 +9903 9904 +9904 9905 +9905 9906 +9906 9907 +9907 9908 +9908 9909 +9909 9910 +9910 9911 +9911 9912 +9912 9913 +9913 9914 +9914 9915 +9915 9916 +9916 9917 +9917 9918 +9918 9919 +9919 9920 +9920 9921 +9921 9922 +9922 9923 +9923 9924 +9924 9925 +9925 9926 +9926 9927 +9927 9928 +9928 9929 +9929 9930 +9930 9931 +9931 9932 +9932 9933 +9933 9934 +9934 9935 +9935 9936 +9936 9937 +9937 9938 +9938 9939 +9939 9940 +9940 9941 +9941 9942 +9942 9943 +9943 9944 +9944 9945 +9945 9946 +9946 9947 +9947 9948 +9948 9949 +9949 9950 +9950 9951 +9951 9952 +9952 9953 +9953 9954 +9954 9955 +9955 9956 +9956 9957 +9957 9958 +9958 9959 +9959 9960 +9960 9961 +9961 9962 +9962 9963 +9963 9964 +9964 9965 +9965 9966 +9966 9967 +9967 9968 +9968 9969 +9969 9970 +9970 9971 +9971 9972 +9972 9973 +9973 9974 +9974 9975 +9975 9976 +9976 9977 +9977 9978 +9978 9979 +9979 9980 +9980 9981 +9981 9982 +9982 9983 +9983 9984 +9984 9985 +9985 9986 +9986 9987 +9987 9988 +9988 9989 +9989 9990 +9990 9991 +9991 9992 +9992 9993 +9993 9994 +9994 9995 +9995 9996 +9996 9997 +9997 9998 +9998 9999 +9999 0 diff --git a/test/CDT.Tests/inputs/ditch.txt b/test/CDT.Tests/inputs/ditch.txt index 21b139a..909b4c0 100644 --- a/test/CDT.Tests/inputs/ditch.txt +++ b/test/CDT.Tests/inputs/ditch.txt @@ -1,15 +1,15 @@ 11 12 -15.2817039560085 -35.8482583312558 -16.9298083110526 -19.5320252163193 -15.2817039560085 9.044687862274401e-01 -17.5890500530702 18.044754078686 -16.1057561335305 40.7061889605422 --16.6915205318468 -35.6010426779992 --14.3017692170329 -14.9173330221958 --14.9610109590506 14.006898408828 --15.0434161768028 37.9044115569673 -1.27281693813374 -36.0954739845124 -1.27281693813374 40.62378374279 +15281704 -35848258 +16929808 -19532025 +15281704 904469 +17589050 18044754 +16105756 40706189 +-16691521 -35601043 +-14301769 -14917333 +-14961011 14006898 +-15043416 37904412 +1272817 -36095474 +1272817 40623784 0 1 1 2 2 3 @@ -21,4 +21,4 @@ 0 9 5 9 4 10 -8 10 \ No newline at end of file +8 10 diff --git a/test/CDT.Tests/inputs/dont_flip_constraint_when_resolving_intersection.txt b/test/CDT.Tests/inputs/dont_flip_constraint_when_resolving_intersection.txt index d616e52..f4d3018 100644 --- a/test/CDT.Tests/inputs/dont_flip_constraint_when_resolving_intersection.txt +++ b/test/CDT.Tests/inputs/dont_flip_constraint_when_resolving_intersection.txt @@ -1,10 +1,10 @@ 6 3 - 2 8 -12 11 -12 10 - 2 7 -12 8 -5 10 +2000000 8000000 +12000000 11000000 +12000000 10000000 +2000000 7000000 +12000000 8000000 +5000000 10000000 0 1 0 2 -1 3 \ No newline at end of file +1 3 diff --git a/test/CDT.Tests/inputs/double-hanging.txt b/test/CDT.Tests/inputs/double-hanging.txt index f084a98..08c417c 100644 --- a/test/CDT.Tests/inputs/double-hanging.txt +++ b/test/CDT.Tests/inputs/double-hanging.txt @@ -1,9 +1,9 @@ 7 1 -0 40 -20 37 -30 43 -40 37 -60 40 -30 48 -30 55 -0 4 \ No newline at end of file +0 40000000 +20000000 37000000 +30000000 43000000 +40000000 37000000 +60000000 40000000 +30000000 48000000 +30000000 55000000 +0 4 diff --git a/test/CDT.Tests/inputs/gh_issue.txt b/test/CDT.Tests/inputs/gh_issue.txt index af732a0..fe1ba57 100644 --- a/test/CDT.Tests/inputs/gh_issue.txt +++ b/test/CDT.Tests/inputs/gh_issue.txt @@ -1,82 +1,82 @@ 78 78 -2646.483004 4635.168252 -2940.454821 4768.453360 -2956.371323 4741.992504 -2919.866354 4733.151108 -2907.399464 4714.272492 -2860.306798 4697.221008 -2780.158799 4650.778860 -2265.225986 4403.916563 -2182.209600 4365.631781 -2173.947532 4397.984430 -2232.832254 4409.193994 -2145.628913 4499.153591 -2066.116789 4531.471540 -2107.904595 4569.142974 -2173.586631 4545.401212 -2245.979345 4504.443379 -2329.936334 4536.309812 -2382.950861 4505.163464 -2414.148222 4533.413655 -2420.020403 4567.534854 -2469.472407 4591.682871 -2538.962717 4586.428933 -2606.040217 4616.841854 -2595.426630 4630.277520 -2568.937784 4646.133540 -2554.361486 4663.323147 -2552.593887 4672.138585 -2564.495713 4691.093858 -2583.462998 4703.889658 -2583.911492 4693.312373 -2590.975244 4690.229175 -2608.631592 4687.598233 -2615.241370 4693.777127 -2615.239494 4696.864568 -2594.057935 4700.373892 -2580.785697 4755.025906 -2570.185110 4768.249869 -2570.174324 4786.317531 -2587.819934 4800.873632 -2593.997380 4800.877349 -2590.474213 4788.090764 -2586.503055 4785.012080 -2591.805134 4780.601452 -2593.577019 4764.730612 -2601.971607 4754.158121 -2614.770649 4751.078432 -2614.796616 4708.322388 -2618.328357 4706.998159 -2627.147740 4714.939484 -2646.567444 4710.548705 -2657.148030 4720.252242 -2653.172499 4734.349482 -2635.514965 4739.187149 -2631.101149 4747.120403 -2620.062813 4752.842717 -2605.929343 4769.151887 -2605.926408 4774.000396 -2612.545497 4774.884941 -2616.957172 4780.616664 -2621.371786 4781.499884 -2624.025906 4769.162877 -2629.322080 4764.317597 -2641.231696 4769.608090 -2648.729638 4779.309717 -2663.295551 4778.884008 -2666.828119 4766.101730 -2690.222871 4758.180330 -2706.114874 4748.493266 -2710.977196 4740.560372 -2710.115392 4704.848041 -2688.487237 4715.423185 -2670.390725 4714.966084 -2665.102357 4707.026855 -2639.960968 4688.943700 -2619.221169 4682.756151 -2604.677698 4655.852030 -2615.271092 4644.846203 -2635.574060 4642.651673 +2646483004 4635168252 +2940454821 4768453360 +2956371323 4741992504 +2919866354 4733151108 +2907399464 4714272492 +2860306798 4697221008 +2780158799 4650778860 +2265225986 4403916563 +2182209600 4365631781 +2173947532 4397984430 +2232832254 4409193994 +2145628913 4499153591 +2066116789 4531471540 +2107904595 4569142974 +2173586631 4545401212 +2245979345 4504443379 +2329936334 4536309812 +2382950861 4505163464 +2414148222 4533413655 +2420020403 4567534854 +2469472407 4591682871 +2538962717 4586428933 +2606040217 4616841854 +2595426630 4630277520 +2568937784 4646133540 +2554361486 4663323147 +2552593887 4672138585 +2564495713 4691093858 +2583462998 4703889658 +2583911492 4693312373 +2590975244 4690229175 +2608631592 4687598233 +2615241370 4693777127 +2615239494 4696864568 +2594057935 4700373892 +2580785697 4755025906 +2570185110 4768249869 +2570174324 4786317531 +2587819934 4800873632 +2593997380 4800877349 +2590474213 4788090764 +2586503055 4785012080 +2591805134 4780601452 +2593577019 4764730612 +2601971607 4754158121 +2614770649 4751078432 +2614796616 4708322388 +2618328357 4706998159 +2627147740 4714939484 +2646567444 4710548705 +2657148030 4720252242 +2653172499 4734349482 +2635514965 4739187149 +2631101149 4747120403 +2620062813 4752842717 +2605929343 4769151887 +2605926408 4774000396 +2612545497 4774884941 +2616957172 4780616664 +2621371786 4781499884 +2624025906 4769162877 +2629322080 4764317597 +2641231696 4769608090 +2648729638 4779309717 +2663295551 4778884008 +2666828119 4766101730 +2690222871 4758180330 +2706114874 4748493266 +2710977196 4740560372 +2710115392 4704848041 +2688487237 4715423185 +2670390725 4714966084 +2665102357 4707026855 +2639960968 4688943700 +2619221169 4682756151 +2604677698 4655852030 +2615271092 4644846203 +2635574060 4642651673 0 1 1 2 2 3 @@ -154,4 +154,4 @@ 74 75 75 76 76 77 -77 0 \ No newline at end of file +77 0 diff --git a/test/CDT.Tests/inputs/guitar no box.txt b/test/CDT.Tests/inputs/guitar no box.txt index 1c219bb..3241b3c 100644 --- a/test/CDT.Tests/inputs/guitar no box.txt +++ b/test/CDT.Tests/inputs/guitar no box.txt @@ -1,148 +1,148 @@ 144 144 -20.75 12 -20 12.5 -19 12.75 -18 12.6 -17 12.35 -16 12 -15 11.6 -14 11 -13 10.7 -12 10.5 -11 10.7 -10 11.2 - 9 12 - 7 13.1 - 6 13.5 - 5 13.5 - 4 13.2 - 3 12.4 - 2 11.2 - 1.3 10 - 0.8 8 - 0.5 6 - 0.6 4 - 0.8 3 - 1.3 2 - 2.1 1 - 3 0.4 - 4 0 - 5 -0.1 - 6 0.1 - 8 0.8 -10 1.9 -11 2.3 -12 2.4 -13 2.2 -14 1.75 -15 1.5 -16 1.5 -16.75 1.8 -16 2.15 -15 3 -14.15 4 -14 5 -14.4 5.6 -15 5.75 -16 5.85 -27 5.85 -28 5.7 -29 5.25 -29.8 4.6 -32 5.05 -33 5 -33.75 4.6 -34.5 4.7 -35.3 5 -36 5.5 -36.25 6 -36.1 6.3 -34.1 7.1 -34.2 7.35 -34.4 7.56 -34.4 7.85 -34.2 7.93 -34 7.72 -34 7.43 -33.9 7.18 -33.3 7.42 -33.4 7.67 -33.6 7.88 -33.6 8.17 -33.4 8.25 -33.2 8.04 -33.2 7.75 -33.1 7.5 -32.5 7.74 -32.6 7.99 -32.8 8.2 -32.8 8.49 -32.6 8.57 -32.4 8.36 -32.4 8.07 -32.3 7.82 -31.7 8.06 -31.8 8.31 -32 8.52 -32 8.81 -31.8 8.89 -31.6 8.68 -31.6 8.39 -31.5 8.14 -30.9 8.38 -31 8.63 -31.2 8.84 -31.2 9.13 -31 9.21 -30.8 9 -30.8 8.71 -30.7 8.46 -30.1 8.7 -30.2 8.95 -30.4 9.16 -30.4 9.45 -30.2 9.53 -30 9.32 -30 9.03 -29.9 8.78 -28.6 9.3 -28.2 9.2 -28.1 7.8 -18 7.8 -17 7.9 -16.3 8.3 -15.85 9 -16.2 10 -17 10.7 -19 11.6 -20 11.8 - 3 6.8 - 3.3 7.5 - 4 7.8 - 4.7 7.5 - 4 6.8 - 4.7 6.1 - 4 5.8 - 3.3 6.1 - 5.5 5.8 - 6.25 5.8 - 6.25 6.3 - 6.75 5.8 - 7.25 6.3 - 7.25 5.8 - 8 5.8 - 8 7.8 - 7.25 7.8 - 6.75 7.3 - 6.25 7.8 - 5.5 7.8 - 8.8 7.8 - 8.8 6.6 - 9.1 6.05 - 9.8 5.8 -10.5 6.05 -10.8 6.6 -10.8 7.8 +20750000 12000000 +20000000 12500000 +19000000 12750000 +18000000 12600000 +17000000 12350000 +16000000 12000000 +15000000 11600000 +14000000 11000000 +13000000 10700000 +12000000 10500000 +11000000 10700000 +10000000 11200000 +9000000 12000000 +7000000 13100000 +6000000 13500000 +5000000 13500000 +4000000 13200000 +3000000 12400000 +2000000 11200000 +1300000 10000000 +800000 8000000 +500000 6000000 +600000 4000000 +800000 3000000 +1300000 2000000 +2100000 1000000 +3000000 400000 +4000000 0 +5000000 -100000 +6000000 100000 +8000000 800000 +10000000 1900000 +11000000 2300000 +12000000 2400000 +13000000 2200000 +14000000 1750000 +15000000 1500000 +16000000 1500000 +16750000 1800000 +16000000 2150000 +15000000 3000000 +14150000 4000000 +14000000 5000000 +14400000 5600000 +15000000 5750000 +16000000 5850000 +27000000 5850000 +28000000 5700000 +29000000 5250000 +29800000 4600000 +32000000 5050000 +33000000 5000000 +33750000 4600000 +34500000 4700000 +35300000 5000000 +36000000 5500000 +36250000 6000000 +36100000 6300000 +34100000 7100000 +34200000 7350000 +34400000 7560000 +34400000 7850000 +34200000 7930000 +34000000 7720000 +34000000 7430000 +33900000 7180000 +33300000 7420000 +33400000 7670000 +33600000 7880000 +33600000 8170000 +33400000 8250000 +33200000 8040000 +33200000 7750000 +33100000 7500000 +32500000 7740000 +32600000 7990000 +32800000 8200000 +32800000 8490000 +32600000 8570000 +32400000 8360000 +32400000 8070000 +32300000 7820000 +31700000 8060000 +31800000 8310000 +32000000 8520000 +32000000 8810000 +31800000 8890000 +31600000 8680000 +31600000 8390000 +31500000 8140000 +30900000 8380000 +31000000 8630000 +31200000 8840000 +31200000 9130000 +31000000 9210000 +30800000 9000000 +30800000 8710000 +30700000 8460000 +30100000 8700000 +30200000 8950000 +30400000 9160000 +30400000 9450000 +30200000 9530000 +30000000 9320000 +30000000 9030000 +29900000 8780000 +28600000 9300000 +28200000 9200000 +28100000 7800000 +18000000 7800000 +17000000 7900000 +16300000 8300000 +15850000 9000000 +16200000 10000000 +17000000 10700000 +19000000 11600000 +20000000 11800000 +3000000 6800000 +3300000 7500000 +4000000 7800000 +4700000 7500000 +4000000 6800000 +4700000 6100000 +4000000 5800000 +3300000 6100000 +5500000 5800000 +6250000 5800000 +6250000 6300000 +6750000 5800000 +7250000 6300000 +7250000 5800000 +8000000 5800000 +8000000 7800000 +7250000 7800000 +6750000 7300000 +6250000 7800000 +5500000 7800000 +8800000 7800000 +8800000 6600000 +9100000 6050000 +9800000 5800000 +10500000 6050000 +10800000 6600000 +10800000 7800000 0 1 1 2 2 3 diff --git a/test/CDT.Tests/inputs/hanging3.txt b/test/CDT.Tests/inputs/hanging3.txt index eb6bce4..46d774c 100644 --- a/test/CDT.Tests/inputs/hanging3.txt +++ b/test/CDT.Tests/inputs/hanging3.txt @@ -1,9 +1,9 @@ 7 1 -1534.79 789.063 --785.078 788.629 -789.094 533.067 -1034.16 789.067 -785.067 513.067 -784 664.004 -513.064 789.067 -0 1 \ No newline at end of file +1534790000 789063000 +-785078000 788629000 +789094000 533067000 +1034160000 789067000 +785067000 513067000 +784000000 664004000 +513064000 789067000 +0 1 diff --git a/test/CDT.Tests/inputs/island.txt b/test/CDT.Tests/inputs/island.txt index fd1edab..27ea5ce 100644 --- a/test/CDT.Tests/inputs/island.txt +++ b/test/CDT.Tests/inputs/island.txt @@ -1,99 +1,99 @@ 95 95 -0.35790337 0.38864577 -0.31071450 0.40218492 -0.26291196 0.39019645 -0.21429804 0.38283820 -0.16613300 0.39383360 -0.11818326 0.40414870 -0.08260139 0.37538306 -0.05361811 0.34207291 -0.02510484 0.30843907 -0.00000000 0.27304858 -0.01116075 0.23446584 -0.05253742 0.21147779 -0.08739790 0.18215957 -0.13184782 0.16365548 -0.17678370 0.14569794 -0.20997123 0.11555512 -0.23487661 0.08013357 -0.27428417 0.05577003 -0.30609623 0.02448313 -0.34462248 0.00000000 -0.38499725 0.00703740 -0.41201013 0.04110566 -0.44407198 0.07251598 -0.47554188 0.10433305 -0.48615282 0.14127188 -0.48526458 0.18209454 -0.48934181 0.22286040 -0.51277842 0.25712118 -0.55446391 0.27665125 -0.59998065 0.26611232 -0.63374109 0.23635467 -0.68219858 0.22657993 -0.72344682 0.20595516 -0.76098068 0.18314759 -0.81015186 0.18044212 -0.85789280 0.17704054 -0.90231042 0.15823834 -0.94725198 0.14091650 -0.99263450 0.14300645 -1.00000000 0.18113114 -0.97482369 0.21584709 -0.93601160 0.24166059 -0.89769796 0.26773059 -0.88612883 0.30756282 -0.88036141 0.34822807 -0.86637401 0.38744400 -0.87126547 0.42698375 -0.87836588 0.46738117 -0.86679577 0.50495740 -0.83885184 0.53889814 -0.80885902 0.57161229 -0.77548249 0.60209880 -0.73774132 0.62777801 -0.69229886 0.64485535 -0.64664787 0.66155981 -0.59924870 0.67318904 -0.54986089 0.67381738 -0.50097893 0.66757989 -0.46691922 0.69313520 -0.44449627 0.72973059 -0.40854079 0.75668093 -0.36290331 0.77039793 -0.36624793 0.79505758 -0.37098973 0.82539964 -0.32954240 0.84365456 -0.32368068 0.87731391 -0.36206162 0.90145428 -0.41147458 0.90716326 -0.45332716 0.92956622 -0.50176592 0.93780257 -0.54970945 0.94883030 -0.57634292 0.97479673 -0.53570147 0.98649919 -0.48652917 0.99385804 -0.43997944 0.98533700 -0.40368105 1.00000000 -0.36167108 0.98189826 -0.32369722 0.95572597 -0.28265677 0.93271435 -0.24867592 0.90286457 -0.22284050 0.86781008 -0.22698494 0.82708497 -0.23260900 0.78640307 -0.25654498 0.75174722 -0.29129654 0.72243251 -0.31907943 0.68878353 -0.34391654 0.65324854 -0.37314261 0.62077328 -0.41247022 0.59552654 -0.45405330 0.57278959 -0.46246974 0.53265774 -0.47030304 0.49222005 -0.47073181 0.45153024 -0.44700288 0.41863218 -0.40728793 0.39400451 +357903 388646 +310714 402185 +262912 390196 +214298 382838 +166133 393834 +118183 404149 +82601 375383 +53618 342073 +25105 308439 +0 273049 +11161 234466 +52537 211478 +87398 182160 +131848 163655 +176784 145698 +209971 115555 +234877 80134 +274284 55770 +306096 24483 +344622 0 +384997 7037 +412010 41106 +444072 72516 +475542 104333 +486153 141272 +485265 182095 +489342 222860 +512778 257121 +554464 276651 +599981 266112 +633741 236355 +682199 226580 +723447 205955 +760981 183148 +810152 180442 +857893 177041 +902310 158238 +947252 140916 +992634 143006 +1000000 181131 +974824 215847 +936012 241661 +897698 267731 +886129 307563 +880361 348228 +866374 387444 +871265 426984 +878366 467381 +866796 504957 +838852 538898 +808859 571612 +775482 602099 +737741 627778 +692299 644855 +646648 661560 +599249 673189 +549861 673817 +500979 667580 +466919 693135 +444496 729731 +408541 756681 +362903 770398 +366248 795058 +370990 825400 +329542 843655 +323681 877314 +362062 901454 +411475 907163 +453327 929566 +501766 937803 +549709 948830 +576343 974797 +535701 986499 +486529 993858 +439979 985337 +403681 1000000 +361671 981898 +323697 955726 +282657 932714 +248676 902865 +222840 867810 +226985 827085 +232609 786403 +256545 751747 +291297 722433 +319079 688784 +343917 653249 +373143 620773 +412470 595527 +454053 572790 +462470 532658 +470303 492220 +470732 451530 +447003 418632 +407288 394005 0 1 1 2 2 3 @@ -188,4 +188,4 @@ 91 92 92 93 93 94 -94 0 \ No newline at end of file +94 0 diff --git a/test/CDT.Tests/inputs/issue-142-double-hanging-edge.txt b/test/CDT.Tests/inputs/issue-142-double-hanging-edge.txt index 2efe695..ce1a7e1 100644 --- a/test/CDT.Tests/inputs/issue-142-double-hanging-edge.txt +++ b/test/CDT.Tests/inputs/issue-142-double-hanging-edge.txt @@ -1,19 +1,19 @@ -9 9 -2.7145555 -1.5168651 -2.5013921 -1.39569 -3.0311139 -1.6827598 -2.7610707 -1.5269606 -2.7745042 -1.5207595 -2.8049774 -1.4492451 -4.2982483 -2.210517 -2.8477705 -1.6077808 -2.3252072 -1.3108287 -0 1 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 0 \ No newline at end of file +9 9 +2714556 -1516865 +2501392 -1395690 +3031114 -1682760 +2761071 -1526961 +2774504 -1520760 +2804977 -1449245 +4298248 -2210517 +2847770 -1607781 +2325207 -1310829 +0 1 +1 2 +2 3 +3 4 +4 5 +5 6 +6 7 +7 8 +8 0 diff --git a/test/CDT.Tests/inputs/issue-148-crossing-edges.txt b/test/CDT.Tests/inputs/issue-148-crossing-edges.txt index 2b5be15..e61c23a 100644 --- a/test/CDT.Tests/inputs/issue-148-crossing-edges.txt +++ b/test/CDT.Tests/inputs/issue-148-crossing-edges.txt @@ -1,9 +1,9 @@ 6 2 -0 0.2 -1 0 -1 1 -0 1 -0.5 0.2 -0.8 0.5 +0 200000 +1000000 0 +1000000 1000000 +0 1000000 +500000 200000 +800000 500000 0 2 -1 3 \ No newline at end of file +1 3 diff --git a/test/CDT.Tests/inputs/issue-42-full-boundary-overlap.txt b/test/CDT.Tests/inputs/issue-42-full-boundary-overlap.txt index 0471e62..83083be 100644 --- a/test/CDT.Tests/inputs/issue-42-full-boundary-overlap.txt +++ b/test/CDT.Tests/inputs/issue-42-full-boundary-overlap.txt @@ -1,16 +1,16 @@ 12 16 0 0 -1 0 -1 1 -0 1 -0.25 0.25 -0.75 0.25 -0.75 0.75 -0.25 0.75 -0.4 0.4 -0.6 0.4 -0.6 0.6 -0.4 0.6 +1000000 0 +1000000 1000000 +0 1000000 +250000 250000 +750000 250000 +750000 750000 +250000 750000 +400000 400000 +600000 400000 +600000 600000 +400000 600000 0 1 1 2 2 3 @@ -26,4 +26,4 @@ 8 9 9 10 10 11 -11 8 \ No newline at end of file +11 8 diff --git a/test/CDT.Tests/inputs/issue-42-hole-overlaps-bondary.txt b/test/CDT.Tests/inputs/issue-42-hole-overlaps-bondary.txt index 5888c39..4d46540 100644 --- a/test/CDT.Tests/inputs/issue-42-hole-overlaps-bondary.txt +++ b/test/CDT.Tests/inputs/issue-42-hole-overlaps-bondary.txt @@ -1,12 +1,12 @@ 8 8 0 0 -2 0 -2 3 -0 3 -0.5 0 -1.5 0 -1.5 1 -0.5 1 +2000000 0 +2000000 3000000 +0 3000000 +500000 0 +1500000 0 +1500000 1000000 +500000 1000000 0 1 1 2 2 3 @@ -14,4 +14,4 @@ 4 5 5 6 6 7 -7 4 \ No newline at end of file +7 4 diff --git a/test/CDT.Tests/inputs/issue-42-multiple-boundary-overlaps-conform-to-edge.txt b/test/CDT.Tests/inputs/issue-42-multiple-boundary-overlaps-conform-to-edge.txt index 037282f..5cc5a3d 100644 --- a/test/CDT.Tests/inputs/issue-42-multiple-boundary-overlaps-conform-to-edge.txt +++ b/test/CDT.Tests/inputs/issue-42-multiple-boundary-overlaps-conform-to-edge.txt @@ -1,20 +1,20 @@ 16 20 0 0 -2 0 -2 3 -0 3 -0.6 0 -1.4 0 -1.4 0.75 -0.6 0.75 -0.75 0 -1.25 0 -1.25 0.7 -0.75 0.7 -0.9 0 -1.1 0 -1.1 0.4 -0.9 0.4 +2000000 0 +2000000 3000000 +0 3000000 +600000 0 +1400000 0 +1400000 750000 +600000 750000 +750000 0 +1250000 0 +1250000 700000 +750000 700000 +900000 0 +1100000 0 +1100000 400000 +900000 400000 0 1 1 2 2 3 @@ -34,4 +34,4 @@ 12 13 13 14 14 15 -15 12 \ No newline at end of file +15 12 diff --git a/test/CDT.Tests/inputs/issue-42-multiple-boundary-overlaps.txt b/test/CDT.Tests/inputs/issue-42-multiple-boundary-overlaps.txt index d394983..73c0e4b 100644 --- a/test/CDT.Tests/inputs/issue-42-multiple-boundary-overlaps.txt +++ b/test/CDT.Tests/inputs/issue-42-multiple-boundary-overlaps.txt @@ -1,20 +1,20 @@ 16 16 0 0 -2 0 -2 3 -0 3 -0.5 0 -1.5 0 -1.5 1 -0.5 1 -0.75 0 -1.25 0 -1.25 0.7 -0.75 0.7 -0.9 0 -1.1 0 -1.1 0.4 -0.9 0.4 +2000000 0 +2000000 3000000 +0 3000000 +500000 0 +1500000 0 +1500000 1000000 +500000 1000000 +750000 0 +1250000 0 +1250000 700000 +750000 700000 +900000 0 +1100000 0 +1100000 400000 +900000 400000 0 1 1 2 2 3 @@ -30,4 +30,4 @@ 12 13 13 14 14 15 -15 12 \ No newline at end of file +15 12 diff --git a/test/CDT.Tests/inputs/issue-65-wrong-edges.txt b/test/CDT.Tests/inputs/issue-65-wrong-edges.txt index cb3cd0b..ace05a2 100644 --- a/test/CDT.Tests/inputs/issue-65-wrong-edges.txt +++ b/test/CDT.Tests/inputs/issue-65-wrong-edges.txt @@ -1,4 +1,4 @@ 3 0 -1 0 -0 0.251 --1 0 \ No newline at end of file +1000000 0 +0 251000 +-1000000 0 diff --git a/test/CDT.Tests/inputs/kidney.txt b/test/CDT.Tests/inputs/kidney.txt index e2589d0..99dbb10 100644 --- a/test/CDT.Tests/inputs/kidney.txt +++ b/test/CDT.Tests/inputs/kidney.txt @@ -1,54 +1,54 @@ 50 50 -0.6814 1.2932 -0.7148 1.2004 -0.7574 1.1074 -0.8143 1.0178 -0.8963 0.9360 -0.9825 0.8672 -1.0713 0.8072 -1.1610 0.7660 -1.2482 0.7350 -1.3416 0.7122 -1.4344 0.6954 -1.5202 0.6852 -1.6132 0.6802 -1.7064 0.6802 -1.7994 0.6946 -1.8926 0.7160 -1.9848 0.7412 -2.0780 0.7758 -2.1706 0.8178 -2.2616 0.8718 -2.3498 0.9444 -2.4318 1.0256 -2.5044 1.1130 -2.5600 1.1984 -2.5896 1.2914 -2.6132 1.3848 -2.6294 1.4774 -2.5998 1.5688 -2.5333 1.6370 -2.4400 1.6230 -2.3494 1.5844 -2.2576 1.5308 -2.1664 1.4872 -2.0820 1.4402 -1.9928 1.4052 -1.8996 1.3756 -1.8068 1.3492 -1.7136 1.3342 -1.6208 1.3278 -1.5274 1.3264 -1.4346 1.3384 -1.3414 1.3596 -1.2484 1.3860 -1.1556 1.4258 -1.0634 1.4642 -0.9744 1.5058 -0.8816 1.5464 -0.7882 1.5496 -0.7046 1.4790 -0.6890 1.3860 +681400 1293200 +714800 1200400 +757400 1107400 +814300 1017800 +896300 936000 +982500 867200 +1071300 807200 +1161000 766000 +1248200 735000 +1341600 712200 +1434400 695400 +1520200 685200 +1613200 680200 +1706400 680200 +1799400 694600 +1892600 716000 +1984800 741200 +2078000 775800 +2170600 817800 +2261600 871800 +2349800 944400 +2431800 1025600 +2504400 1113000 +2560000 1198400 +2589600 1291400 +2613200 1384800 +2629400 1477400 +2599800 1568800 +2533300 1637000 +2440000 1623000 +2349400 1584400 +2257600 1530800 +2166400 1487200 +2082000 1440200 +1992800 1405200 +1899600 1375600 +1806800 1349200 +1713600 1334200 +1620800 1327800 +1527400 1326400 +1434600 1338400 +1341400 1359600 +1248400 1386000 +1155600 1425800 +1063400 1464200 +974400 1505800 +881600 1546400 +788200 1549600 +704600 1479000 +689000 1386000 0 1 1 2 2 3 @@ -98,4 +98,4 @@ 46 47 47 48 48 49 -49 0 \ No newline at end of file +49 0 diff --git a/test/CDT.Tests/inputs/overlapping constraints.txt b/test/CDT.Tests/inputs/overlapping constraints.txt index 79ba16a..1e27ff0 100644 --- a/test/CDT.Tests/inputs/overlapping constraints.txt +++ b/test/CDT.Tests/inputs/overlapping constraints.txt @@ -1,12 +1,12 @@ 8 8 -40.8 -2.8 -38 0 -38 2 -40.8 4.8 -40.8 5.2 -38 8 -38 10 -40.8 12.8 +40800000 -2800000 +38000000 0 +38000000 2000000 +40800000 4800000 +40800000 5200000 +38000000 8000000 +38000000 10000000 +40800000 12800000 0 1 1 2 2 3 @@ -14,4 +14,4 @@ 4 5 5 6 6 7 -7 0 \ No newline at end of file +7 0 diff --git a/test/CDT.Tests/inputs/overlapping constraints2.txt b/test/CDT.Tests/inputs/overlapping constraints2.txt index 8f676b2..8f62aa0 100644 --- a/test/CDT.Tests/inputs/overlapping constraints2.txt +++ b/test/CDT.Tests/inputs/overlapping constraints2.txt @@ -1,13 +1,13 @@ 6 6 - 10 0 - 0 10 --10 0 - 0 -10 - -5 0 - 5 0 +10000000 0 +0 10000000 +-10000000 0 +0 -10000000 +-5000000 0 +5000000 0 0 1 1 2 2 3 3 0 2 5 -4 0 \ No newline at end of file +4 0 diff --git a/test/CDT.Tests/inputs/points_on_constraint_edge.txt b/test/CDT.Tests/inputs/points_on_constraint_edge.txt index f8f328d..9072cec 100644 --- a/test/CDT.Tests/inputs/points_on_constraint_edge.txt +++ b/test/CDT.Tests/inputs/points_on_constraint_edge.txt @@ -1,14 +1,14 @@ 12 1 -0 1 -2 2 -4 2 -2 0 -4 0 -6 1 -8 1 -10 2 -12 2 -10 0 -12 0 -14 1 -0 11 \ No newline at end of file +0 1000000 +2000000 2000000 +4000000 2000000 +2000000 0 +4000000 0 +6000000 1000000 +8000000 1000000 +10000000 2000000 +12000000 2000000 +10000000 0 +12000000 0 +14000000 1000000 +0 11 diff --git a/test/CDT.Tests/inputs/regression_issue_38_wrong_hull_small.txt b/test/CDT.Tests/inputs/regression_issue_38_wrong_hull_small.txt index 669f636..c05028a 100644 --- a/test/CDT.Tests/inputs/regression_issue_38_wrong_hull_small.txt +++ b/test/CDT.Tests/inputs/regression_issue_38_wrong_hull_small.txt @@ -1,7 +1,7 @@ 6 0 -0.15147567518991 -5.144230291488 -0.10442 -5.06098 -0.1228735248885 -5.12897066233 -0.1322969035965 -5.141286788425 -0.115882234089 -5.115648852375 -0.13262891777369 -5.119598039304 \ No newline at end of file +151476 -5144230 +104420 -5060980 +122874 -5128971 +132297 -5141287 +115882 -5115649 +132629 -5119598 diff --git a/test/CDT.Tests/inputs/square with crack.txt b/test/CDT.Tests/inputs/square with crack.txt index 0f27079..0db7512 100644 --- a/test/CDT.Tests/inputs/square with crack.txt +++ b/test/CDT.Tests/inputs/square with crack.txt @@ -1,15 +1,15 @@ 7 7 0 0 -1 0 -1 1 -0.5001 1 -0.5 0.5 -0.49990 1 -0 1 +1000000 0 +1000000 1000000 +500100 1000000 +500000 500000 +499900 1000000 +0 1000000 0 1 1 2 2 3 3 4 4 5 5 6 -6 0 \ No newline at end of file +6 0 diff --git a/test/CDT.Tests/inputs/test_data_small.txt b/test/CDT.Tests/inputs/test_data_small.txt index 494dc90..b4179ac 100644 --- a/test/CDT.Tests/inputs/test_data_small.txt +++ b/test/CDT.Tests/inputs/test_data_small.txt @@ -1,103 +1,103 @@ 100 2 --0.41414952969857699 0.34601294687436046 --0.184265425880342 -0.9735160681136048 -0.64332111944165637 -0.87469596191903165 --0.1432874479564209 0.42728204148483218 --0.61595272293842918 -0.23528214201115394 --0.8983888399947908 0.087362471233457528 --0.55489021495723601 0.2577637204263501 -0.59293899248962778 -0.76323795791137017 -0.69054099721927842 0.25734471839011674 -0.32863926918611486 -0.54335056703189233 --0.29602205079629951 -0.11261544492933095 --0.77864889311269836 0.16895522512175232 --0.085578584697364013 -0.59196541414553505 --0.30355856625916167 -0.4631655559610085 --0.49249029591937066 0.24616369894559065 --0.49705720454960323 -0.25666564855470242 -0.51627853106516963 -0.34340485249502084 -0.3791823409353301 -0.62769297712688754 --0.84657210671303695 -0.68139814094612894 -0.9970658516197286 0.76920191870577725 -0.86873761374291458 0.85407575352113585 --0.3933100956582114 -0.69609356439408665 --0.86568332622217448 0.85516401814179877 -0.67604782118641782 -0.90484400221132555 --0.69733825506538172 0.29303001356625136 -0.59507020879166039 0.54269624530985516 --0.67242767831213857 0.32323632074786701 -0.68676461415893897 0.92223693760703984 -0.024204534728356597 0.72710857274664198 -0.67018626314518959 0.7123317632201609 -0.17099618946651729 0.58411261222272381 --0.54815403663436868 -0.52906121179054078 -0.14975335006984247 0.75474748715521867 --0.68469189982754719 0.83995530708667099 -0.27072977723967351 0.63524118283318032 -0.92946801002465085 0.44423479502921559 -0.73499582356535953 0.11070577402197679 -0.31515678479410747 0.1026294789194877 -0.76360676386349602 -0.21834470624800473 -0.10669818885872595 -0.44227586712505673 --0.35446282621916847 0.58778035974069298 --0.52738383690710611 -0.5360440001768062 -0.59549369112011585 -0.27768786631727915 --0.19429328897022047 -0.42026979316505253 -0.40085020700336549 0.29129815721287433 --0.35227865861330543 0.70558763771941457 --0.64734387621324141 0.25986563253861727 -0.73164093533795849 0.95985042104104812 -0.66832073504614153 -0.40516599365189654 -0.52520332082485677 -0.52943845498689601 --0.73707554930838548 0.49695206303281836 -0.10770489468135414 0.93163180358721398 -0.73686836001924916 0.97695877739735271 -0.70759404620555011 -0.47582366470256532 -0.40578491861977373 -0.86781462696767031 --0.91706920435081396 0.47939995535020552 --0.30743139150410348 -0.48246979048679195 -0.9081370577745389 -0.52899973720381488 -0.82234976594361764 0.98220077091295277 -0.061621868844011329 -0.88293190912996522 -0.35651480219957965 0.029205086428567339 --0.25515044639450335 0.77648614452669196 -0.78231863496457055 0.075165001645172591 --0.59960090511623987 -0.45726838129474401 -0.62409805869634405 -0.076075710823128251 --0.1999165947341911 -0.82003897598179498 --0.17853941479386914 -0.65291463501476965 --0.95721075461739269 0.71208135706372877 -0.3234731641041293 -0.68419501299736019 --0.91851942140518261 -0.98408417905533285 -0.78936876293285407 0.37784010049059624 -0.99111000777823377 0.90488413187833538 --0.91923557597804995 -0.75676291593621037 --0.48933567222177132 0.68716589416272522 --0.86315411479449611 0.74709200166340306 --0.16540298990964308 0.35327130014363561 --0.46072066293673719 -0.64673396057841137 -0.16874004527953823 -0.065165643040005161 --0.32430222765028294 -0.38674177350980055 --0.6247559879529454 0.22306054597926228 --0.67397013556712637 -0.69546623727089996 -0.54082247675300699 -0.2800355340973657 --0.44896904077516941 0.16190798284516306 --0.98422501107473859 0.38339495671284451 -0.75609920741821646 0.89247304067833766 -0.55932780533237603 0.067998567460857418 -0.64356764619443596 0.46632962376662435 --0.31849045003709431 0.32835188523257952 -0.30189173155868354 0.39958284080490802 --0.6527933709055489 0.94690172420529173 -0.34708425512843721 -0.49264324563579331 --0.38529783300898102 -0.64935216409294272 --0.5841174651163018 0.60896561266037197 -0.40473601855400609 0.77087733645901535 -0.31283677299033075 -0.47051293371999925 -0.31644978804295332 0.98932031668008324 -0.79266693290800583 0.093045907750335388 --0.037822879392966691 0.61657807876708004 --0.20950471959349992 -0.43455471328321194 --0.74215801005158055 -0.26243177101508841 +-414150 346013 +-184265 -973516 +643321 -874696 +-143287 427282 +-615953 -235282 +-898389 87362 +-554890 257764 +592939 -763238 +690541 257345 +328639 -543351 +-296022 -112615 +-778649 168955 +-85579 -591965 +-303559 -463166 +-492490 246164 +-497057 -256666 +516279 -343405 +379182 -627693 +-846572 -681398 +997066 769202 +868738 854076 +-393310 -696094 +-865683 855164 +676048 -904844 +-697338 293030 +595070 542696 +-672428 323236 +686765 922237 +24205 727109 +670186 712332 +170996 584113 +-548154 -529061 +149753 754747 +-684692 839955 +270730 635241 +929468 444235 +734996 110706 +315157 102629 +763607 -218345 +106698 -442276 +-354463 587780 +-527384 -536044 +595494 -277688 +-194293 -420270 +400850 291298 +-352279 705588 +-647344 259866 +731641 959850 +668321 -405166 +525203 -529438 +-737076 496952 +107705 931632 +736868 976959 +707594 -475824 +405785 -867815 +-917069 479400 +-307431 -482470 +908137 -529000 +822350 982201 +61622 -882932 +356515 29205 +-255150 776486 +782319 75165 +-599601 -457268 +624098 -76076 +-199917 -820039 +-178539 -652915 +-957211 712081 +323473 -684195 +-918519 -984084 +789369 377840 +991110 904884 +-919236 -756763 +-489336 687166 +-863154 747092 +-165403 353271 +-460721 -646734 +168740 -65166 +-324302 -386742 +-624756 223061 +-673970 -695466 +540822 -280036 +-448969 161908 +-984225 383395 +756099 892473 +559328 67999 +643568 466330 +-318490 328352 +301892 399583 +-652793 946902 +347084 -492643 +-385298 -649352 +-584117 608966 +404736 770877 +312837 -470513 +316450 989320 +792667 93046 +-37823 616578 +-209505 -434555 +-742158 -262432 43 50 -43 92 \ No newline at end of file +43 92 diff --git a/test/CDT.Tests/inputs/triple-hanging-flipped.txt b/test/CDT.Tests/inputs/triple-hanging-flipped.txt index 564ced8..c68a2e2 100644 --- a/test/CDT.Tests/inputs/triple-hanging-flipped.txt +++ b/test/CDT.Tests/inputs/triple-hanging-flipped.txt @@ -1,10 +1,10 @@ 8 1 -0 -40 -20 -37 -30 -43 -40 -37 -60 -40 -30 -45 -30 -48 -30 -55 -0 4 \ No newline at end of file +0 -40000000 +20000000 -37000000 +30000000 -43000000 +40000000 -37000000 +60000000 -40000000 +30000000 -45000000 +30000000 -48000000 +30000000 -55000000 +0 4 diff --git a/test/CDT.Tests/inputs/triple-hanging.txt b/test/CDT.Tests/inputs/triple-hanging.txt index 98d9fbd..d439467 100644 --- a/test/CDT.Tests/inputs/triple-hanging.txt +++ b/test/CDT.Tests/inputs/triple-hanging.txt @@ -1,10 +1,10 @@ 8 1 -0 40 -20 37 -30 43 -40 37 -60 40 -30 45 -30 48 -30 55 -0 4 \ No newline at end of file +0 40000000 +20000000 37000000 +30000000 43000000 +40000000 37000000 +60000000 40000000 +30000000 45000000 +30000000 48000000 +30000000 55000000 +0 4 diff --git a/test/CDT.Tests/inputs/unit square.txt b/test/CDT.Tests/inputs/unit square.txt index 61d3ecd..56ee059 100644 --- a/test/CDT.Tests/inputs/unit square.txt +++ b/test/CDT.Tests/inputs/unit square.txt @@ -1,9 +1,9 @@ 4 4 0 0 -1 0 -1 1 -0 1 +1000000 0 +1000000 1000000 +0 1000000 0 1 1 2 2 3 -3 0 \ No newline at end of file +3 0 diff --git a/test/CDT.Tests/xunit.runner.json b/test/CDT.Tests/xunit.runner.json index b71b4d7..f56c48b 100644 --- a/test/CDT.Tests/xunit.runner.json +++ b/test/CDT.Tests/xunit.runner.json @@ -1,8 +1,8 @@ { + "parallelizeAssembly": true, "parallelizeTestCollections": true, "methodDisplay": "method", "preEnumerateTheories": true, "maxParallelThreads": 24, - "diagnosticMessages": false, - "methodDisplayOptions": "All" + "diagnosticMessages": false } diff --git a/viz/CDT.Viz/MainWindow.xaml.cs b/viz/CDT.Viz/MainWindow.xaml.cs index a021330..ee2b5dd 100644 --- a/viz/CDT.Viz/MainWindow.xaml.cs +++ b/viz/CDT.Viz/MainWindow.xaml.cs @@ -19,7 +19,7 @@ internal sealed class TriangulationVisual : FrameworkElement // ----------------------------------------------------------------------- // Rendering data – set by MainWindow, then InvalidateVisual() is called // ----------------------------------------------------------------------- - public List> Vertices { get; set; } = []; + public List Vertices { get; set; } = []; public List Triangles { get; set; } = []; public HashSet FixedEdges { get; set; } = []; public bool ShowSuperTriangle { get; set; } // DontFinalize mode @@ -61,7 +61,7 @@ private static Pen MakePen(Color c, double thickness) // ----------------------------------------------------------------------- // Scene ↔ screen coordinate helpers // ----------------------------------------------------------------------- - public Point SceneToScreen(V2d v) + public Point SceneToScreen(V2i v) { double cx = ActualWidth / 2.0; double cy = ActualHeight / 2.0; @@ -70,13 +70,14 @@ public Point SceneToScreen(V2d v) -Scale * v.Y + cy + Translation.Y); } - public V2d ScreenToScene(Point pt) + // Returns double coords for display purposes only (coordinate readout label) + public (double X, double Y) ScreenToScene(Point pt) { double cx = ActualWidth / 2.0; double cy = ActualHeight / 2.0; double sx = (pt.X - Translation.X - cx) / Scale; double sy = -(pt.Y - Translation.Y - cy) / Scale; - return new V2d(sx, sy); + return (sx, sy); } // ----------------------------------------------------------------------- @@ -153,7 +154,7 @@ protected override void OnRender(DrawingContext dc) } } - private Point Centroid(V2d a, V2d b, V2d c) + private Point Centroid(V2i a, V2i b, V2i c) { var pa = SceneToScreen(a); var pb = SceneToScreen(b); @@ -161,7 +162,7 @@ private Point Centroid(V2d a, V2d b, V2d c) return new Point((pa.X + pb.X + pc.X) / 3, (pa.Y + pb.Y + pc.Y) / 3); } - private void DrawLabel(DrawingContext dc, string text, V2d v, Brush brush, double size) + private void DrawLabel(DrawingContext dc, string text, V2i v, Brush brush, double size) => DrawLabel(dc, text, SceneToScreen(v), brush, size); private void DrawLabel(DrawingContext dc, string text, Point pt, Brush brush, double size) @@ -179,9 +180,9 @@ public partial class MainWindow : Window // ----------------------------------------------------------------------- // Fields // ----------------------------------------------------------------------- - private List> _loadedPoints = []; + private List _loadedPoints = []; private List _loadedEdges = []; - private Triangulation? _cdt; + private Triangulation? _cdt; private readonly TriangulationVisual _visual = new(); @@ -256,8 +257,11 @@ private void GenerateRandom_Click(object sender, RoutedEventArgs e) { if (!int.TryParse(RandomCount.Text, out int n) || n <= 0) n = 100; var rng = new Random(); + // Scale to integer coordinates in range [-100000, 100000] _loadedPoints = Enumerable.Range(0, n) - .Select(_ => new V2d(rng.NextDouble() * 200 - 100, rng.NextDouble() * 200 - 100)) + .Select(_ => new V2i( + (long)(rng.NextDouble() * 200_000 - 100_000), + (long)(rng.NextDouble() * 200_000 - 100_000))) .ToList(); _loadedEdges = []; FileList.SelectionChanged -= FileList_SelectionChanged; @@ -329,19 +333,19 @@ private void LoadFromPath(string path) } } - private static (List> pts, List edges) ReadInput(string path) + private static (List pts, List edges) ReadInput(string path) { using var sr = new StreamReader(path); var first = sr.ReadLine()!.Trim().Split(' ', StringSplitOptions.RemoveEmptyEntries); int nPts = int.Parse(first[0]); int nEdges = int.Parse(first[1]); - var pts = new List>(nPts); + var pts = new List(nPts); for (int i = 0; i < nPts; i++) { var tok = sr.ReadLine()!.Trim().Split(' ', StringSplitOptions.RemoveEmptyEntries); - pts.Add(new V2d( - double.Parse(tok[0], CultureInfo.InvariantCulture), - double.Parse(tok[1], CultureInfo.InvariantCulture))); + pts.Add(new V2i( + (long)double.Parse(tok[0], CultureInfo.InvariantCulture), + (long)double.Parse(tok[1], CultureInfo.InvariantCulture))); } var edges = new List(nEdges); for (int i = 0; i < nEdges; i++) @@ -409,15 +413,15 @@ private void Rebuild() var strategy = IntersectingEdges.SelectedIndex == 1 ? IntersectingConstraintEdges.NotAllowed : IntersectingConstraintEdges.TryResolve; - double minDist = double.TryParse(MinDist.Text, NumberStyles.Float, CultureInfo.InvariantCulture, out double md) ? md : 1e-6; + long snapTolerance = long.TryParse(MinDist.Text, out long st) ? st : 0L; bool fixDups = FixDuplicates.IsChecked == true; bool conforming = TriangulationType.SelectedIndex == 1; - _cdt = new Triangulation(order, strategy, minDist); + _cdt = new Triangulation(order, strategy, snapTolerance); try { - var workPts = new List>(pts); + var workPts = new List(pts); List workEdges; if (fixDups) @@ -479,8 +483,8 @@ private void FitView() { if (_loadedPoints.Count == 0) return; - double minX = _loadedPoints.Min(v => v.X), maxX = _loadedPoints.Max(v => v.X); - double minY = _loadedPoints.Min(v => v.Y), maxY = _loadedPoints.Max(v => v.Y); + double minX = _loadedPoints.Min(v => (double)v.X), maxX = _loadedPoints.Max(v => (double)v.X); + double minY = _loadedPoints.Min(v => (double)v.Y), maxY = _loadedPoints.Max(v => (double)v.Y); double cx = (minX + maxX) / 2, cy = (minY + maxY) / 2; double dx = maxX - minX, dy = maxY - minY; if (dx == 0) dx = 1; @@ -506,7 +510,6 @@ private void Canvas_MouseWheel(object sender, MouseWheelEventArgs e) var pos = e.GetPosition(_visual); // Zoom toward mouse cursor - double oldScale = _visual.Scale; _visual.Scale *= factor; double cx = _visual.ActualWidth / 2.0; @@ -547,8 +550,8 @@ private void Canvas_MouseMove(object sender, MouseEventArgs e) private void UpdateCoordLabel(Point screenPt) { - var scene = _visual.ScreenToScene(screenPt); - CoordLabel.Text = FormattableString.Invariant($"x={scene.X:F4} y={scene.Y:F4}"); + var (sx, sy) = _visual.ScreenToScene(screenPt); + CoordLabel.Text = FormattableString.Invariant($"x={sx:F4} y={sy:F4}"); } // -----------------------------------------------------------------------