From 189f56075c97c957537bedbb9399e07cfbe657be Mon Sep 17 00:00:00 2001 From: igerber Date: Sun, 19 Apr 2026 18:55:20 -0400 Subject: [PATCH 1/8] Phase 1c: Bias-corrected local-linear CI (CCT 2014) Port nprobust::lprobust's single-eval-point path (lprobust.R:177-246) as the foundation for paper Equation 8: - diff_diff/_nprobust_port.py: add `lprobust()` + `LprobustResult`. Uses the Calonico-Cattaneo-Titiunik (2014) bias-combined design matrix `Q.q` to produce classical and bias-corrected point estimates along with naive and robust (CCT 2014) standard errors in a single pass. - diff_diff/local_linear.py: add `bias_corrected_local_linear()` + `BiasCorrectedFit`. Public wrapper returns the mu-scale CI `[tau.bc +/- z_{1-alpha/2} * se.rb]`. Auto-bandwidth path delegates to `mse_optimal_bandwidth` and honors nprobust's rho=1 default (b = h). Also extracts shared `_validate_had_inputs` helper from Phase 1b. - benchmarks/R/generate_nprobust_lprobust_golden.R + golden JSON: 5 DGPs (Uniform, Beta(2,2), half-normal, clustered, shifted-boundary); R's z = qnorm(1-alpha/2) exported so Python skips ppf and matches bit-wise on CI arithmetic. - Tests: TestLprobustSingleEval (8 port-level) + test_bias_corrected_lprobust (29 wrapper-level). Tiered tolerances per plan: 1e-12 on tau/se, 1e-13 on CI bounds; clustered DGP 4 hits bit-parity (1e-14). Known deviations from nprobust (in REGISTRY.md): hc2/hc3 + cluster raises (nprobust silently accepts); clustered DGP 4 uses manual h=b=0.3 to sidestep an nprobust-internal singleton-cluster bug. Co-Authored-By: Claude Opus 4.7 (1M context) --- TODO.md | 5 + .../R/generate_nprobust_lprobust_golden.R | 163 +++++ benchmarks/data/nprobust_lprobust_golden.json | 119 ++++ diff_diff/__init__.py | 5 + diff_diff/_nprobust_port.py | 361 +++++++++++ diff_diff/local_linear.py | 590 ++++++++++++++---- docs/methodology/REGISTRY.md | 4 +- tests/test_bias_corrected_lprobust.py | 420 +++++++++++++ tests/test_nprobust_port.py | 196 ++++++ 9 files changed, 1751 insertions(+), 112 deletions(-) create mode 100644 benchmarks/R/generate_nprobust_lprobust_golden.R create mode 100644 benchmarks/data/nprobust_lprobust_golden.json create mode 100644 tests/test_bias_corrected_lprobust.py diff --git a/TODO.md b/TODO.md index 8cc3475c..f3876d5d 100644 --- a/TODO.md +++ b/TODO.md @@ -86,6 +86,11 @@ Deferred items from PR reviews that were not addressed before merge. | `compute_synthetic_weights` backend algorithm mismatch: Rust path uses Frank-Wolfe (`_rust_synthetic_weights` in `utils.py:1184`); Python fallback uses projected gradient descent (`_compute_synthetic_weights_numpy` in `utils.py:1228`). Both solve the same constrained QP but converge to different simplex vertices on near-degenerate / extreme-scale inputs (e.g. `Y~1e9`, or near-singular `Y'Y`). Unified backend (one algorithm) would close the parity gap surfaced by audit finding #22. Two `@pytest.mark.xfail(strict=True)` tests in `tests/test_rust_backend.py::TestSyntheticWeightsBackendParity` baseline the divergence so we notice when/if the algorithms align. | `utils.py`, `rust/` | follow-up | Medium | | TROP Rust vs Python grid-search divergence on rank-deficient Y: on two near-parallel control units, LOOCV grid-search ATT diverges ~6% between Rust (`trop_global.py:688`) and Python fallback (`trop_global.py:753`). Either grid-winner ties are broken differently or the per-λ solver reaches different stationary points under rank deficiency. Audit finding #23 flagged this surface. `@pytest.mark.xfail(strict=True)` in `tests/test_rust_backend.py::TestTROPRustEdgeCaseParity::test_grid_search_rank_deficient_Y` baselines the gap. | `trop_global.py`, `rust/` | follow-up | Medium | | TROP Rust vs Python bootstrap SE divergence under fixed seed: `seed=42` on a tiny panel produces ~28% bootstrap-SE gap. Root cause: Rust bootstrap uses its own RNG (`rand` crate) while Python uses `numpy.random.default_rng`; same seed value maps to different bytestreams across backends. Audit axis-H (RNG/seed) adjacent. `@pytest.mark.xfail(strict=True)` in `tests/test_rust_backend.py::TestTROPRustEdgeCaseParity::test_bootstrap_seed_reproducibility` baselines the gap. Unifying RNG (threading a numpy-generated seed-sequence into Rust, or porting Python to ChaCha) would close it. | `trop_global.py`, `rust/` | follow-up | Medium | +| `bias_corrected_local_linear`: extend golden parity to `kernel="triangular"` and `kernel="uniform"` (currently epa-only; all three kernels share `kernel_W` and the `lprobust` math, so parity is expected but not separately asserted). | `benchmarks/R/generate_nprobust_lprobust_golden.R`, `tests/test_bias_corrected_lprobust.py` | Phase 1c | Low | +| `bias_corrected_local_linear`: extend golden parity to `vce in {"hc0", "hc1", "hc2", "hc3"}`. The port supports all four via `lprobust_res`'s hc branches but Phase 1c golden-tested only `vce="nn"`. | `benchmarks/R/generate_nprobust_lprobust_golden.R`, `tests/test_bias_corrected_lprobust.py` | Phase 1c | Low | +| `bias_corrected_local_linear`: support `weights=` once survey-design adaptation lands. nprobust's `lprobust` has no weight argument so there is no parity anchor; derivation needed. | `diff_diff/local_linear.py`, `diff_diff/_nprobust_port.py::lprobust` | Phase 1c | Medium | +| `bias_corrected_local_linear`: support multi-eval grid (`neval > 1`) with cross-covariance (`covgrid=TRUE` branch of `lprobust.R:253-378`). Not needed for HAD but useful for multi-dose diagnostics. | `diff_diff/_nprobust_port.py::lprobust` | Phase 1c | Low | +| Clustered-DGP parity: Phase 1c's DGP 4 uses manual `h=b=0.3` to sidestep an nprobust-internal singleton-cluster bug in `lpbwselect.mse.dpi`'s pilot fits. Once nprobust ships a fix (or we derive one independently), add a clustered-auto-bandwidth parity test. | `benchmarks/R/generate_nprobust_lprobust_golden.R` | Phase 1c | Low | #### Performance diff --git a/benchmarks/R/generate_nprobust_lprobust_golden.R b/benchmarks/R/generate_nprobust_lprobust_golden.R new file mode 100644 index 00000000..b5995669 --- /dev/null +++ b/benchmarks/R/generate_nprobust_lprobust_golden.R @@ -0,0 +1,163 @@ +# Generate nprobust lprobust golden values for the Phase 1c parity suite. +# +# This script calls nprobust::lprobust() at a single eval point with +# bwselect="mse-dpi" on five deterministic DGPs and records: +# - tau.cl, tau.bc (point estimates) +# - se.cl, se.rb (standard errors) +# - h, b (bandwidths chosen by the mse-dpi selector) +# - N (observations in the selected kernel window) +# - z = qnorm(1 - alpha/2) +# - ci_low, ci_high = tau.bc +/- z * se.rb +# +# DGPs 1-3 reuse the same seed + shape as benchmarks/R/generate_nprobust_golden.R +# so the selected (h, b) are identical; Phase 1c parity is therefore isolated +# to the point-estimate + variance computation. DGP 4 adds cluster IDs for +# cluster-robust SE parity; DGP 5 shifts the support to test a non-zero +# boundary (Design 1 continuous-near-d_lower). +# +# Usage: +# Rscript benchmarks/R/generate_nprobust_lprobust_golden.R +# +# Requirements: +# nprobust (CRAN), jsonlite +# +# Output: +# benchmarks/data/nprobust_lprobust_golden.json +# +# Phase 1c of the HeterogeneousAdoptionDiD implementation (de Chaisemartin, +# Ciccia, D'Haultfoeuille & Knau 2026, arXiv:2405.04465v6). Python tests at +# tests/test_bias_corrected_lprobust.py and tests/test_nprobust_port.py load +# this JSON and check agreement to tiered tolerances (1e-14 on tau_cl/se_cl, +# 1e-12 on tau_bc/se_rb, 1e-13 on CI bounds; see Phase 1c plan). + +library(nprobust) +library(jsonlite) + +stopifnot(packageVersion("nprobust") == "0.5.0") + +extract_lprobust_single_eval <- function(d, y, eval_point = 0.0, + kernel = "epa", vce = "nn", + cluster = NULL, alpha = 0.05, + h = NULL, b = NULL) { + # If h (and optionally b) are passed, bypass the mse-dpi selector and + # call lprobust() with those bandwidths directly. This is used for + # clustered DGPs where nprobust's internal lpbwselect.mse.dpi hits a + # singleton-cluster shape bug in lprobust.vce during the order-q+1/q+2 + # pilot fits. For unclustered DGPs, h=NULL triggers bwselect="mse-dpi". + if (is.null(h)) { + fit <- lprobust(y = y, x = d, eval = eval_point, + p = 1L, deriv = 0L, kernel = kernel, + bwselect = "mse-dpi", vce = vce, cluster = cluster, + bwcheck = 21L, bwregul = 1, nnmatch = 3L) + } else { + # When b is unspecified, nprobust defaults to b = h / rho with rho=1. + fit <- lprobust(y = y, x = d, eval = eval_point, + p = 1L, deriv = 0L, kernel = kernel, + h = h, b = if (is.null(b)) h else b, + vce = vce, cluster = cluster, + bwcheck = 21L, nnmatch = 3L) + } + est <- fit$Estimate[1, ] + z <- qnorm(1 - alpha / 2) + ci_low <- as.numeric(est["tau.bc"] - z * est["se.rb"]) + ci_high <- as.numeric(est["tau.bc"] + z * est["se.rb"]) + + list( + eval_point = as.numeric(eval_point), + h = as.numeric(est["h"]), + b = as.numeric(est["b"]), + n_used = as.integer(est["N"]), + tau_cl = as.numeric(est["tau.us"]), + tau_bc = as.numeric(est["tau.bc"]), + se_cl = as.numeric(est["se.us"]), + se_rb = as.numeric(est["se.rb"]), + ci_low = ci_low, + ci_high = ci_high, + alpha = as.numeric(alpha), + z = as.numeric(z) + ) +} + +set.seed(20260419) + +# DGP 1: d ~ Uniform(0, 1), y = d + d^2 + N(0, 0.5) +G <- 2000L +d1 <- runif(G, 0, 1) +y1 <- d1 + d1^2 + rnorm(G, 0, 0.5) + +# DGP 2: d ~ Beta(2, 2), y = d + d^2 + N(0, 0.5) (f(0) vanishes at boundary) +d2 <- rbeta(G, 2, 2) +y2 <- d2 + d2^2 + rnorm(G, 0, 0.5) + +# DGP 3: Half-normal d, y = 0.5 * d^2 + N(0, 1) +d3 <- abs(rnorm(G, 0, 1)) +y3 <- 0.5 * d3^2 + rnorm(G, 0, 1) + +# DGP 4: Uniform(0, 1) with 50 clusters of 40 obs (cluster-robust SE parity). +# Fewer, larger clusters avoid an nprobust-internal singleton-cluster shape +# bug in lprobust.vce that fires if a kernel window retains only one obs per +# cluster. 50 clusters x 40 obs => the mse-dpi pilot windows near the +# boundary keep enough obs per cluster to stay well-conditioned. +set.seed(20260420) +G4 <- 2000L +d4 <- runif(G4, 0, 1) +cluster4 <- rep(1:50, each = 40)[1:G4] +# Introduce within-cluster correlation in y via a cluster effect. +cluster_effect <- rnorm(50, 0, 0.3)[cluster4] +y4 <- d4 + d4^2 + cluster_effect + rnorm(G4, 0, 0.3) + +# DGP 5: Uniform(0.2, 1.0) — Design 1 continuous-near-d_lower at +# boundary = d.min() > 0. Different seed to avoid aliasing DGP 1. +set.seed(20260421) +G5 <- 2000L +d5 <- runif(G5, 0.2, 1.0) +y5 <- (d5 - 0.2) + (d5 - 0.2)^2 + rnorm(G5, 0, 0.5) +eval5 <- min(d5) # Design 1 continuous: evaluate at the realized minimum. + +golden <- list( + metadata = list( + nprobust_version = as.character(packageVersion("nprobust")), + nprobust_sha = "36e4e532d2f7d23d4dc6e162575cca79e0927cda", + seeds = list(dgp1 = 20260419L, dgp2 = 20260419L, dgp3 = 20260419L, + dgp4 = 20260420L, dgp5 = 20260421L), + generator = "benchmarks/R/generate_nprobust_lprobust_golden.R", + algorithm = paste("nprobust::lprobust(..., bwselect='mse-dpi') at a single", + "eval point, p=1, deriv=0, kernel='epa', vce='nn'", + "unless noted. z = qnorm(1 - alpha/2) exported so the", + "Python side consumes R's critical value directly.") + ), + dgp1 = c(list(n = G, d = d1, y = y1, kernel = "epa", vce = "nn", + description = "Uniform(0,1), polynomial m(d) = d + d^2"), + extract_lprobust_single_eval(d1, y1, kernel = "epa", vce = "nn")), + dgp2 = c(list(n = G, d = d2, y = y2, kernel = "epa", vce = "nn", + description = "Beta(2,2) - boundary density vanishes at 0"), + extract_lprobust_single_eval(d2, y2, kernel = "epa", vce = "nn")), + dgp3 = c(list(n = G, d = d3, y = y3, kernel = "epa", vce = "nn", + description = "Half-normal d, quadratic m(d) with unit noise"), + extract_lprobust_single_eval(d3, y3, kernel = "epa", vce = "nn")), + dgp4 = c(list(n = G4, d = d4, y = y4, cluster = cluster4, + kernel = "epa", vce = "nn", + h_manual = 0.3, b_manual = 0.3, + description = paste("Clustered (50 groups of 40) Uniform(0,1);", + "manual h=b=0.3 to sidestep nprobust's", + "singleton-cluster bug in the mse-dpi", + "pilot fits.")), + extract_lprobust_single_eval(d4, y4, kernel = "epa", vce = "nn", + cluster = cluster4, + h = 0.3, b = 0.3)), + dgp5 = c(list(n = G5, d = d5, y = y5, eval_point_override = eval5, + kernel = "epa", vce = "nn", + description = "Uniform(0.2, 1.0), Design 1 boundary = d.min()"), + extract_lprobust_single_eval(d5, y5, eval_point = eval5, + kernel = "epa", vce = "nn")) +) + +out_path <- "benchmarks/data/nprobust_lprobust_golden.json" +dir.create("benchmarks/data", recursive = TRUE, showWarnings = FALSE) +write_json(golden, out_path, auto_unbox = TRUE, pretty = TRUE, digits = 14) +cat("Golden values written to", out_path, "\n") +for (name in c("dgp1", "dgp2", "dgp3", "dgp4", "dgp5")) { + cat(sprintf("%s: tau.bc = %.6f, se.rb = %.6f, h = %.6f, b = %.6f\n", + name, golden[[name]]$tau_bc, golden[[name]]$se_rb, + golden[[name]]$h, golden[[name]]$b)) +} diff --git a/benchmarks/data/nprobust_lprobust_golden.json b/benchmarks/data/nprobust_lprobust_golden.json new file mode 100644 index 00000000..2118c7a4 --- /dev/null +++ b/benchmarks/data/nprobust_lprobust_golden.json @@ -0,0 +1,119 @@ +{ + "metadata": { + "nprobust_version": "0.5.0", + "nprobust_sha": "36e4e532d2f7d23d4dc6e162575cca79e0927cda", + "seeds": { + "dgp1": 20260419, + "dgp2": 20260419, + "dgp3": 20260419, + "dgp4": 20260420, + "dgp5": 20260421 + }, + "generator": "benchmarks/R/generate_nprobust_lprobust_golden.R", + "algorithm": "nprobust::lprobust(..., bwselect='mse-dpi') at a single eval point, p=1, deriv=0, kernel='epa', vce='nn' unless noted. z = qnorm(1 - alpha/2) exported so the Python side consumes R's critical value directly." + }, + "dgp1": { + "n": 2000, + "d": [0.346165986265987, 0.209471254376695, 0.349041724810377, 0.716006569564342, 0.898241959745064, 0.243056782288477, 0.994502683868632, 0.72356012603268, 0.617742204340175, 0.184574166312814, 0.360668655950576, 0.0166198713704944, 0.243221291573718, 0.0545476607512683, 0.540974493604153, 0.0504873525351286, 0.261057120747864, 0.391940114321187, 0.814565308624879, 0.108375295298174, 0.13834393187426, 0.512229334330186, 0.0478169047273695, 0.100965828401968, 0.371775630395859, 0.814653061330318, 0.415226160548627, 0.953240251867101, 0.547831779113039, 0.236800524173304, 0.393821754027158, 0.244248000206426, 0.953606148483232, 0.931744179222733, 0.680257683387026, 0.298957533668727, 0.88265565619804, 0.128144388785586, 0.833566912217066, 0.400369830196723, 0.979392393724993, 0.717489112401381, 0.0226255464367568, 0.741721712984145, 0.364105844404548, 0.739364994456992, 0.779507027007639, 0.215398214291781, 0.557517429115251, 0.509595426497981, 0.0880534134339541, 0.942485455656424, 0.979364822385833, 0.899419735185802, 0.8257914588321, 0.0699988235719502, 0.586125469533727, 0.468556467676535, 0.198046021163464, 0.589375919429585, 0.443083612248302, 0.157112209359184, 0.913243385963142, 0.609673663042486, 0.490071891108528, 0.640822818269953, 0.897421445697546, 0.209234605543315, 0.861506450921297, 0.71758383163251, 0.558338104747236, 0.464701133081689, 0.587141113588586, 0.290861047105864, 0.0359098170883954, 0.920508336974308, 0.792128319852054, 0.479324264684692, 0.337711642496288, 0.818299568258226, 0.220936849247664, 0.52664658986032, 0.249563686782494, 0.966086203698069, 0.325990043347701, 0.873903862899169, 0.458118894370273, 0.958207823801786, 0.726639168104157, 0.0545280911028385, 0.620755526702851, 0.14421889022924, 0.88032222352922, 0.474268751451746, 0.566884424071759, 0.212288883049041, 0.548560665920377, 0.572998574236408, 0.150096291676164, 0.545961163705215, 0.994045423809439, 0.977496839826927, 0.634692997206002, 0.19527647155337, 0.37164824991487, 0.199898849939927, 0.855995104182512, 0.380616884911433, 0.111964516574517, 0.60909396619536, 0.0861780024133623, 0.466514209052548, 0.124189377296716, 0.794151060981676, 0.755291044013575, 0.512759718578309, 0.867843558313325, 0.328859160887077, 0.19950527115725, 0.0969520376529545, 0.378513019764796, 0.808877027127892, 0.0075638173148036, 0.54419371811673, 0.853563324315473, 0.196863275719807, 0.0844467850401998, 0.326953303068876, 0.920718509005383, 0.664035634603351, 0.795962965581566, 0.997707337606698, 0.504139503464103, 0.646651067072526, 0.591779042733833, 0.70702116494067, 0.488630972104147, 0.828964573331177, 0.838794119656086, 0.112228092039004, 0.15459791617468, 0.686503263423219, 0.548998836195096, 0.739735872717574, 0.0582955288700759, 0.0714581438805908, 0.140629949979484, 0.0969659145921469, 0.705183843616396, 0.5967554631643, 0.6069399965927, 0.196023046970367, 0.764648385113105, 0.358476451830938, 0.597267293604091, 0.573412094730884, 0.441976554691792, 0.0406449246220291, 0.0311573348008096, 0.548311298945919, 0.830822173506021, 0.439536614809185, 0.00242402008734643, 0.95698778773658, 0.189367923419923, 0.471140919020399, 0.720085203414783, 0.430984531063586, 0.75122578558512, 0.98676150967367, 0.411048472626135, 0.0019293709192425, 0.0404439424164593, 0.678068289067596, 0.17221128824167, 0.810175884515047, 0.889592037769035, 0.125831579789519, 0.134606805862859, 0.17729956493713, 0.806072544772178, 0.464825366158038, 0.0829992818180472, 0.607695522950962, 0.447436264250427, 0.918594481423497, 0.016578201437369, 0.370964861940593, 0.587161103961989, 0.797623571939766, 0.769571264274418, 0.466079520992935, 0.486190814292058, 0.038844694616273, 0.00554388226009905, 0.900599654531106, 0.986486836336553, 0.222894153557718, 0.263349249493331, 0.158585336757824, 0.953510861145332, 0.345950931776315, 0.774059432558715, 0.406812589382753, 0.850905269384384, 0.570366530679166, 0.745160267921165, 0.451919118175283, 0.82126110047102, 0.232621849048883, 0.629993522074074, 0.860256613465026, 0.852116476977244, 0.97403391613625, 0.937790857627988, 0.268897952046245, 0.313622194342315, 0.258739491924644, 0.776861760998145, 0.294774421025068, 0.0104251164011657, 0.385157823562622, 0.289683123352006, 0.0397914610803127, 0.145499656908214, 0.180101718753576, 0.927040336187929, 0.00735224434174597, 0.958527865819633, 0.805642059538513, 0.0733334876131266, 0.291449388256297, 0.928822499001399, 0.155919728102162, 0.830825956305489, 0.00942840380594134, 0.0506175083573908, 0.52499695844017, 0.517598603153601, 0.840408019721508, 0.672916795359924, 0.105822045821697, 0.341756916139275, 0.347996193217114, 0.761391787789762, 0.356950287008658, 0.769412316381931, 0.106106081977487, 0.454008342465386, 0.405670804204419, 0.997827005805448, 0.856950008310378, 0.175768490182236, 0.536302397958934, 0.54664321267046, 0.925200182246044, 0.110503353178501, 0.974775074748322, 0.893235757481307, 0.483778121182695, 0.854575430974364, 0.156689777504653, 0.177061900962144, 0.955811394844204, 0.752134338021278, 0.670787909766659, 0.997947260038927, 0.179800922283903, 0.83955774595961, 0.84686216711998, 0.844218583311886, 0.0184601317159832, 0.166388230631128, 0.522887883009389, 0.995224664686248, 0.513486358569935, 0.748237108811736, 0.117110065417364, 0.542970935814083, 0.975555986631662, 0.162274452392012, 0.632582000689581, 0.4727776364889, 0.05226282752119, 0.741254779975861, 0.895933669991791, 0.974539231974632, 0.501151696778834, 0.728561727330089, 0.486959007102996, 0.0258453912101686, 0.0823663268238306, 0.308127107797191, 0.93733459780924, 0.379768842365593, 0.634399563539773, 0.0229966386687011, 0.629672926152125, 0.980344728799537, 0.897913390770555, 0.700686074560508, 0.957531769294292, 0.291666150791571, 0.835613635601476, 0.362494588829577, 0.0560990229714662, 0.156788922380656, 0.84624841902405, 0.219629955012351, 0.278462586691603, 0.834928127238527, 0.629183793673292, 0.513552502030507, 0.800564049743116, 0.57928385422565, 0.262598753906786, 0.040933579672128, 0.0387121390085667, 0.90013647521846, 0.5696493210271, 0.893220361787826, 0.110668223584071, 0.0852648168802261, 0.19990719947964, 0.413161811186001, 0.225361170014367, 0.849377339240164, 0.27834514179267, 0.66585423448123, 0.129469590028748, 0.694007028825581, 0.849266499746591, 0.98294817423448, 0.301099549047649, 0.388678389368579, 0.917739828582853, 0.712108347564936, 0.263724901014939, 0.256018333137035, 0.925620447145775, 0.325656013796106, 0.80588898411952, 0.257794239092618, 0.63797940639779, 0.294329738477245, 0.483464000280946, 0.664098173612729, 0.690138690639287, 0.946303514530882, 0.60035257297568, 0.355265755672008, 0.094594351015985, 0.0293781994841993, 0.512208945350721, 0.346746783936396, 0.174543977947906, 0.310165398521349, 0.0338154551573098, 0.369213777827099, 0.271116427378729, 0.592838131822646, 0.91222952818498, 0.637821137206629, 0.724744545063004, 0.00670987460762262, 0.0709518219809979, 0.446817366871983, 0.59286718768999, 0.89411172317341, 0.425121284322813, 0.697349152993411, 0.408724039793015, 0.359295903937891, 0.291864159749821, 0.584204216953367, 0.37872953992337, 0.841451559215784, 0.580973877571523, 0.538322201929986, 0.108931166119874, 0.472713785478845, 0.415993254166096, 0.920726923039183, 0.237032779259607, 0.76625645859167, 0.323362786555663, 0.0135008129291236, 0.782505482202396, 0.976652146084234, 0.407539737643674, 0.0979770328849554, 0.0500321115832776, 0.280847172951326, 0.382082442520186, 0.74515720969066, 0.0822519431822002, 0.583281073486432, 0.226379232713953, 0.476089478470385, 0.45865219226107, 0.00220466102473438, 0.0875268063973635, 0.473497366532683, 0.883599874563515, 0.368850355036557, 0.537226560525596, 0.233144672354683, 0.432790939928964, 0.159332912415266, 0.0212741554714739, 0.314498063875362, 0.843503124313429, 0.138636061456054, 0.717186489608139, 0.250860005617142, 0.305247880984098, 0.126011644490063, 0.257026718230918, 0.867932873312384, 0.341555891791359, 0.813263542717323, 0.87631299905479, 0.529588733799756, 0.786630074027926, 0.914084275485948, 0.37163211684674, 0.261467156931758, 0.0213125878944993, 0.870039186673239, 0.783236826770008, 0.232409801799804, 0.133864864939824, 0.904983918182552, 0.461845124373212, 0.24576448998414, 0.548322686459869, 0.849324014736339, 0.298708525020629, 0.782572541385889, 0.855804286664352, 0.423282893840224, 0.362640563864261, 0.259313524002209, 0.031848419457674, 0.870247574523091, 0.976611375808716, 0.829543895320967, 0.618165113264695, 0.0432053508702666, 0.728933557635173, 0.925752375507727, 0.680354470154271, 0.883131397189572, 0.0651688864454627, 0.334054737119004, 0.144990539178252, 0.976222740951926, 0.89502010634169, 0.333566243061796, 0.856545548420399, 0.194540746510029, 0.436813483480364, 0.424124392215163, 0.926754391519353, 0.940207581501454, 0.665230019949377, 0.644590303301811, 0.950676682172343, 0.483485494973138, 0.236260325880721, 0.920036104740575, 0.423172840382904, 0.202069191029295, 0.455405379412696, 0.719571536639705, 0.107610498089343, 0.338315623812377, 0.0196876644622535, 0.673011309467256, 0.57781854015775, 0.758517007809132, 0.00773818604648113, 0.0399852155242115, 0.272136890329421, 0.121671132044867, 0.0925804565194994, 0.0105228209868073, 0.792728501372039, 0.768788015469909, 0.0449427138082683, 0.114256979431957, 0.898899374064058, 0.0751600991934538, 0.254237898392603, 0.364029271993786, 0.646676766686141, 0.0198329114355147, 0.260944580892101, 0.117712674662471, 0.923460611142218, 0.000687360530719161, 0.374208538327366, 0.36059916834347, 0.0446418835781515, 0.518746672896668, 0.583803632296622, 0.82351150480099, 0.480567471589893, 0.252306047128513, 0.929676372557878, 0.644048162503168, 0.745667407987639, 0.106003910070285, 0.360957469092682, 0.450716452673078, 0.12437226716429, 0.211736926110461, 0.415367042878643, 0.307559641776606, 0.353773124748841, 0.0110073678661138, 0.340558582218364, 0.244798981817439, 0.159673176240176, 0.910186115419492, 0.602241577813402, 0.589151523308828, 0.641388297779486, 0.440442847553641, 0.112232891377062, 0.391904273070395, 0.613961776252836, 0.819045865442604, 0.491677639307454, 0.17106905579567, 0.650638972176239, 0.797189625212923, 0.855213769013062, 0.912803761661053, 0.392356115859002, 0.871137496782467, 0.337621423881501, 0.0346126104705036, 0.763218939770013, 0.224954331526533, 0.608436790993437, 0.180038806749508, 0.119603846687824, 0.383979103062302, 0.139423688640818, 0.94398993300274, 0.182417087024078, 0.871353969210759, 0.0479166391305625, 0.60594955412671, 0.665909121977165, 0.498791569843888, 0.243559457361698, 0.708635791670531, 0.841032015858218, 0.94662646157667, 0.298621259164065, 0.0533671078737825, 0.60282590915449, 0.887838952476159, 0.377908347873017, 0.603024781681597, 0.615386335644871, 0.944401478162035, 0.58739640400745, 0.133071501739323, 0.821745748398826, 0.543809500290081, 0.575919000199065, 0.304370456375182, 0.19655086658895, 0.689686176599935, 0.420205363305286, 0.415261306799948, 0.583954121917486, 0.95316331461072, 0.440062945475802, 0.514308047946543, 0.748825821559876, 0.730109460419044, 0.534410978201777, 0.966143697267398, 0.0937944904435426, 0.691361869918182, 0.709835424320772, 0.909959269454703, 0.0735295531339943, 0.542851083911955, 0.639230704400688, 0.341176292393357, 0.109317106194794, 0.785765172448009, 0.479654854862019, 0.310927505372092, 0.789418202359229, 0.927716168807819, 0.104034946765751, 0.228270627558231, 0.895048796432093, 0.23120599030517, 0.770107773831114, 0.74092574371025, 0.302314371801913, 0.195076666073874, 0.729092280380428, 0.58094388525933, 0.839168735314161, 0.105585782090202, 0.231496359454468, 0.162439019652084, 0.328693069750443, 0.784283224260435, 0.781130024464801, 0.66749774874188, 0.919308005599305, 0.349182921694592, 0.735060207080096, 0.018048663623631, 0.346293591428548, 0.857443949906155, 0.684518822701648, 0.140832643723115, 0.890577943529934, 0.650103968568146, 0.254752794280648, 0.59976072399877, 0.688927080016583, 0.196075043873861, 0.446470738388598, 0.0525089902803302, 0.0252177428919822, 0.57538332650438, 0.785854885587469, 0.96662048692815, 0.973383453208953, 0.76566643640399, 0.806489786598831, 0.0613111646380275, 0.724368748720735, 0.53181457798928, 0.604408302111551, 0.0903146902564913, 0.0495185614563525, 0.29019934637472, 0.0132103613577783, 0.582651629112661, 0.557533023646101, 0.0582127820234746, 0.16918781818822, 0.74642851180397, 0.512961986940354, 0.723103327210993, 0.478869381826371, 0.142701753647998, 0.360577651765198, 0.456413254141808, 0.564994873711839, 0.286811434431002, 0.0683555151335895, 0.796672585653141, 0.424362274352461, 0.228145495988429, 0.137164179002866, 0.190289808670059, 0.0168805175926536, 0.786586451344192, 0.941047086613253, 0.950291624758393, 0.726629540789872, 0.257150660501793, 0.767686791718006, 0.0649160966277122, 0.0560184586793184, 0.452478966908529, 0.699444561963901, 0.1950129927136, 0.464016245445237, 0.298849532147869, 0.915026630740613, 0.36833375855349, 0.679462193045765, 0.0791741597931832, 0.110823457594961, 0.3275465820916, 0.21324375574477, 0.224521839758381, 0.0279958660248667, 0.613803187618032, 0.141370096709579, 0.703676754143089, 0.672589749563485, 0.365164802642539, 0.597185381222516, 0.312340612057596, 0.471220351289958, 0.339753149542958, 0.744692320935428, 0.807826767209917, 0.724047389347106, 0.0350416509900242, 0.0143141078297049, 0.459135277895257, 0.30829482502304, 0.418717910069972, 0.815170946996659, 0.0107350833714008, 0.337225042749196, 0.102577632991597, 0.747796148061752, 0.476201005745679, 0.703248817007989, 0.051908576162532, 0.459711804753169, 0.924661928554997, 0.937453694874421, 0.536539393011481, 0.644264965550974, 0.826208461308852, 0.863652743864805, 0.354973023058847, 0.508016061969101, 0.422145219985396, 0.109045032644644, 0.860373968956992, 0.873121923301369, 0.165575219783932, 0.749390787212178, 0.491679725935683, 0.347241363255307, 0.485138176940382, 0.726532976841554, 0.430901356972754, 0.644576223334298, 0.0958067227620631, 0.800067360512912, 0.208580225007609, 0.725203845882788, 0.274529229849577, 0.558585841907188, 0.914937655674294, 0.613545369822532, 0.777274392312393, 0.950940080918372, 0.208959483541548, 0.0548990098759532, 0.156664268812165, 0.667626031907275, 0.993408191250637, 0.824056321755052, 0.719680809648708, 0.802751770010218, 0.12754001095891, 0.49136710469611, 0.551430308958516, 0.967217141529545, 0.552265034522861, 0.30444347858429, 0.689662781078368, 0.22357439249754, 0.50318945129402, 0.214576940750703, 0.213493100134656, 0.21657902863808, 0.553997766925022, 0.196543265599757, 0.711638573091477, 0.636808233335614, 0.225673588225618, 0.422356360126287, 0.0346148791722953, 0.926113870926201, 0.114635883597657, 0.585584190906957, 0.288217863067985, 0.197413493646309, 0.33805296709761, 0.228494751034304, 0.250013976590708, 0.308070640312508, 0.548453547526151, 0.0781810639891773, 0.721189826726913, 0.948349711019546, 0.891269214451313, 0.924918508157134, 0.147290858905762, 0.130571335554123, 0.209332755766809, 0.155585276195779, 0.269416294060647, 0.411228037672117, 0.722519133705646, 0.587787507101893, 0.6123622211162, 0.518332035979256, 0.182636057492346, 0.544378993101418, 0.0147249745205045, 0.535813916008919, 0.321362973656505, 0.205680906772614, 0.54778169747442, 0.784348062705249, 0.829245734261349, 0.00375733687542379, 0.24470688845031, 0.260210833745077, 0.347320474451408, 0.644113708287477, 0.210952768102288, 0.710949777392671, 0.614339445950463, 0.524131555110216, 0.703624569112435, 0.571564108366147, 0.597110274014995, 0.210792856523767, 0.739173778798431, 0.470145630650222, 0.913970083929598, 0.712311905110255, 0.28057779953815, 0.232601853553206, 0.262526802020147, 0.735199363203719, 0.962150099920109, 0.117133115185425, 0.655319362413138, 0.231908950954676, 0.50218626530841, 0.59284511487931, 0.931831866037101, 0.146845633164048, 0.261370225809515, 0.301943109370768, 0.316532094962895, 0.189213626319543, 0.828078367048874, 0.344364186283201, 0.437133249128237, 0.887415676377714, 0.914971266873181, 0.348534266231582, 0.987768000224605, 0.271276933839545, 0.826023813802749, 0.713736071251333, 0.68195412424393, 0.0589782192837447, 0.900705822743475, 0.52805641386658, 0.949266337323934, 0.291764075867832, 0.138189361197874, 0.559128606691957, 0.978667428484187, 0.769618967780843, 0.354563920991495, 0.892473468789831, 0.247240169672295, 0.100765257608145, 0.137648966629058, 0.405013991519809, 0.687203532084823, 0.283987054601312, 0.424270047806203, 0.539361731382087, 0.818480196641758, 0.682315783808008, 0.531873786123469, 0.600602154852822, 0.714892279589549, 0.159297755220905, 0.694253968540579, 0.970819691661745, 0.492535071447492, 0.506918601924554, 0.167514077620581, 0.337768448516726, 0.248893624637276, 0.925369200529531, 0.556087115779519, 0.790567449294031, 0.466152016073465, 0.369516845559701, 0.940985555760562, 0.181657440727577, 0.945475308457389, 0.632333346875384, 0.649533868068829, 0.252008438808843, 0.716518989065662, 0.495150202419609, 0.320279214531183, 0.210181148024276, 0.0514442976564169, 0.560021026292816, 0.29286945075728, 0.917381049366668, 0.803549237549305, 0.0452492046169937, 0.112628205213696, 0.221681158524007, 0.729071120964363, 0.104118769988418, 0.882043196121231, 0.459914450999349, 0.416778416838497, 0.262269402621314, 0.573443383909762, 0.921211799606681, 0.0589693824294955, 0.984318975824863, 0.554940220667049, 0.324975168332458, 0.683668156387284, 0.741510772844777, 0.740346545120701, 0.73672842187807, 0.996173938270658, 0.441907065687701, 0.233366794418544, 0.0930367063265294, 0.468237418448552, 0.99687910778448, 0.779569183941931, 0.24905294389464, 0.265866270754486, 0.105899329530075, 0.355320486938581, 0.808142820606008, 0.878293003886938, 0.380768493749201, 0.154580352362245, 0.1790848642122, 0.869953661691397, 0.43932518386282, 0.347169925458729, 0.0455705637577921, 0.0333972957450897, 0.0621360936202109, 0.882865717867389, 0.644302360946313, 0.759708921425045, 0.0987621112726629, 0.0488398158922791, 0.592836511554196, 0.183323624311015, 0.578793099848554, 0.313642387511209, 0.079180357279256, 0.00837347051128745, 0.198537290794775, 0.960450880229473, 0.201183356577531, 0.0494250457268208, 0.58247592812404, 0.162518873345107, 0.41830415953882, 0.841959724901244, 0.530866049928591, 0.0651320363394916, 0.388923087855801, 0.152429191861302, 0.78437339188531, 0.721455001272261, 0.0480059091933072, 0.255862743826583, 0.923264801502228, 0.0735937890131027, 0.585168677149341, 0.334852176485583, 0.497336049797013, 0.76684049400501, 0.328165993792936, 0.982986759394407, 0.353461236460134, 0.830989680020139, 0.419485906837508, 0.89386971690692, 0.311883631860837, 0.755107209086418, 0.656258726958185, 0.792798206442967, 0.653999446658418, 0.515845178393647, 0.726155805634335, 0.791332655819133, 0.771861086366698, 0.998458849964663, 0.385981810512021, 0.506247248500586, 0.306236730422825, 0.689386155223474, 0.703666259767488, 0.768168316455558, 0.499030924867839, 0.516966850031167, 0.826102776220068, 0.708552662050352, 0.958447616547346, 0.509259008336812, 0.759817730169743, 0.385211349232122, 0.62458301638253, 0.309523917734623, 0.965570610249415, 0.937558384845033, 0.274171748431399, 0.930241738911718, 0.866209502797574, 0.735354160424322, 0.968940973980352, 0.302237041760236, 0.755376565270126, 0.0839991285465658, 0.382933429675177, 0.985571265453473, 0.640504273120314, 0.966484017670155, 0.85932929161936, 0.828322415240109, 0.979190739337355, 0.000682256650179625, 0.517754849279299, 0.397424189373851, 0.518826328683645, 0.397790491348132, 0.775976140517741, 0.824180848896503, 0.65212856954895, 0.222941487561911, 0.362701597390696, 0.667807255405933, 0.610867321258411, 0.00524797453545034, 0.610754749970511, 0.90493203769438, 0.720862101530656, 0.385244729463011, 0.622641267254949, 0.198215500218794, 0.273100967518985, 0.491399378748611, 0.522423380520195, 0.710679515497759, 0.0565299310255796, 0.232824528357014, 0.694566445425153, 0.291381621034816, 0.815326593117788, 0.530679869698361, 0.912955796578899, 0.720692346571013, 0.501583010656759, 0.544575373409316, 0.149034550879151, 0.347778346855193, 0.920255882199854, 0.617883791448548, 0.81809138157405, 0.226378874620423, 0.398595812031999, 0.0968610381241888, 0.994760420406237, 0.0512143529485911, 0.00586678297258914, 0.0426991432905197, 0.565394036937505, 0.252433461137116, 0.561920315027237, 0.866363671142608, 0.126184610649943, 0.995565863559023, 0.204895244212821, 0.0875206408090889, 0.838491184869781, 0.868904869072139, 0.932153575820848, 0.418825665488839, 0.509266648907214, 0.106256694998592, 0.405198326800019, 0.0773831617552787, 0.845014412188902, 0.37225196021609, 0.0646194501314312, 0.0962763654533774, 0.671104866312817, 0.63611079659313, 0.967374862637371, 0.739096531411633, 0.211647768272087, 0.374446410452947, 0.0703165887389332, 0.65702386922203, 0.255057242466137, 0.761350652901456, 0.18956631468609, 0.642159200040624, 0.314154952066019, 0.795467847026885, 0.018454814562574, 0.32123433239758, 0.949331248411909, 0.77007478964515, 0.88346459902823, 0.913648173911497, 0.0427822580095381, 0.0387546285055578, 0.560760743217543, 0.527077378705144, 0.728853151667863, 0.633032421348616, 0.16190230846405, 0.594751540804282, 0.899772045202553, 0.328569470439106, 0.3018197810743, 0.888973295455799, 0.719074605032802, 0.626063140342012, 0.934896849794313, 0.216132152359933, 0.0820675841532648, 0.604176676366478, 0.00571468565613031, 0.047701945528388, 0.470655684359372, 0.659271740820259, 0.647840971359983, 0.623760173330083, 0.0443880027160048, 0.0420190247241408, 0.603662333451211, 0.251959848450497, 0.386834810720757, 0.033413621596992, 0.794680561637506, 0.355705644935369, 0.973415603162721, 0.430098228389397, 0.640250506345183, 0.191442689625546, 0.890403778990731, 0.259040008066222, 0.852067284751683, 0.849557830253616, 0.525598332984373, 0.337649035500363, 0.906788495834917, 0.990627779625356, 0.727288963505998, 0.819436003221199, 0.121443680021912, 0.0902478341013193, 0.679523289902136, 0.748120269039646, 0.823129307944328, 0.688810828141868, 0.220231028040871, 0.232631715713069, 0.128410123754293, 0.936530837323517, 0.991138841956854, 0.0640033839736134, 0.166268767323345, 0.518817614763975, 0.813877743203193, 0.509033096721396, 0.902099477592856, 0.232552591711283, 0.47328081051819, 0.912580891046673, 0.261829343391582, 0.984099922701716, 0.224039877299219, 0.698577008442953, 0.140014365082607, 0.416591045912355, 0.326758888084441, 0.407039372483268, 0.598754855338484, 0.149549961090088, 0.632791304728016, 0.214431840227917, 0.851591898594052, 0.576258381130174, 0.372065811185166, 0.138699955539778, 0.599262639414519, 0.805780943250284, 0.281927065225318, 0.563775651622564, 0.223280415870249, 0.7287523066625, 0.0608015148900449, 0.904845746001229, 0.352294401731342, 0.501498747384176, 0.250394890317693, 0.160575491376221, 0.694857817841694, 0.238557010190561, 0.324171503540128, 0.709977475227788, 0.542670724447817, 0.0982357454486191, 0.201090529793873, 0.342294976348057, 0.436868348158896, 0.419391678413376, 0.897632704116404, 0.14165248000063, 0.710510603617877, 0.663611287251115, 0.226078710053116, 0.488332784967497, 0.503454522928223, 0.950689522782341, 0.993008250370622, 0.127547826152295, 0.55250099231489, 0.36221415316686, 0.707453545648605, 0.386695204302669, 0.373590733623132, 0.795789421070367, 0.195181924849749, 0.942012312822044, 0.822275212034583, 0.419553896877915, 0.736235396936536, 0.132925521349534, 0.982908334815875, 0.0789758414030075, 0.745443465886638, 0.882432844256982, 0.144489598227665, 0.830355362733826, 0.548394820885733, 0.0911384776700288, 0.239079666789621, 0.534361547557637, 0.526585444342345, 0.3677137196064, 0.662374228239059, 0.278356518596411, 0.898062677122653, 0.309130660258234, 0.223267955472693, 0.653858408331871, 0.744698766386136, 0.0968892222736031, 0.792425002902746, 0.182938886340708, 0.258253048872575, 0.376066589495167, 0.373899925267324, 0.246126017998904, 0.970395153621212, 0.0221219267696142, 0.198418113170192, 0.391265231650323, 0.386380730196834, 0.8609193128068, 0.649101250106469, 0.654616613639519, 0.663492733612657, 0.11027526576072, 0.917333149118349, 0.906974832294509, 0.793510631425306, 0.160674791550264, 0.375623267842457, 0.93916101497598, 0.0237628405448049, 0.489064895780757, 0.322569782845676, 0.4599790640641, 0.968248449033126, 0.503750688862056, 0.137057992629707, 0.756053738528863, 0.227066091960296, 0.309221654431894, 0.282568486407399, 0.531660587526858, 0.109790723770857, 0.389323289273307, 0.311167601961643, 0.484018966555595, 0.778408627957106, 0.184841200010851, 0.757811259012669, 0.986676204716787, 0.0837076371535659, 0.89952951297164, 0.914983659749851, 0.53359681321308, 0.485397913493216, 0.979551484808326, 0.722250586375594, 0.274030110333115, 0.289351657265797, 0.580856527667493, 0.0421090731397271, 0.0313935191370547, 0.873520685359836, 0.753175287740305, 0.63278384343721, 0.429824267048389, 0.481334067881107, 0.943610515911132, 0.69317014887929, 0.0562590889167041, 0.936676322016865, 0.127720152959228, 0.31169597664848, 0.39611326972954, 0.11601515696384, 0.268483157269657, 0.193756226217374, 0.233666321495548, 0.518231372581795, 0.460481578717008, 0.823136486811563, 0.572886652778834, 0.26970086642541, 0.0252918105106801, 0.751138216117397, 0.507224886212498, 0.423158447491005, 0.23900619498454, 0.129596123937517, 0.326314738718793, 0.00163172255270183, 0.623543184250593, 0.552510866895318, 0.646969760302454, 0.0150880995206535, 0.401812738040462, 0.324191327905282, 0.0397449100855738, 0.243267814395949, 0.421371039701626, 0.165414540329948, 0.398785921745002, 0.141016276087612, 0.447666534688324, 0.3833509280812, 0.316562929423526, 0.746283146319911, 0.64709970774129, 0.501022403826937, 0.733173224376515, 0.541713636135682, 0.408266205806285, 0.825185902183875, 0.7188757781405, 0.802253080764785, 0.737347897375003, 0.340869465144351, 0.274535093223676, 0.179198093945161, 0.0225234772078693, 0.646316331578419, 0.309881212888286, 0.490314984228462, 0.0205285784322768, 0.485585268121213, 0.961239985190332, 0.381273278268054, 0.431834955234081, 0.869653564412147, 0.561370071489364, 0.345067326445132, 0.52247998281382, 0.0226064729504287, 0.598832377698272, 0.359920742688701, 0.24953829869628, 0.798385076690465, 0.899008631007746, 0.199391112430021, 0.20537858013995, 0.928835645550862, 0.0613949652761221, 0.476923653390259, 0.37228161143139, 0.942239755531773, 0.563439138932154, 0.914925095392391, 0.35024698660709, 0.757748999865726, 0.0326341828331351, 0.638125430559739, 0.744583706837147, 0.345288509735838, 0.0809473798144609, 0.108300823019817, 0.775789130479097, 0.584923906251788, 0.450362811563537, 0.190775425871834, 0.677310225088149, 0.990003114100546, 0.197140638250858, 0.342674592975527, 0.597823499934748, 0.131013640435413, 0.767920399550349, 0.181014633039013, 0.0393636133521795, 0.375324764754623, 0.0596955914516002, 0.676822294481099, 0.0149589360225946, 0.874781360849738, 0.325679809087887, 0.64086690871045, 0.000214893138036132, 0.0232361871749163, 0.0877890605479479, 0.173101101536304, 0.525004471419379, 0.412782779429108, 0.574271852849051, 0.447789158206433, 0.882244452834129, 0.533046854194254, 0.435744627844542, 0.863218422746286, 0.726926951669157, 0.981378197204322, 0.880946195218712, 0.727039013756439, 0.720376670593396, 0.461857170099393, 0.670274453470483, 0.770723266061395, 0.889530535088852, 0.116440584650263, 0.888700416311622, 0.359070120612159, 0.12731885490939, 0.538178196176887, 0.115669594611973, 0.419497300172225, 0.907019917387515, 0.348498432664201, 0.315922209527344, 0.662755283527076, 0.915843957103789, 0.792905329726636, 0.623989657498896, 0.535526007413864, 0.147767442977056, 0.329031515633687, 0.65581144974567, 0.113701197784394, 0.533550477819517, 0.806492020376027, 0.117409565951675, 0.105941674672067, 0.913901569787413, 0.362242017639801, 0.256795873399824, 0.678519504610449, 0.522882194491103, 0.338524610502645, 0.732171974144876, 0.618778471369296, 0.220345605164766, 0.854066167259589, 0.191926053725183, 0.180709004402161, 0.628960605012253, 0.0195417483337224, 0.0282633968163282, 0.569316555513069, 0.199712104396895, 0.372885905904695, 0.468138043303043, 0.259083372773603, 0.678661161102355, 0.791841745842248, 0.526053826091811, 0.541167847113684, 0.104974264046177, 0.311746375635266, 0.563720937352628, 0.857543558580801, 0.745404939400032, 0.502702720928937, 0.723164536524564, 0.833933053305373, 0.374148273840547, 0.89905043062754, 0.404067774768919, 0.466253074584529, 0.709111290285364, 0.0323791520204395, 0.0328103427309543, 0.66775024170056, 0.342230007983744, 0.960891990223899, 0.887521343305707, 0.996665539452806, 0.262510693166405, 0.254967446904629, 0.859071091283113, 0.381083494983613, 0.353397941915318, 0.13397060893476, 0.5512810414657, 0.537397629348561, 0.151046285638586, 0.0610557186882943, 0.568482440896332, 0.567784585990012, 0.345591999357566, 0.229777362430468, 0.111217645229772, 0.362608945695683, 0.965476510347798, 0.356678530573845, 0.017892541596666, 0.239369696937501, 0.95735845528543, 0.281470225425437, 0.509387956000865, 0.0823534775990993, 0.928517641033977, 0.290370534872636, 0.966219618683681, 0.260365671245381, 0.258849262259901, 0.357635213294998, 0.408947244752198, 0.852252011885867, 0.297321632038802, 0.0117885156068951, 0.00855209049768746, 0.869031344074756, 0.903909913729876, 0.649121041642502, 0.196550518507138, 0.174227272160351, 0.257708035875112, 0.659660637145862, 0.404001670191064, 0.602646267274395, 0.84100860869512, 0.271027329843491, 0.472252521198243, 0.667010412784293, 0.980501636862755, 0.439125028904527, 0.464763628318906, 0.314189652213827, 0.114199460251257, 0.93585679656826, 0.800984351662919, 0.795697245979682, 0.22088409611024, 0.712769389851019, 0.392207334283739, 0.0806282174307853, 0.938192947069183, 0.667966789798811, 0.684854451334104, 0.994374047266319, 0.862775617046282, 0.663851945428178, 0.791130019817501, 0.778783566085622, 0.135758342919871, 0.381403374951333, 0.156394353834912, 0.0675784233026206, 0.684849941637367, 0.32192695653066, 0.45939053199254, 0.979936513584107, 0.952109209727496, 0.491436710814014, 0.228782906197011, 0.0550466275308281, 0.672973179491237, 0.0594962041359395, 0.774250347167253, 0.586573536740616, 0.698183617787436, 0.690110424067825, 0.509923483245075, 0.236010291147977, 0.496517707360908, 0.767467655939981, 0.389440126949921, 0.310276824980974, 0.0541447447612882, 0.632761855144054, 0.784978661220521, 0.102379544172436, 0.668765302048996, 0.010094323894009, 0.827144383452833, 0.19629889074713, 0.545737344073132, 0.563829079503193, 0.0171148008666933, 0.142092283349484, 0.425463587744161, 0.252864009002224, 0.755256301257759, 0.592835387215018, 0.275791980791837, 0.171719887992367, 0.422216148581356, 0.565559581620619, 0.852838244754821, 0.693415904417634, 0.912613668246195, 0.676351933274418, 0.983497129287571, 0.725790180731565, 0.518605720251799, 0.562294972129166, 0.989682135405019, 0.598856115480885, 0.194652979029343, 0.895285645499825, 0.0712745052296668, 0.172468857141212, 0.613315540598705, 0.131680391961709, 0.00211440911516547, 0.689466883661225, 0.0621356274932623, 0.823896761750802, 0.894140936434269, 0.433863654267043, 0.344865736318752, 0.898936402518302, 0.613895801594481, 0.917653430020437, 0.81467113061808, 0.21362269949168, 0.253619932569563, 0.0031126665417105, 0.439006055239588, 0.358437464572489, 0.559220538241789, 0.359307199949399, 0.552037703804672, 0.714498153654858, 0.207370839314535, 0.140031647402793, 0.509940527146682, 0.755228843772784, 0.915650078328326, 0.148176364367828, 0.920221140608191, 0.90866948897019, 0.533411973621696, 0.789369453210384, 0.133013139246032, 0.0123751393985003, 0.832500803051516, 0.669455478200689, 0.233885506168008, 0.520845055114478, 0.682811491889879, 0.427943505113944, 0.924030547961593, 0.894643577747047, 0.899492271943018, 0.409257180523127, 0.611079786904156, 0.261544398032129, 0.0131758442148566, 0.11240000766702, 0.933025031350553, 0.177189914742485, 0.942686608294025, 0.791205604793504, 0.824275144608691, 0.441551951691508, 0.338690917938948, 0.826990676345304, 0.5736788965296, 0.749313668115065, 0.339912298601121, 0.677000709576532, 0.322028340306133, 0.984041546937078, 0.473424986004829, 0.0730628666933626, 0.567171187372878, 0.658182400511578, 0.336227480322123, 0.261582172010094, 0.872948424192145, 0.287021150346845, 0.311737046111375, 0.0984924072399735, 0.150928899412975, 0.355980124557391, 0.485411348287016, 0.568928191903979, 0.275347152724862, 0.233043291606009, 0.526002286700532, 0.884423713665456, 0.0922431491781026, 0.623843021923676, 0.169392848620191, 0.678698956035078, 0.290033337660134, 0.775040951091796, 0.350297480123118, 0.899462326196954, 0.634948935592547, 0.256356385536492, 0.182159858988598, 0.977257989812642, 0.620611815014854, 0.06907046912238, 0.355846131918952, 0.143800066085532, 0.905331493820995, 0.0270492895506322, 0.2435387163423, 0.681851610308513, 0.848152410704643, 0.135445976862684, 0.175756627460942, 0.390451044775546, 0.401260072365403, 0.25127462646924, 0.442384134745225, 0.625229990575463, 0.555432797409594, 0.95550792850554, 0.191333845024928, 0.00168043375015259, 0.889306707773358, 0.787859318079427, 0.540803863666952, 0.0616270713508129, 0.840093308826908, 0.705555197549984, 0.351381950313225, 0.0921918849926442, 0.406589814461768, 0.839818005217239, 0.457485317718238, 0.129245649557561, 0.392828929005191, 0.711810810957104, 0.283385962480679, 0.543242496438324, 0.159029385540634, 0.473513310775161, 0.705203220481053, 0.308465875219554, 0.512635463615879, 0.792351564858109, 0.927064916118979, 0.855060771806166, 0.00603786646388471, 0.0307486841920763, 0.507452466292307, 0.999538347125053, 0.588900240603834, 0.106804926181212, 0.096492389915511, 0.148477659793571, 0.157827967545018, 0.992642661323771, 0.93813056172803, 0.901907638413832, 0.668016549898311, 0.255510518094525, 0.888806634582579, 0.747922644019127, 0.933406369760633, 0.183879241580144, 0.810766326263547, 0.110946126980707, 0.510299790184945, 0.584730410017073, 0.0416869705077261, 0.00386962038464844, 0.802852530032396, 0.960613649105653, 0.466828531352803, 0.819400991080329, 0.137095607584342, 0.273952119285241, 0.792261292692274, 0.0962358629330993, 0.874706146074459, 0.535070253070444, 0.815890475176275, 0.513203339651227, 0.880865497514606, 0.759889968438074, 0.613883769139647, 0.782457083463669, 0.579230112954974, 0.714677541283891, 0.645804676227272, 0.899858664721251, 0.68659992213361, 0.973367396043614, 0.726136944023892, 0.611537456745282, 0.863986969925463, 0.515921162441373, 0.246667020721361, 0.794377547223121, 0.349875852931291, 0.445035658311099, 0.962578833568841, 0.358111737761647, 0.166376163018867, 0.463746593799442, 0.0490092581603676, 0.113414003513753, 0.831336693139747, 0.840878094779328, 0.292032978031784, 0.125231629237533, 0.890103582525626, 0.306721605360508, 0.268771347589791, 0.399368161568418, 0.392082674661651, 0.0478826346807182, 0.676022889791057, 0.554108540061861, 0.778931396082044, 0.608271048171446, 0.615079631796107, 0.00694751320406795, 0.0246562028769404, 0.326056216377765, 0.377244483446702, 0.658051557838917, 0.885901875328273, 0.939381778705865, 0.873675169190392, 0.67057319986634, 0.762281560106203, 0.844460201915354, 0.509005482308567, 0.825657671084628, 0.959524786565453, 0.264135148143396, 0.489430909976363, 0.744400044903159, 0.932136837160215, 0.0317221803124994, 0.442821763223037, 0.319218684220687, 0.392838149797171, 0.28886223770678, 0.38048786483705, 0.0892004549968988, 0.691311177564785, 0.0532405427657068, 0.581292044604197, 0.553374276030809, 0.334577008383349, 0.999597164569423, 0.84324157400988, 0.380404989002272, 0.358497683191672, 0.724441345548257, 0.413458978757262, 0.725488867610693, 0.12355336570181, 0.742723390460014, 0.713215169496834, 0.348563363775611, 0.753136217361316, 0.643560046330094, 0.0924783318769187, 0.351908915210515, 0.74082766729407, 0.259260039543733, 0.158601856324822, 0.783217063173652, 0.365029092878103, 0.132314311340451, 0.84535407810472, 0.832263902295381, 0.838424753164873, 0.239421851700172, 0.659816602943465, 0.120624675415456, 0.6397284346167, 0.823397135362029, 0.895531405229121, 0.417783912736923, 0.565354623831809, 0.59629130945541, 0.38015892310068, 0.160488981287926, 0.119852832984179, 0.559395015239716, 0.864476463058963, 0.300965693313628, 0.156593979801983, 0.0689875953830779, 0.654235401889309, 0.57324287109077, 0.529678581980988, 0.672031012363732, 0.132477952865884, 0.836709110531956, 0.279154593823478, 0.550440431106836, 0.553933318937197, 0.101397789316252, 0.179422649322078, 0.111367230536416, 0.668391137151048, 0.753152373479679, 0.0616070998366922, 0.520023127086461, 0.0257466374896467, 0.57041241764091, 0.719869782449678, 0.286305549088866, 0.797395617701113, 0.651126661803573, 0.94067126349546, 0.0755345742218196, 0.160497416974977, 0.171673237113282, 0.097575644031167, 0.269207977922633, 0.976075924700126, 0.680690449662507, 0.958873420022428, 0.232048991601914, 0.744527370203286, 0.895795886637643, 0.50910839275457, 0.457218793453649, 0.978228926192969, 0.992669925093651, 0.53016379266046, 0.980776103679091, 0.962227289564908, 0.359518567100167, 0.212030187249184, 0.572824609698728, 0.309235240332782, 0.936791330808774, 0.303851896198466, 0.923770627239719, 0.256225823890418, 0.110831299098209, 0.754323045024648, 0.193384368903935, 0.37887423299253, 0.424219543579966, 0.365397836314514, 0.297307209577411, 0.34588307607919, 0.757166122552007, 0.547470551915467, 0.861450910102576, 0.200045872246847, 0.844962926814333, 0.544759169686586, 0.187013126211241, 0.0595349750947207, 0.292369664879516, 0.477636355208233, 0.597272343933582, 0.772327048005536, 0.180859056068584, 0.608215524582192, 0.420488112606108, 0.632368653779849, 0.497825608588755, 0.55523740244098, 0.170654512010515, 0.794666604604572, 0.703558492008597], + "y": [0.127409013941536, 0.259704904979668, -0.325430487956134, 1.28519915389909, 1.67173862570367, 0.272735354144643, 2.22534020122952, 1.08961313999269, 1.3720918711898, 0.236607399212498, 1.49253609958635, 0.488880589812829, 0.567475393203614, 0.544615043359027, 0.149548597555775, 0.716063482889429, -0.385229479805715, 0.535708160498762, 2.23055894718691, 0.310070269094779, 0.345520453814561, 1.92153999710385, 0.178361412211419, -0.0870076763620393, 0.547822439872253, 2.02941424830463, 0.0516762698048544, 1.50726414002462, 0.672009706997568, -0.443858844763067, 0.843155026850744, 0.373763013049766, 2.29048100964846, 2.58101755559321, 1.18484673308105, 1.29248121466933, 1.40842541968759, 0.0187804672445814, 1.25377708045325, 0.926753414600449, 2.30280822291568, 1.68604961709851, -0.257518463333365, 0.703249219603809, 0.784363308938266, 1.78233906016794, 2.77988729746676, 0.559215050447783, 0.632450312952368, 1.3157195724007, 0.396448293766819, 2.6592241029636, 2.0855288759236, 1.94884700659471, 0.957260060833043, 0.18716763063987, -0.186005153858802, 1.10367403048544, 0.618909254926726, 1.48496979971748, 0.705350209565507, 0.336114413274574, 1.82066546528513, 1.15602165861511, 0.774281222014263, 1.42474025345588, 2.3668907164332, 0.794674648599702, 1.01799531866667, 1.90479545762214, 1.63117522526422, 1.20894150029931, 1.64790312867293, 1.43352546708837, 0.465781070318052, 1.80786096675332, 1.43515297783589, 0.727685218224957, -0.0928162415419211, 1.80752947721029, 0.610693513045008, 1.06031253849131, -0.0566043742836863, 2.0307572058794, 0.159874055756814, 2.07896690131237, 1.34823011810207, 1.78587582100957, 1.04695883469942, -0.898893293235406, 1.10628084153084, 0.136481198161458, 2.24910797899499, 0.525081097880932, 0.595115932788555, -0.120409518326741, 0.989740829357829, 0.759122000351103, 0.74524774798471, 1.66042980422554, 1.78487077324826, 2.2061656107579, 1.67976388879716, -0.26477138784094, -0.141440662351955, -0.335934415974077, 1.63089355135632, 0.0120069706501685, -0.162219265337323, 1.8155624725613, -0.185649073738895, 1.25576841489696, -0.208816051462482, 1.53170706081949, 1.14232334493739, 0.836659792795183, 1.48727954923902, -0.00096090211093075, -0.211915810527753, -0.500655570589765, 0.631287518331701, 2.19704390150556, -0.744877302797046, 1.05139882184139, 2.24576046627054, 0.967095149490927, -0.223002475166615, -0.417887356754763, 2.16978437815248, 0.893934608794192, 0.386278397033466, 2.4240216937389, 1.73162889275942, 0.841092615130328, -0.0598401591509008, 1.59769889717132, 0.240871222867088, 2.08562042881213, 1.40314271151497, 0.327814041727377, 0.576835024010073, 1.56831052666881, 1.3606082709411, 1.23612262524756, 0.955247435038302, 0.574813766005852, -0.0144444920484839, 0.044665368178101, 1.71097116478096, 1.52511037939834, 1.2157621621024, 0.380941599320219, 1.3056525090314, 0.711457707025305, 1.45770073132625, 0.625253167020145, 0.859706400747508, -0.574116776887863, 0.2438776768325, 0.397031550617265, 1.40954703865875, 0.879091458035327, -0.0712470377698649, 1.96801271563877, 0.0827044337638018, 1.59576338419212, 0.800740314230615, 0.611727774093077, 0.368424693199505, 1.92101345976112, 0.191472405466046, 0.12527165868518, -0.0556888329445061, 1.40032367394989, 0.378945661035816, 0.832289042782412, 1.95003156170238, -0.889842758130067, 0.274070689168858, 0.680710843348652, 0.715187091246175, 0.50961549583327, 0.604437081296028, 0.439887903470241, 0.898194341759608, 2.80297292034313, 0.180770089282713, 0.0711807705197811, 1.36240434184613, 1.68435042033604, 1.82621154282983, 1.57275461654435, 0.506479627222813, -0.290165598239041, 0.220511495539046, 1.86528371488287, 1.80180144534095, -0.052960120826252, 0.670710534354517, 0.675805074599692, 1.82761649598049, -0.299846474075191, 1.30811043614562, 0.735444036344724, 2.22893443660695, 1.00374078615023, 1.3756799555012, 0.674084437267308, 2.01220145856235, 0.0260137675602635, -0.00679499293842434, 1.06642151423345, 1.09780985692874, 2.42574942824215, 1.29251630867445, 0.759672554561615, 0.743095181199894, 0.328195581454741, 1.64997039607469, -0.120588105972901, 0.198195148212888, 0.872796853496786, 0.521537448459808, -0.046573699505016, -0.0560966260920954, -0.567855502972459, 1.65283359028107, 0.156405437483238, 1.93194572631172, 1.77862523729779, 0.874089646304595, -0.302644619358928, 1.7268375214826, 0.800784116965176, 1.64953756997014, -0.379723803340581, 0.420831135181378, 1.13075360182609, 1.01932456161399, 1.5527401713794, 0.576569001231381, -0.0668656046850978, -0.210911258629103, 0.147754750091855, 1.35997461606195, -0.43570944717135, 1.36013937430177, 0.445897050539279, 0.296051713553454, 0.479200539004404, 2.40552255044426, 1.62826875307876, 0.587140346351732, 0.681412381400845, -0.120251836787833, 2.15577641927265, 0.652165874095762, 2.16303192825693, 1.21566551548004, -0.283687080457899, 2.47963558565745, 0.617256274435911, 0.457884609319309, 2.43972452517142, 0.731524455382423, 0.775856768993385, 1.74617979741202, 0.502791925164491, 1.88158601763546, 1.48189872889396, 0.948732732197313, 0.329662716380206, -0.629056687032522, 0.746572818842245, 1.3262914658486, 1.15561838992649, 1.78226457985478, 0.474953271403286, 0.270084374684081, 1.78800735439108, 0.369130656516822, 1.16094969557318, 0.431395469232765, 0.262675306346066, 1.28678828422726, 2.56244180260004, 2.59343944741744, 1.30981834263464, 0.605685410568112, 0.221762645484613, -0.59617293327586, 1.0441412589376, 0.544440606054087, 1.72325193221359, 0.953996221938496, 1.81647960301805, 0.20195912052584, 1.57795143949319, 1.67371908311012, 1.3898675763029, 1.51319202080781, 1.94898177052305, 0.974034068773996, 1.78207581928234, 0.379754716575388, -0.0493557869131748, -0.468577172702172, 1.26159883419307, 0.181641900664017, 0.524351875299369, 1.91689413011576, 1.47864338957162, 0.38713828657509, 2.04167568892544, 1.23750698096033, 0.140956705428359, 0.608432410445728, 0.460468396678872, 1.64479491998833, 1.32659124783194, 2.22764204870888, 0.203447415147332, -0.24217746434789, 0.007127935845128, 2.1204489961709, 0.325517844822051, 2.02654237113102, 0.113345648866407, 1.68897117508896, 0.244543293816884, 0.219101834128894, 1.48767571315349, 1.62150686974309, 0.268397934868534, 0.374232855479746, 2.72034190588426, 1.82877581920783, -0.292944133343371, 0.0868703358588973, 1.44857160474383, 0.585893023644637, 2.52869451042549, 1.45410673507622, 0.638015237364367, -0.425192043004174, 0.648360598200336, 0.548857271395538, 1.92548214309124, 1.50624269811629, 0.361411460685703, 0.296497779616711, 0.319627742254928, -0.146674631204292, 0.691201383290036, 0.423241077038324, -0.139795304374085, -0.39216393872201, 0.767053938895112, 0.0228652766478084, -0.198764934102224, 0.709540026234686, 1.66032468896286, 1.24137501144142, 1.1788560193466, 0.164673306889384, -0.833488453057801, 0.324812106185467, 1.74962961892529, 1.34779433086373, 1.1162828204021, 0.90396212124761, -0.0417894465614936, 0.42625186656608, 0.454601700250006, 0.917542193929878, 1.16989635239232, 0.370573304450871, 1.53545066844526, 1.26714568409795, 0.117059176995041, 0.450391707456063, 0.0630492603932893, 1.12920994583476, 0.283250078699733, 1.56551136240835, -0.00722452419314507, -0.150348963537747, 1.69782073109285, 1.97203613171976, 0.179065209223973, -0.481000970534718, 0.679968351241561, 0.511606700991565, 0.798793320812615, 0.922597267495115, 0.673120678173308, 0.310487760327279, 0.590740561703538, 0.555353371114171, -0.087330686289414, 0.399996897981041, 0.951080420643065, 0.780372724798305, 1.60710435595034, 0.754007789672164, 1.06951310119398, 0.96002863225402, -0.036979785713405, 0.469081126492685, -0.278447712603119, 0.224612339082651, 1.48826371638644, -0.41443789952055, 1.06432330017032, -0.0081887098542982, 0.101832064735036, 1.08610851696897, 0.195235600870459, 2.52043402912127, 0.00513653875424464, 1.64905868755238, 1.55784999476663, 0.288739227043458, 0.26698440378268, 2.10156578971687, -0.169745805032069, 0.693799568224177, 0.19883475102555, 1.34361616216875, 1.47310359706797, -0.107079569490144, 0.69760290331852, 1.66754247759496, 0.762774482388144, -0.034241066677864, 0.64066553128985, 0.960480146964012, 0.681600912833126, 0.560392908992933, 1.71167081127976, 0.689536425502554, 0.104241563287786, -0.201079080071226, 0.687971591175781, 1.59544687478644, 1.4067606041264, 1.35729678156644, 0.743449120852725, 0.111641579217403, 1.60879732983445, 1.92434447344522, 0.963734382175732, 2.06220242722947, -0.554830622853891, 0.347380986541332, 0.0706037633555127, 2.66312736819867, 1.74007647200927, 0.382691600827679, 1.79367788360131, 0.469877971435934, 0.716688706136128, 0.116020328845131, 1.25483013316248, 1.86894020127635, 1.09650910738876, 0.902687864580246, 1.1588247426213, 0.98539570600424, -0.973698635602541, 2.00890040374938, -0.0719477875757326, 1.46931056086591, 0.784447669590588, 1.44397993309039, -0.245543128710112, 0.54552049564655, -0.308917095335252, 1.15620098155779, 1.16117058280685, 1.6636160874516, 0.230497570773037, -0.212824807898431, 0.672292319863463, 0.166397230412516, 0.680484822351858, -0.160546545566228, 0.612911123239495, 1.95675959559059, -0.178749050663541, -0.528953229769347, 1.44379073695365, -0.187513100884086, 0.271002954889983, 1.19952365553258, 0.611389629681369, -0.985776418649874, 1.20033179754684, -0.189372684954712, 1.52970819077855, 0.583725660809657, 0.58569291631527, 0.10483594627377, 0.402135725872379, 1.73671973563068, -0.196153034940785, 1.07899984698683, 0.591294964320959, 0.301650912582798, 1.46066837507739, 1.98983759239375, 0.835475715465355, 0.819757081930647, 0.334520609869262, 0.621151423149237, -0.0537963464502771, 0.595249164105977, 0.560289481302099, 0.0336770408621588, 0.371656401474011, -0.421665700747351, 0.00375404491891257, 0.0661359067742486, 0.339491027616221, 2.2492363543381, 0.876572798261078, 0.798253754372638, 0.875469185467005, 0.589069932951853, 0.162685183731995, 0.31126944726946, 1.1330454955047, 1.71270842686333, 0.0800783597194868, 0.609411255373181, 0.787250089933897, 2.8019846953882, 2.33130890495765, 0.76133124413189, 0.882747017157287, 1.82099654093807, 1.1687425805571, 0.285322819450279, 1.52798824756317, 0.567229334541801, 1.27330053638114, -0.133902191399443, 0.662009314117745, 0.862539510760804, 0.312306111155421, 2.03446563957161, 0.813588330621495, 1.6547183654359, -0.607706194553834, 0.673357010718798, 1.19637520808605, 0.64443215282319, 1.06474272015266, 1.67969056351737, 2.08027230467179, 1.55562080717479, 1.07826041943275, 0.190380417762063, 1.73834700540508, 1.71074341769137, 1.34485645698579, 0.710082979865723, 0.105087515098808, 2.6245847216973, 1.40055620309877, -0.223975418177569, 1.25296721234177, 0.358257431299459, 0.52396063547572, 0.28708689079291, 0.350232899646741, 1.18128618570399, 0.276588257556339, 0.947756798435837, 0.633220743036571, 1.20806069720462, 1.19958335617188, 0.500762427384601, 1.45361530400718, 1.7151864320262, 0.624891780801744, 1.91195590479052, -0.751427405044689, 0.793653787772604, 0.83057278138116, 1.71059721113022, -0.0769277496191388, 1.083607270749, 0.816565341936895, 0.164546701691372, 0.635915739043119, 1.86814896279617, 0.101943308137229, -0.352187778064412, 1.26236492153703, 2.16443869642004, 0.498237318925154, -0.307727868410139, 1.72851529871977, 0.535380354939536, 0.757696722405076, 0.852072930069451, 0.775675625982632, -0.389434793521468, 1.45801570848825, 0.627156766949514, 1.93282207794712, -0.299332891675717, 0.983374140661105, 0.630235250021591, 0.0363498854088057, 1.15871896312249, 1.25494088473028, 1.89889409194508, 2.58264964160187, -0.118902714612625, 1.29807913860561, 0.161527868139194, 0.328935581829806, 1.58657990581977, 1.25758283060805, 0.759247056753146, 2.29218990320038, 1.43909846851953, -0.439712035183451, 1.08856102328237, 1.40549883436641, 0.543742754498836, 1.25360023940494, 0.492018268950971, -0.179647250530397, 0.60534984328794, 1.19364454111849, 0.756045966937025, 1.46344055911921, 0.808365613388937, 1.85636277410177, 0.488462801166186, 1.48121757490417, 0.676244127606571, 1.54854275282894, -0.487843116929685, 0.554028111585228, 0.203941767377364, 0.0545670918035402, 0.325321128724485, 0.638282946279976, -0.496802088576678, -0.439785479944169, 1.66690979953855, 0.406620054631665, 1.17129555085907, 0.562167503614622, -0.232371955428677, -0.233723467509736, 0.910467856463531, 1.50981715859405, 0.190098019834501, -0.309784202316507, 1.08693531232391, 0.707746332197279, 0.40112794762108, 0.060532559724864, 0.500145039436241, 0.29297923160342, 0.472749527224134, 3.0449899929776, 1.30258310529158, 1.27790389519937, 0.262797942555192, 1.35471091903618, 0.0481326481055865, 0.307896712375739, 0.213761391324178, 1.52144073994455, -0.0732238706720594, 0.824579939562, -0.244014550185405, 1.01118268759291, 0.883326055320281, 1.34916437072641, -0.0658181430148824, 1.02015406637584, 0.383670886460314, 0.962721490672279, 0.302563859087564, -0.520362256472169, 0.821609161520623, 0.696379111805286, 1.19310052218619, 1.53089871778718, 0.695304812533039, 0.845413621363926, -0.081791156521063, 0.913272707186147, 0.705939695869349, 1.91730121373641, 1.07400794789628, 0.294083306304757, 1.20155806926584, -0.307121798984108, 0.884278297903183, 0.791244289291293, 0.504353299822485, 1.48870755828362, 0.876206412358508, 0.978022613880254, -1.31371589375414, 1.11948030088831, 0.910136279704124, 0.764165257925267, -0.492746237309985, 0.771489215132551, 1.25631789528592, 2.13209737511792, 0.780459117722136, 1.59520639667533, 1.80630077280097, 0.819630300636534, 1.54970951495257, 0.809034520166957, 1.29666423875453, -0.493739567587631, 2.20766142223235, 2.23797228801555, -0.553102476742955, 0.8801497354948, 0.574118830838149, 0.827918307136597, 0.391688691257543, 1.66131781704618, 0.776096903653661, 1.24508260460897, 0.255941647961932, 1.90626461086997, -0.0996934864972757, 0.810801326592838, 0.438477583089335, 1.18174585277821, 1.66237383760752, 1.36089612814607, 0.914562445965789, 2.01722399167317, 0.188003491368547, -0.426601898329341, -0.453402830894536, 2.21022316416874, 2.25092550272048, 0.956992392183197, 0.0386524896424627, 1.12990391556577, 0.286536607321684, 0.0992277472411742, 1.25078504156915, 1.647661616956, 0.698638132531489, 0.0405123291948245, 0.772902629108711, 1.01860157064573, 0.725308293490211, 0.276112742512458, -0.22585125175829, 0.0161451067573328, 1.28466323820862, 0.758802668045806, 0.874846610664344, 1.29668547501506, -0.0789860982860003, 0.687096889577299, 0.0465602507191857, 1.85511059918579, 0.0394957459578263, 0.858041784227359, -0.310362049011153, 0.244040976711051, -0.169324560265692, 0.664811555965372, -0.0252827395495832, 0.200485727612208, 0.640225107231066, 1.13211496714308, 1.34188987898413, 2.11728417118429, 1.46497979683055, 1.25232960752051, 0.323537251301915, 0.336010892084616, 1.01654194202193, 0.14951929021187, 0.675650170903131, -0.0304783275458682, 1.24995093309384, 1.7763074148047, 0.996051679857562, 0.900266564660006, 0.84612235830344, 0.94317527409156, -0.70575913760887, 1.08195665546986, 0.684439777530353, -0.0154719806439662, 0.0916526740701027, 1.04080200114601, 2.11428578333055, -0.0985758756248416, 1.11000123077787, 0.182258092760854, 0.31014415280597, 1.92623172012012, 0.65491067424319, 0.600681111304509, 1.13397441235104, 0.606293226795844, 2.05047657660497, 1.29161792405749, 0.200269661846955, 0.404119230960995, 0.867474556470412, 1.13399133913415, 1.56576669827351, 1.95034046931124, 0.424535142469901, 0.562341135669539, 0.379250366915534, 0.45766205397136, 1.39335365205281, -0.129700864187866, 0.886350021879936, 0.573922658482445, 0.890767506932291, 0.475592368435796, 1.20889880315509, 0.798094894210923, 0.370836988253661, 0.579060769870881, 0.647773760417724, -0.651802413186052, 2.44440365181514, 0.389161514839118, 1.33073741816993, 1.77487019917857, 1.34666014218205, 1.07518472346411, 2.14249483075376, -0.636409837704476, 1.83109825639538, 1.80427037067128, 0.939327226383897, 0.392074396852904, 2.18156462600403, 0.793043182505109, 1.40563645203617, 0.827984280717337, -0.3691629659921, 0.3795771244666, 2.25335495604695, 1.4744644868031, 0.0311550499118692, 1.44509040241456, 0.263042961529597, 0.158121156405131, -0.394338504218848, 2.01357216750149, 0.814544814575813, 0.0368112870539131, 0.942452836906662, 0.411677348401298, 1.9153666445643, 0.789216205702337, 0.904845683813734, 1.14538095717404, 1.51484643188827, 0.0074605757856499, 1.76444921623893, 3.28154955553185, 0.205403948163434, 0.813762481778926, 0.3856632048082, 0.413891657797851, 0.796448823424933, 1.80306273729322, 0.0628274079156055, 0.630973594260427, 0.314079873786486, 1.30460935364194, 1.67981502496774, -0.0189623964060937, 1.50701810956417, 1.47789940706263, 0.82808420708169, 0.496561580436781, 0.523376071584206, 0.333628707790166, -0.0151780536286155, -0.452535787176737, 0.0955863313466249, 0.8629179361828, 0.537072794568249, 2.77260849193379, 1.93960294279573, 1.06774178551925, 0.418317818147214, 0.855359072966044, 1.19572426356275, 0.817211288954001, 1.92876790314715, 0.0210508814560778, 1.62572347808347, 1.69130647989792, 1.09533321329869, 0.934851789775891, -0.053200150807414, 1.60029711500193, 1.21968343751632, 0.355947936541807, 1.42296693278704, 1.64681750022405, 1.64018596076896, 1.01525643010359, 1.34544777090947, 0.781516131271482, 0.541547085345076, -0.222176093853688, 0.668585046973195, 1.91862203211242, 1.66178831974149, 1.3723243671274, 0.344776525787288, -0.4118386091377, 0.951905209037123, 0.672644268504895, 2.0184945311968, 0.351754301152207, -0.160236885095437, 0.421536904018166, 1.15804382047982, 0.567431673995688, 0.776842816872604, -0.235059855577211, -0.0181180363770087, 0.771340242800071, 1.46892138224002, 1.37571446742596, 0.982598148275927, 0.279132754723721, 0.21043146726768, 2.2089263396705, -0.627635604497449, 0.722134063487509, 0.990116227459745, -0.261026684051709, -0.602590792545456, 0.973508926300887, 2.38668204492012, 0.969766551498678, -0.107666112581529, 0.363145104285993, -0.0727990143429281, 0.00849801059366617, 0.847654153363238, 0.89919775268039, 0.150419180542046, 0.764382627262873, 0.558210678815955, 1.96410253707675, 1.27092518358747, -0.102192522749499, 0.651962866815797, 1.62923769250499, -0.11125971780986, 1.55518506819987, 0.147160461861958, -0.512664894148518, 1.50748860135272, 0.989402713284918, 1.8797310932265, 0.959516116088042, 1.03066896807676, 1.12384137595065, 1.48648699195421, 1.65503920145478, 1.10067296892826, 1.65022642767275, 1.28346287987726, 0.902595965666836, 1.60456043706239, 1.12434918748357, 1.37653892902169, 1.52592100123687, 2.41820863732387, 0.542286577711241, 1.21079784968737, 0.195777243076624, 0.600888957165434, 0.9943248053239, 0.915407203540142, 0.847684488680551, 0.579839368245834, 0.911635042831704, 2.07084369546317, 2.08420137147799, 0.510885550540527, 0.70514901926802, 0.708316011813601, 0.621491556518486, 0.738389891298481, 1.43290618168303, 1.08386360279803, 0.0623963000597443, 2.24237600111814, 1.09577605679834, 0.866913845015044, 2.03740179470896, 0.812232249437685, 0.943585205945446, 0.406369623239671, 0.592673586873619, 2.4011847639257, 0.877298465286437, 2.02302719969278, 2.48480589625788, 1.34529828727732, 2.2618918537765, 0.336479544726121, 0.561709422403247, 0.504548133720167, -0.0187089089385243, 0.425708114873973, 0.861702828641364, 0.640890515745977, 0.611771972552247, 0.523335085638402, 0.467075187127723, 0.80319956231822, 0.215335157026221, -0.575298820479817, 1.16869791491453, 2.43255119415168, 1.18533915907915, -0.0785092855822789, 0.682004157358844, -0.670311415108659, 0.915360643413106, 0.507229176935431, 0.866253644918148, 1.29371568259581, 0.0121348989842369, 0.918017517594984, 0.991421000142595, -0.0745800138579733, 1.85004276116598, 0.665801717314313, 2.30950471857275, 2.24069183309931, 1.03262177941174, 0.686883555652982, -0.194179181105734, 0.630190795099592, 1.87094988405588, 1.03137661319853, 1.38630046768965, 1.60149681015383, 0.15895952507348, 0.783085984358466, 1.08698414143225, -0.147238192699961, -0.261193959929814, 0.731689183635697, 0.817221378294854, -0.183890079473155, 1.36896398978811, 1.36944372933968, 0.0854082285895334, 1.41108877375866, 0.0900832280915123, 0.266752192394646, 2.68570540573764, 1.52344367149911, 2.19532076445421, 0.265436460120095, 0.0559870200529556, 0.782613098089175, 0.796070331825299, 0.470393890233487, 1.28405246299416, 0.290772981378752, 0.47406020009529, 0.0115253322092193, 0.625797619221867, 0.569680971612263, 2.10539119353392, 0.985806913527125, 0.501450255900261, 0.456282156217373, 0.0454257371295724, 1.42619152242106, 0.377083694712252, 1.87479879621462, 0.210821529868338, 1.18931476513021, 0.443807800039015, 1.23339328473922, 0.265507584123651, 1.0738388151507, 2.24421918832317, 1.39481159894472, 1.1245841863299, 1.06010131124656, 0.600295977356791, -0.693455149708647, 0.327200284582977, 0.651950656462308, 2.22372744511568, 1.75573539361929, -0.763839791001174, 2.0406371950935, 2.46868876346383, 0.448747237434108, 0.165354851490912, 1.58651380545891, 1.46773366076625, 1.70242271427112, 1.26452133462873, 0.116282566730294, -0.515317008245649, 0.477068203555412, -0.395038383913991, -0.79639983388427, -0.815375066199472, 0.0675741740301994, 1.726465620607, 0.306464881334805, 0.13085975475021, -0.0456645790358243, 0.526589222799186, 0.461722015998484, 0.189889046605203, -0.479213006886541, 1.74999461577825, 0.43719735514608, 0.890519856236759, 0.64831248233203, 0.916683617608412, 0.704140860672029, 1.4859584173504, 0.297383334968486, 1.28137925308746, 1.93074725625091, 0.222678401060666, -0.259588712586025, 1.17727394293358, 1.91109940444046, 1.33138380990749, 0.424476748262322, 0.884137924631488, -0.622912397408473, 1.2626788221836, 1.09707407401659, 1.89470345399507, 1.85509330465301, 0.816297828214817, 0.689260606175496, 0.245782821401106, 1.45159060232144, 2.54293986322737, -0.175989670352784, 0.141672612767388, 0.382269171979669, 1.03683899432519, 0.476587547295114, 1.64815258131935, 0.82823830311025, 0.297767632293479, 1.94747133824148, -0.537163621575463, 2.40534261072377, 1.13953833979867, 1.91090944596797, 1.00943110389758, 0.331756845932617, 0.0400614870838644, 1.2616454959004, 0.647210547703343, -0.0629161552716242, 1.05010582042848, 0.073600336455945, 2.0716785185262, 1.53616942683778, 0.455550979404339, 0.0940920289167317, 1.32294252227744, 1.81572716042105, 0.392431383239705, 0.622140888902998, 1.58895611112457, 0.854224311043313, 0.0419785508542783, 2.13727659895724, 0.466671521817737, 0.922266895300734, 0.203641774127989, 0.163320991071616, 0.981369917573719, 1.18827934682059, 0.528938370170844, 1.52509991079665, 0.987742463758625, -0.443365415719644, 0.320085723616626, 0.335767307705395, 0.302881437026047, 0.823487054177867, 2.01885153787727, -0.583432853692159, 1.84236460278645, 0.971874261679684, 0.972207417684302, -0.332088559778757, 0.201858315827242, 1.87777800653992, 2.57074295942602, -0.103130593037236, 1.13115339097335, 1.16029566786049, 1.59364436380967, 0.328238092258881, 1.50463701714882, 1.14736012848471, 0.928477315894698, 1.08075459671265, 2.23084333860968, -0.0746515081729545, 1.26653398425743, 1.21030929635932, 1.64811258550465, -0.0557898364705383, 2.17482769271981, 1.85712563426891, 1.06148141980878, 2.1319338538372, 0.732937693254811, 0.82473886135661, 0.18490073087335, 0.721168871953085, 0.887774026148709, 1.00889666277304, 0.896586262672789, 0.707127090927429, 1.71222469088597, 0.393564231082289, 0.223096328994459, 0.732242874286039, 1.35062432391068, 0.00532068855518233, 1.75220847821765, 0.0463370350326482, 0.899595411531473, -0.697135637635513, 0.527758640814232, 0.565206832641306, 1.99224577094587, 0.126233857960082, 0.684206533377432, 0.440996656084909, 0.927942061205126, 0.989302173797744, 0.467088893345657, 0.458271507938683, -0.0303912687866799, -0.550988240568929, 1.70411620075628, 1.67854500704731, 1.12561706696608, 0.0221333336678235, 0.398164022089692, 1.45044361670256, -0.661338120632559, 0.710564783503899, 1.05810663880786, 0.477884207689622, 2.12284277759376, 0.542404806194741, 0.754463054926417, 0.653289073781057, 0.42423036293284, 1.36948032025022, 0.162519205981176, 0.106318152809788, 0.0973379436333456, 1.26262889256059, 1.39739920014555, 0.597636716159587, 1.48738710268866, 0.586120712587564, 2.01403776227662, 1.9748927792355, -1.32128909052713, 1.84637458650985, 2.21303538024556, 0.287078930421037, 0.379555832418974, 1.3835298091881, 0.61478993356172, 0.151828698048922, 0.374254870335673, -0.211756745973944, 1.08877085442081, 0.326745219672835, 0.995028498835492, 1.4360163070297, 0.48978491243771, 0.636559698324812, 1.48413472116037, 0.898357994935248, 1.55705959648143, 1.02627488660849, 2.66256845010888, 0.316774704052492, -0.213752150981369, 1.17768875989609, 1.22544680543115, 1.01341311284697, 1.14564077691336, -0.270569974514031, 0.936191454583217, 0.958913777989489, 0.853816805210342, 0.646308583149955, 0.895230837194064, -0.516928566760096, 1.18304393429457, 0.982280309495619, 0.624407601323937, 0.366937128289675, 0.797026037939906, 0.122543476462753, 0.296873781887, 0.0710759107109136, 0.147792316237699, 1.46924823859129, -1.11857888758975, 0.268929410091709, 1.40049994917226, 0.455792660334302, -0.690560110706923, -0.0288154917819379, 0.310963066583793, 0.617194033269004, 0.71471209304084, 0.855520363007456, 0.422696050515834, 0.338507931130069, 1.10404252848778, 0.517000138445093, 1.92121556026214, 1.02139442075355, 1.31765769842761, 1.05215627749046, 1.76606806422563, 1.1150300966616, 1.32055631906446, 2.02338531769033, 0.0178903354974891, 0.816124670750231, 0.548951684071714, 0.37539880336781, 1.63320446245126, 0.560806238532623, -0.191756609720634, -0.0818595905667981, 0.385988683606735, 1.76940879174909, 0.649750849772462, 0.71900832804925, 1.76722330415663, 0.953213498351612, 0.711661669088886, 0.0140754202146272, 0.242735735590833, 0.531098184283085, 0.832220132159921, 0.399169156816117, 1.49092962933021, 0.659324749583111, 0.154620241229346, 0.758857041368499, 3.26638793839018, -0.276719547390514, 0.926728850832568, 0.348223206810173, 1.62936752769784, 0.85643907015654, 1.63905890453768, -0.221871739808047, 1.97048572222006, -0.228368601867131, 0.560875599634183, 1.53257807518746, 0.567468877008208, -0.2879201431488, 0.56259589168196, 1.21091474427006, -0.0843834899991927, 1.09424697929062, 0.480968365153419, 1.49615515786886, 2.12221600260143, 0.594558407751898, 0.274663668213397, 0.741904517868962, 0.092638646017485, 1.63142296782554, 1.06609053318515, -0.682042189816971, 0.552250434399728, 0.548266093150241, 1.75728955405835, -0.293764995444739, 1.08369058690291, 0.351344531304508, 2.28647471853645, -0.563981969063894, 0.221360171576124, -0.477325756777584, -0.155809286573802, 0.829489034542459, -0.043646031880501, 0.237235595418668, 0.492473829527413, 1.64998989470409, 0.814323766281126, 0.94913645140748, 1.25354536282072, 1.39038893450006, 1.51864312818769, 1.35024619378923, 0.809913184177759, 1.77556244085733, 0.295399899269272, 1.67406924778625, 1.38846903783445, 1.86233240684709, 0.245342086576459, 2.0427450000813, 0.153936263033365, -0.218540055318186, 0.677702984644642, -0.0843131066950992, 0.858231449161533, 2.02711287282564, 0.0286473130390026, -0.00176129751509396, 1.20740166632495, 1.97279146697421, 1.57757316009936, 0.717692046913578, 1.20530367175948, -1.28849826063483, 0.904956506066753, 0.616290420868048, 0.725019721498565, 0.64295489602179, 1.46628547005323, -0.381659521598058, -0.246516557588309, 2.10248643004964, 0.993683622930514, -0.0813814393337578, 0.464861069995211, 0.834779586113623, 0.7727446013495, 1.64889685444267, 1.61539419267003, -0.0710280143363479, 1.09303895159064, -0.692542805504817, 0.875409087089616, 0.783448934096631, 0.533338825974892, 0.69050814017449, 0.536542215425038, -0.591833407974221, -0.0286262085102281, -0.148834270204899, 0.8957553789617, 0.551594606390518, 1.75564589320617, 1.94969393847645, 0.430896715482592, 0.697977403286, 0.751324726514526, 0.613649216780143, 2.01383723146647, 0.888764288682449, 1.23189181107168, 1.01058324057585, 0.579930873943887, 1.03858173492914, 2.23591951860498, 0.615681670684818, 0.0470140624830044, 0.691888356448066, 0.190465485592363, 0.278471976148841, 1.09794124845686, -0.154655136783457, 2.19472180111908, 1.15332320814849, 2.52373908311577, 0.496623391177215, 0.604986370101872, 2.20955864597186, 0.479531737039609, 0.134137129438687, -0.722018679755775, 1.13881282330803, 0.584282737119521, -0.0313968427082831, 0.2956445346544, 1.79247941162093, 0.704553931198529, 0.237880131287257, -0.0574766162129982, -0.00885219110810179, 0.908340823520131, 1.73817690421629, 0.53953004430303, -0.66522482149742, -0.113345757219756, 1.90854338742109, 0.178942838586517, 1.25528671363397, 0.55000034495999, 2.0942277641506, 0.0782223898787024, 1.327005362442, 0.571622229573304, 0.392705456671656, -0.110634965019611, 0.190917107786159, 1.50410061919773, -0.35564754734407, -0.560333678254578, 0.46525945786098, 1.40314489727009, 1.12441690604302, 1.33208153523012, 0.461432217439893, 0.423532241245628, 0.480858735420144, 1.86220058369792, 1.34341170055382, 0.831242086347174, 1.09880030181698, 0.526342069510727, -0.248547337081187, 1.13063518863384, 1.41982173253697, 0.680586291999851, 0.848275808253421, 1.11111345706873, 0.571937423083322, 0.970361221959119, 1.01569080914864, 1.40904030303009, 1.20241984123686, -0.119518477118794, 0.803042910669262, 0.396314497720956, 1.91625057118802, 0.592349541209136, 1.3741569684773, 2.2804606787961, 2.13121649516224, 1.52118823440914, 0.747377917718117, 1.51822363252475, 0.623332172388276, 0.0412294042846001, -0.230511035396847, 0.117164272081567, 1.95816680471061, 0.390399048110242, 0.804001154655137, 1.0542476071264, 2.32704504340084, 1.89407771433034, 0.454060709640314, -0.941901660996956, 2.33329808770445, 0.0277275615501328, 1.25693006851963, 1.17717173086068, 1.31641246383062, 0.410869273977623, 1.13476566314495, 0.570279992075814, 1.02418210659674, 1.7433877281753, 0.638258217781785, 0.47044522181969, -0.354479421738106, 1.20698693134722, 0.718593153705428, 0.558457785136087, 0.78678090801627, -0.191863611899872, 0.75232723861601, 0.696634330475758, 0.644494841385836, 0.807657087328771, -0.0757343913704049, 0.397377391004685, 1.54321900308773, -0.290432825220088, 1.68746358143099, 1.04138605336793, 0.153736763934842, 0.322938852981825, 1.67678727219476, 0.834453952904083, 2.47435102174469, 1.21735705404012, 1.31255890054262, 0.637251345595608, 1.18355089692425, 2.4543858374925, 0.443714528064138, 0.743238314179069, 1.9903585924613, 1.01231523892636, 0.176443025342584, 1.41501018163712, 0.603682447842142, 0.190698470407241, 0.918465079779607, 0.468148681779517, -0.580965724684053, 1.2769380593859, -0.393120979147151, 1.42061559201334, 1.72275491501881, 0.691728950168391, 0.706541525607979, 1.97019863550877, -0.388273626521746, 2.05345656292299, 1.63337808950738, 0.682456878796008, -0.066614812863788, 0.283632165996807, -0.0418766287764183, 0.461566390957292, 0.934228894878605, 0.25846878745207, 1.18039768076819, 0.453083371139599, -0.903137600154971, -0.110018670632235, 1.04396890079584, 1.59884778767295, 2.28509000433415, -0.479357448983257, 2.09569697127825, 2.65275336716232, 0.837258199426856, 1.6205676254886, 0.619132006994642, 0.251857462749974, 0.804962203572, 0.966718801104505, 0.021056575796518, 0.248101811609879, -0.0550596609389411, -0.0640054588458855, 1.21022505832183, 1.55161010086859, 1.36187012361802, 0.246229570654655, 0.916377133281988, 0.798344854816886, -0.0748628001189632, -0.464364899882694, 1.87353203682012, 0.574382329079415, 1.06525705469258, 1.90993697900022, 1.35559472803263, 0.17953720754688, -0.206404816692355, 2.41570398312454, 0.464173608011925, 1.14230509053553, 0.335039143239848, 1.03594308977617, 0.722377956247345, 1.65838934067584, 0.198097767696342, -0.858851098680489, 0.464809560940482, 1.20545255870904, 0.454486537593497, 0.507672411843752, 1.96996272084038, -0.0984172517546044, 0.850376488154633, -0.62845360760277, 0.624792284166876, 0.833928829220767, 0.770061941282572, 0.201433149667003, -0.0177804485327817, -0.198569089369529, 1.66501380618946, 2.07238523839257, 0.414621817681244, 1.13762555748652, 0.317814384303304, 0.988939451407527, 0.574883698256066, 2.08219327565094, 0.0610603452867045, 1.72674109405224, 0.504417362022537, 0.453119542416999, 0.544544225121826, 1.26549843568095, 0.819766950074266, -0.431943031291436, 0.274090159779875, 0.318576065941822, 2.46199069246976, 0.308106054007801, 0.679431106205734, 1.128767746502, 2.07638256373321, 0.390696579382197, 0.13403447820919, 0.498709465246796, 0.564107481295106, 0.197224308798642, 0.45217559184761, 1.80399578713352, 0.644251627357157, 1.85413893570775, 0.509619921322822, -1.04965952471218, 2.03786503908221, 1.29013532019261, 0.247062348607821, 0.514726219669968, 0.925647886347117, 1.07672798360522, -0.187557291448885, 0.130595668515435, 0.369056352612602, 2.5044355321903, 0.981262353451882, 0.209090922975086, 0.766295954071107, 0.628672561612277, 1.59450238756548, 0.231610784071275, 1.11825956818574, 0.421500103162799, 0.59200048809966, 0.922021822343103, 0.481460698627945, 1.5949624929619, 2.21825472026781, 2.48297983886359, -0.844813600053736, -0.0972942623254328, -0.122148051355891, 1.63713702540672, 1.33357701757347, -0.21207415299303, 0.652540021369821, 0.690313004555632, -0.404097526404667, 1.57539904128755, 1.66851311252336, 1.57518209362537, 0.228055943539626, 0.113358804188588, 2.66854030558179, 0.851686803900211, 2.14578773000432, 0.0512379688191504, 0.810746463742735, 0.94780573356071, 0.638592822631729, 0.553288999302799, 1.20904276064709, 0.0787129750565735, 2.00064566466805, 1.37355823262872, 0.820557551469982, 1.4716946818406, -0.694517241408807, -0.0932888714889302, 1.13263685771656, 0.734579357536043, 1.78517353149122, 1.40779683084368, 0.758899150748515, 1.42345610470596, 2.50365214341127, 0.964854472727584, 1.35413468724895, 1.41781090589402, 1.05532710165678, 0.465096505432621, 1.72233364160669, 2.76259612101946, 1.05767152193219, 2.54633827426452, 0.701358948738807, 0.591191534560386, 1.29186118144022, 1.12051402649779, -0.781187852065789, 1.24679905644025, 1.01393198582936, 0.203636800001963, 2.07782014659493, 0.436766374103568, -0.218770701497527, 0.890126975605671, 1.12196028818941, 1.10306525929564, 0.516218083032658, 1.46635159223563, 0.329438178496483, 0.373819121188746, 2.6381088844175, -0.14828706557532, -0.244487736481294, 0.53082282607502, 1.03000258756571, 0.322070464873831, 1.81038707704771, 0.521494038385098, 1.38064840449862, 0.810961987896252, -0.014974378926627, -0.54675728690245, 0.348240042165126, 0.7237419506404, 0.948731817696404, 1.36765534672271, 2.25324541091666, 1.38297668108905, 1.29179262328547, 1.17695626116976, 1.13847795951159, 1.47628759179619, 0.590129436104505, 1.12213209015714, 1.49567016616307, -0.264831557020625, 1.02257321399362, 0.904243315392089, 1.67756906667353, 0.14152325435116, 0.723347542327027, 0.0799860469979794, 1.64610090224128, 0.098692882232859, -0.285813380813523, 0.780057532527072, 1.26257172441293, -0.0357205701889907, 1.66571843465557, 1.14494796839829, 0.927252097258505, 1.4467296670969, 2.3331054315751, 0.636200579150911, -0.0668862257169812, 1.61183087597846, -0.300346432493927, 1.10241658012881, -0.0132484379883845, 1.34851470747154, 1.41787977789991, -0.271127450217881, 1.1868763491102, 1.14100686277484, 0.336910863559253, 0.426108316278718, 1.22299964090365, 1.13744201455132, -1.58355681547173, 0.647340830337044, 0.442683503855262, 0.067765926158058, 1.81095126395926, 1.98583372506009, 1.39686402608791, 0.406951276122047, 2.45303254728655, 0.077682832316983, 0.976596211193672, 1.38571980342747, 1.29440447604433, 0.339601286411222, -0.349659928587526, 1.34195702816396, 0.351888557859602, 0.3708929824262, 0.459374991786266, 0.528220924959532, 1.28081147894976, 0.581777046547865, 0.38691385151563, -0.459191001091196, 0.475736204829857, 1.21924074779233, 0.971690819466648, 1.30594019279873, 0.393548991205512, 0.665218777282113, 0.450131137025755, 0.323348870067985, 0.315878635853137, -0.879487826870873, 0.364139270538216, 0.624319842666758, 0.962612603942058, 0.551252856449602, 0.169857125506674, 1.96623453645869, 0.107998469594702, 0.706906530491809, 0.7571342009968, 0.58126519383327, 0.3672718132355, 1.84102310806957, 1.77492960652901, 0.439300377604849, 0.193882036754448, 0.317307809274861, 0.961914870201155, 0.254613457701989, 1.64067061678499, 1.04507326259965, 2.03782016492023, 0.0754495526878309, 0.826424129857723, 2.53332013417233, 0.54062074750692, 0.358615447827104, 1.36154345383982, 1.92595090413736, 0.061589472850167, 1.53286613027934, 1.60949107698807, 1.11909926106417, -0.328488709200344, 1.59260627846739, 0.631986312692104, 1.92507487112921, -0.111339989101591, 1.81501025981704, 1.34252420181786, 0.374669906451859, 1.30742700890416, -0.286929545862319, 0.566902607794602, -0.337119164479857, 0.505776272683039, 0.271680171104474, -0.168046222383786, 1.5134998941889, 0.7152377426855, 1.88877085796308, -0.18565146872605, 0.968964953882576, 1.81272058525704, 0.182855693594821, 0.491042277938507, -0.199207266895663, -0.154342893643636, 0.890723728765914, 0.640273029966793, 0.444122535940313, 1.44112581607274, 0.259672470767083, 1.26437946854378, 1.01321705745627, 1.37142715930795, 0.0193876569180312, 1.38346644773985, 1.56117259041461], + "kernel": "epa", + "vce": "nn", + "description": "Uniform(0,1), polynomial m(d) = d + d^2", + "eval_point": 0, + "h": 0.20538267793198, + "b": 0.20538267793198, + "n_used": 435, + "tau_cl": -0.0247353462033687, + "tau_bc": -0.0932728686141775, + "se_cl": 0.0469434389830175, + "se_rb": 0.0678278017288473, + "ci_low": -0.226212917153242, + "ci_high": 0.0396671799248868, + "alpha": 0.05, + "z": 1.95996398454005 + }, + "dgp2": { + "n": 2000, + "d": [0.361267473517689, 0.238220594247238, 0.504554625391331, 0.630264174798756, 0.663470855030386, 0.358030751917142, 0.455946667544574, 0.317725517999562, 0.818908573555378, 0.2745290788451, 0.608203800143882, 0.739042549158069, 0.537573035659345, 0.47936164861184, 0.603704689173178, 0.848695131221604, 0.424320478748285, 0.13165287791538, 0.370571210276341, 0.249988593335641, 0.616800232053338, 0.730435226795301, 0.193048104745397, 0.193609264719771, 0.504958241390047, 0.164906519281093, 0.478471290089948, 0.730758001151567, 0.670353387783638, 0.156199839154363, 0.459871515041254, 0.734367661688258, 0.860706151369214, 0.00944081714192487, 0.561042367092713, 0.570613553183413, 0.741008087803753, 0.379570949477906, 0.167928764217923, 0.748070338461307, 0.2176123461068, 0.143062742029894, 0.335360773244719, 0.725798995512674, 0.39105147083997, 0.431468801761068, 0.405273792702722, 0.385319122269916, 0.679613179237713, 0.764049047465398, 0.347177302992433, 0.682562963363268, 0.653264251538503, 0.356341467062222, 0.867382659711678, 0.504256755581673, 0.639842700507737, 0.310696773594775, 0.557277902640212, 0.263106560027121, 0.561236565728278, 0.147607910616101, 0.42569049191221, 0.344777318441761, 0.486955415051278, 0.623549191317632, 0.729394767119796, 0.107190013203822, 0.358053552129766, 0.710059885000423, 0.597982454414563, 0.537949598330299, 0.797304170773559, 0.0577116208459553, 0.374610171237043, 0.53196201059537, 0.0787922360490052, 0.482028240803567, 0.411399838708097, 0.849020698962371, 0.749255833900151, 0.719034223340004, 0.287965471560409, 0.735852990068251, 0.292134563115187, 0.290855175638698, 0.81490172235184, 0.824815424159289, 0.2386644973003, 0.434811787645074, 0.498962817254046, 0.787529677927835, 0.725907456993821, 0.748167188169315, 0.363948004663164, 0.118488513626291, 0.386406181310413, 0.415296913999118, 0.416113849329018, 0.656536610619175, 0.404288343111428, 0.628894256500088, 0.335589715887494, 0.0574307126223412, 0.236995247231181, 0.54461322547118, 0.137227876793429, 0.184027641713375, 0.606632596182136, 0.220995755108265, 0.566941326461769, 0.18771029548461, 0.905806140402764, 0.295058616392649, 0.604633717401063, 0.475736486390877, 0.414620564622635, 0.406644825365339, 0.49209694180182, 0.51085723035899, 0.314195088557946, 0.447041621110469, 0.313378060483727, 0.526787294571785, 0.938819076639277, 0.189090599299595, 0.530660036474977, 0.41093807161664, 0.0711320317249373, 0.819381169802725, 0.569935852753473, 0.138674552582772, 0.519522299139659, 0.472386344354175, 0.526757132781875, 0.538110462433794, 0.692708751413971, 0.353237179283689, 0.464833112603173, 0.751630011555304, 0.620828410280743, 0.569138954780366, 0.734153057205029, 0.263279039891724, 0.424951783080577, 0.73288659352415, 0.558917297228448, 0.619649981488589, 0.774186713780518, 0.836414072942112, 0.503735093886389, 0.8088958173839, 0.484211769805976, 0.800033211191807, 0.311997727013006, 0.541640677924093, 0.564820820331263, 0.911011410767653, 0.644983703099763, 0.770685794445079, 0.48393164304858, 0.573485232859843, 0.909146513028462, 0.320253809001159, 0.79916045961928, 0.884165095742132, 0.828306162415763, 0.499370300725637, 0.786291707691318, 0.390990807487546, 0.221144218791801, 0.0686570999201183, 0.408677047549359, 0.163368313215597, 0.302553782725007, 0.718058974274394, 0.110297200006243, 0.682977397716113, 0.48760591163106, 0.577028959659789, 0.669800211806964, 0.389888845588078, 0.137425806826927, 0.237490220876824, 0.574621383853318, 0.622836178933443, 0.137895894836132, 0.684531532541678, 0.416122431742075, 0.695494960410086, 0.378325965342441, 0.922348731979269, 0.261647882336813, 0.447964240287837, 0.949985477531597, 0.87104281805342, 0.114162044695396, 0.820403797275806, 0.463459222679437, 0.484642098836037, 0.324039793948972, 0.770413335989956, 0.586855319159853, 0.520105871307116, 0.316266988033394, 0.758205805145959, 0.38870465127841, 0.375775731724755, 0.618697451838261, 0.780020939033824, 0.474659919096084, 0.298001906605453, 0.202283601837895, 0.667036940656512, 0.12056483613737, 0.719185612780476, 0.728433873612816, 0.382628396186346, 0.554743867517529, 0.515628317086044, 0.589891103240143, 0.654773824064492, 0.531552963453641, 0.361623077898103, 0.0777617670874316, 0.806518276477315, 0.675005502525124, 0.600427571971894, 0.331503231446859, 0.57013027431017, 0.959892617718375, 0.394390807457698, 0.360437940745303, 0.894785217114642, 0.754401947070683, 0.742264714045768, 0.279339291425387, 0.619703623452922, 0.366085041029595, 0.321105473790928, 0.63763785481592, 0.952743652740147, 0.536956300672213, 0.550328889951216, 0.16935360956317, 0.42741890304264, 0.231251791055132, 0.199851535061625, 0.0624537499042909, 0.481776348086074, 0.17520044086164, 0.939721487874847, 0.629357396598991, 0.821935834589559, 0.331061417984605, 0.473182944496906, 0.689894014865177, 0.0487628137513167, 0.430112242137712, 0.963848389337914, 0.893493095871242, 0.348845861005322, 0.425134015166362, 0.781206980477994, 0.357304510496754, 0.912268943344115, 0.780035970592382, 0.229165987202778, 0.455941941286248, 0.459481382573144, 0.241864283239274, 0.530869652044193, 0.237681520425057, 0.637421472879186, 0.546751458455234, 0.751856619864881, 0.221441770210471, 0.612660981186295, 0.0618030006629608, 0.173579278667292, 0.74116181552131, 0.736706161392959, 0.82413186783037, 0.516288301301573, 0.64822125305049, 0.697714330764496, 0.263249668210211, 0.163988218842029, 0.831276344539084, 0.885549231553841, 0.887589020735278, 0.877040676240799, 0.435590284954852, 0.779309398668508, 0.775132429962168, 0.730656801898297, 0.78388801364009, 0.374339070028104, 0.300980259308649, 0.380466234288507, 0.261616566981472, 0.487435403092849, 0.134097430383576, 0.427813300826388, 0.586817038346838, 0.153627803350054, 0.350199997972932, 0.930882557205183, 0.138311517459321, 0.161376718871277, 0.408911174430451, 0.694465075175208, 0.730292037459772, 0.592082697442578, 0.514318922143516, 0.300735664876795, 0.167881530815118, 0.726921080082175, 0.312060238347821, 0.45328375310282, 0.607197089339177, 0.353744553617411, 0.839843269531139, 0.515168142434347, 0.146002103389538, 0.791787251615961, 0.37479907656681, 0.47905645299852, 0.368141591800669, 0.640582108133645, 0.389991810715979, 0.718108593402259, 0.716780507974289, 0.699461748983795, 0.352342250227825, 0.526141810314866, 0.550639097447673, 0.597419408972307, 0.459649111929651, 0.747245164012651, 0.593919934663673, 0.548807036133444, 0.775269097274031, 0.153817047491798, 0.207219822043161, 0.876698014048274, 0.623143813347663, 0.357285773696423, 0.369091641753831, 0.462837032322583, 0.354005088029065, 0.613086025014583, 0.570888146107238, 0.438993464976678, 0.466341722687935, 0.685103407526422, 0.297497607323225, 0.29853056097013, 0.414571056011281, 0.546045220744211, 0.18873715526352, 0.261523395767405, 0.782400646906845, 0.286090253286241, 0.675265006559649, 0.573651771192472, 0.755449774344421, 0.145845141878792, 0.388189205548935, 0.465312393488067, 0.212548631946903, 0.483401702906179, 0.767194586241601, 0.20374244880795, 0.447558329257969, 0.816036215580489, 0.524364109032547, 0.502769661391973, 0.640612514007663, 0.482160068485671, 0.573063504400869, 0.298915782521855, 0.648128534171823, 0.438509787220965, 0.724756789802552, 0.0507944187753469, 0.701849279033798, 0.786890089805342, 0.156890751098593, 0.749740248046482, 0.200146176906199, 0.474844144918538, 0.239054731434913, 0.51694504744118, 0.758901353853531, 0.787952975923852, 0.819199787724943, 0.567748349871253, 0.188790849209149, 0.205482924720323, 0.31415727249067, 0.101157448721941, 0.565284006568083, 0.615477587672417, 0.704779807033314, 0.320524367507545, 0.302290738261263, 0.536492237356328, 0.783515635832087, 0.468969875488274, 0.41761398445007, 0.215606340650172, 0.633156209542553, 0.556263085687732, 0.296470337345498, 0.271720048307349, 0.311357212998971, 0.943216233113151, 0.917267208085882, 0.735700836854584, 0.724185056082667, 0.545527027359099, 0.27222314504761, 0.578159762983875, 0.558597311152039, 0.688127051178826, 0.684008053539472, 0.846270041300683, 0.892475291617331, 0.311613751046674, 0.289415515998283, 0.571793186176287, 0.771443819638896, 0.534545931822667, 0.680859485037961, 0.211711972624034, 0.142986789069879, 0.483046470311118, 0.303765257471916, 0.58062733258445, 0.275186842338285, 0.217149648494654, 0.730480248102487, 0.335924295388343, 0.251858774812673, 0.499692499188674, 0.556767681873718, 0.372514349624802, 0.751460179075463, 0.219238572136291, 0.82405059739776, 0.331736374391333, 0.70855977534499, 0.437982844811699, 0.418849883131075, 0.67493096424746, 0.325992221520277, 0.563178373742345, 0.481490246411541, 0.549426006177342, 0.492362559085123, 0.293183654448765, 0.535861766712994, 0.441266303741041, 0.470715277119268, 0.58105097685486, 0.471931810803338, 0.209201893904069, 0.295353627016895, 0.4472148172412, 0.843875877596989, 0.136886587856597, 0.25588883173245, 0.518870544069374, 0.620370164569569, 0.45492960268111, 0.700009129286774, 0.71201669613423, 0.56239715015962, 0.246891797817853, 0.699959622949137, 0.605762798351694, 0.606097455533467, 0.789763329641915, 0.5215782238146, 0.355680852753018, 0.500512720543116, 0.592036737065862, 0.35185160836015, 0.290385043060616, 0.512707423514695, 0.310840823911262, 0.629553407537813, 0.588224190632401, 0.717091083905593, 0.452332083227732, 0.359810696362011, 0.644368222439108, 0.835895858743552, 0.402530475648166, 0.0946921711642869, 0.311065137334673, 0.420264270160466, 0.796607899950576, 0.80905518519358, 0.339930171287862, 0.589111736761016, 0.710001324088913, 0.425145787980148, 0.522144732657872, 0.697349819787379, 0.576292634479384, 0.405784915504723, 0.638691805323333, 0.630416651713603, 0.310828713740547, 0.336742252911308, 0.333807233949217, 0.421602683036893, 0.407031623584971, 0.521961512311993, 0.289859427737551, 0.411182286180139, 0.462334047683704, 0.547391690324943, 0.77799214318857, 0.858218039342702, 0.210778955776615, 0.315457348614545, 0.657369622417949, 0.839381162609346, 0.653318281643093, 0.812842791434997, 0.654905371757667, 0.499489948705204, 0.348521096056467, 0.240485605718822, 0.18242876512127, 0.745736919793218, 0.69441847096858, 0.0828680499040036, 0.628824634551113, 0.650110890208817, 0.653470308711726, 0.444887770639355, 0.391387544033596, 0.374595647584094, 0.725878342544454, 0.410738694774043, 0.44791495769024, 0.414039287032027, 0.445935834712033, 0.374224321776253, 0.557870286803619, 0.358468356708654, 0.368324492863611, 0.297680018224277, 0.224918866363253, 0.611195393242764, 0.841479670907436, 0.181481518523419, 0.815926045740764, 0.784824084420407, 0.719226937890615, 0.221778772065655, 0.195329598270685, 0.887434293394314, 0.55770949642608, 0.715404371421272, 0.620357650583071, 0.455751870127241, 0.185535947923378, 0.754626326102965, 0.0210664627224002, 0.67604904889517, 0.971493389316696, 0.0759270415362816, 0.488250254217146, 0.282505272742728, 0.34266872678871, 0.78246376402295, 0.563220736639494, 0.497043593955923, 0.143463385351541, 0.53413022057208, 0.265982578775912, 0.836125720916818, 0.577181168958609, 0.977039486158702, 0.623854616752971, 0.791259428766945, 0.150675740348499, 0.67366365329292, 0.705910504393763, 0.848727328670292, 0.566263148839828, 0.917913113520856, 0.277024362503032, 0.550009994191743, 0.17426767756534, 0.871400325515125, 0.136948615197964, 0.116168834636001, 0.212185328287605, 0.0129672648577454, 0.31027612225129, 0.268682404420146, 0.524390830711848, 0.741555245974752, 0.260131643971643, 0.488482643713432, 0.0686693852874064, 0.3211326494313, 0.316706311828841, 0.479573620416789, 0.714950285626581, 0.326585124985691, 0.631092307272719, 0.666319902783037, 0.125106971091537, 0.216101729686898, 0.391585872479695, 0.298221424950289, 0.909955970063905, 0.702262123888571, 0.434971521943397, 0.738634497109676, 0.182658049737954, 0.491614670340209, 0.333714635317102, 0.386797743043041, 0.888860076214896, 0.553261781345731, 0.593280785762993, 0.786542451072017, 0.652209603403912, 0.725953331025683, 0.543856005220992, 0.326538471274685, 0.4290764221733, 0.291954678783408, 0.567844991570806, 0.474247596117984, 0.433259101319958, 0.679104692112251, 0.18794082841054, 0.0880793030707649, 0.537962442866649, 0.640534948707606, 0.658149795988854, 0.673466563873399, 0.599195187200486, 0.120103943121414, 0.386119546913995, 0.708049391309741, 0.725224079993583, 0.319869160119647, 0.638765807011627, 0.862413179425622, 0.473884747816462, 0.859282384435259, 0.44853991774689, 0.501755068328435, 0.748960098897695, 0.864651274002139, 0.572832292872323, 0.379890026369494, 0.4422294830259, 0.582888388404395, 0.766351919208811, 0.72167161995346, 0.473569547124599, 0.310526453562178, 0.561849768126194, 0.580160283085067, 0.651077677823022, 0.63603955087567, 0.314911215083804, 0.391464037720985, 0.734147633124367, 0.343974307638966, 0.292146859252487, 0.605526037808263, 0.737970478388438, 0.729047757625372, 0.30966357345697, 0.291508305625363, 0.494430312532019, 0.554798350750912, 0.229719695668399, 0.664721050825644, 0.342543723633264, 0.382682178703012, 0.704065843323529, 0.392104904106907, 0.915118358612656, 0.880424743896439, 0.639714818225762, 0.415991481848697, 0.172914733777227, 0.466851283785278, 0.450060337955162, 0.411413618355846, 0.957951190795198, 0.76961106876993, 0.5095097266928, 0.110441563602171, 0.819662448963863, 0.641544223742911, 0.400847376708885, 0.736960604783099, 0.170450546115482, 0.157711157956283, 0.34269112235673, 0.259638026002671, 0.640407335738233, 0.157914118560652, 0.542486960975814, 0.427389709765864, 0.381513075229782, 0.553243750786808, 0.662789671296951, 0.604669916337244, 0.340435178523453, 0.375585188040352, 0.261954677017694, 0.828571638409212, 0.821418654670689, 0.478777599124797, 0.44774351079454, 0.309786589315509, 0.244066955848228, 0.727899166722897, 0.194351649515375, 0.198843869942576, 0.472724248568456, 0.540357460256628, 0.544510158411592, 0.611732833250873, 0.384191868973781, 0.389364500724753, 0.626109171849696, 0.252434584680236, 0.546523980964848, 0.540143423119332, 0.364800763665316, 0.899052771717935, 0.0469385270782239, 0.523285369166214, 0.467770393741789, 0.611481624850813, 0.023650340027434, 0.619503996328048, 0.173281218566367, 0.323637827253567, 0.129259956455276, 0.416336088894532, 0.529663907742828, 0.147104319997223, 0.562149478545475, 0.803086320851814, 0.396271003181504, 0.911318656438169, 0.528821864563542, 0.855548618322056, 0.564129359684021, 0.223177212025586, 0.601742288237348, 0.478533262655957, 0.42672799062368, 0.225264251918802, 0.393775546305223, 0.748009934985104, 0.829793934322655, 0.527543701857954, 0.703972380851338, 0.478089315610373, 0.453139538251668, 0.582044739581513, 0.319607305998765, 0.777371569119146, 0.275817493216206, 0.576121260707038, 0.321735910177603, 0.45077617231704, 0.277399291779884, 0.893449413121706, 0.860883942313873, 0.374811454219132, 0.532632503841141, 0.468478678391722, 0.176564008686676, 0.380831022199414, 0.705411088052679, 0.53386183675614, 0.250097472647455, 0.383932780888233, 0.293249259950801, 0.185850132271545, 0.424091380509735, 0.0756423429862765, 0.509114087880859, 0.713555227054582, 0.289187498758922, 0.763300393299234, 0.44460804571614, 0.384825804786388, 0.638804617766589, 0.482330624056527, 0.61929733260011, 0.774651196009981, 0.167465158870475, 0.317373229239122, 0.709584645470712, 0.762197627139472, 0.267400441293372, 0.661425611259166, 0.674232767927112, 0.85901793973616, 0.599959270607869, 0.23033924117036, 0.553802926224119, 0.632245754666313, 0.683813102429035, 0.309440293198199, 0.257442008735199, 0.430139939250557, 0.693732210361653, 0.871612718752347, 0.505628147537939, 0.162192001704594, 0.34730501483001, 0.478601295048723, 0.527418500864751, 0.996719508472803, 0.27396272811604, 0.625842837490582, 0.445962161254591, 0.574760116368816, 0.44900313261524, 0.273595070843444, 0.247808493933599, 0.277609057003407, 0.720245237669622, 0.87666397716481, 0.534563507232173, 0.491413365107201, 0.603940630426676, 0.273725044472701, 0.385202876594953, 0.712030826782179, 0.171618842125448, 0.18348503720674, 0.590017987346589, 0.753689835040918, 0.591611035774049, 0.520891415653549, 0.778149012326674, 0.336111767677675, 0.470286474663532, 0.529177452171311, 0.546839277289746, 0.530723312781127, 0.579744840925862, 0.447906666016294, 0.544802862237146, 0.302784137224055, 0.294740950391205, 0.456891572312396, 0.0947060983789287, 0.72807493040421, 0.81488240578895, 0.371034918423885, 0.101557228068265, 0.5326757996951, 0.802851983320169, 0.785441565284418, 0.340403238360808, 0.530280797446926, 0.678273661923333, 0.59725499899119, 0.530896753161403, 0.316448392297818, 0.162685130274937, 0.608541722291265, 0.72168093510524, 0.178117355576324, 0.226560656675884, 0.425054266239178, 0.72750406914056, 0.592903311063522, 0.408792759839381, 0.204465100130214, 0.134083392399045, 0.286728047792828, 0.284639563194922, 0.243880737460929, 0.779009489418335, 0.926995855812668, 0.444229419284677, 0.48329400399131, 0.180612690330271, 0.630510325205578, 0.108770498034832, 0.25441518145472, 0.601030112164677, 0.488840788622516, 0.720834815546508, 0.540687454886483, 0.592292775015217, 0.584241922765592, 0.309501971129981, 0.690808437190741, 0.69634843977065, 0.649302569561521, 0.416126452635215, 0.188119193924864, 0.0770939790942633, 0.545813866917145, 0.630657156158807, 0.56802936996558, 0.62653793996898, 0.443384815650037, 0.351323079235828, 0.363763959736914, 0.856360336693313, 0.188466413674965, 0.463689288416307, 0.91970270885483, 0.354205188980337, 0.421274396115671, 0.304018615839152, 0.667894481231511, 0.265006336402639, 0.282904949288913, 0.588888052792074, 0.429396428728045, 0.696707202004921, 0.41657957612376, 0.395455932536675, 0.565793142336218, 0.604846497328704, 0.725620725862873, 0.674467368114483, 0.456834944268518, 0.494114092941328, 0.505567032710459, 0.203831888140383, 0.462316425102541, 0.573989286079938, 0.270668551255118, 0.77112430839747, 0.61744746177555, 0.501839033179473, 0.410246379962741, 0.118645373918573, 0.231978782481522, 0.505647538870676, 0.240782462579687, 0.230914738346734, 0.501874454472123, 0.648072903649321, 0.311871438365247, 0.746302202143945, 0.489452519495089, 0.52188257536668, 0.799543043589667, 0.614865337601805, 0.762191565027126, 0.868170654209373, 0.150900122669069, 0.406440532870928, 0.585431635065353, 0.284267519151305, 0.469845390889059, 0.20943142104259, 0.596013127688248, 0.174540378948187, 0.779581663632502, 0.654588661402903, 0.85026659422881, 0.894682317044138, 0.133155144472931, 0.310568822808506, 0.877729664874855, 0.913338424336926, 0.782229087268756, 0.252990173773708, 0.400252594386291, 0.346206371635063, 0.502762184213457, 0.178239463017023, 0.700516727470545, 0.5603714911922, 0.192808396832127, 0.584763539537572, 0.819293624937873, 0.88531953246044, 0.624587904888485, 0.463693222029889, 0.701585996799178, 0.108792052196484, 0.689436297868109, 0.595686630245792, 0.274713271719191, 0.461889027198301, 0.648527860864616, 0.0595878038829901, 0.269561901646675, 0.738551114360653, 0.263664357115953, 0.292786655384558, 0.55344824127388, 0.871927587260923, 0.769547250716014, 0.576945113325514, 0.330727818755251, 0.158863441039416, 0.538596448685412, 0.174601344337172, 0.258607424080627, 0.546585334001549, 0.593850036594555, 0.311683260977209, 0.576492197773575, 0.527930606598328, 0.514250704322171, 0.352521624986487, 0.13787507137307, 0.620506674221805, 0.412267578878861, 0.560654163962745, 0.375004253737561, 0.588022731709601, 0.359335219664935, 0.614553690423263, 0.701882928330897, 0.635541805645407, 0.859125573282702, 0.423834410088333, 0.437787449242725, 0.290960888729047, 0.750151477243431, 0.0416021138967484, 0.259522008174877, 0.407446982959771, 0.757365343443976, 0.396453574563276, 0.371338597124029, 0.292827596723433, 0.731510110883042, 0.185703999439625, 0.862267734358948, 0.46736200374553, 0.299496444299844, 0.35816181241444, 0.727614033312294, 0.293647092309995, 0.683291009440059, 0.215791097702712, 0.614999562409115, 0.305440537192573, 0.629002794646627, 0.495048349806027, 0.361715686061657, 0.270644057932402, 0.609230974115542, 0.210346375097371, 0.166220535632373, 0.479019514559241, 0.618621968820841, 0.262891773372463, 0.563624370886336, 0.434027338413583, 0.532366666319618, 0.780027504307777, 0.845679201445456, 0.760484871935526, 0.322752517523392, 0.423706885547789, 0.320950239797791, 0.502268671105625, 0.449201776097723, 0.625429931316086, 0.518763209888766, 0.566716754189239, 0.418282932928185, 0.668930062734424, 0.820337680135638, 0.507351991904016, 0.299597005243119, 0.397466890298314, 0.246770208985768, 0.842519328496314, 0.79953166587541, 0.528956141242885, 0.338024068123058, 0.742599081313548, 0.0552649867429978, 0.533493104102222, 0.563787059951636, 0.60909451025743, 0.643224594980319, 0.506801399103911, 0.136314232074786, 0.22067493275269, 0.0344593107470157, 0.244474948322149, 0.558290063551746, 0.450077547863446, 0.835518966594943, 0.937228441805043, 0.835648954470551, 0.21803458598068, 0.748858469383496, 0.844859648218284, 0.168449041040415, 0.430072469679662, 0.123077677487271, 0.714700148395632, 0.591624224616352, 0.200874734597264, 0.901846886692609, 0.302202472071713, 0.603638799820016, 0.460251277301147, 0.709499153115505, 0.66039157813128, 0.162911278778444, 0.0903168451810954, 0.629106871454359, 0.485059234984299, 0.353905477745503, 0.595663730379244, 0.30263211030537, 0.0838654401026516, 0.479042560167811, 0.136713882697192, 0.243070430201443, 0.532019482941527, 0.796334009517304, 0.636834912512999, 0.685856143336632, 0.417575132680562, 0.978976940021349, 0.263587292430462, 0.518416579692266, 0.34154197038199, 0.0410378945496632, 0.448415833046497, 0.686384281047359, 0.30737571991227, 0.672802657196511, 0.762655786786166, 0.149974637063501, 0.195957220751757, 0.57639369345939, 0.37695971074962, 0.708942704566271, 0.964270124570001, 0.969610281444329, 0.232202711523609, 0.422559840274056, 0.0994738222579921, 0.556393743197384, 0.261228092630958, 0.0677597083808645, 0.302638348362072, 0.778368283490752, 0.305030364904606, 0.23009380874219, 0.305801787880418, 0.19844293180799, 0.398417879877809, 0.505515600158945, 0.533213324651035, 0.683052528714448, 0.488882297192944, 0.326528831434465, 0.150453901006675, 0.187421598510693, 0.824745477745331, 0.286190428338314, 0.133493746849463, 0.130374458598495, 0.642919618947702, 0.662271964079912, 0.430771015027973, 0.895442500338865, 0.699334843018277, 0.321737676252256, 0.590774822735692, 0.671722440758891, 0.678804250968918, 0.35134947158497, 0.514843089178187, 0.540569741945269, 0.390392106360246, 0.56945138902856, 0.261690056568155, 0.418840295907415, 0.255708535500566, 0.662015172996696, 0.209313771141279, 0.88484250101175, 0.282249370166632, 0.24880969485618, 0.661556445736607, 0.452010966538503, 0.68569227521795, 0.385536048269066, 0.481840173555181, 0.897831981738017, 0.68237241976351, 0.378094747103409, 0.869590529748352, 0.623353660926752, 0.535177500576954, 0.446225149502366, 0.61300448142839, 0.022788386851259, 0.821431002418849, 0.764136391472335, 0.565614268790783, 0.272663670144718, 0.462789810132257, 0.565871656630075, 0.663615357879006, 0.667949764241281, 0.674830809650969, 0.456189824689096, 0.563969081281806, 0.576500866516516, 0.521125919273123, 0.418203697605989, 0.431098728163475, 0.286206702354805, 0.635015728500201, 0.0273785089177136, 0.446461710214243, 0.628640225613943, 0.175153857621145, 0.112733806329804, 0.0994548603094694, 0.236434589350698, 0.823956734297778, 0.744741911277875, 0.124426899831528, 0.865394738261418, 0.598074818466434, 0.796962727313124, 0.569376100178589, 0.832346684781596, 0.506484155138848, 0.277582130582829, 0.0547106619566946, 0.63511862996249, 0.605152995491238, 0.462843581600064, 0.749309594260992, 0.0647398328827382, 0.227243501261042, 0.276353899778944, 0.146717863815836, 0.822401744111238, 0.320573925183099, 0.350625872855421, 0.815085461247761, 0.694497154262841, 0.409478810497832, 0.208303600424077, 0.437273337463232, 0.558842087359094, 0.382007643006208, 0.319504985715842, 0.391516805652699, 0.159730477299477, 0.176419661983625, 0.961991528416179, 0.754756590268895, 0.490468217570359, 0.831623498778156, 0.494309874002748, 0.329409042321207, 0.675203932161236, 0.54321729275025, 0.190592087543238, 0.640739009749879, 0.633646517662467, 0.585206689966006, 0.308448436980507, 0.678095845783142, 0.298922366883785, 0.42888565933616, 0.438539998793615, 0.382540436749978, 0.543412591413139, 0.749455793794544, 0.927655706030953, 0.191666124103981, 0.863791681090617, 0.525972304631199, 0.180722195915951, 0.808258233501015, 0.421525901404868, 0.635337274020286, 0.445328526499186, 0.6217388402937, 0.780142400252062, 0.765560406266657, 0.652533997262196, 0.294456347752215, 0.672141731881257, 0.46948263675774, 0.662900559838175, 0.780171473296227, 0.438500967954175, 0.381211557380066, 0.778071129066738, 0.419129603020455, 0.0912722776645549, 0.201464775295136, 0.239337758880173, 0.391409543548829, 0.533172635226305, 0.467156154814984, 0.326307921546954, 0.00823575701618911, 0.505889847347559, 0.439430752489067, 0.716161111337425, 0.914747062477792, 0.0819028579592176, 0.65832198449709, 0.405256178346955, 0.188868635040921, 0.784007769099713, 0.621708979942783, 0.551448699871092, 0.102271687220664, 0.844485393742555, 0.871159166831912, 0.627376220857478, 0.610531412309708, 0.121428205198679, 0.419873696783603, 0.563749588245364, 0.285227705203524, 0.65244073805443, 0.424476653534636, 0.121209896208228, 0.818864758844204, 0.753665850215112, 0.36346416590408, 0.770416293794356, 0.632376334006223, 0.439252692225739, 0.0742346395073736, 0.488527879002207, 0.570242564719243, 0.329129021770479, 0.43983498903951, 0.638178648108228, 0.340551501148794, 0.202321935162851, 0.514971424802467, 0.687560074339677, 0.77811215695982, 0.508333909632471, 0.428978411504539, 0.282852770017702, 0.154620173327372, 0.575299445451533, 0.668794834257748, 0.741571380932261, 0.571917355093646, 0.505482435632829, 0.620863672100717, 0.57581515247628, 0.801586541905521, 0.733953199116526, 0.262107873158838, 0.485766214238788, 0.701789651418529, 0.867592735315424, 0.110340159056984, 0.392228391368233, 0.196330500093089, 0.11674125029708, 0.364151571642797, 0.326135924729286, 0.888466912180183, 0.435350372018569, 0.635585403894901, 0.273474352109977, 0.297508189956063, 0.513306559338474, 0.347790470405347, 0.402300834943214, 0.252597304247166, 0.721327092805159, 0.580886137180339, 0.278069053859838, 0.0508654548602877, 0.254004510666712, 0.541651960328818, 0.287084933247296, 0.759651146327261, 0.556381849733418, 0.57832097610418, 0.688718618065114, 0.410896375800598, 0.476954630947286, 0.433483898954489, 0.807383183599258, 0.251194795871188, 0.46451567414914, 0.27164666895075, 0.466172707012784, 0.797958579428185, 0.583015171512249, 0.226602922162781, 0.691261041451057, 0.740063271118521, 0.805843870621346, 0.625369298184368, 0.904086896332733, 0.893506106005085, 0.108531163325432, 0.38389546259103, 0.830733220287778, 0.417367247558713, 0.352338674615058, 0.311134216755175, 0.582422143147124, 0.676332412123957, 0.513350929345961, 0.770312893083469, 0.394923572146136, 0.7125694888951, 0.605429620532008, 0.498318615769754, 0.508112926450846, 0.186464713016319, 0.673935084181651, 0.301991747555908, 0.39120231887324, 0.243751366359354, 0.582948757882445, 0.324826984801042, 0.786092814497314, 0.837492492061223, 0.751987091546326, 0.372598569061423, 0.292364706946333, 0.176544689151582, 0.714179113837868, 0.454004474493034, 0.959223724696703, 0.420900039372741, 0.680722761479124, 0.51552031063319, 0.31365132056319, 0.699679752014305, 0.23876739354738, 0.84166711687664, 0.695372731375258, 0.149673724539411, 0.457134501282384, 0.555808401290512, 0.641201340818325, 0.30592177470714, 0.157035358126668, 0.864787049357768, 0.184647404793861, 0.674598497833115, 0.287214970141882, 0.207825681706745, 0.388053755627764, 0.397706559505343, 0.727845307934872, 0.383293147991404, 0.186533605293567, 0.199459757298473, 0.176086709172772, 0.646829900068053, 0.475474059473334, 0.613875512107345, 0.283269103396624, 0.443242026012282, 0.80410339749053, 0.733908581418512, 0.109041930794741, 0.721399508241908, 0.492934919515064, 0.410341714014263, 0.467149989292844, 0.452342473870113, 0.803945898133233, 0.163019326237155, 0.55531314381396, 0.775983581732046, 0.335602437493371, 0.0634166475542171, 0.625010276153909, 0.702901569453474, 0.719767383986648, 0.551051177290607, 0.728829506576815, 0.62522771245609, 0.47234297790546, 0.528007681225734, 0.537850976468626, 0.770502335988643, 0.577874116871023, 0.423453423052473, 0.379386722315887, 0.545812977515272, 0.175794151467443, 0.063636821757808, 0.723591109385843, 0.363895850859716, 0.468859181818879, 0.310514698688716, 0.810334988157935, 0.167119255152111, 0.606232571034948, 0.563328798173485, 0.497729414630683, 0.437125377034596, 0.449590896744658, 0.596115943931017, 0.23939706629824, 0.265037627230077, 0.924820097492753, 0.465370128795518, 0.369360475169093, 0.668856221481426, 0.317919737474363, 0.613012566017625, 0.635881482862339, 0.302852229998708, 0.0274432048507546, 0.469670999524134, 0.444552031254512, 0.0982264206830554, 0.808994438647398, 0.605441643264652, 0.582115610778019, 0.863185351521177, 0.205637925400629, 0.539191332925679, 0.501535287252632, 0.609450738615871, 0.766601692036653, 0.289428931762289, 0.851115724554508, 0.919180526531544, 0.787455917710499, 0.820035479089825, 0.546973884053841, 0.643191492192648, 0.331664665866235, 0.892250262406502, 0.33659607387949, 0.403351361837823, 0.855213428612529, 0.530216118486727, 0.36121283753099, 0.496830662059547, 0.837053722678844, 0.175052907734133, 0.948969920740055, 0.58987315824526, 0.137547037012116, 0.828413571490138, 0.49224501874534, 0.367255021775104, 0.297220327736045, 0.635174004416463, 0.733073703964943, 0.544946502303656, 0.295858389522207, 0.740294044228949, 0.918599287414009, 0.497242422281089, 0.0543367807274232, 0.662084951478272, 0.325236860534604, 0.830093569822316, 0.73269574865081, 0.218294567230063, 0.339542765876642, 0.507882743953105, 0.895744004442812, 0.723746772006011, 0.0913461266268352, 0.264732850454607, 0.127912477039178, 0.328730291673593, 0.705601370242899, 0.233720727272818, 0.667701591656051, 0.797321623427881, 0.5078006239997, 0.526146323630336, 0.686428134926938, 0.535037264749869, 0.436192178611313, 0.695326203793952, 0.456175348140242, 0.52436951121602, 0.715633219926264, 0.902700016867058, 0.550137630101494, 0.00161636745805875, 0.4047707394649, 0.145292237165758, 0.648390837352178, 0.592507581882624, 0.520825199080146, 0.513312592752224, 0.383025659011265, 0.456532117913621, 0.728477142444256, 0.419501427462641, 0.525127671274072, 0.84788766848362, 0.340411117870949, 0.357762132980898, 0.591228710189488, 0.593958952559181, 0.681071749270836, 0.844585293477362, 0.788308568101594, 0.431724144893149, 0.304589067663325, 0.539749390062015, 0.433225124999038, 0.32025737816724, 0.922383602084959, 0.418524367450853, 0.427449046215723, 0.553290237540675, 0.173408210984827, 0.492230956583903, 0.875744647684589, 0.501283678605096, 0.185923012382625, 0.366589844966643, 0.918552314902927, 0.383373025828476, 0.372766950233243, 0.329254570980206, 0.287639352222727, 0.655079212683627, 0.795437534010102, 0.612013020396835, 0.739971417212464, 0.719641830336421, 0.251668593486259, 0.694663591626702, 0.736338647433177, 0.312762146164525, 0.286122902380687, 0.661817747072227, 0.793253231731591, 0.567644785105224, 0.604143274477713, 0.317162150287681, 0.343581082553886, 0.293123870521075, 0.583885171945494, 0.707832659924055, 0.124422426042274, 0.478318130265402, 0.655968795145779, 0.470345014294792, 0.845374378072548, 0.81548234000575, 0.270139805443133, 0.350161589536477, 0.603277215223134, 0.869250397877779, 0.407729649210691, 0.92166722809246, 0.501221160606987, 0.42894025184424, 0.765558449385819, 0.564671464646684, 0.387172396356894, 0.509081771787768, 0.460054632959477, 0.695302271457175, 0.755736462748893, 0.043787479276068, 0.689094389197453, 0.307600966985553, 0.303158678366967, 0.363431005334047, 0.0437682319312159, 0.623510561637434, 0.886695412319128, 0.272983163474056, 0.946659664177407, 0.30111881309775, 0.920754708590358, 0.362983470230396, 0.370356843008965, 0.951398754593113, 0.650142032052073, 0.756250470823183, 0.298132498353356, 0.64545195873558, 0.387038462317235, 0.120345218395654, 0.654578617499134, 0.455794061075349, 0.460800546813356, 0.606270642415979, 0.451030511220142, 0.178398906628176, 0.327364754267601, 0.36192039920181, 0.460380882073733, 0.497859005541776, 0.631686041139058, 0.501135738183861, 0.69659787903848, 0.185509006860567, 0.816908008555391, 0.198390930778357, 0.691995493353952, 0.627360222790178, 0.845956278340018, 0.524161176042537, 0.869271015319728, 0.614925780124239, 0.407549321840874, 0.865084001788569, 0.953682672722826, 0.404971874795212, 0.145928129473291, 0.219952444304014, 0.556699181397157, 0.754428567485505, 0.230127583101075, 0.844762693285666, 0.838285342319094, 0.461826439625502, 0.545876049895358, 0.190046869826534, 0.51381846449614, 0.416306641157183, 0.550513046232618, 0.472935470415376, 0.515677294762864, 0.69913105350911, 0.441486998751587, 0.750744380876648, 0.430783676824544, 0.467946728061439, 0.201346496026446, 0.798691177132965, 0.777651202580135, 0.571865887744692, 0.247172628822816, 0.598130285062199, 0.511049864746358, 0.250303454642337, 0.17842044800459, 0.768202109428421, 0.0746007677771071, 0.396950093588054, 0.623768099908635, 0.61555719757799, 0.374937670863661, 0.4314862520942, 0.730577293156467, 0.521111979043245, 0.852548177270117, 0.425540684782696, 0.484545086128719, 0.340263201397928, 0.144160314349635, 0.68352964448007, 0.19510348138383, 0.367332221919586, 0.371581744296341, 0.537464599947576, 0.673367423371631, 0.561799887359015, 0.828666566750011, 0.197696051007592, 0.540960627840515, 0.635587690196517, 0.465696206398922, 0.214701748633659, 0.95271700112553, 0.262097800783016, 0.463578136274536, 0.605937011720347, 0.577447315885756, 0.0884273767680851, 0.652571031889073, 0.52483467266507, 0.214118808812759, 0.688599490854411, 0.329021988690167, 0.214901037746819, 0.217664370486002, 0.180791747423143, 0.268152803317259, 0.821705901124746, 0.644943706928534, 0.289053460588744, 0.779675658393884, 0.889157338733121, 0.183700153129336, 0.492172841865947, 0.404251952915113, 0.54131085968894, 0.562600372150788, 0.545533096809528, 0.675492620359178, 0.954531514306251, 0.618504481081158, 0.640066505957754, 0.260505279391069, 0.29916019492636, 0.0801062639356588, 0.789525913083835, 0.82875478880795, 0.67809643089036, 0.58747985507514, 0.538029817189549, 0.578491529680045, 0.661572756134994, 0.70895606891329, 0.793481775395047, 0.33291983671973, 0.862346055737252, 0.850673034783103, 0.954293113365225, 0.353057304201706, 0.242729107521629, 0.602607426249939, 0.586618310931789, 0.718009410342062, 0.563839124865677, 0.182314643579491, 0.758630360515284, 0.214956217224236, 0.552058069727736, 0.967362622975143, 0.655515076441264, 0.684141744169777, 0.702648233748016, 0.600921545511428, 0.717230735362897, 0.606311121370764, 0.802637579068216, 0.791326127262355, 0.293610914172104, 0.160897101748079, 0.2902160082692, 0.684124320876034, 0.630818087990109, 0.83720310213413, 0.604433761989869, 0.769040535786718, 0.271819752010857, 0.413560404581289, 0.721810084204728, 0.470732458772839, 0.796319811163139, 0.255163431133112, 0.484810266224626, 0.312297243957332, 0.683221866453526, 0.570958431849097, 0.550362368337741, 0.577810135647098, 0.857088752641185, 0.795446495919965, 0.730598742909559, 0.786595894282237, 0.568308469998209, 0.755411065650512, 0.158009243336635, 0.841691950719839, 0.802740706526927, 0.424776016421771, 0.752279775070582, 0.0988680627386613, 0.498841513264187, 0.71399667700942, 0.116081135377426, 0.388997227284253, 0.446446166643545, 0.602267345027114, 0.482806591806755, 0.807822596424996, 0.626271482369258, 0.191843441206745, 0.247921465003531, 0.716669751063689, 0.0297729761064188, 0.769729475490663, 0.587583365173686, 0.32221560338637, 0.638150102642252, 0.280314204720631, 0.6973297380747, 0.440420327554974, 0.172628748877, 0.435018724773599, 0.550064865567159, 0.269095852974913, 0.578498547294844, 0.83515902907505, 0.468808340820728, 0.473459048868766, 0.744000492369256, 0.147057623364434, 0.586037947959452, 0.711572974541502, 0.421944869762193, 0.503959214793522, 0.266387909258601, 0.601539486268807, 0.826030973988363, 0.772256639772648, 0.611795521683242, 0.814445076970563, 0.806379288413104, 0.27715461092958, 0.272370732275681, 0.826894977777753, 0.139340469238061, 0.843153936515749, 0.285728804290482, 0.0534595037102289, 0.520199433146644, 0.654072945918692, 0.841403270388048, 0.744787915240629, 0.371512069971349, 0.344568988478394, 0.327658886853187, 0.442161570151219, 0.0464598952968804, 0.683483033188601, 0.699074120216162, 0.775992794781406, 0.808476481802869, 0.126646694940755, 0.59527311823005, 0.155170840806459, 0.816944026308076, 0.536794230780434, 0.134151446406075, 0.341378220054302, 0.654726617266893, 0.754362083975797, 0.605584357465736, 0.687002309626554, 0.741092100981587, 0.224143803604108, 0.309402669224253, 0.557219010976808, 0.556106194453056, 0.198120444210832, 0.420804928218418, 0.485809471265616, 0.133008302305661, 0.574218943223953, 0.585698936655439, 0.592103780921933, 0.384272151145448, 0.364841993273538, 0.519523821544899, 0.826092967189445, 0.203209524386637, 0.845240217517666, 0.946843842979685, 0.599673292448414, 0.746632135605183, 0.554258322973509, 0.596412695677599, 0.423592746072881, 0.35801821738347, 0.676377521130645, 0.535331654704614, 0.564617484352459, 0.698550982379463, 0.432815816479126, 0.25388355186527, 0.545377830611884, 0.481866470604369], + "y": [0.791297028233724, 0.244038754658984, 0.191207155744449, 0.953217832060031, 1.51239111628407, 0.290190379467557, 0.0952098972150821, 0.114982117427457, 1.40703991609286, -0.196771255195225, 0.657953622786658, 1.78228796985736, 1.15670389180964, 0.0524649128196575, 1.37003208357507, 2.02395269144764, 1.09269898414561, 0.128930202868333, 0.373422570820595, -0.00730785845788667, 1.38573568788425, 1.57289596102533, 0.643603501000861, -0.241772804230951, 0.65107995775969, 0.31408948850155, 0.531917745390833, 1.64752040523134, 0.44709290629722, 0.489896217537927, 0.469339300378538, 1.02659568795552, 2.12423975319144, 0.103903996466176, 0.826570146304147, 0.0223728151928896, 1.69780132488544, 0.469083038845534, 0.739357991022146, 1.6185055412705, 0.248175834053516, -0.235238098543223, 0.293536706432281, 1.34166042678947, 1.04015760103354, 0.602144120723429, -0.154504035652957, -0.421948877797563, 1.4560571350915, 1.32280119367893, -0.283310445839577, 0.877223089985412, 1.36782380241347, 0.187207530812248, 1.08889207402624, 0.860630714902873, 1.09675036302558, 0.588364231632506, 1.24386199819285, 0.0620255418084317, 0.334549030489121, 0.353785774379338, 1.20376775940253, 1.11071444654741, 1.34366527483829, 1.11103927810199, 0.932022209485726, 0.299238242588181, 0.834831141451234, 0.822963511222002, 1.1224504429016, 0.126223927549583, 0.790481952301793, 0.388913031385269, 0.44278096812561, 0.893178420526728, -0.640074704285474, 1.52122534920109, 0.888113358174194, 2.08706243008783, 1.30056942507911, 1.43296916698036, 1.20852294031456, 1.85260685868376, 0.807607098334395, 0.493239950691249, 1.84875558845511, 1.24273309092939, 0.2127533260971, 1.13937662277475, 1.58685000295562, 0.94634108153251, 0.391476924108432, 1.625063762875, -0.136913055829422, -0.0488587046901687, 0.501276569038638, 1.08505549534246, 0.457637842576276, 1.17549393991926, 1.59732110315716, 1.11877238530036, 0.99339619758396, -0.358366808886499, 0.197966534484578, 1.6917908252154, -0.888292149152438, 0.290255992562096, 0.543724989923355, -0.0723421508704424, 1.46199238606542, 0.174995488177679, 2.31436113061437, -0.350629139756807, 0.622453201620728, 1.01350408400479, 0.0620248679852792, 1.15508918003962, 0.894776468681959, 0.583956390490402, 0.257668508436819, 0.595454366938168, 0.893163718115526, 0.940335119773311, 1.87226058350996, 0.465885787125782, 0.949214013729299, 0.745261040787701, 0.444438653865092, 1.84232771594669, 1.31088216706096, -0.476865063800924, 0.593283942101453, 0.18217134464169, 0.340569333003223, 1.33820190251497, 1.22921748998835, 0.790911336061064, 1.53684994266979, 0.582735943363778, 0.608135230646974, 0.331966902494153, 0.992531074188799, 1.49019966750727, 1.57531804158269, 1.63157049382969, 1.4325353063134, 1.12298824954881, -0.125346389382627, 1.37986145589067, 1.97951307319487, 1.00315358986596, 0.93755456271489, 2.24887770197252, 1.15570132593064, 0.705923702818988, 1.10851156332856, 0.962178200154401, 0.817597579844924, 0.310070369323891, 1.97644744519735, 1.04137367292579, 1.48179011621172, 0.282304961010145, 1.8393778272592, 2.12115773309157, 1.90225598153543, 0.279643122323187, 1.6579277437154, 0.861895478367095, 0.361302387255537, 0.486835127987435, -0.023220455241646, 0.31990589477102, 0.507520003102592, 1.45965357287043, -0.039176103271927, 2.41512393576305, 1.94877553834785, 1.08402770654048, 0.780286520590645, 0.152661377246495, 0.252271300989239, 0.472105086555707, 0.745183304635289, 0.514689332849806, 0.159682737256713, 0.953195383938519, 0.510190722492571, 1.28725607436904, 0.765451642270869, 1.28358312984263, 1.09307307480425, 0.512262954741341, 1.78165591081172, 1.47877369524326, 0.429535078488387, 1.42993308815778, 0.174101276726465, 0.817961631796423, 0.169068150446719, 1.17984753556018, 1.3225020317573, 0.948232481329499, -0.424040746611137, 0.742121233323647, 0.68560501378334, 0.270440699987151, 1.57734914990409, 1.21940386318218, 0.429436830532172, 1.09107733069384, 0.511991475585398, 0.920446365122896, -0.0431986748268853, 1.27243314232437, 2.58218029548055, 0.30047513713594, 1.27855018011917, 0.406979826250082, 0.998300597893326, 0.829590777007102, 0.712017092846134, 0.641640507308215, 0.708882492266182, 1.3522029500203, 1.36728681116383, 1.85856117703858, 0.473746029843868, 0.630359301265352, 2.37777234562256, 0.296979647350218, -0.00608204454958378, 1.62606567717275, 1.34777662585891, 1.91438760328592, 0.600152179306851, 0.50164386361534, 0.31831181419825, 0.960078304786095, 1.10800082328235, 1.3063902720862, 0.776564890451913, 0.882315240972164, 0.237388507304825, -0.101136035280312, 0.0500838425340572, 1.01570479778053, 0.167901484860767, 0.847008212133696, -0.10596632262295, 1.08803380981425, 0.806512657635982, 0.512442707123418, 0.749785888000831, 1.00200705404568, 1.31252367864903, 0.673148025757323, 0.356297819686573, 2.31346666831533, 2.38495845491012, 0.975324213446124, 0.186207564815044, 1.55239150235827, 0.0222752325483699, 1.36229749331142, 1.48314311419418, 0.381450753863309, -0.0589650709015792, 0.706369063535868, 0.906239728942597, 0.842933953973915, 0.429354262220364, 0.545349471102039, 1.40314514953705, 1.16449076223955, 0.296516873758216, 1.19746741890613, 0.956289895569673, -0.403580817483023, 0.766823865061225, -0.225898532440469, 1.68808978153905, 0.643146541801658, 0.417896509992243, 1.07299163419089, 0.0655183493975011, 0.298536870520329, 1.635516900878, 2.29867819347176, 1.55718205948539, 1.87161235770325, 0.643646176583174, 1.27238954176003, 1.43019677317153, 0.595021742296154, 1.92615162777505, 0.107846390817471, 0.339217663559493, 0.517153571768182, 0.876460476265911, 1.91191855583873, -0.145678616198609, 0.374343628140226, 0.38816235340819, 0.446614322268121, 0.329031675431041, 2.28732426156622, 1.05398841371789, 0.343419247764797, -0.019448062813783, 0.962417140497042, 0.398410461453066, 0.784081848535168, 0.793507117258507, 0.808897804988544, 0.181867417323391, 1.29212903221659, 0.509158242610235, 0.847092661111495, 1.6549023999255, 1.07338505515403, 2.03069329077714, 0.916394955983392, 0.308174278795222, 1.05987826837732, 0.277898349508572, 1.63050623194377, 0.650571441899128, 1.50302734191503, 1.58888845320499, 1.38706047182801, 1.22740318010786, 1.04202751249383, 0.757632523210917, 0.98589341955547, 0.235305769313338, 1.41297154299193, 0.556890032880417, 1.21381595753242, 0.622073328946544, 1.50173477698057, 1.39995821445458, 0.140952826461493, 0.700799351196101, 1.35240215548327, 1.77408430980513, 0.205924576888635, 0.44734634737878, 0.372826118689844, 0.853770294735437, 0.772681744614136, 0.7750640497786, -0.175698031047121, 0.0727063272583561, 1.46906175674735, 0.198422401019655, 0.249620849011459, 1.16253075769459, 0.340528723183565, -0.371374072913116, 0.056089248449493, 1.20409652995878, -0.0668201093002223, 1.52994047366705, 0.535468395900621, 1.09165305432009, 0.666470503960723, -0.0204600477280557, 0.686939391894562, -0.152032405093478, 0.61094589765231, 2.08311175507435, 0.253128224360626, 1.41439614156499, 1.99287217132811, 0.748248761185191, 0.533700461612434, 1.37490038434088, 0.334617075779728, 0.597123934740919, 0.753496724404756, 0.728103650847692, -0.057006396895928, 0.937869820620322, 0.63216182045884, 0.827828757477553, 1.90422029890669, 0.132214180734665, 1.22068324966264, 0.0987307833353603, 1.26968896979515, 0.0483667378019627, 1.42862795922892, 0.842692088147317, 1.37406600785826, 0.497456174632406, 1.49616475309491, -0.4692721690593, 1.09000101302053, 0.505918728387039, -0.133199789835019, 0.875157787228445, 1.42648499849565, 1.8063160045981, 0.993461768100565, -0.037968265357365, 0.888956500254624, 1.23400538291511, 0.807023875777159, 0.0743485699836119, 0.0404734893540113, 0.486958612513399, 0.834291423586689, 1.45959621986391, 0.0538666425069316, 0.125001215791829, 1.81165661461312, 1.40721104581659, 0.720528724001228, 1.23381097998599, 1.77866474173397, 0.0291285044192293, 0.0146054691599993, 0.360250079036537, 1.47267589480874, 0.495950402052205, 0.495475592383958, 2.11608416211871, 0.654390180033554, 0.421203135017004, 1.25934243467057, 0.341669126573374, 0.892625072868926, 0.330351366127076, -0.271137903391324, 0.554403466434641, 0.501234771054578, -0.247315749387071, 0.84859768720575, 0.0450879129213573, 0.0114786121172254, 1.60252163965547, 0.873882489036226, -0.129873608304682, 0.790251099774707, -0.163681436188385, -0.367663493078073, 2.04675546041473, 0.050759377368323, 1.22229274293846, 0.884601253776432, 0.664433954659874, 0.471636177805185, 0.509939583242485, 0.413021844576463, 0.813263132467962, -0.0316332273365207, 0.301949325416263, 0.624574414482903, 0.800992227565012, 0.414498035935236, 0.0440657928675999, 1.01390319496451, 0.330078815870708, 0.695953973175384, 1.3506354270399, -0.733624262523588, 0.110973842006469, 0.405832088146614, 1.71979561083268, -0.717731983213035, 0.30732083481512, 0.892623481144384, 1.38986260924105, 0.932486533704899, 1.31828438563511, 2.62566153573893, 0.877955344738624, 0.416378079156956, 1.8542370903751, 1.18793381239611, 1.35759243044381, 1.60216687977437, 1.10067559278832, 1.01742442774898, 0.38551722883974, 0.657435891936687, -0.468769650658311, -0.445728405892313, 1.23184159012002, 1.13498492329537, 1.36329942675571, 0.983862353839323, 1.9127284621534, 0.600830902327282, -0.219595629897761, 1.05595070624204, 1.41996827345681, 1.54555870363327, 0.659976487524396, 0.461084346089476, -0.123669664517795, 1.44525665675588, 2.19487167605926, -0.0446829732858897, 1.69970139198315, 0.740168666984535, 1.19487246950359, 1.70812292571449, 1.68120900841798, 0.701495063847626, -0.616327995852942, 0.630038496780698, 1.37033206619379, 0.443063268368473, 1.24016463146794, 0.768219986109627, 0.348585851653554, 0.473515058177875, 0.981620381310943, 0.341607999774856, 0.26137200228379, -0.143616202757786, 1.72626984673815, 0.688448107408465, 2.22595814148114, -0.354915450645288, -0.562924155100442, 2.15222891842773, 0.923536284854503, 1.19591519025364, 1.3054433828581, 1.61158207282331, 0.841459386685367, 0.171168929860837, 0.164277295287134, -0.0348477440219832, 1.14747496385787, 1.48333528099776, -0.228070999761521, 0.720473593196825, 1.44549257365759, 0.717978405523344, 1.61521048342354, 0.03700507924865, 0.0311684883840334, 0.822910462759137, 0.73405764048715, 0.765309542428048, 0.831290940132533, 0.0731618675875573, -0.169665505298568, 0.805258222379137, 0.246367237840226, 0.0596376120219675, -0.257809262890254, 0.451577305454347, 1.36167450412519, 2.50427071662808, 0.0794785696541886, 1.19255878270454, 1.72103891113993, 0.907258785886514, 0.542498358295761, 0.0119849842981471, 1.15781051891787, 1.06319390773552, 1.47263856017001, 0.834724526267123, 0.360503281394915, 0.353467628350923, 1.1239615829762, -1.1509058319105, 0.629337888214165, 1.71171268379228, -0.148834455816488, 0.302213254475051, 1.17157010784697, 1.20170588468343, 0.504939922498621, 1.02305617402422, 1.16782667749347, 1.12310496573758, 0.873580626036103, 0.297668763872437, 1.85357456222211, 0.395145555437907, 1.77470323647819, 1.99405727632444, 0.758968045395701, -0.0375809638744145, 0.807387596729959, 0.863418926623559, 1.86126221495834, 0.33897318083709, 1.98881127813619, 0.0809072292786554, 1.24988829309721, 0.898635712597226, 1.74927502322479, 0.0025369342586383, 0.612466513570872, -0.122019127070843, -0.859060279750338, -0.396669785786851, 0.0283798130833031, 1.80338228834702, 1.47670306112738, -0.323323778476199, 0.0891792379528025, 0.565011732193563, 0.542989633544883, -0.0342234813238015, 0.686568261346059, 1.34063942136232, -0.356447777512398, 0.55932134917428, 0.798005036622364, 0.731506271926493, -0.643048222355964, -0.272383572125753, 0.100363917943014, 1.56641878926606, 1.02849811153218, 0.567612334251061, 1.69514070187913, 0.030611846448514, 1.30231072765425, 0.607026118827921, 0.563339176803413, 1.60505621706985, 0.840659784039092, 1.48163457731799, 1.15696498969364, 1.41550113289028, 0.82203702767788, 1.155089019512, 0.595277755640903, 2.08118050332786, 0.0221108244018216, 0.577075312145375, -0.407772952733277, 0.855735970190543, 1.4049622793804, 0.0883284368251795, 0.629331948114059, 0.442796683768449, 1.16722875950976, 0.544154367097426, 1.59333402736473, 0.648053219006694, -0.211557411918503, 1.01402933975727, 0.796545301112199, 0.862516146517839, 0.652332194989547, 1.12682155344724, 1.47044674865238, 0.336140433328854, 1.87265248768099, 0.497584058176684, 2.1666196911942, 0.791979831035019, 1.65318589077098, 0.58542634590277, 0.599557480115016, 1.05918671187173, 0.779157956787088, 1.95532023086946, 1.17495907954265, -0.911410985123068, -0.36924783899587, 0.141312551226939, 1.29291650935055, 1.04812051790572, 1.53028441894846, 1.61829360163697, 0.745701324574266, 0.82453928228898, -0.376737097590653, 0.31631266256908, 0.925491025835489, 1.69553250771524, 1.35947657285069, 0.430727784234987, -0.0054690627042428, 0.803360482232763, 1.08472381529763, -0.159318145225096, 1.20259660732394, -0.0979813304576815, 0.680548567152296, 0.977491096473672, 0.928007357070023, 1.53131052428796, 2.1698571914518, 0.71655803270542, 0.627183970388835, 0.496078194729424, 0.251147760892117, 1.49328213817954, -0.293835971738045, 1.9534265106601, 1.12913753379551, 0.875724694555394, 0.748518935030444, 0.951809134287771, 0.184212438254943, -0.279191076807556, 1.05299280132288, 0.501016926585993, 0.532533775500234, 0.310343150268434, 0.584924640249776, 1.16297911784036, 0.210607829542661, 0.689350386931963, 1.52190642621659, 0.875595271172326, 0.865488944595315, 0.436979906694285, 1.22544971006553, 0.540469121837661, 0.551371139956174, -0.635639613170416, 1.12818744491753, 1.80274087382256, -0.531304955682569, 0.867234883469718, 1.04617466215464, 1.09914335520424, 1.68723053896413, 0.216915019978153, 0.456564690864096, 0.957657600436776, 0.966219254008622, 1.34774701625857, 1.04626000766344, 1.11282790945842, -0.286854323896051, 0.705164917088063, -0.147914988187973, 0.822806082443849, 0.0848146112198801, 0.755683327899337, 2.3965071784919, 0.0101960267752841, 0.0345253797944968, 0.336723834788785, 0.478338497555739, -0.35945201463012, 1.12837374918607, -0.489216169540242, 0.0311099093600566, 0.419693359905619, 0.633823294916021, 0.971176885757375, 0.0329340372084536, 1.38364685433071, 1.51752594713473, 0.113952604480716, 2.1647832640612, 0.661007973609476, 1.41966660548195, 0.813436753873623, 0.678567108120336, 0.511070826413205, 0.806072749788997, 0.613264731288498, -0.280250011829392, 1.25757568382638, 0.90220141220817, 1.2259307336138, 0.866830771045789, 1.26848754409402, 1.41759151583488, 0.450013793627311, 1.22345137459446, 0.327599410390525, 1.48626095599974, 0.697364225074452, 1.2108286429807, 0.700702960068709, 0.673522464555159, 0.208564109762453, 2.06788821511278, 1.99430410937617, 0.21858813993145, 0.424885553876329, 1.24717872917001, 0.0288942365551896, 0.23755547998516, 2.20537568802879, 0.907321303452538, 0.415923879507154, 1.82295411256658, 0.319094687102208, 0.92146930251837, 1.28170780971824, 0.231801667251412, 1.53835135955779, 1.59289816172732, -0.474803931720884, 1.61241964851891, 1.28917799946439, 1.48755913242727, 1.15067810298124, 1.10430666386749, 1.52294406463892, 0.93960917915174, -0.206016851592738, 0.272814580123753, 1.36383490740546, 2.25991087225907, -0.234814460910268, 0.267279421255295, 0.758269997570622, 1.34305820882252, 1.44998730310208, 0.356225757943191, 0.725186630939467, 0.817412786674196, 1.68228548273849, 0.641631077419556, 0.56893591707791, 0.204556580213793, 1.10722854994439, 0.653924119965135, 0.759505354581411, 0.659323421087518, 0.506071182000473, 0.899530928550326, 1.10343989888159, 1.52781972666203, 0.677634408222792, 0.259473380815907, 0.947482169690515, 0.789663378624974, 1.24910825191083, 0.105678369016844, 0.228160944973266, -0.590461767616723, 1.80799630031432, 1.54187969824004, 0.342524893896688, 0.680647620948987, -0.487960859907112, 0.0801800645040947, 0.484523408292863, 1.0531734123282, 0.373202237040334, 0.249336050160812, 0.757983462309163, 1.22186348763479, 0.879627821447885, 0.202965110694469, 1.73946924611757, 1.16558727923101, 0.887452540331842, 0.527084743249998, 0.567429722935773, 0.859170318616311, 1.24897235615367, 0.45054666830186, 0.566484595968786, 0.298850269057617, -0.10819438404579, 0.312303813236566, -0.795820747840202, 2.22394214377815, 1.21476579815592, -0.0385225999838754, -0.309866781682246, 0.646838789660952, 0.98019620430007, 1.35583155885776, 1.13918709142655, 0.591726065592147, 0.543395699833291, 1.03245316175819, 0.106833010569219, 0.169379173313513, 0.242292400968324, 1.30136096019567, 1.12621600072972, -0.207484244711407, -0.0806131012514728, 0.973991497633759, 1.22803480206011, 0.639132313096419, -0.102482084829368, -0.0743681173281583, 0.311745107833122, 0.535184667881083, 0.421522165722611, 0.318298642252532, 1.2837088548212, 1.66972167462718, 0.692078975181926, 0.777688314105186, 0.57936771941325, 1.15999718195822, 0.61695471476463, 0.422094268079283, 0.519816551760159, 0.98743782763227, 1.26930376216296, 1.28093177743018, 1.39481966243339, 0.400736836898495, 0.351297964969443, 1.61014269342929, 0.194902975430242, 1.42618925504592, 0.206415727363688, 0.77734218655692, -0.118996194518575, 0.39053229556813, 0.181843887856893, 1.78631538483691, 0.560720104514334, 0.366894918194055, 0.226971530755949, 0.762791813185652, 2.60497203013956, -0.0291746472752968, 0.839907131017573, 2.57930367436922, 1.30847522021835, 0.468226359902028, 0.777518361028834, 1.91172482460688, 0.582559471017039, 0.497704238520421, 0.811898156256922, 1.00373405271472, 0.76204354737292, 1.01411949461056, 0.669535659672043, 0.906559224818033, 0.693910192032928, 2.5042109157114, 1.08009166754217, 0.992643586318803, 0.456619419781872, 0.752741298229701, -0.636308326728737, 0.749578127770109, 0.83997107335183, 0.911959039917721, 1.01063227086327, 0.810824580253467, -0.375225277480659, 0.292012237986275, -0.620462274140596, 0.700195473976763, 0.843945494779057, 0.153596803231079, 0.401965598276319, 1.19483376587202, 1.13632761419934, 1.03205279739036, 1.47277002788664, 0.975137800332446, 0.89904110128808, 1.91236192610376, 1.73723164072355, 1.20262997287839, 0.837248946904965, -0.331441504860822, 0.385773911427499, 0.678208342948097, 0.98062477446335, 1.33493109842811, 0.0332650824540715, 1.6517986816666, 0.468566775735236, 1.53713467835229, 1.0490230261481, 1.57670719383729, 1.74318715468856, -0.201238648815897, 0.660972917412794, 1.02964384814844, 2.01068847193252, 1.55362047987294, -0.619466702894959, 0.2535341366243, 0.694647785101607, 1.82952758013349, 0.338735832453554, 2.21868449809777, 1.78098376653561, -0.548392888173602, 0.756176956161647, 1.82620417474788, 2.44003309280973, 0.921104117810963, 1.03323186239216, 1.7465862333403, 0.879410607871086, 0.727770779101027, 0.0678089740275742, 0.658988082663282, 1.41032860851174, 1.32107978973135, 0.502336000866127, 1.27062269940824, 1.21604623469245, -0.344746090679454, 0.961132083226171, 0.729775010365017, 1.17427200961231, 1.14204029804366, 0.249458593216563, 0.742105466371301, 0.107490001771372, 0.773874997083597, 0.739111076503967, 0.912142233918745, 0.968565114799862, 1.29787041087341, -0.113364914744623, 0.951813091993905, 0.495394319897318, 0.607562306802185, -0.151879937103086, 0.209550768996088, 2.06850271039177, 0.12810504399657, 0.716204320330395, 1.58679972659589, 0.0640838954164056, 0.280176811111124, 0.798289860174031, 1.75364357676087, 2.18167721420525, 2.08561338739524, 0.776862246216483, 0.823102852235952, 0.56028141608839, 1.40206261211797, -0.495945005735757, 1.36573783892379, 0.303259951431122, 1.43519986780318, 1.0395508187155, 0.922422076445296, 0.502338502545835, 0.427878759867013, 1.01140494015092, 2.48033936508381, 0.627014780967028, 0.18189455916156, 0.464596885387897, 1.51448868865636, 0.316943289033112, 1.28848912303723, 0.271162682196104, 1.60923355618232, 0.644807428307381, 1.59540051030593, -0.109898957847151, 1.3688674996793, 0.498849071814416, 1.17308347427083, 0.452980174417673, 0.205872176091736, 1.33460455843086, 0.923550474480218, 0.783294694439937, 0.72075193756459, 1.20087926512023, 0.446399940127713, 1.78725328630456, 1.1741090613644, 1.79789141612139, 0.471295271666917, 0.538781603425019, 1.34911015456642, 0.676376371600696, 0.943790148016377, 1.9143198709627, 0.130971615045195, 0.802886660734073, 0.832060672936112, 1.36149423697119, 1.01123770383565, 1.00766160729315, -0.0920247939568539, 1.04766091859066, 0.505253320195135, 1.5753987477666, 2.23691198025892, 1.16956247545861, 0.700440910447458, 1.61847695061404, 0.902657719492397, 1.08440239745993, 0.766701102184087, 1.89160069788121, 1.36956042847108, 0.731806959211107, -0.745725686012716, 0.192198741144266, -0.462033827709632, 0.184339942959621, 0.66193673252122, 0.269650210340524, 0.63650776935222, 2.32960037176523, 1.8057968564231, 0.127896701833997, 1.4320485081606, 1.82026665069761, -0.74580381295191, 0.833558797893901, 1.31760135286316, 1.79292276439851, 0.840464251408313, -0.0144821837754938, 1.99191774202686, -0.669090131351871, 0.97952273164624, 0.957789948718915, 0.858876792823993, 1.64064866651732, -0.0640009406475051, -0.295442019336979, -0.289207473947408, 0.248932966998994, 0.567099294541519, 0.574077401653194, 0.850744102217536, -0.475010160238959, 0.133708602878047, 0.686713179396876, 0.248019729210059, 1.86768455561126, 0.634177594473127, 1.54247987556409, 1.69351425968659, 1.26300545325841, 2.39660287387107, 0.55374842914972, 1.1721990090288, 0.310047299272781, 0.398690433314545, 0.416737697661426, 1.53146098784362, 0.732482774561579, 0.798895976948188, 1.16703043490891, 0.188165261495464, 1.03858155611981, 1.13428866687297, 0.664622926748075, 1.48766803407922, 1.67628637422693, 1.80738098592621, 0.15025788171034, 0.0495777362221217, 0.00714245228455605, 1.44408846952899, 0.947921503141734, -0.254175867956779, -0.344182125439496, 1.40679168459288, -0.307037317978624, 0.985170133928178, 0.490392312455973, 0.273512805752734, -0.339319827122865, 0.0585573865402023, 1.0459936620527, 1.61101505706648, -0.00436589580745694, 0.123245902988455, 0.429940462399953, 0.72293897618555, 1.60411056331657, 0.0323474280715219, 0.349401103040595, 0.0662054425016474, 1.39055842721615, 1.29185264978821, -0.191358417690657, 1.56976073980529, 0.281506022043556, 0.28140901023925, 0.959647514896054, 1.02526144424677, 1.38366759454953, 0.203865046238207, 0.631529095508741, 1.30499153857267, 0.912321261905104, 1.16087353394338, -0.0338643263046919, -0.423943672470231, -0.0436487248348115, 1.20024103467113, 0.842948247189733, 0.441580233356125, 1.01653781325244, -0.314793524707687, 0.961529675956483, 1.21503108689815, 1.05001142646104, 0.443065362068354, 0.489455767203247, 2.24023184106602, 1.29191049357383, 0.862688384022144, 1.99532953460665, 0.663975574476623, 0.343628542675996, 0.347284109508207, 0.984854209217653, 0.341077031282708, 0.598278878364293, 1.20341181108689, 1.57640729839996, 1.08364049127965, 1.28074930183446, 1.24004732975737, 1.89584829130598, 1.23637913759023, 0.975594631064133, -0.531507599548455, -0.0851680811597314, 1.25375478610354, 1.81083535431501, 0.784915516066552, 1.10817756601047, 0.752181122455469, 1.29343506494444, -0.181553127271655, 0.209358939347146, 1.15095661632041, 0.547825870349996, -0.250135584657278, 0.359664402859746, 1.2080712241988, 0.982060554684988, 1.67295444055016, -0.0523306120073469, 1.77434027876917, 1.03105152652334, 1.33218620429041, 0.257745640988306, 1.08479265547729, 0.408386434493307, 0.183941619850546, 0.478365574420127, 1.38613133188539, 0.625039037677527, 1.38614327286097, 0.849383170288343, 0.85852377819085, -0.703347350043189, 0.249314110719659, 0.0123757759812959, 1.44205752060686, 1.85390488794374, 0.91221865514055, 2.32031000743509, 0.785755834843495, 0.602119078364959, 0.46206321316361, 2.00906118495037, 0.859391014512906, 0.736966024619027, 0.125418101505438, 1.12690952949281, 1.0150911868806, 0.539529797287712, 2.47393619362776, 0.319364739330906, 0.904857026608045, 2.26123200426887, 1.29510078338851, -0.457977787893515, 0.615493307849358, -0.434776166013958, 0.313573758572621, 0.465507869370942, 1.29838191014102, 0.633520076430186, 0.865241399666309, 1.3490904602047, -0.360862916589337, 0.363705731178915, 1.64394412724582, -0.0741427199524778, 1.46472332031007, 1.65233503851102, 2.82770908691325, 1.05076631960981, 1.2018054075649, 1.42440838888329, 0.7472234836252, 1.46420504002285, 0.387503816257697, 0.663586784665369, 1.1860263351558, 0.672657360286247, 2.09505090114563, 1.07338143548107, 0.477605506851434, 1.06098006768121, 1.35812713612051, 0.706553595961849, 1.06511175259122, 0.944650855222933, 0.918941778064898, 1.03839081251478, 2.3277067274463, 1.18313645712852, 0.225390077239246, 0.365696237978901, 0.438947219770491, 0.328577484989326, 1.3209035761785, 0.41687984845288, 0.792694332933097, -0.477788257124926, 1.33549172284287, 0.891042213641587, 1.09495198556377, 2.2578935340342, 0.289193191478995, 1.82149747530736, 0.609689821343136, 0.260009197327196, 1.77467322831779, 0.6920922326691, 0.815829763250218, -1.1736335083825, 0.945079568005918, 1.9013313133649, 1.13009809487273, 0.391761985716133, 0.621058327860641, 0.758126965074474, 0.831077521026438, 0.198732748467304, 0.904301783348812, 0.22645695974648, -0.663698767055065, 1.41870336652404, 1.25912809645342, 0.778168258131829, 1.55901434163582, 0.809153125167529, 1.17993752524508, 0.0453417160847615, 0.896991837823526, 1.65348233090375, 0.175957706513471, 0.167049362280911, 1.2026629322379, 0.827636816147504, 0.54230399850759, 1.32623864542309, 0.22875625064551, 1.73430163239451, 0.913271481270479, 1.00106051204312, 0.34435384937105, 0.453326408800626, 1.29294994290395, 1.7509580582002, 0.446946669854203, 0.988459290490784, 1.52023047486433, 0.89461336319567, -1.16912344596165, 1.41678064387737, 0.594878735431804, 0.326852136211395, 1.43941033488132, 1.17768662081425, 2.21557375244709, -0.789826010901426, 0.305759526377313, 0.180476335420292, -0.317183459558696, 1.20166689542678, 0.0488458659779334, 1.36716609903563, -0.383461251588755, 0.772327571293538, 0.453450577937706, 0.424649726492397, 0.892515695020168, 0.81854398287901, 1.6347926842085, -0.00488631360206693, 1.0379545922983, 0.434870824262655, 0.338531867529888, -0.265206380021051, 1.15406292626761, 0.157437265392302, 0.95709452659242, 1.36856771581473, 0.603310761820572, 0.836536540478456, 2.10445913816191, 0.759212201601914, 0.894603895127028, 0.231500884282373, 2.33249779074823, 0.537646095725507, 0.50914577613185, -0.0465298782736221, -0.11796932815027, 0.968665761612492, 1.30860005165833, 0.143046234501236, 1.07061104392503, 0.978901819739869, 2.02689635882474, 0.431006751345985, 1.62512321384835, 1.39314112902094, 0.907533583022916, 0.841409150414983, 0.629838338034329, 0.358771099138524, 0.463638866219267, 0.331019306757832, 1.27450038208467, 0.727605758199525, 1.91125385925203, 1.81786787173873, 0.982947280894478, 1.96982890787239, 1.034695873899, 0.174939514721261, 1.39378574660494, 0.849252822939518, 0.655334382773484, 1.22696032040069, 0.0939184315812265, -0.630017567629217, 0.627601964562629, 0.779441207245622, 0.84141303050892, 2.44092004113482, 1.79250633192204, 1.43486023760324, 0.565368796130651, -0.0456351225765468, 1.72093623320415, 0.709875894909735, 2.10391894941596, -0.293111811706052, 1.17926549938389, 1.29124617626247, 0.827362337896368, 0.901134572524924, -0.535878979385178, 1.45817188583513, 2.58999378203012, -0.165915424417751, 1.25572378710766, 0.974610765271753, 1.29211215504168, 1.18514175095067, -0.414406951088545, 1.16525096066356, 0.692514208613535, 2.12735765760946, 0.310485456891616, -0.344497986215791, 0.349122940785996, 0.847240768775733, 1.46176577169757, 0.283658295212749, 0.348646837520133, 0.272389256347946, -0.0108551911525133, 1.57252945663782, 0.404588338104011, 0.107504583088117, -0.131356997164457, 0.574887436540469, 1.30788963245769, 1.85390082778848, -0.419489557221246, 1.11039975325175, 0.209384598801417, 0.243780387410274, 1.07689647329339, 1.74516839940691, 0.953317765484573, 0.103111013780279, 0.993667333754377, 1.74757313338178, 0.807250051562415, -0.239027256765511, 1.41978648944642, 2.53876140976176, 2.03676270686004, 0.292157423681815, 0.880912718266315, 0.568016349369821, 1.20092986576881, 0.940622698095401, 1.56100875324021, 1.72711111839033, 1.02634353634041, 0.799440731342728, 0.393579665105564, 0.655488294617261, -0.511503330364053, 0.141161980073959, 1.32845452790245, -0.0413348981795135, 0.731747471414367, 0.720540390052006, 0.87852705901313, 0.119200393821005, 1.01726168749898, 0.489455034069799, -0.232275236093739, 0.525113075216435, 1.53340538825732, 0.975404574616502, 0.535988864250869, -0.0679177511582775, 1.70038623358267, -0.284174797457204, 0.6044031639813, 0.833949006850313, 0.536069028748335, 1.14866837160024, 0.607543840514834, -0.197549781069164, -0.26439045893161, 0.571709906141914, 1.65175563505644, -0.100550499304559, 1.88254645777338, 1.45247135495439, 0.877479180192022, 2.03794503714206, 0.370126521900582, 1.85883432488092, 1.36206326481362, 1.46284543499193, 1.75221864784579, 0.651001497281617, 2.07400754329685, 1.66352967359951, 0.92607911904972, 2.377650934982, 1.56522878794343, 1.10447516151868, 0.742364240610183, 1.13778998586282, 0.741698278443117, 0.880109828596941, 1.41787384159156, 0.833967001337722, 0.876996673208465, 0.439596618396092, 2.22131691220592, -0.178279053886129, 2.42270288171662, 1.27550188973534, 0.9495523686578, 1.70063796061166, 0.0542439311945423, 0.33851830090918, 0.150464047117467, 1.6088817217263, 0.43923490790059, 0.727560085942286, 0.816850249795251, 0.614251474989511, 2.2792927453955, -0.383171284043013, 0.188377263099289, 0.579365516265015, 0.208056172908121, 1.04756793139254, 1.53966283727363, -0.419692921297279, 0.945009153180961, 0.927334448731955, 1.82966976305062, 1.15656895543186, 0.305316023155838, 0.125628619731483, 0.391528257407407, 1.11697934547305, 1.01595228795169, 0.0407918427046794, 0.283696554110987, 1.26808783817814, 1.50377842018605, 0.201135719767529, 1.84501633305596, 0.816716918718835, 0.260307025092671, 1.45259676234352, 1.43552607290743, 1.09619637867407, 2.73150619411934, 2.1950761327812, 0.798323898627067, 0.881378697917229, 0.511404033516052, -0.131859525590275, 1.59979729849223, 0.298628573841928, 1.20188541620013, 0.708809858214107, 0.996554860326936, 1.08598703647855, 1.39241295814326, 1.31150933545864, 0.570645684467628, 2.15126166579768, 1.46024614102899, 0.857903603723686, 0.736530257151627, 1.706787740656, 1.2504576979123, 1.59945893095399, 1.33059033961888, 0.960646330931222, 0.831522984647292, 1.07111371454729, 1.37214852083705, 0.545438614815327, 2.47987838629548, 0.762492054496563, 0.452536660375575, 1.19166509200359, -0.108787115473219, 1.2977073872773, 2.18953799084863, 0.891551632298869, 1.18444689812212, -0.0968346101333311, 1.96493461085098, 0.680048363576206, 0.635908742702762, 0.111719643975859, 0.213576561254727, 0.776555935638752, 1.76678233420533, 1.39384594730603, 1.16496989076783, 2.36506804053789, 0.924872470725841, 0.166367705778379, 0.790306742001951, -0.737344227887256, 1.2298635292092, 1.02238887717895, 1.95930082852037, -0.297072885814963, 0.31230614200506, 0.148609877264278, -0.0876283124356184, 1.2310293308702, 1.18456779160858, 1.45745260528244, 0.140328039094801, 0.671201929346591, 1.32944841668295, 0.923034385927285, 1.80895448802027, 1.58059989315431, 0.393780334301278, 0.631433576464703, 1.13472383034068, 1.33102766475736, 1.11453571258191, 1.35760766565926, 0.738627129903764, 0.539211120335622, 1.62546840835654, 0.764528774765823, -0.43026702678019, 0.553300729481354, 0.364574363637167, 1.19669760221554, 1.49249054815784, -1.03877919236252, 0.972934875401315, -0.230693596204225, 0.427800448378541, -0.0989626430053901, -0.161899004905661, 0.121390400469107, 1.88494790392893, -0.613587601958985, 1.79325437096032, -0.6262866165328, 1.39408763776631, 0.14505968251099, -0.163738500858699, 1.97727752478343, 0.516883447818729, 1.04480230728062, -0.0351528384449704, 0.412959514709458, -0.279390221427148, -0.171366113566014, -0.0579752799629507, 0.792046469412613, 0.610051295658793, 0.934480142206225, 0.742463487260078, 0.373788134598483, 0.925023882447004, 1.42536420407117, 1.53542753774388, 1.05074272918163, 1.49295176719773, 0.371837544804371, 0.479745609090184, 0.0237849982553453, 0.301829335051198, 1.09819973558145, 1.71861871504479, 0.437226736776097, 1.36319958833877, 0.920429552340885, 1.16276930579903, 0.577604831910617, 1.41210775635046, 1.26875209427929, 1.85932580586886, 0.622729147191756, 0.0847033755418543, 1.81948381345436, 1.02624437333654, 1.34752955394302, 0.596612465974153, 1.50024953718794, 1.88949205613851, 0.488210130876701, 0.941309904999228, -0.406679181081525, 0.438690515061092, 0.319532057682344, 1.78035366973195, 0.948461232235962, 1.4911545067543, 0.765976190038032, 0.278311771585541, 1.80821559452213, 0.383706964980456, 0.542563010977146, -0.434537014162333, 2.3302393101262, 1.75396281236331, 1.60686279858021, 0.254353353956857, 0.23750093030421, 0.187561446370054, -0.355335261959709, 0.00544211988165674, 0.583418217634772, -0.0379919682795426, -0.306520344553384, 0.580915309784902, 1.37201460971176, 0.331717113345892, 0.105499283708074, 0.956468750024425, 0.322489409273046, 0.786234810565424, 1.01606795211126, -0.769607746369736, -0.0695848749954557, 0.702981506807853, 1.68762539570364, -0.25340170997037, 0.678324595939283, 0.207600180617398, 0.638735293672892, 0.893409988412539, 0.854364364322344, 1.26213301923662, 0.522301775448041, 0.209682581959883, 1.74460388988258, 1.12310363558283, 0.400583986848822, 1.88018483425516, 0.223153477344738, 1.1413196336188, 0.397077753745915, 1.60548679181466, 0.272348288563004, 0.481782303969797, 1.19787604253225, 0.292339480031305, 1.24550943655975, 0.424106423952112, 1.51301844302079, 0.361453268829354, 0.253378440479617, 0.0622794026065129, 1.1042437747276, 1.12957966745661, 1.12617389311314, 1.12609456762877, 1.40684835728837, 0.238147058884775, 1.19180670941769, 0.116555365056109, 0.817426281299349, 0.83024301904352, 2.14988851995764, 1.00591500403989, 1.11092718385823, 1.01636200845521, 1.49231462271715, 0.794293967234216, 0.699609333082339, 0.625137344687247, 1.59824770320196, 1.55011032171275, 0.0454385426515826, 0.998817878376682, 0.236670065820946, 0.911690929777302, 1.5289902759598, 1.23042510128601, 1.257127583267, 0.724640524297399, 0.912136620293432, 2.23457847095692, 2.63241839393911, 1.11750633523308, 0.0625319277600787, 1.6101948823358, 0.1081549436654, 1.2913977516176, 0.824208549745437, 0.323833091323208, 1.31096518774976, 0.60389054793798, 0.71203447812336, 1.49473340128979, 0.43642784082945, 0.717377151404725, 0.90788010811639, 0.74321945673042, 1.76363822139191, 0.361727040296386, 1.95921676313961, 0.919141870228367, 1.08306578083685, 0.123210869886372, 0.0923973787647852, 1.54923615778486, 0.686290752049262, 1.27267907242905, 0.746275437715149, 0.48629354085528, 0.76554062756248, 0.0347799958623495, 2.22238581393793, 0.0573781392754794, 1.21125395911119, 0.0809867344870579, 0.60900542021481, -0.292763964673487, 1.45174223956458, 1.51368779619815, 1.50081411454279, 0.558465952277088, 0.950773893720867, 1.04462202955168, 1.27745080306744, 2.16779917218236, 1.40247905573805, 0.220660506147444, 0.313302088988318, 1.47572810947955, 1.8758361261336, 0.868813822772888, 1.35557754538764, -0.0264329341953259, 1.02252806525827, 0.564310041869491, -0.111696091644582, 0.789468461733921, 1.45285978504174, 0.96984500848264, 0.66275627900983, 1.35069162559501, 1.26058632710392, -0.423588955000732, 0.852594003347108, 1.96506603671098, 0.674725012265049, 1.7246571136888, 1.67900967524766, 0.13300523359931, 0.601193251382785, 1.30595771723685, 1.80622369612035, 0.271849590581289, -0.172978132949422, 0.460413326053875, 1.43569524809004, 0.0555521483035502, 1.12152085593395, 1.18661548343172, 1.42848569137768, 0.66487929528921, 0.0533534068219916, -0.322192833479711, 0.293854743937027, 0.964649321451465, 0.176109232088729, 0.22342366354136, 0.856921867218911, 0.923390613315582, 1.04750064206225, 0.754310107688596, 1.43436391143021, 0.535671741746265, 0.815691769922685, 0.639097144610799, -0.00969372333891372, 1.67360548518346, 0.534337075704307, 1.21921734620709, 0.704504057887461, 0.234209485803278, 0.80700488782231, -0.312165766335678, 0.853731914093129, 0.996574720215673, 0.705586016182929, 1.06502756015381, 0.192000362215279, 1.03400764524885, 0.260030441121708, 1.27477970765953, 2.11820171485237, 1.42070411930383, 1.11013766683195, 1.47281133022992, 1.19688345181612, -0.793562511960004, 1.17917969297149, 0.10143169349044, 0.47382699452053, 0.358561102563237, 1.16839627423695, 0.866751624452738, 1.40112352283156, 1.77072897809118, 1.35216824285909, -0.605225868218625, -0.0332658672533038, 1.13861774245837, 1.24069900932541, 0.0774214321124627, 1.26860852577603, 1.30038765510611, 1.29769507372199, 1.05255468057628, 0.246639827660025, 0.576195820308104, 1.60654784560388, 1.05523499598348, 0.482393080711424, 0.299857345541106, 0.0900417588981124, 1.6193682170034, 2.72026589018578, 0.412439465882156, 0.521188379409645, 1.54913372950119, 0.964508547093008, 0.443672159715798, 0.397614973924433, -0.149387606131896, 1.16909960004966, 0.641753217800621, 1.15713755877807, -0.633702670787214, 0.208227949806858, 0.474406366922564, 0.925188755196405], + "kernel": "epa", + "vce": "nn", + "description": "Beta(2,2) - boundary density vanishes at 0", + "eval_point": 0, + "h": 0.477824417672321, + "b": 0.477824417672321, + "n_used": 912, + "tau_cl": -0.0430446690324199, + "tau_bc": 0.009542813039008, + "se_cl": 0.0505232181239954, + "se_rb": 0.0981609696604675, + "ci_low": -0.182849152183037, + "ci_high": 0.201934778261053, + "alpha": 0.05, + "z": 1.95996398454005 + }, + "dgp3": { + "n": 2000, + "d": [1.20237089264354, 0.0484451313007014, 0.766224321044015, 0.276789916804683, 0.894000672716489, 0.418348785483002, 0.14078153528302, 1.5093388620176, 0.155359615668906, 0.434848625141989, 1.10433863784628, 0.279774336048343, 0.642403797349376, 2.29685307966688, 0.673537634660684, 1.80814805338039, 0.12770135544451, 0.278604554667857, 0.126832466242897, 0.945986288916247, 0.772129108970524, 0.244199923562491, 2.64239418281596, 0.354215866306049, 0.912866351964479, 0.996989252131753, 0.513570940752079, 1.00444960290593, 0.288408344584766, 0.220014895208201, 0.703832286202406, 0.317717358662261, 1.3685936243201, 0.651536174718746, 0.951525948563602, 1.9858447764217, 0.46779341636334, 0.0136070461761312, 2.10462053277411, 0.52057478717232, 0.870730920107254, 0.0310890635048289, 0.624588134621781, 2.38467274034347, 0.600350626777684, 1.08813918615655, 1.14741964356497, 1.07669771969541, 0.431946746905684, 0.218273217365404, 0.0355615182542012, 0.453675670833924, 0.535712615290728, 1.49009031746951, 2.34589615863784, 0.71581978443947, 0.643787458902474, 0.402930136241464, 0.827582766579325, 0.574590560840096, 0.371291696517339, 0.240890414084164, 0.909606923185252, 0.736445632598141, 0.614345397448598, 0.847247899420924, 0.191873073956153, 0.462435714870735, 0.206688143638121, 1.22627945460292, 0.120978168754363, 1.81838974351625, 1.01075517272636, 0.951516643667505, 0.0866855001718373, 0.337579257278834, 0.569829107231266, 0.098888742172997, 1.01008085359677, 0.254459027204907, 0.841614032465699, 0.679294089648388, 0.561568641032099, 0.296102403188276, 1.04147987483499, 1.06738385411929, 0.675183336854126, 1.20571962801039, 0.654301334415799, 1.2714160011076, 1.53034749070959, 0.127935927952603, 1.11643661868935, 0.738365549843398, 3.22532278224432, 0.990183911602799, 0.253346819954046, 1.00906238031978, 0.856153677722955, 0.785266820260568, 1.98488543506911, 1.31092416243002, 0.351033970206849, 0.460078557525759, 0.798162274909898, 0.3058058128463, 1.77423869301737, 0.874402612701593, 0.391719950183889, 0.269121548035988, 1.0299669283499, 0.491014952519386, 0.26654600567397, 0.0158983819953969, 0.151033220567383, 1.07301892143939, 0.17908287884901, 1.21474996091664, 0.0218009342207539, 1.4783458734001, 1.6589485640814, 0.491686840446425, 0.189494912298115, 0.667526144089296, 0.759908134358065, 0.0888148898502087, 0.382118865999939, 0.502233076777303, 0.916331455438575, 0.935877851926251, 0.319777524909703, 0.156450790309467, 1.55160851628095, 0.350219894569342, 0.515924713062316, 0.866437549523957, 0.373159465844617, 0.373619617587266, 1.37720025492075, 0.416303964032795, 1.36721943462912, 1.18473113864037, 0.409583127220925, 0.64688040924869, 1.34389239307102, 1.38138330517039, 0.180390328646562, 0.753508377964561, 0.772903599984867, 1.71922502534166, 0.959915750281625, 1.59096122426499, 0.462971732387116, 1.45050690239514, 0.745383942404574, 0.355112429198966, 0.674253970997348, 0.232186339439587, 0.426852508074628, 1.32115885650127, 0.231483148320096, 0.272887273962589, 1.13906356928066, 0.0806907269779191, 0.52424420624588, 0.625285857027038, 0.423039420559927, 0.374318749850916, 1.60574740862761, 0.833074661090184, 0.46216629664936, 1.93925156755402, 0.184958009389439, 0.864474302253891, 0.233178130401636, 0.239358397922493, 1.61888705744393, 1.13515209428037, 0.367018966409352, 0.564771597664531, 0.277350626809437, 0.773840893070121, 1.55092128943954, 1.36303609175266, 0.0725581369804429, 0.641833535894618, 0.0905873174336272, 0.771108808971004, 0.143745013671519, 0.714129843044905, 1.40979233898559, 0.907311992996908, 0.0321384656732466, 1.28509568553591, 0.95760441341303, 0.0785539481401414, 1.35736568644042, 0.76681641674641, 1.48938063586865, 0.18067488397763, 0.0110955396670062, 0.197963720087584, 2.04308387688345, 0.224625382952333, 0.946795884812559, 0.794012930130634, 1.44733337157104, 0.316055601896499, 0.384192920720936, 0.540682185566896, 1.3475420079489, 0.493711044539428, 0.889351550449264, 1.16319545951582, 0.662998816924324, 0.722942005000311, 1.22717977821638, 1.73437566080438, 0.293749323850022, 1.33156707915902, 0.529085515211884, 1.46941930264628, 0.242180494495973, 1.84554421543229, 1.29835498802211, 0.234506253235605, 0.20047034719613, 1.65488468336237, 0.67204427433751, 0.176047037408205, 0.398628816006043, 0.239243579778561, 0.803102699099637, 1.06033706893678, 0.925173865904046, 1.18440704956631, 0.326015039122716, 1.2678048125212, 0.938279473146442, 0.878352507692361, 0.490354169430781, 0.951994621878724, 0.555693105083492, 0.485014054329749, 2.58441646042289, 0.64166482341716, 0.788477675692395, 0.403547809082885, 1.10062754950432, 0.352339739561355, 0.528676476764474, 0.140592078017682, 1.47525118551966, 0.963889060935515, 1.29770023891222, 2.35800607504653, 0.811064846329958, 1.45857254408649, 1.52242414366714, 0.949180158584996, 0.88615337422976, 1.00300385472398, 0.873791809175082, 0.191510635628109, 1.82113351645085, 0.396903444692291, 0.902240205667375, 0.917107972885628, 1.22291689453496, 0.813211728219609, 0.700390639757318, 0.558877137409628, 0.431173639496545, 0.199312532716538, 0.0628589273372194, 0.592770050925664, 0.0848232686095079, 0.837702846679468, 0.278314025563088, 1.59465849257543, 0.75859858406233, 0.0798007536778736, 0.33677418166427, 0.120407816658187, 0.603300130165327, 0.540551124464133, 0.274216678097486, 0.637811132538555, 0.406794929090294, 1.40635670568188, 0.565293039059625, 0.452321250112739, 0.158586954807449, 0.108874402399589, 0.884151862465889, 0.0445097578105271, 0.0309010408278302, 0.712055346400606, 0.68950346681296, 0.34219090337265, 1.22124887465168, 0.627783595530671, 0.349694833195396, 0.447113198007098, 0.40729250175113, 2.27748661532749, 1.07073579185075, 2.01878734383121, 0.011810137268291, 0.473564584908721, 0.365407065445621, 0.119935178327714, 2.41145818216472, 1.38104602198634, 0.468468972226921, 0.235211442193443, 0.234489240693478, 0.0663847018209171, 0.882124392705197, 1.49223473456122, 0.246137709862954, 1.20519381028453, 0.538091719618544, 1.06580520425642, 0.389944638322114, 0.114199392902004, 0.483782904763092, 1.71042445731243, 1.34596462396512, 1.46719911058417, 0.483236239114924, 0.271738386782678, 0.13786553077255, 1.5991650366947, 1.08557765560447, 2.63137355135818, 2.10095669698249, 0.817978904968229, 0.786534390144252, 1.5304489744602, 2.49837829543292, 1.14182692126766, 0.756505234940806, 0.437432785597213, 1.01640810593879, 0.858917550964479, 0.900213610291323, 1.37434690382464, 0.181872971513348, 1.24733718426015, 0.0519286894635995, 1.29715908123685, 0.438396538399395, 0.914069657320725, 1.84284616296338, 0.274112677370119, 0.578273266125555, 0.098676398073788, 2.07659605657276, 0.989004643906613, 1.19113033151444, 1.11974840416769, 0.618149256084396, 1.29223553645102, 0.202676335083869, 0.147602545825299, 0.934959361556693, 0.41778418427724, 1.27643926325602, 0.512038635938242, 1.22125447264138, 0.0505646062064727, 0.609437951547214, 1.87123145730889, 0.259480598647397, 0.537741488501781, 0.180202015717765, 1.15577594087928, 0.117527284527125, 1.02131169592937, 1.21079209129642, 1.10051868422842, 0.758564188796617, 0.139965410774278, 1.72758284142615, 0.583547041511116, 0.233636355367184, 0.470488449383103, 0.821755585858461, 0.911634447023033, 0.343457497815462, 0.525031743890039, 0.332529905289958, 0.845954532090984, 0.914182809899252, 0.448179074998277, 1.96403854370293, 0.457549444698162, 1.0128856337948, 0.9624985317273, 1.13561407877485, 1.58320721037991, 1.32404933922246, 0.499602868217234, 1.15604407917377, 0.880929759321737, 0.420922126276444, 1.88284717132849, 0.213657103281591, 1.87261972964732, 0.741581276142167, 1.58900674705678, 0.613679513165649, 1.23603179313379, 1.97810937763136, 2.13152413163778, 0.0895095061174304, 0.70415315378598, 1.48839879135678, 1.14037404115278, 0.207663259436885, 1.39862158767699, 0.329193763104699, 0.692400328304027, 0.0159445768617883, 0.295401134993541, 1.14221499003302, 0.72962610922323, 1.49334126630432, 0.73574343867124, 0.31639330841148, 0.76641250379494, 0.749477428362038, 0.757423482153829, 0.763589220841293, 0.0724862022744495, 1.11590630756457, 0.305594797089872, 0.163546607411322, 0.852636150482134, 0.510103945293716, 0.837947914673046, 0.525441133511222, 1.0621232708733, 0.938572376118084, 0.561278801430469, 0.597223810882288, 1.69861147954502, 0.527981355338538, 0.201182206228144, 0.228964176951861, 2.46218841308231, 0.28002028979104, 0.499476844167842, 1.1060289791711, 1.98076679440285, 1.83653685096957, 1.33254303549069, 1.04244475808676, 0.460199230600183, 0.279031293591633, 0.63110883925563, 0.0737096869098774, 0.649987877625925, 0.836951644341293, 0.244688802215055, 0.643610240608554, 0.694366393598404, 2.63473053061299, 0.0335959820446456, 1.60495148644133, 0.354803554142889, 0.875528794755527, 1.0436429056124, 0.14052976250417, 1.25302877931732, 0.541554214391497, 0.765540397314802, 2.53063491829256, 1.05489296673294, 1.10239095285761, 0.570030623469644, 2.35572159813549, 0.274726565966896, 0.469034445699253, 0.101443385101464, 1.08008212358518, 1.0216060029886, 0.154123172209341, 0.0736146747922277, 1.22025286527452, 1.59966490980215, 2.56529779344124, 1.02794091171859, 2.01982792053306, 0.850118100826367, 0.457515859075626, 0.0632095253912894, 1.14597348012438, 0.96658076967648, 0.0793336134737478, 1.16264557415414, 0.185042421145584, 0.294140674178588, 0.607934700804659, 0.254435272638023, 0.00919558815766677, 0.762554916304181, 0.0280707463341581, 0.711314786977657, 0.262941850994956, 0.986044431899504, 0.588958493778014, 0.704312391460914, 0.766808063874765, 1.19242602976374, 0.110087295144528, 1.00903359848921, 1.32930461851134, 0.248311539669927, 1.44741278413332, 0.163982113100262, 0.295989372977063, 1.080999420279, 0.860265076761365, 0.498511595596239, 0.783339499903177, 0.489690318293223, 0.495641828933296, 0.296683678446565, 1.79338126925345, 0.809768748665782, 0.995622729225894, 1.46935336282708, 1.12857536550611, 1.59391772430009, 0.662656606327163, 0.611635458291249, 0.848573281907043, 1.6715216373779, 1.89898230883546, 0.928864161521326, 1.00540294547881, 0.482819564860289, 0.348376284733318, 0.107873733984607, 1.66402996146252, 1.21441123955109, 1.91017482772654, 1.19733894776007, 0.754610685762524, 0.853160153864907, 1.34531373542408, 1.27323214402109, 0.556391267911845, 0.278066702994327, 2.04792612997287, 1.65835908684481, 2.27355527035354, 1.08366079771154, 0.787945910654809, 0.46160527708673, 1.24444292092708, 0.460156087927521, 0.959761107530459, 1.11456570044648, 0.534332502689107, 1.45283346929552, 0.867422902702882, 3.00979113479845, 2.27968041493376, 0.269800464956818, 0.292227900692324, 0.648423572370056, 1.23931337351711, 2.01849570324514, 0.913544760624583, 0.623094174521538, 0.156784859190268, 0.117385585116761, 0.636237765141287, 0.616544186787266, 1.51090424860527, 0.618225662705056, 0.131275355229481, 1.47173164202367, 1.36402870872131, 0.0369684776414706, 0.0490046669896018, 0.529963610530269, 0.322605368227881, 0.2011593139726, 0.218667416001334, 0.531093642657915, 1.21276405047622, 3.83211482317383, 2.5066370302552, 0.643540615724265, 0.257615608744577, 1.65774964228982, 0.241541667458793, 0.259183165972944, 0.993231497003328, 1.48309140063084, 1.22593155314722, 1.11263692962819, 0.920279207895602, 0.196609100702271, 0.539500771528591, 1.08957503757163, 0.887659914431978, 0.687401820743129, 0.759922930097567, 1.27628002242764, 2.1228716535546, 0.418975639260247, 0.316743618085634, 1.07939257332775, 1.76127401742912, 2.00593190472818, 0.035202784833199, 0.148576568411163, 0.281089224146386, 1.2801226892411, 0.125635063675271, 1.06446240314621, 1.26553596070138, 0.306657574846212, 0.920199867534181, 1.34462997232398, 0.0167319928797569, 0.0520795423478335, 0.783597017737165, 0.254201633026301, 1.43773129279926, 0.62572881076877, 0.861484394505514, 1.2636990368845, 1.16444278386047, 0.160936816147499, 2.43741663474119, 0.23088426764169, 0.334236912792149, 0.212117337637196, 0.624236565121342, 0.0837006592603694, 0.438634892334244, 1.76219217766848, 0.921751367871819, 0.6405339188034, 0.679366322370856, 1.85540818480919, 1.37771142035683, 0.153159438511939, 0.281643569391679, 0.505984915189501, 0.295008862836802, 0.107981935271961, 0.279423353066089, 0.563657304436785, 0.966816638691574, 0.121388410633225, 0.945825826073707, 0.012656934227711, 0.727912859041771, 0.768520556203264, 1.72553398070583, 1.06078062909555, 1.93301841002202, 1.25334227035407, 0.0170321927944841, 0.691643085435021, 0.0650780866160152, 0.477994023958279, 0.128581465769853, 0.320473499651608, 1.17436879458579, 0.789536207767244, 1.2631695541267, 0.0291397011251883, 0.7023844104794, 0.681115959849947, 0.932778865919551, 2.69085307645051, 0.122883114414224, 0.481596752818175, 0.235574179988383, 0.611274265964082, 1.23495376643996, 0.638829989603462, 2.05076256487794, 0.728767346461543, 1.0462345574498, 0.972118229109066, 0.221006524702406, 1.08665934520204, 2.50768232956327, 1.23767441471026, 1.02138060687782, 0.0732117561076364, 0.186089793711434, 0.782504806921792, 0.757810858256436, 0.707243580766142, 2.05649154127217, 0.105052959175734, 0.218287143316168, 2.03331283191084, 0.151324895141016, 0.741750697324678, 0.914783587095674, 0.31051294518822, 0.848365381331256, 1.97128828314963, 1.19134620432728, 0.251060714885532, 1.22055705251934, 0.718115234918871, 0.0358933962150604, 0.280756843785983, 0.105490461629431, 1.42869916517865, 1.3629597533885, 1.74687155060636, 0.518071576568826, 0.383369213616817, 1.03631398470967, 1.43279669000396, 0.220312120347431, 0.153138268926071, 0.0375312624961577, 1.12416365559214, 0.571769304132713, 0.129260436678501, 0.489367538956347, 0.955455517949649, 0.0391074607558297, 1.05231997270798, 1.60171257214144, 1.41198009767293, 0.562377227947199, 0.76622975107823, 0.659836668937199, 0.315199763555114, 1.61068019657952, 0.277925595383236, 0.455767733732653, 0.443063570885205, 0.822889880129965, 0.630872275869508, 0.0441824555365181, 1.34696871898161, 1.46988256485884, 0.982735411719386, 1.41135085609228, 0.19957520745301, 0.547559801983746, 0.329432609348742, 0.41545664782009, 0.349337683333784, 0.744303491174506, 0.07928232899989, 0.220303241855411, 1.31851127690623, 2.6289053353388, 1.07950562983049, 0.260464368130733, 3.25795896848462, 0.875043443138705, 0.945290080933351, 1.03876311104376, 1.21757881335423, 0.719971333407722, 0.245074749022244, 0.364610742252924, 1.40904490258502, 0.369625986343185, 0.800472596208791, 0.0529402744839606, 0.636816870222474, 1.19446667085282, 0.256749877313322, 1.03982123147511, 1.017533882158, 0.2278638197719, 1.49478818526588, 0.949389858872894, 0.575634678947588, 1.22422923879337, 0.937270302804682, 0.298843059668265, 0.280399392686563, 0.127588435351416, 0.687117635629361, 0.795733096717854, 0.59562276321844, 1.27773309586322, 1.74408840187733, 0.472022991075064, 0.520821134644993, 0.868409793812033, 1.22474076392872, 0.772531777752661, 0.942512394546796, 0.162824701929739, 1.05681914569219, 1.61245367671218, 0.340548832897836, 0.482149581695683, 1.18302141767309, 0.870844209604528, 0.167300495999921, 0.832959107243365, 1.01932753815323, 0.546383427778609, 2.57883197045487, 0.327862426150419, 1.19992453235952, 1.34855136676344, 1.28571321978529, 0.580714428307588, 0.0338220863519937, 1.00807229079103, 0.805308410858656, 0.803423138664532, 1.21347820161901, 0.588912671869986, 0.76444375790051, 0.776756079383572, 0.75930048589754, 0.175993796641401, 1.04343277795583, 1.3549947457643, 0.302426655512898, 0.817735281847192, 0.00508839819217828, 1.99870150902617, 0.648370763545097, 0.466492609354068, 0.280902879252449, 0.550839262086372, 0.895323546997264, 0.751073547425487, 0.744326361284383, 1.02139405705484, 0.407774339947196, 0.213242811672896, 0.366987039477978, 0.482968830101727, 0.0575020413078521, 0.198983312955828, 1.90728433535131, 0.522438749455237, 1.30656669923032, 0.706823387301612, 1.48333166754499, 0.570259793092007, 1.34388708001384, 0.770795627115304, 1.27299753153127, 0.631243185624457, 0.127195309135529, 1.07702618047925, 0.259484763144405, 0.0537936495445917, 1.27077118634606, 0.617897373948516, 1.56775050824, 0.4441687543647, 1.28857898483223, 1.41590214023858, 0.302635333770811, 0.100570910904198, 0.937837559947488, 0.847083378867065, 1.73303334131467, 0.32155003508653, 0.183142807315137, 1.25257626866867, 1.0877620419128, 1.01846993199043, 0.816342166879763, 2.18896027803021, 0.550019151467945, 0.590067612367566, 1.03556496530089, 0.481801793230585, 1.20071222452556, 0.1273250269204, 0.178790955364539, 0.690223050674334, 2.35174673620128, 0.966587123186351, 0.923000510748333, 1.12859440520832, 0.69996414019487, 1.24886665356002, 0.293120756490909, 1.1766847042021, 1.12970611840917, 0.215571297019337, 0.855915092233734, 0.871171997047042, 0.910094104727981, 0.538674220971858, 1.34053313743422, 1.21518222252412, 0.203874286306192, 0.804007670947257, 1.92965153831862, 0.550851060619072, 1.03077101503646, 0.489681850694367, 0.897732437332598, 2.01364050607687, 0.686050883275082, 0.404747064878979, 0.624383848103539, 0.41140586813659, 0.227359537520519, 0.931456928224069, 2.12126942909956, 0.0677357991540891, 1.37603824076632, 0.673615302504498, 0.56845560568639, 0.134373722212389, 0.241055009371441, 0.381106078536259, 0.11643382137701, 1.10631855765445, 0.792545867617552, 1.18781621333463, 1.27275880992597, 0.771856256978049, 1.47416431434606, 1.12958988414025, 2.07507787835994, 0.292235965907274, 0.992601599685047, 0.281943660600897, 0.621440826819595, 0.273147971130641, 0.968813280300521, 0.597421676054569, 0.486477611959738, 2.14450398334297, 1.84739253050399, 0.074786024211132, 0.920458274347765, 0.471530233364027, 0.224484111159938, 2.06089490036589, 0.548388112791988, 0.156060355842447, 0.109826427667044, 0.16162962793207, 1.93444628982352, 1.62738674754022, 1.00323189095627, 0.0609479112628589, 0.0213937786112247, 0.59907335206442, 1.03431778306813, 1.68753148660332, 0.38285143294812, 1.57465900118985, 0.422136526020045, 0.476566790434778, 0.0226551714900169, 1.22955668143635, 0.2320669695613, 1.67170787339879, 1.19844339561476, 1.62837396341641, 0.459064793245374, 0.322048083495955, 0.142064106346556, 1.11487716608495, 1.45216417882916, 0.501038279240208, 0.819587491044392, 1.18191142358765, 0.666904146087193, 0.246241740978229, 0.176425436013454, 0.0423430132622621, 1.95030433217913, 0.405542871314598, 0.944937384265602, 0.479362406170215, 0.222469481147099, 1.18234805472697, 0.668735417478713, 0.118624593211791, 0.841693746158909, 0.217816967426563, 0.542865225110226, 0.420643523648135, 1.44338391409387, 0.8988293088436, 0.0331513772034755, 1.34446721084615, 0.245128391354413, 0.384975639502292, 0.596831119098163, 0.316065432529807, 0.249406078132303, 0.605607601480655, 0.204408239809067, 0.53502928903926, 0.354505914245767, 0.769046359187295, 0.927890048287743, 0.195325470390666, 0.258712127102113, 1.09728504873573, 0.0266209670107661, 1.59315677714471, 1.24664503514635, 0.193791240497929, 0.0711685489488371, 0.318330908546175, 1.61495154499712, 0.333679681074534, 0.34680086196535, 0.0193912984695151, 0.203449692090167, 2.47635531579181, 0.356846581396322, 0.563579038777849, 1.23999434318076, 0.086836803124872, 0.63265452902387, 0.276546961927588, 0.0384029896290235, 0.307662140379808, 0.505866667179091, 0.69593337655599, 0.779136646470651, 0.382277621153628, 0.59125825474024, 0.297486382084862, 0.189523309891093, 0.516504907376138, 2.13984361613316, 1.0369540282173, 0.36017886661215, 1.23058424039961, 1.71250818385031, 0.478893556807226, 0.0055744459600798, 1.05332818944529, 0.094977765190386, 0.355793091093857, 1.10909871356788, 0.398180640643077, 0.127731464245645, 1.86818465316183, 0.314087041780995, 0.194331813181992, 0.898847547726183, 0.188033359482491, 0.666019633721605, 0.591916167985349, 0.194000554965158, 0.745795506491173, 0.298723182992643, 1.39107051194037, 1.73715084732086, 0.569027453903121, 0.013240750959125, 0.0180062693297147, 0.837502342801756, 0.07421498376491, 0.369723597140266, 2.01812988573546, 0.716598148185185, 0.112583989046287, 0.0826021167992485, 0.0832767265534655, 2.72452071845538, 2.31115071446475, 0.48437889896768, 1.45862204309428, 0.512590414966529, 1.02216626043369, 1.42576171101704, 0.0454193110969015, 0.847545759467413, 0.64813175275433, 0.159340862476551, 3.09316526895335, 2.37382641321015, 0.28009675677086, 0.92321941010699, 0.854366755229843, 0.817487942733599, 0.287905967648066, 0.036426416855786, 0.0925086172051073, 0.2106662063786, 0.492015118189247, 2.17359017917958, 0.182079749072865, 1.83414510681719, 1.32635563056311, 1.1168360140539, 1.59935988104998, 0.459028879102421, 2.31818396233012, 2.89433163108606, 0.927372850054642, 0.688197173301919, 1.86359287510477, 0.435198620288028, 1.55530611122696, 0.024500278339607, 0.362420590193298, 0.367740244478062, 1.46074668366354, 0.233619416293615, 0.374528888883341, 0.413683414267358, 0.0905702354636344, 1.26369766715766, 1.04537542923087, 0.32055366172032, 1.40828208503582, 0.174583116133027, 0.517468098777929, 1.14093419715141, 0.224824865060981, 1.06404474430755, 0.527806016636818, 1.99994801314283, 0.438352274888144, 1.53149295545269, 0.362865145956002, 1.21356773958747, 0.430358987915269, 0.487063656208715, 0.244333174491339, 0.207956218441181, 1.23689642296883, 0.150031240498366, 0.224584578181711, 0.592467980433539, 0.176329939236378, 1.55382794661758, 0.236234732117275, 1.00063985505793, 0.710121633952599, 0.678504460281666, 0.905080402601179, 0.674653649163352, 1.15518545741735, 1.41743477374695, 0.416004913972288, 2.13069230297499, 0.344390802005232, 0.0572718018800103, 0.310744228027685, 0.796062007589779, 0.0947725308537488, 1.10295348325331, 0.524207787530017, 1.03620934776658, 0.271160282939829, 0.685783658406043, 0.122685933823879, 0.446517425482737, 0.10947159377801, 1.52272774944312, 0.282766491814765, 0.149995818845496, 0.241890704521148, 0.211704996432389, 1.13586836311845, 1.74928796662334, 0.35732098355218, 0.0942287147426607, 0.367232775958733, 0.494157764417972, 0.0495553051036229, 0.555525373925488, 0.739784635922911, 1.66537245382631, 0.328733348193034, 0.182844389541859, 0.96090808785632, 0.620997150171067, 1.36091285099366, 0.0483821944503279, 0.269391229319914, 2.04903072887149, 1.69896588790055, 0.309357929137189, 0.862444993841647, 1.84396124067822, 0.135793159845811, 1.05848316793083, 0.695989625555952, 1.24353930361299, 0.275940362927498, 1.71272083817256, 1.47132602298782, 0.558260854482352, 0.682021673100408, 0.25088011750669, 0.246192649984452, 0.308713017839589, 0.6012639968151, 0.956979179835887, 0.950024660387664, 0.276114094669253, 0.397500536784862, 0.360493157136035, 0.339178632872666, 1.59921874751745, 2.54935918251185, 0.667589352874179, 2.98418371878456, 2.13717132044325, 0.300025534674076, 0.49632889720475, 1.01634207340606, 0.494073812278941, 1.09705429052726, 0.565733556616459, 0.308445497753273, 0.0877644909751363, 0.119092572312674, 0.62835583153248, 0.504046696624423, 0.864355465352112, 0.179769320445241, 1.38446440752976, 0.875348695779411, 1.59194817135806, 0.291298574324361, 0.387338127793729, 1.34704777852707, 0.436812921339168, 1.16504418144303, 0.0509155960566649, 1.05287474371417, 0.0921599104376289, 0.234655102885528, 0.795280623042385, 0.912075216823354, 0.474450076630261, 1.50999963292009, 0.12929257181446, 0.266508694024316, 1.30551800570629, 0.412444646857489, 2.6580831794991, 0.427265818843777, 0.00649475650600087, 0.861020205012243, 0.931409289423727, 1.25300383144337, 1.39852782899128, 1.45998226698124, 0.694815278397682, 1.31340607223752, 0.959805598258302, 1.19531199655448, 0.819577886623951, 0.433074847324325, 0.194869661641027, 0.457318722966947, 0.167375956803174, 0.344066079588852, 2.70110446403754, 1.13260883826205, 0.0586711262587459, 0.655825245151163, 0.214529519640043, 0.39613804024096, 1.06220567856937, 0.521187621877132, 0.580992015472307, 0.401222477796637, 0.428624308749998, 0.345210922903711, 1.58006691306147, 0.625795591256961, 0.0869354453017027, 0.827052455712802, 0.558050503298571, 1.27979209337686, 0.0336350755028262, 0.892925488095927, 1.13063906968574, 0.258626600112487, 0.082182982065504, 0.601231538589078, 0.895847676706846, 1.75907516630608, 1.60699959357566, 0.741663720678184, 0.912889761795143, 1.06703710805495, 0.388376089535367, 0.873328858284632, 0.124925138767967, 2.93784640233689, 0.0572902638358293, 0.0860550211344116, 1.56382467657296, 0.990552638614847, 0.659398532436799, 2.05143040218312, 0.0772691620539662, 0.630279181397179, 0.727892311832875, 1.23730673255881, 2.03979342318734, 0.522278253639433, 0.3523824073759, 0.0126305152202995, 0.884192374890539, 0.239255137067377, 1.50431983793267, 0.164050412703558, 1.84617730688733, 1.87438630455558, 2.91228341772622, 0.331598677710428, 0.178221185961247, 0.0476372694470718, 2.53239787862525, 0.441635176631176, 0.856257775250118, 0.822519302946565, 0.84006416871575, 1.51664228049337, 1.30343161118638, 0.929202549371224, 2.20928372371393, 0.0454866120052702, 1.22230011112852, 1.0070823529819, 0.44741836138007, 1.3560384988057, 0.283882796416647, 0.608579976073692, 0.330694393869685, 0.966850698968713, 0.526449385986222, 0.509352665540374, 1.8424496786259, 0.449418562572532, 0.379484355126582, 0.53293059188005, 0.0701223075673157, 0.502574868003094, 0.167664015358435, 0.095921136756328, 0.783418241556847, 1.33317990327452, 0.778894555658226, 0.0119820884241333, 0.758582216107565, 0.871138500379908, 0.0259389233147151, 0.72267516501087, 1.4677788272852, 1.63454346935867, 0.0420760951788391, 0.940398709431828, 0.460593908506112, 0.81579842948698, 0.458860287578265, 0.486242283329946, 0.310059726242304, 1.51884147564946, 0.493069278928839, 0.692115141116646, 0.52908612263678, 0.317286300196874, 0.659817062006464, 0.506265227160605, 0.385465705345106, 0.789307051310534, 0.64738925032375, 0.779536077736592, 0.268868166708464, 1.21898884975916, 1.21319774914372, 1.26118014073419, 1.55121912001629, 0.58027530809473, 1.40732814294452, 0.190308351362218, 0.1912931559429, 0.0128666422523922, 0.164653247782094, 1.90143980781227, 0.11378730749962, 1.35668779151118, 0.434277195134736, 1.20920997467313, 0.0678685195475081, 0.017173445350496, 0.977233096002097, 0.32981130563503, 1.80350338758122, 0.498465740762702, 1.58734340243928, 0.963424819292824, 0.351838243434622, 0.515259360132495, 0.408733266530562, 1.59332548720643, 0.476247088697892, 0.474844465068621, 0.0341929188673005, 0.192971350595155, 0.425047200416992, 0.0626110065354682, 0.470376671019026, 1.7913032892218, 1.18116514037734, 1.06463215313375, 0.58632690649968, 0.486153247714354, 0.89574541062471, 0.644040307857914, 1.71337039660739, 0.476904921582961, 0.401513181714329, 0.699962530131516, 0.144193473773163, 1.28046266382891, 0.528683413449276, 0.078164214834596, 0.496008778500996, 0.827577962699964, 0.68028349211283, 0.391119722791944, 0.575899357441391, 1.26385682601625, 0.395931219569063, 0.00974253167232995, 0.286592168079103, 1.76849358182689, 0.956258280783444, 0.5441317523441, 0.786539666480921, 1.40143954374867, 0.00902363991455094, 0.427981273827315, 0.906615335380396, 0.283588866799942, 0.356033114526455, 0.583697022629771, 0.376064174489333, 0.586158431917677, 0.0137316895525516, 1.40786288573413, 0.413431118551171, 0.501816597525789, 0.0835428734573409, 0.301667788378261, 1.50972413505636, 0.35448223673977, 0.41970994930169, 0.958991169516041, 1.51919141041231, 0.115418810005209, 0.545546961428826, 0.404412633606015, 0.748460954634191, 0.338398228146493, 0.0504174779464154, 0.827460827734414, 1.75592837599835, 0.402941498587918, 0.438555172651454, 1.1286642349594, 0.396240611938602, 0.464320115945278, 0.597155321846677, 0.0917902787063618, 0.292671356637619, 0.39041019994264, 1.40657701934451, 0.760749642725432, 0.725245093462509, 0.262445558657982, 1.00118907453069, 0.139181186235488, 0.261158401358902, 1.03307959613671, 0.727814963689532, 1.90756427603204, 0.264966700655133, 0.333112722976554, 0.308818792750985, 1.83248393219761, 0.885058695418053, 0.0436851636701903, 1.16965832438086, 1.66443923724697, 1.99704704588101, 2.35580381972848, 0.645886939559623, 0.407629677457917, 1.50175771509309, 0.111280387280224, 0.57040738822062, 0.741067926483092, 0.779848472972398, 0.118725818430636, 2.16743275136155, 0.0642037754378249, 1.68885263309651, 0.989979152945009, 2.03535377464567, 0.225775390650145, 0.949481841259033, 0.312997380487205, 0.775604651235266, 0.84599858573834, 0.859536406256661, 0.498414733174809, 0.664819292223975, 0.00450262992418332, 2.10713733092205, 0.272108143195029, 2.15151328170499, 1.24492679203346, 1.83805151488786, 0.570161999642932, 1.22624070578298, 0.515197463757405, 0.151105856430834, 1.66569281652967, 0.223313341658098, 0.802897253578311, 0.184738391238785, 0.0294525932724031, 0.926128949482124, 0.801762534905123, 0.484441766802911, 1.45810931301173, 1.17952971885193, 0.147078308725365, 0.264746456090396, 1.22231409949706, 0.775428690105179, 0.541409406293203, 0.758235753614088, 0.301856827765162, 1.76349683241156, 0.691111603134777, 0.566403696206073, 1.01876891524837, 0.240999120737643, 3.18311233222007, 0.265197613520063, 0.196684216371022, 2.04891500572985, 0.312218798140487, 1.29536833737655, 0.164851657138681, 0.620030588002863, 0.714632742595008, 0.805421676736982, 0.311626133776389, 0.148662267294819, 1.00566906267138, 0.0740323261106701, 0.00605097617247103, 2.13498266496445, 0.917931065627194, 0.228705847103242, 0.0207755201304314, 1.97665505505078, 0.755524971876775, 1.12232932678892, 0.188301243463609, 0.527020388275822, 2.05902209609619, 0.0961931063896329, 0.496716563144736, 0.84800830718544, 1.23886530282487, 2.45152014873011, 0.361288339744786, 0.463650213661952, 0.554562173029634, 0.97409565266406, 0.0977047753307962, 0.0138560567320247, 1.29817077622895, 2.23110335273514, 0.119580872391802, 1.3637602502359, 1.3960066046185, 0.043825190442009, 0.212068004087462, 0.482142688115579, 1.47048661705534, 0.741057871535435, 0.923872438292794, 0.621518005183975, 1.61441289841765, 0.327960883251848, 0.466892701678535, 0.276195080111274, 0.0817571698348812, 1.96580658115502, 0.373181049878732, 0.902605286748594, 1.19243523384276, 0.825714829131336, 1.53481629119121, 1.41961201815067, 0.778790253165815, 0.790395669680761, 1.67368643885906, 0.124741570774304, 1.70380554186126, 0.978787983008579, 2.7066764392758, 0.859550172074294, 0.554024906994845, 0.399141716336631, 0.883300848276327, 0.198547960099512, 0.389556101377818, 0.703515397012168, 0.746845421232104, 1.84102479441905, 0.419642948917211, 0.439251469849884, 1.41322466846085, 0.903619633229272, 1.05464974848655, 0.695308150009386, 0.273201874092199, 0.386019293281426, 0.543924898194806, 0.0663678114717509, 1.94735934391756, 1.55635204293866, 0.605891107327724, 1.26690095480121, 0.657553490299036, 0.837985763308252, 0.482310994594039, 0.926949276382056, 1.13812590951277, 0.123031401258693, 0.318486641195278, 1.50178000306639, 0.0599822445223912, 0.671614896954838, 1.37738580535374, 0.976696878882311, 0.782883107591815, 1.00462867745356, 0.336978676246931, 0.183227478873812, 0.903498416661149, 0.516525513143334, 0.0998536087285279, 0.0625729285732461, 0.342422207744307, 0.140498450895928, 0.430569380184067, 0.0283176575261599, 1.63049901691223, 0.652389532401533, 1.86115412884472, 1.22629240665882, 2.07577811054335, 0.344373909984328, 0.557332994574676, 0.266175218429447, 0.139175917145466, 0.680385019161283, 0.941503777981747, 1.10516274641013, 0.287916210316805, 0.474183437306115, 0.505652962759549, 0.361608539332917, 0.833482415271512, 0.540386973585675, 1.22271096738211, 1.13516810335941, 0.983298803356784, 0.569054852213215, 0.886250085190574, 2.45587973851957, 0.984612879676997, 0.33490614771837, 0.530108596621615, 0.388363294671662, 0.916244087604343, 1.11571198396242, 1.32501287477238, 0.121413385621521, 0.471501432070842, 0.676514643660101, 1.78489667180852, 1.82505530989367, 0.486418008084426, 0.429717744743499, 0.749565139720846, 0.509466289414498, 0.281207467451025, 1.35850235139132, 0.28064494910753, 0.192785403461022, 0.0800145680501216, 0.00995302435220202, 0.689602182046136, 0.217419747577931, 0.74718081966568, 0.591046263847043, 0.216769780095642, 0.73207512114105, 1.17760045230649, 0.185697985058637, 0.653594250724247, 0.972656007184612, 0.664643150544908, 1.02997934909045, 1.83569141976949, 0.148880994471588, 1.19311017525089, 1.5305166597248, 0.747202736835569, 1.11622408672362, 0.0035397330436021, 0.00540639838950857, 1.08429678922243, 0.175949981071411, 1.10266402334187, 0.312390273209478, 0.785035483645556, 1.40144530750149, 0.22532068178114, 0.875208716317538, 0.825190897293188, 0.569121487557552, 0.779505006987779, 1.66276401427351, 0.0996625273263207, 2.80579880938322, 0.601998836852973, 0.225930769831283, 0.0338240045347813, 0.631532194644809, 0.264002048362246, 0.66572465716422, 0.550471183744028, 0.0778137109252143, 1.455778768025, 0.912218838681844, 1.49822853202088, 0.648440761847396, 0.717329133251122, 0.883627537836783, 0.0424536046959009, 0.92898922480885, 0.73178014651009, 1.29311227844561, 0.859530095580206, 0.392377986891305, 3.45798591367054, 0.297622565428754, 0.0928956373497482, 0.115342828200427, 0.308824017731442, 0.229671883297874, 0.399165847554563, 1.25991942468375, 0.213068853637909, 0.374737494474814, 0.352989965279685, 1.28774164725765, 2.03568666344098, 0.854181971378253, 0.000328703792082699, 0.488530754218806, 1.28854457590239, 0.811602144623144, 0.197369007582792, 0.460496635152725, 0.265202513491082, 1.45426534684649, 0.251087894956094, 0.298240536061448, 0.99067236476113, 0.246781756324837, 0.680771788906498, 1.22797809377283, 1.22457971097459, 0.543519837917116, 0.39703367357227, 0.215945651705393, 0.0297302686955516, 0.650896572125972, 1.24031833424744, 1.07019279328719, 0.234667364809043, 0.514521306337586, 1.71160937415904, 1.74401388441698, 0.31600549208411, 0.74715870720426, 1.2082485725135, 0.144691264459074, 1.49120536861741, 0.960043192150442, 2.29028770317833, 0.74691391810218, 0.913011096188427, 0.457175939097812, 0.969478105354626, 0.624979006450373, 0.263865010182912, 0.313139535422427, 0.941571539664773, 1.17986768953744, 1.44501328639709, 0.117431599174814, 0.480956506800446, 0.493685234834386, 1.61542686582699, 1.64344627231347, 0.492102553557348, 0.36157978104925, 1.12733456390628, 0.512066978083952, 1.02044499282367, 0.875190432659147, 0.0204887312757552, 2.83628094726458, 1.0395505112967, 0.30575287919883, 1.47748990044183, 0.677268666066918, 0.905587740085977, 1.62215325150741, 0.0678997752083872, 0.238720210315516, 0.182626378216773, 1.65638816395497, 1.14970036858628, 2.09548431366744, 0.582342364698191, 0.225714001370198, 0.626768527433315, 1.34026858487751, 0.441427135275072, 0.033547938539784, 0.514043000151192, 0.0664070591774609, 0.684579577907551, 0.105101260189635, 0.062047801093771, 0.396945784619747, 0.608212720422103, 0.805685788142145, 0.501649448849746, 0.0259509952897559, 0.12218134964688, 0.59035260322165, 0.421375334162781, 1.61526126543073, 0.363642387621403, 0.924807189552314, 1.03443189777481, 0.295600762994054, 0.255761662172707, 0.353641971489028, 0.374664369821419, 0.612712666132209, 0.331730992954371, 1.09813135672636, 0.0883930463513997, 1.54475807940402, 1.24897109999528, 0.315612176753132, 0.396025419318367, 1.33951874597274, 1.91246967334755, 1.25284042686198, 0.928653069212724, 0.524859396307366, 0.302455996212025, 0.838336177070595, 0.643702264831, 0.431360606377647, 1.74293632465309, 1.26966688888671, 0.639588220200969, 0.028577506325881, 1.04723456631401, 1.94169040590408, 1.12350387413869, 1.60703304928834, 1.3226704645448, 0.13470721465751, 1.3278576465598, 1.21556292384473, 0.0156270027914305, 0.410051111797409, 0.589011673238391, 0.0328373388370193, 2.4704058270779, 1.31983504782383, 0.384981465721174, 1.81938841192431, 0.702077910618092, 0.00510322759888994, 0.816401826202479, 0.562076477984098, 0.726160327686839, 1.33676902437352, 0.539318890768057, 1.56415943435916, 1.07224645712806, 1.27441495102929, 0.618155292971176, 1.88060249417262, 0.0904536030893845, 1.83786324270616, 1.79769141333449, 0.712867357770126, 0.244321088344486, 0.0887766047144945, 0.330841030548733, 0.592049849401261, 0.589437372974043, 0.198765374680068, 0.570181626609932, 2.19038623171842, 1.13359240028183, 0.473615721031583, 0.312466859360406, 1.39299763404264, 0.281501558246274, 1.43489005079836, 0.020772047324314, 0.418237871814125, 0.341863144291297, 1.74690978314863, 0.377237907059675, 0.522680713583448, 0.720342302349064, 0.114613687434131, 0.0126284989665268, 0.630333737698193, 2.35920833368223, 0.682507491523109, 0.0496331447180806, 0.334757843492276, 0.676096191866821, 0.798732718851666, 0.268482076829002, 0.137777617028039, 0.962028633188183, 1.11464474106886, 1.90135835554369, 0.0212808560181081, 0.195113158604516, 0.316116168866787, 0.608438570158006, 0.88847072376507, 1.97714602212465, 0.648191130880461, 0.208134340856314, 1.70003012777116, 1.40309441314824, 1.4916887096198, 1.37978618059339, 0.286942312183584, 0.205424513578068, 0.49462383788222, 0.682940159495058, 0.453894981499832, 0.108079141873821, 0.973613751604398, 1.35172246584907, 0.924293167105215, 0.887679130674496, 0.462930252055093, 1.62650960987027, 1.50490041299578, 0.684384467109336, 0.010114642000104], + "y": [0.400186293759868, 0.410150497410415, 0.147817150443223, -0.071809912708905, 0.237031723306347, -0.104818771586418, -1.37464474579064, 2.24257902674854, -1.06680994896124, 0.982403792140793, 0.236739515663774, -1.82703515499173, 1.62543360802639, 3.25956935704872, 1.82602312721589, 0.807353996212157, 0.288659542615927, -0.585459054670095, 0.833532629408983, 1.83834498141863, 2.01149503550576, 0.660213380411584, 5.04867800024519, -0.170432857935459, 0.410210266452848, 0.556934131218736, 0.839873434425846, 0.512260114469936, -0.52321565830738, -0.939636958457947, 0.316501055821141, 1.26183502800552, 0.555536448451209, 0.455948030330004, 0.90356399615874, 1.06500551883596, -1.66126159409027, 2.51380553373482, 1.56711621987873, 0.529256422844372, 0.0452110877445497, -0.278727776146157, -0.513989918509595, 3.00866823266525, -0.37250719565775, -0.148583152788958, 1.00215269610922, 0.976221799511986, 1.7985165868343, 0.788794979507778, -1.98867822040832, 1.30176121234086, 0.998006711911393, 1.7472117273045, 3.10802327853253, -1.22394917268688, 0.899874870407368, -1.0709169065319, 1.93048195916003, 1.51622501240473, 0.0276832338304422, 0.466920839695451, -0.657290302331008, 0.614105581409604, 0.310983997024948, 1.24403164907164, 0.98708861167129, 0.415407195703237, -1.84798593053165, 0.0281532998128025, -0.600964038851645, 0.436614600660491, 0.531118636716462, 1.08515778104533, 1.02660209280025, 1.04130157164943, -1.08460049042505, -0.315199832657846, 0.999628470835676, -0.458294057331866, 0.454837632829601, -0.347317351061684, -0.668297360622603, 0.5620773558694, 1.55240423823205, 0.0808481738940115, -1.32237419259817, -0.4130288113822, 0.109095117768023, 0.0743772388611734, 1.69099670976841, -0.277145715769555, 1.61855857979603, 2.38066545613749, 4.67896987145721, -0.604210196685696, -0.831262228980211, -0.386805898571927, 1.71552656538722, 0.275328221752744, 2.02994352415182, 1.07663568476939, 0.228382003601172, 0.390102140204815, 0.340379950923291, 0.738712628609655, 0.885373469901976, 2.56588418923424, -1.22836269599088, 0.395721980641715, 1.44885536470328, -0.718575340648234, -0.261274458094324, -1.40711501166726, 0.92623231610411, -0.488403143636067, 0.282771601212941, -0.400604122336304, -0.7868449306334, 1.95735211307068, 1.85166749172791, 0.544275043060664, 0.763966643473498, 1.58439097899177, 0.9363491162808, -0.0967286449763419, -1.23270556746379, -0.0308666384725791, 1.14004130661234, 1.34442249722987, -0.587450058441313, -0.176777099836135, 3.51607390244184, 0.37600353151894, -0.261649459209895, 1.68691051158348, -0.600940680363445, 0.544700175898197, 0.606911799938202, 1.45687118827357, 2.04302970510225, 1.37620758260975, -1.09318343956831, -0.821157875645582, 0.545932551486481, 1.44452368463333, -0.765488825970351, -1.26200667142179, 1.58185896785161, 0.766167677917396, 0.547531837045145, 1.16679429362019, -0.462098450126613, -0.846741386217836, 1.8396750571272, -1.49586975663449, 2.43143457098105, 0.158023526346644, 1.09462945062449, -0.425110508599766, -0.0928451712336122, 0.810941249229375, 0.610671342031119, -0.856477078050643, -1.46999715858445, 0.927662368869704, -0.0219208507401088, 0.511766056326621, 1.52581559587261, -1.46247644534489, -0.114238905837884, 2.16694217700184, -0.455826747586499, -0.309780282744117, -0.914746498038337, 0.280346130541108, 1.45144389321729, 0.45460403789604, 0.853664301011682, 1.36900709842647, -0.871455537554603, 0.131458702786252, 1.54575394428789, 0.502077436281311, -0.152262059890523, 1.50919218127136, 2.46965677418696, 1.78213965748142, -0.495944781572716, -0.503576650251336, 2.81887224935298, 1.43964152486927, -0.342415145584542, 1.8559382912762, 1.26286882580134, -0.00296046981412345, 0.21679833086795, -1.18528228753655, 1.12124894688739, -1.83658328238979, -0.20850284929743, 1.66482898709132, 1.93302861080127, -0.0887758482777155, -0.603616732273484, 0.361383096303557, 1.42883205956617, 0.922174155230272, 0.852114570176507, 0.713287365275845, -0.228376400800387, 0.358437983843783, 1.86419590880574, 0.928849357807222, 0.213618525112922, 1.49402096695491, 0.682080675758735, 2.83345954163249, -1.28850902555996, 1.08158567499356, 0.892082565389806, 1.30862350475036, -0.27770471467966, 3.28854145744972, 0.904909765549941, 0.769135018116006, -0.35769930385805, 1.0446465719007, -0.616451638702021, 0.108196840535223, 1.21525381468705, -1.59618819538807, 1.55937310247805, 2.22600592631274, 0.462906378658113, 0.341765295358663, -0.721824936717283, -0.180503790643147, 3.04353758128121, -0.0657998686333718, 1.1743963075835, 2.4955300260492, 2.11182131660835, -0.334596883731015, 2.29865058821449, -0.949105363322911, -0.788836948834647, -0.532137801907274, -0.947427456218273, 0.599772263187581, 1.26178322316184, -0.685259821211785, 2.14823537980733, 0.931722162899815, 0.597924503971703, 2.91998083394124, 2.20788738429591, -0.00200401164980146, 0.624473335386282, 2.35887476859956, -0.0210442745032466, 0.29003394206072, -0.346029879617229, -0.697025586554841, 1.19849197839087, 1.39929617864627, 0.0920165049439733, 1.64394957483251, 0.0809314528722282, 0.0678586136105667, 1.7634290568491, 0.647476185140171, 2.02035893937167, 1.71622715601347, 1.07875574261333, -1.47084396712003, -1.20759497234956, 0.431538866418436, 0.285280123588504, 1.08510514456328, -0.54986429898914, -0.524325680312491, 0.667032640761389, 1.81550226289434, 0.0309999519557867, -1.29458047109387, -0.463215356320987, -1.59736318872092, -0.96408893496941, 2.54173077215311, -0.655974001181127, 0.61262463883011, -0.358222042884778, 0.867869385917155, 0.291813325237627, 1.67195555324481, -1.04520358870125, -0.105665515388377, 0.347551029094526, -1.83582761363813, 0.0727283617330544, -1.42700423338962, -0.486176441661296, 0.488698521979898, 1.71283452478623, 1.16225669435205, -0.815430842937563, 2.30692593642248, 0.0718950474341296, 0.485371131130325, -0.902247853206936, 0.370024156129422, 2.59969922094579, 1.32786187789326, -0.767105127548188, 0.343588297220095, 0.11250613812493, -0.122769019805536, 0.301895651063504, 0.136389195842935, 1.7030040966341, 1.83184889790609, -0.212360291184917, 1.45497374395769, 0.220793860448652, 0.434209856475945, -0.086174135386466, 2.56493615608129, 1.32439156263257, 0.963082413591927, 0.0889508928468383, 0.265090584734682, 0.486676583906566, 1.01124457224388, 1.09628167781407, 1.63268335969722, 1.31745311488043, 1.41141773483689, 0.673835840751529, 0.64051284637877, 1.76872302116098, 0.183492125956977, -0.880434910420462, -0.203350671270712, 1.62924038579941, 1.42282037908116, 0.708081173982421, 0.507390667100491, -0.0886270282179681, 0.0104375777077574, 0.824126781894502, 0.124251106028555, 0.743518876341133, 0.294518324069354, 2.41592464135367, 0.187762924036772, -0.278795271558073, 0.305327578272243, 3.25319818442068, -0.253957913963885, 2.24155933368445, 1.90381811271445, -0.949093367414038, 1.86354245597381, 0.731583165417231, 0.986699612199949, 0.807253914449216, -1.16221695824179, -0.261444160786038, -1.7626969480734, 2.70765038817996, 0.787634862681746, 0.816587321266941, 1.7679262097664, 0.855749059532086, -1.2109977230225, -0.281628960552952, 1.78640029107026, -0.108475881689369, -0.420055026009193, 0.417815649939849, 1.2236178217632, 0.915105904489554, 0.502201290187384, 2.03038334621565, 0.190254536202984, 0.687505178879096, -2.53765529278829, -0.474786312838316, 0.49349207997715, 0.47893852046198, -0.00747110099314827, -0.534504224889321, 0.933132962600192, 0.92508887006683, -1.02820166833859, 2.27007421938189, -0.702708343462408, -0.705161528200508, 0.439362631867077, 0.951908921654487, 1.36736396704872, 1.04468157398513, 1.44942103578182, 0.883637289675161, -0.427329412644942, -0.933415595136261, 1.26050926186266, 0.095911365374284, 0.172056031855768, -0.154318959387507, 2.21966174824789, 1.03108776641441, 0.262101360390249, 2.21689330342465, 2.50615620073145, -0.8801086478835, -0.631583817334271, 0.89389192788251, 0.14625093559316, 0.169241396110592, 2.16789605158672, 2.47233966202017, 0.388876738146613, -0.676877791529722, 0.90862680239711, 0.692636488721085, 0.558528487333624, 0.11390124188846, 1.57096753242376, 0.815944929730209, 1.88031848166726, 0.143647979149025, -1.12004339811017, -1.88476342552741, 0.195845873808905, 1.70044480682052, 1.21848827782614, 0.704081859256378, -0.64431505773636, 0.840629910520775, 0.350173891901036, 1.2501837829471, 1.29256175810572, 0.618080102066378, -1.39627651956395, 1.33329344499024, 0.510604082208722, -0.534763172279756, 0.357938095292742, -0.200241451084902, 2.51659621770402, -0.582329422212632, -0.640048834306582, 2.07687804649671, 0.737821864268443, 2.77314159872385, 1.14470186170279, 0.923325781459673, -1.36170170125609, -0.380905730431515, 0.354527866417252, -0.579047519067023, 0.924663943123913, 0.0130933114849956, -0.837300783373951, -0.258800035781998, 1.82534997573507, 1.41804419983984, -0.24814561012498, 0.303311534204408, -1.31274183197906, 1.7802936483779, 1.04504874698475, -0.216594602392661, 0.655433418315735, -0.574590543711138, 1.39287817123881, 2.88651435884829, 0.486716336790236, 1.1394668209712, -0.271385774077329, 3.3698613053027, 1.42129974628617, -0.409641788537513, 0.951130614741679, 2.12217100284729, -0.168971806871095, -0.195890326697831, 0.321167136742278, 1.59128684793884, 0.470963415701231, 4.29525340053988, 0.258433420434775, 3.36521283544368, -0.499268409123038, -0.360340983561164, -0.495270104170995, -0.918059780164284, -0.955096416324573, 0.669511077345973, -0.295942985554463, -1.32251517379185, -0.908906261166653, 0.33517541521802, -0.438427912234636, 0.177491799056667, -0.317511876831982, -0.00348622845465025, 0.916038655649805, 0.174698826281414, 3.11547445609589, 1.89688806550564, -0.770469263961367, 0.243211001412321, -0.195731304988662, -0.427396430761075, 2.74490675386327, -0.427027786734515, -2.10848246485934, 1.48298852034809, 0.284248565798298, -0.86029858982477, 0.492397383250047, -0.720305191113116, 0.715627778153054, 0.473973656076419, 0.536847513584191, -1.79292877006197, 0.304608604357422, 0.696957091636233, 1.36540262747795, 0.781464548833932, 0.942816997894703, 1.08511850610242, 3.10242487036611, 1.58020593942806, 0.896009254998366, 0.793162887877531, -0.304029344260909, 1.22437373667219, 0.479440135544257, 1.82739664333756, -0.552380793736534, -1.05363741631274, -0.994534598699998, 2.54322851208753, -0.553399673332943, 0.705449168637719, 3.07761790512683, 0.428466630751871, 1.34772180485892, 2.0959782842457, 0.515281901199478, -0.394969930058238, 0.250779620760821, 2.10669733701159, 1.2854089319904, 2.46617048041473, 0.944663346523459, 1.16277265028632, -0.169683023838771, -0.0811552736202906, -0.250991993075694, 0.83784529684053, 0.797415126853536, 1.07697674445326, 0.190909158305696, -1.76756894768189, 5.21956165567293, 1.72835797123458, -2.50074949545765, 3.03815062465966, -0.12174832294283, 0.67266702489097, 1.56471484780833, 0.496888120077751, 1.19954687851411, -0.0765814991405092, -0.5295670764015, 1.67844763739164, 0.855019245765018, 2.1064172085085, 0.624559855606197, 0.569195909104951, 1.79883995455118, 1.98377855425072, -0.916404816944118, -0.0583656458667862, -0.844313177478353, 0.41095499475689, 1.17327396244205, 1.23034423752529, -0.980344067180854, 2.17666161414724, 7.3825312150853, 2.40800865938884, -0.0809701650711216, 0.529842230475825, 0.388258066292143, 1.05633511718371, 1.52135409932905, 1.68149822956109, 1.81956167415809, 0.383285275756284, 0.385576576401411, 0.242845607778679, -0.317147257100245, 1.37402855841586, 1.39938961374693, 0.298198799577103, -1.63392487985617, 0.254501096417079, 2.05016753100236, 1.60765738709522, -0.807479676477176, -0.887566818000924, 0.242568843937427, 3.24521596151904, 2.43588799139241, 1.39011923065557, -1.30422820611593, -0.730576790505411, 0.540095708612317, 0.583339802288051, 1.7308686122466, 1.31711802204017, -1.65059375530925, 2.68389288380833, 0.305393304454963, 0.0253760769127131, -1.40178342558737, -0.682457887356139, -0.0294209269657636, 1.32834465840369, 1.75964209840848, 2.37928194231403, 0.371181237479415, -0.291091313831108, 1.63993214547326, 3.03099184589819, 0.355291799348822, 1.16671105979152, 0.443177150269353, -0.370734310707566, 0.252402701033803, 0.822838271329552, 3.05129094963027, 0.339606275963476, 0.611849281034099, 0.630321666572984, 1.35242161276917, -1.37574469825357, -1.95277356067565, -1.3721080835257, -0.959121930953709, -1.08379725640916, 1.36866448604596, 1.68257101396094, -1.57504251780845, -1.77222239091789, -0.0346436690830643, 1.28053533393237, -0.561387078281678, -1.14523157677744, 0.502057416166133, 2.22268739828922, 1.96926107394599, 0.846716523308797, 0.407503411034756, -0.0554247072385792, 0.0273668149988202, -1.93068786182995, 0.147249980940439, -1.21579547337842, -0.99153126446963, -1.29466778233216, 1.45754453230951, 1.73629479054975, 1.89079025696033, 1.7656024364973, -0.11449723916146, 2.27370172180962, 3.22027206968146, -0.753679753401901, -1.70402200578997, -2.29894369951741, 1.05093511814003, 1.56585158988078, 0.411694137243429, 2.3549269371019, 0.417408066679555, 1.12450423578555, 0.640910005387979, -0.109307494679577, 1.97756345274785, 3.02197735169633, 0.580931848659306, -1.49706137964149, 0.372404678665891, -0.835491600814045, 1.63316841043777, 0.289851741881563, -0.579217868052076, 2.4720832520438, -0.733327104840403, 1.36522043997721, 1.20445898688398, 1.06466863553739, 1.10218218027769, 0.295474523797312, -0.25632465537419, 2.20930710621711, 2.43851892517936, 1.2819920139068, 1.14245946240566, -0.296971401144781, 0.218953284455349, -1.15999946683288, 0.202758154135942, -0.946788243912813, 0.330789898435632, 1.5325150918905, 1.119785362872, -0.484435361316876, 0.200278247111615, -0.407451782213532, 2.09516126257152, 0.275877408212127, 2.11398113573404, -0.82290123656569, -0.685445631321013, -1.4318783811584, -0.16811305961268, 0.0781646744775894, -0.248794800299751, -0.427662627367356, 0.445177841186991, 1.81066282780194, 0.212940177448507, 2.05568272772088, 1.74914737833896, -0.773693274909678, 0.570771363406627, -0.432198624020687, -1.12426699183736, 0.267164759324961, -0.0812416094811051, 0.698616696165779, -0.591584349176509, -0.245625059516955, -0.0497652915820381, 1.78721843507108, 1.39537847824221, 0.029643827710171, -0.555351768384356, 0.49366293496606, 1.05623941799205, 0.468919606236077, 0.962512656924679, -1.97220712381594, -0.149713414227323, -1.94611832943513, 0.634633127039404, 1.88203907417765, 1.71075241116571, 1.14618461839113, 7.12211134453435, 0.465555045889567, 1.93720911564224, 1.13091879955628, 1.95422601850261, 1.0697440279972, -0.348102673701992, 1.17915301491599, 0.582603692926971, 0.629598305167005, 0.0405895375660763, -0.124378868155198, 0.610091499445504, 2.390882250899, -1.13363079358748, 0.816407115472195, 0.915979555891389, 0.226438297746389, 1.05956662928692, 0.684492653248824, 0.0346071928449778, 0.354903512754254, 0.669067330895339, -1.01838341205264, 0.352593612778701, -1.6536124400266, 0.127578474179559, 0.836870926906211, 0.0691183513272036, 1.0456885995343, 2.25647465029712, -0.399721969777828, 0.0382960304602149, -0.280741889534964, -1.51352138967837, 0.457086914634411, 0.292897436915741, 2.15151083718068, 0.452657193558212, 2.50768906588505, -1.80809607057477, 1.30466284817433, 0.692499919861043, 0.734119829720129, 0.323374800103266, 1.00578650819001, 1.47006809993987, 0.0563594191178222, 2.72066809437371, 2.24072023724159, 1.78611308368546, -0.918987219836239, 0.83407629294059, 0.252856913185328, 0.283190578254575, 0.644749751279374, 0.224279292652883, 1.12895501387143, 0.711586259760628, -0.971772931675215, 0.681752144006155, 1.59730598285044, 0.179353605381272, -1.18692138234801, 1.02060846053324, -0.419363208526493, 0.174600283244244, -0.682408679972899, -0.615922633775594, 1.83706914468446, -1.61513966052721, 1.34425278497106, 0.150696782146332, -0.171577135671504, -0.898759802144325, 0.218084937584043, 0.897149540411448, -0.133465696469627, 1.35588594983013, 0.854274695972545, -1.32855650837053, 1.26972666522595, 0.275408899156081, -0.975656846100444, 2.19454647451566, -0.280901555310166, 1.76255128366286, -0.952867233497333, 1.61754619781435, 1.38069671957793, 1.98601061311329, 0.306154890253245, -1.00785900653416, 0.376301785250132, -0.431497187138367, 1.06930679146752, -0.945219319711158, 1.82186316082919, 1.05833101290732, 0.275812727093442, 0.324071397403878, 0.427456984008214, 2.29793228803896, 2.54912447300993, 1.2322385621487, 0.753765156936497, 0.454935645525021, 0.156831615458216, 0.294717953465109, 0.430496846558356, 0.482143792771304, 0.205211747851167, 0.0565461910404753, 1.17573173609142, -0.017532811030858, 1.65477403156107, 1.05444176679911, 1.12012033185136, 1.66569806526782, 0.0117998783206043, 1.5812779691698, 0.520290567989046, 1.27705592839742, 0.024327381875387, 4.28213814878328, 0.972795880558411, -2.30453084543872, 2.26331477285559, 0.473219844737015, -1.10106031199892, 0.373549303496773, -0.478744790131591, 1.43309244866665, -0.306655980068881, -0.694900480598983, -0.0712376822220707, 0.557856363843336, 0.326902340611045, 0.460236907193785, 0.502566115167119, 0.562699516409934, -1.7633810432581, 3.12366471365185, 0.91037718092659, 0.565596228573686, -0.659194579609718, 0.736832818125156, 2.44257335711996, -0.188559182462022, 0.764829316329308, 1.34751513958817, 0.665452004757833, 1.57784721366535, -1.47591781156172, 1.00040709899432, -0.831448776460721, 0.875523881887278, 1.53173299502801, 1.02073966124151, -1.8254538404734, 0.417839361957676, 0.33514254609718, 1.63192034442221, 1.25340201906083, -0.669456517529033, 0.232277655622613, 1.77998425104405, -0.241235042612596, 0.69499174248795, 0.122276522892215, 2.24201934220174, -0.789802761510776, -0.0692277744884471, 1.01075457079311, 0.888559231230546, 1.34451752866074, 0.691477603157941, 0.139655758365076, -0.162839286606248, 1.34178402623352, 0.114822830743437, 0.713529844943438, -0.679206294893186, 1.14921907505675, 1.80255381348255, 1.82211131198235, -0.0607677017115662, 0.0333405452757199, 0.535503222897472, -0.263466459306351, 0.625865435455129, 0.486192119371492, 0.533900786889248, -0.621186661929115, -1.52964484489408, 2.71067125554615, 0.160228676918643, 1.25464570769812, 0.69480087804769, 0.0156674204756941, -0.467423964722999, -0.270990757124309, 0.227194626381947, 2.02377018985617, 1.18086589658694, 2.09654945590107, 1.12101527317715, 1.51478085695065, -1.28187852505273, 0.753834695516228, -2.39465446932636, -1.16420838836148, 1.11674292912356, -0.0827448167656152, 0.493791674616436, 1.39908406659205, -0.447712899023755, -0.177676971182085, 0.70830582554016, -1.03013581359005, 1.79768276012086, 0.221373488769072, 0.330449800597729, 0.227043764732, -0.786441363535116, -1.70460397809719, 1.52403987623465, 1.05529679672589, -0.289607380071175, -0.809608475359862, 0.568789384658756, 0.996038156666513, -0.277860299384618, 0.222107912916433, -0.730322729925633, 0.318327071308618, 0.285700328488902, -2.37359676348775, -1.56319332655669, 1.03136597697702, -0.8964789375147, -0.264641889418357, 0.491871177729437, 0.648671654301057, 0.547084466223993, -0.706469735313777, 1.36889934766756, 0.245915860840915, -0.649305103823086, 1.32790604307478, -0.0662319402888519, 1.50813615777346, 0.186151093176209, 0.402918737401559, -1.79308054241919, 0.483418765078878, 1.31953821513009, -0.459058902701279, 0.709597313121566, 0.512712181163222, 0.454201926888677, 2.63952976038753, -0.669940258284557, 0.33541819005609, -0.154281428365716, -0.703139993731223, 1.26569709038302, -1.45459413485007, 0.482652732323554, -0.536459962116078, -0.874233982106233, 0.860708279195228, 0.376467664340132, 0.411414015151828, -0.142600003508689, 0.469809463083589, -1.15902166857212, -0.409837506228186, 2.4251299473955, 0.761542523740674, -0.922377114930206, 1.77327498478109, 1.60395077819827, 0.167587639209391, -0.5050789967392, -1.10059679690716, 0.179646782569831, 0.924358137986901, 1.72397756856692, -0.643955217773223, -0.489379494872692, 2.23587102803928, -0.569109689095159, -0.114279585292066, -0.164985202964495, -1.08124944486948, -0.183104719238649, 1.00585232801172, -0.423466446109852, -0.936756734180237, 0.905620966999535, 1.17306097091984, -0.445005159447611, 2.43544894807345, -0.212958483990401, -0.0880997148345767, 1.69666164048081, -1.22094290598535, -0.101842777744942, 2.54583204010742, 1.43627684085589, -0.126549701236851, -1.04884890736406, 0.557769955781453, 2.64650987740289, 2.43488089039762, -0.385406960048412, 0.778250956272235, -0.765229495990445, 2.29704785564688, -0.760885946552481, -0.643449526958978, 0.0893511272116345, -0.278703852228934, -1.64349118879255, 5.92785495750786, 2.54382260548507, -0.443299334985856, 1.90519765444164, -1.36020045421536, -0.174893824070884, -1.09444911550965, -1.0909352045335, -0.928093378925528, 1.56182052903431, -0.547660266742223, 1.98031365692622, -0.392193393029043, 2.06337971562472, 1.09870851939731, -0.121751035234211, 0.0370328848442831, -1.24571844235033, 1.19289006645749, 3.91502617204725, 0.914967755017003, 1.471608456006, -2.06671640290455, -0.358896737399758, 1.06605272127653, -1.25032728833275, -0.796614901649643, -0.860187138067488, 0.977825427741821, -2.33151893570376, -0.573943498450783, 0.489718989055982, -0.640357456752218, 2.75207823856166, -2.15783364985778, 0.908110299276506, 2.07410581091208, -0.829705644873645, 0.693744662833274, -0.437097368206771, 0.274024629752154, -0.512000315792241, 0.642938910805753, 2.05770664678358, 0.894878991398458, 0.550496578960773, 0.221201787889671, 0.474172807730628, 1.21697211352313, -0.7765499470906, 0.300097663838313, -0.542646030395428, -0.123496659708717, 0.0942963147807556, -0.226106851744806, -1.06006135182173, -0.749321932334526, 2.14501769762263, -0.248838918982749, 1.27832479355742, -1.6473920129901, 1.97142009989872, -0.301832919381566, 1.62987031737184, 0.528103395847338, 0.467932411119645, 0.828868955110127, 1.75796314506479, 0.128585963122887, 1.00100806088619, 0.126175579743401, 2.51923667193589, 0.130387488696361, 1.99307948460032, -0.437424625625764, 2.45420729088645, 0.211491867567114, -0.701282081122978, -0.216421785115717, -1.54324294043205, 1.08815929135095, 0.480311940940649, 1.15380682615585, 0.862787795440946, -2.02001197374969, -1.14774807656163, 0.0393969294363458, 2.37091743358378, -0.43284994490385, -0.246786426399643, 0.867579473717359, 0.203084926415334, 1.16676571890101, -1.21347925324196, 0.736037303639654, 1.03581535696395, 0.296133780720732, -2.10663919759499, 0.751379718295487, 0.277983965218653, -0.494225598824657, 0.44461487077093, -0.135262114609702, 1.16935914152732, 0.0537051628892442, 1.71796286780148, -0.594003822596986, 3.0575899951725, 0.272151043685659, -0.865287261442757, 0.438446897994692, 0.508412160917704, 0.638576436276887, 1.29433921381695, 2.2092088816349, 0.600431683373056, -0.266035372578216, 0.549042443458124, -1.11499733171167, -0.228455817856755, -1.08966888324278, 0.395382125915721, 1.60873076301566, 0.00868566325149676, 1.4770621380254, -0.636511852078505, -0.0160573297288086, 0.511896385681888, 2.60626093792895, -0.640638681309771, 4.05971204355353, -0.0473703623484139, -0.252701584309821, 1.13248796505476, 1.83892612374609, -1.45180294890083, -0.567977283302321, 0.577953326867155, 0.938737004407181, -1.09501035364652, -1.4241804465178, -1.88466790554975, 1.42108524742454, 0.597442337510234, 0.768387446999175, 3.22175491802404, 1.87613462659984, 0.413520180019883, -0.0729625849324934, -0.285455131711179, -1.10951725521812, 1.03134426709051, 0.816818212836347, 0.425945111963694, 1.45128544374604, 0.89860230425624, 1.01381648289045, -0.700663713425111, 1.66951341990638, 0.763697850574787, 1.79414065473304, 1.52900209988382, -0.796787721589407, 0.68736304255652, 0.553964029661762, 3.63118583661427, -0.917943167962154, 0.677818870519307, 1.5239796689368, -0.444066058711405, 0.126081259517712, 1.41502607460091, 1.09754941822058, 1.08197164220827, 0.715493089809695, 0.400569466010561, -0.308872919338266, -2.78711102602481, 0.42360770312629, -0.555984395662063, -0.0125644464133146, 1.13974858383863, -1.01027041083009, 3.05162188930186, 1.01819728154106, 0.466766385798161, -0.355812446521074, -0.7581333053678, 0.112459943154997, -0.503588414994025, -0.358362091797034, 0.644747389994604, 0.11799638116144, -0.338102350313366, -0.42353263823309, 1.89691104647799, -2.40498578523371, 0.276302835677493, -0.213921857036925, -0.37383997510333, 1.30623733385664, 1.15771199152741, -0.2437459572586, 1.29126382395732, 1.60230891455518, -0.937439234044324, -0.571901276676727, 1.29897680920618, 1.8678519512372, -0.0815785715597988, 1.89827468284208, -0.114222281575555, 0.067566823313568, 0.790972468740432, 3.22324544861866, -0.681119396638106, 2.62586061258309, -1.42015472107569, -0.413877864006587, 2.66955646694339, -0.169538368825287, 0.573914931539252, 0.879979068558929, 0.598975420226513, 0.410874747556652, 0.869491214833206, 0.56196417377438, 1.87676647607329, -0.294535394700285, -0.214752993144434, 0.302386429903323, 1.4369837578525, 1.62290857833383, 2.1234562113696, 1.12168478629923, 0.284896396927904, 3.23446556998695, 4.69758028188423, -1.02838319556625, 0.210912219065509, -1.06316754035276, 3.25191321216205, -1.23553016303094, 0.220738297142598, 0.1245836405622, 1.19103416583567, 2.71345194176392, -1.68831388474309, 1.23279505295903, 1.39828590021468, -0.340353697232333, 0.994612612928941, 0.238416502788949, 0.211634204243669, 0.852797466703139, 1.10455459029496, -0.666353533992189, 0.522770675437389, 1.1489276485547, 1.08088539620171, 0.824463975253717, 2.02963787198968, -0.143950809670339, -0.891292645104018, 1.68203718314135, -1.40749338612285, 0.146551937627228, 1.26222035705114, 0.197168597517206, 0.663454184493582, 2.38469320202871, 0.773878231710596, -0.847309582502129, -0.131231273306233, 0.54737731972027, -1.64778150534772, 0.0661195996950283, 1.55419558678366, 0.526645031894696, -1.90481689167447, 0.265390408160661, 0.575027176966512, -1.4570870726569, -0.3998620727502, -0.189981310014298, -1.46638525904022, -0.388676731073504, -0.0980705745027813, 0.881595638885266, -0.0621413653427886, 1.33065669393777, 1.21949246386117, 1.37101982098668, 0.587306348657334, -0.0791020282219377, -0.793436009207845, -1.29615710849467, -0.733658270123904, 0.65325307470584, -1.4011636599194, 1.25530799933944, 1.44302195545336, 0.190787580761306, 1.30723860288168, -0.91475717485147, 0.636235411925856, 1.22514757169581, -0.252128620136495, 0.589706914625829, 0.969514640857719, 1.96951940543799, -1.2942917541534, -0.950064294577377, -0.315373693645459, 0.245246573652382, -0.466870495474214, -0.676627707759279, 0.922460115681555, -0.167259128187567, 1.16069649891765, 0.540616498542264, -1.17473589203829, 0.72106216176567, 1.64620719788313, 2.26602531613903, 0.0602440808173971, -0.13775393417564, -1.28617574386667, -0.601005235547623, -1.46814704687455, -1.98675643137028, -1.46371713477456, 1.25605688103184, 1.94218195890938, 1.19969405970808, 1.48202700596216, 0.190527546758125, -0.543566192041809, 1.22506351345719, 1.09881338261996, -0.443611309118775, 0.603887121805586, 0.251656919477093, 0.767049148382627, 0.771192158589932, 0.0874191866816905, -0.511186284652509, -0.583604117567373, -0.234442825167827, -0.920460920781681, -0.341256190408842, -0.522096443340076, -0.139263361496894, -1.27787778570847, 1.05010139804885, 0.407923289631276, 0.708755449219392, 0.219371486772857, 0.982466901936796, -0.255389071100478, 0.898903303955032, 0.315853287177908, 0.773991845531689, -0.0568616894865954, -1.27248152372829, -0.128204344972416, -0.301405791699653, 0.313476713318645, 0.138685029216478, -0.790813280942196, 1.55052799744283, 0.442227839726681, -0.430581022168761, 0.552564478230422, 0.998285205504035, -0.59177809872945, 0.401508029696958, 1.06147799099115, 0.593625805989449, 1.40260184320178, 1.10308047810791, -0.629700559258355, 0.230180199444114, -1.58674721671374, 1.27371242285609, -0.281891109103334, 1.50660917020276, 1.69301656948834, -0.344619801820332, 0.502901521342666, 1.12095960185226, 1.00115136819297, -0.859302712609057, 1.04836470126006, -0.440076828518342, 1.32658164261026, 0.277211584136094, -0.00340550029993902, -0.528806896965776, 0.358101474797842, -0.859188270205122, 2.40917068342075, -0.233070898879408, 0.821214820975242, 0.530215989075157, -0.414524547717428, 1.95937773999619, -0.31637636648441, 1.59061377708225, 0.85491464095897, 3.00848977288385, 0.31110984039717, 0.561774578883227, 2.72002265637445, 0.365794993796914, 3.00376232679713, 3.11323993706562, 0.78487297906203, -1.0937982429059, 2.06319745299424, 0.99940125775548, 0.940783624290638, 0.127462253896785, 1.18874351543676, 0.543612125029256, 1.60184486776756, -1.42427493931755, 0.92340227364286, -0.011842981289229, 3.90332146151109, 0.0074401202021698, 0.653956455116741, 0.376857842377593, 1.84033598194922, 2.18611439873324, 0.198743643742977, 0.592825769638117, 0.802819704942646, -0.852157849724791, 1.22778351351926, 0.466053010386867, 2.58210701655269, 0.370069031847681, 1.43578369982214, -1.34312371776821, 2.13165963712773, 1.29655749661337, 0.844647031050506, 0.762397979753491, -0.903097316449438, 0.850880521324793, 1.31583545089355, -1.8596995834388, 1.77086651263061, -0.418696802927514, 0.108397330873801, 1.71513428277485, 1.72650311105061, -0.171534598810939, 1.0210148061908, -0.95921030661116, 1.15276501084302, 1.28258443662658, 0.392063884350341, 0.987259371139681, 0.882623146302104, -0.27699479747292, -1.1770520483676, 0.764544307068252, -1.29748458762079, 4.93166885388979, -0.323879468174976, 0.270669394637915, 0.939330000547917, 0.232546777393071, 2.06241940191246, 0.893672943621461, 0.868353319024121, -0.890959808742889, 0.495448461602055, 2.13817794126607, -1.72516195505559, 1.45227926015267, 2.05322727499574, -0.0598476661966607, 4.56583475753443, -0.223786239035005, -0.505303747306019, -0.697383724938441, 1.57473678315689, 0.419664889386524, 1.61811900441189, -1.2445731481015, 1.64415047980353, 4.44541325908303, -0.118512389233858, 0.33778324018807, 0.645401207488332, -0.530887896985314, 3.48409782751957, 2.55157809824785, -0.487257340821106, 0.911602898367859, 0.529637722978747, 0.0158261489229185, 0.362123421087131, 0.182441606329207, 2.00650238541131, -0.775161761501705, -1.0976520076165, -0.273722496287697, 0.95542306658208, 0.871563109479288, 1.0693815929896, 2.42227414178032, 0.706707961855108, 1.26518904864382, 0.36043882046498, 1.04600856154064, 1.27303082234015, 0.0189313553482265, 1.46601961615649, 1.17834484202965, 2.89977849114582, -0.0109978574636697, 0.109029010084896, 1.75591114028086, -1.55627533441592, 2.18921898161372, -0.429471693599015, 0.239012246958699, 1.09844674816704, -0.63517581279449, -0.925829986433739, 1.35587490506366, 0.54167610538779, 2.05307444152271, 0.200750863097581, 0.833098688215281, 0.83540554750834, -0.602127147976569, -0.196332110159228, 0.199411802254476, -1.43797019810213, 1.61592466883547, 2.37124231331179, -0.472122685853005, 0.195524975465793, 1.37067569208643, 1.12896040759214, 0.832180196438864, 0.116326729804276, 0.456473371615986, -0.575758251200717, 1.11615485896098, 0.508008954619831, 0.0493457090388711, 2.71262482591911, -0.716390994593083, -1.27396988909029, 0.816709449967362, 0.0849386007821812, 0.198817872440067, -0.210448899035025, 1.34516468866521, -1.36961056349874, 0.226676951235678, 0.510424393925823, -0.325915698043339, 1.8701641803339, 0.431185272025827, 0.204473080604653, -1.02887766930769, 0.117519731182047, 1.56440162899034, 0.388894732198055, 0.399660525723922, 0.107143382866544, -1.02539507686943, 0.530291243338367, 0.136130358443079, 0.302895002936787, -0.841597545098063, -0.205117812131206, 2.10829713333989, -1.00102659101996, 0.90959310495541, 1.34770146636877, 2.87280859141198, 2.16821729533945, -0.0256476782044227, -0.278232214429803, 0.837227886060098, -0.328291817633503, 1.13769823944564, -0.978114451580864, 0.103148609291684, 1.22481861695584, 1.7894993642897, 1.15525374611458, 1.7545817634005, -0.64620256302245, 0.750491872290816, 0.798737549115557, 1.94083010485031, -0.620486935835173, 1.51429981302597, 2.40962716569504, 1.51254838477252, 0.820311329892761, -0.53952007672903, 0.743106840065636, -0.574926985818413, 0.848404177552161, 0.756338810308836, 0.227704178836982, -0.20204471371638, -0.0839021599097524, 2.14062142368087, 0.798020771327468, 0.36830828281102, 2.28924013190774, 1.16161490066692, 1.0021428804393, 0.319830105678902, -0.208534449144881, 1.38849947813382, 0.835405625269753, 0.749373155637211, 0.40869213065397, 1.80607650577143, 1.01014160116986, 1.09279704656658, 1.76028417520472, -0.519976120820538, 0.940225683443508, 2.26120370143731, 0.176279249542933, 0.636246940346498, 1.47512953995556, 0.849049649639233, -1.34512016945114, 0.372302492434952, -0.425050822821237, -0.0185655354865334, -0.312562974540073, 0.286885500434903, 1.05415878584709, 0.0907653887643029, 0.479571041716294, 0.193936878378265, -0.0355459738833423, 0.654613792536384, 0.640437358108362, -0.51211982143802, 1.25035311832771, -0.441794257362547, -0.950979455503757, 1.87252717820712, 0.598654177716385, 0.198259474414323, 2.09502246235362, -0.669106653005611, 4.67968174812352, 0.909723652251769, 0.60323493252869, -2.07124048674656, -0.670189169013084, -1.4769942801634, -0.36476812206821, -0.439562639238363, 1.63740886459801, -0.337837179410645, -0.561486850508642, 0.80508130216064, -0.902616382493715, 0.926987328515665, 0.490630382636676, 0.0757300136032932, -0.502632243583655, 1.52315793767518, 2.26253185093172, 1.33451442411178, 0.305239617846156, 5.24898745870767, 1.36562679737341, -0.398285518383693, 1.32266389205303, -0.287364465127207, 0.382611164347247, -0.763830437454023, -0.13092208954539, -0.364241093066238, 0.866023929538083, -1.87824026988618, 0.419108083219776, 1.29748226376989, 0.884379198824891, 1.48238516773126, -0.320920357526692, 1.92909381992867, 0.0535866851289411, 0.822909105166593, -0.958791584531913, 1.72106185871723, -0.344526065105062, -1.05231830108556, 0.65167336955415, -1.08902015898258, 1.23850352926293, 2.74844242820726, 1.21156217485269, 0.0434814950769333, 1.01286940820117, 0.219217954388066, -2.09312688828933, 0.714119721036855, -0.965566689409777, -0.0783568641424446, -1.50809311628651, 0.523698731528017, -1.2343793768928, 0.863812836258525, 2.30770520843593, 0.839402645937638, 1.37257249020196, 1.18466447952246, -0.185576872452789, 2.93334093300506, -1.5596721189461, 2.68630227383809, -0.307387722902488, 0.461101891867866, 0.206982738656607, -0.366754569912156, -0.0338472214161527, 0.0475595412888318, -1.10573344543519, 1.13015029909989, 2.27229259071425, 2.89951706013018, -0.145512647408783, -0.26939978224819, -0.691221119076502, 1.08944171870602, 1.6738840589179, 0.442594034843472, -0.224888831588269, 0.822060148921286, 0.145411184402615, 0.196342318599254, 0.787843470729458, -0.795934610144371, 3.01588789428762, 1.24481732680682, 1.82934930066134, 0.907487144029345, 1.63493938369009, 1.08100436046231, 1.76269832949965, 1.67812874260917, -0.72243384438829, -0.0380771182372652, 1.81909903601986, 0.751180755115976, 3.95667412594582, -0.911531085647766, 1.69370101860015, -1.10293849936902, 2.00011734325246, 0.489275633665614, 0.737058213407384, 0.18528713225849, -1.21958347946642, 1.18760855850729, -2.8069371399499, -2.01101268771497, -0.195864909927898, 0.136455980189474, 0.58659302803919, 1.25014131741435, -0.384139729885852, 0.767136021564546, 0.497151137879177, 0.358889067874536, -0.155544724321608, -0.20761367744285, -0.198488938424451, 1.31737440328861, 0.662113412254364, 0.391291846054538, 0.774379508848566, 2.41166657168008, 1.18992368951181, -0.457801146445488, 1.060919512098, 0.257981227329035, 2.09736732515552, 0.969336967552951, -0.603886208435524, -1.14779324404334, 2.65976659790581, 1.27937725309076, -0.0853500862015403, -1.45020292666591, 0.882934092771095, -2.47086702262969, 0.146098448737067, 0.50265757490661, 0.334013516364265, 1.90141078506308, -0.194444763654321, -0.567364991311611, -0.767578514038699, -1.55783687575187, 1.77892959234358, 1.27707208524013, 2.50673935412006, -0.200572966387006, 0.560777002671598, 0.130507081448872, 1.21429990358434, 0.964606934534334, -1.03447671705367, 0.149057451281367, -0.871526092535275, 3.32542864537341, -0.245237817146049, -0.244069217633529, 2.54731426192594, -1.78592947693364, 1.10209951739336, 0.00170173711104016, -1.98870590235364, -0.625105722649671, 2.02034157697311, 0.601844336957707, 0.246632954880783, 0.749161673345382, -0.780302578231639, 0.383681180479576, 0.000926710296805577, 0.972327931275503, 1.40768343206885, 2.90576836916579, -0.250506913850652, 0.272734980488079, 0.662339030826353, 1.21088016946188, -0.156845540267424, 0.389056609411201, 0.625531898467211, 1.6192336445132, 2.78392238258665, 1.54774059348448, 0.93555421655078, 1.50688269029688, 1.06699602833896, -0.565725217662758, 1.13933012539174, 0.876776083428385, 0.80715544164405, 1.28873622655447, 1.23639152110386, -0.437485689676046, 1.37122473524409, 1.01431586531115, 0.692592689064096, 1.53250073532806, -0.495622477851338, 5.00763760818841, -0.722743910903636, 0.297214501755641, -2.0060333899521, 1.06567932551173, -0.665587697120212, -0.579833577327347, -0.736065212107849, 0.674633945401004, 0.640249078853686, 2.22734299120419, -1.47700124948413, 0.0804863428771847, 0.751946342818014, 0.456062144743287, -0.0436019323692735, 3.08870661222838, -0.822223359192835, 0.756442435971995, 2.54680313397092, -0.19278728177782, 1.90129405039015, 2.72301477118778, -1.89062100031617, -0.566167819298431, 0.177456832936808, 0.290147230226539, -0.373477823582417, -0.730544688378838, 0.630252065232717, 1.13860211438254, -0.376220686199279, 0.288818709690576, 2.26339125642032, 1.8727541612529, 1.80353716278523, 0.0873366521503925, -0.212264250406986], + "kernel": "epa", + "vce": "nn", + "description": "Half-normal d, quadratic m(d) with unit noise", + "eval_point": 0, + "h": 0.765475885988493, + "b": 0.765475885988493, + "n_used": 1118, + "tau_cl": -0.090012042385307, + "tau_bc": -0.112972381243757, + "se_cl": 0.0593384137910197, + "se_rb": 0.0876983052678711, + "ci_low": -0.284857901073984, + "ci_high": 0.0589131385864695, + "alpha": 0.05, + "z": 1.95996398454005 + }, + "dgp4": { + "n": 2000, + "d": [0.790645821020007, 0.00598026136867702, 0.934499764582142, 0.133111520204693, 0.665732838446274, 0.891679258784279, 0.301380332326517, 0.0318509647622705, 0.769035538192838, 0.48916497756727, 0.303109719883651, 0.668812130577862, 0.150046457536519, 0.543872643727809, 0.600727571407333, 0.277734290342778, 0.757544575957581, 0.761322146747261, 0.947468574158847, 0.887631935533136, 0.128183813532814, 0.0914039940107614, 0.979962770128623, 0.108217945788056, 0.449110032757744, 0.161544928560033, 0.878768879221752, 0.186413074843585, 0.993173910537735, 0.459384048823267, 0.26109388214536, 0.0870869182981551, 0.12021377729252, 0.461656206287444, 0.629619860788807, 0.154192142188549, 0.870770161272958, 0.715574550209567, 0.586964379064739, 0.137459178455174, 0.587024540873244, 0.601244676858187, 0.137764829676598, 0.194202990271151, 0.551601519808173, 0.710972063243389, 0.0807879641652107, 0.651295384159312, 0.53913844213821, 0.588850987376645, 0.198149741860107, 0.437901501776651, 0.0932073618751019, 0.963981696171686, 0.404794101370499, 0.528522997628897, 0.529255285160616, 0.940339100547135, 0.456295228330418, 0.274234746117145, 0.882106402888894, 0.216614797944203, 0.0391641492024064, 0.119254623539746, 0.859761290019378, 0.472651754273102, 0.426638948032632, 0.667055465979502, 0.993869350291789, 0.778131528059021, 0.364738894393668, 0.0486412711907178, 0.624362344387919, 0.208516568411142, 0.361667914548889, 0.151579607278109, 0.342954742023721, 0.370266787940636, 0.026326120365411, 0.456931200809777, 0.152789225336164, 0.911047077504918, 0.99576742365025, 0.448798204772174, 0.64563644840382, 0.596448508091271, 0.493310825200751, 0.443149808328599, 0.242432121420279, 0.591738123446703, 0.782418266171589, 0.730723152169958, 0.42194748390466, 0.798922474496067, 0.369565161177889, 0.662957597291097, 0.336357780732214, 0.35980631550774, 0.408069412223995, 0.199883395340294, 0.375947870314121, 0.677584823453799, 0.75531218200922, 0.739688463974744, 0.866874492494389, 0.546534569934011, 0.199895502766594, 0.912036132067442, 0.219050410902128, 0.46058581257239, 0.242452761856839, 0.964390931650996, 0.302321855444461, 0.58918000292033, 0.785442139022052, 0.731059600831941, 0.21873851143755, 0.741678039077669, 0.497519424883649, 0.143401755718514, 0.841155640548095, 0.377594431396574, 0.119693079963326, 0.979733866406605, 0.812556363409385, 0.544680083869025, 0.679973543155938, 0.32913713902235, 0.885516204172745, 0.201978465309367, 0.301802527392283, 0.92575862002559, 0.872470335569233, 0.378617068519816, 0.266985141206533, 0.389695424819365, 0.436586736468598, 0.612390381516889, 0.115558304823935, 0.0968226427212358, 0.319905866403133, 0.250796406064183, 0.675402397755533, 0.241532218642533, 0.93190913181752, 0.967231355374679, 0.44104118575342, 0.330680545186624, 0.190207606879994, 0.355925474083051, 0.407270638970658, 0.322841088986024, 0.149148750351742, 0.493756883544847, 0.774131098762155, 0.648535480489954, 0.229316711658612, 0.144528919365257, 0.756196059985086, 0.952288717962801, 0.816364672966301, 0.588992538163438, 0.22954604239203, 0.617286927066743, 0.814988145139068, 0.414794113021344, 0.979928293265402, 0.207234512083232, 0.49798770644702, 0.017914951313287, 0.135642033303156, 0.223886327585205, 0.0758297981228679, 0.608548665419221, 0.907532642362639, 0.292866249801591, 0.0631278860382736, 0.732877265429124, 0.78184459800832, 0.101330989971757, 0.818577461643144, 0.286018681479618, 0.0745901407208294, 0.272535612108186, 0.459111294010654, 0.319077259162441, 0.598707181634381, 0.830180319026113, 0.940994574455544, 0.587742071831599, 0.744816278805956, 0.73350096703507, 0.474810796324164, 0.782243739813566, 0.226644906913862, 0.585706414654851, 0.579981807386503, 0.289369524456561, 0.144475078443065, 0.26537701068446, 0.137530450941995, 0.838789833011106, 0.412618814734742, 0.69699534913525, 0.245057160034776, 0.393876540241763, 0.00732425064779818, 0.0523449990432709, 0.116176881827414, 0.705185843165964, 0.0879903889726847, 0.212848031893373, 0.00367099069990218, 0.853261942975223, 0.985945966094732, 0.682311389828101, 0.427990324562415, 0.95833665295504, 0.694781780010089, 0.93594975117594, 0.271118172677234, 0.174542658030987, 0.696792505914345, 0.218504764139652, 0.0603568386286497, 0.659365503815934, 0.894919919315726, 0.683554699411616, 0.303491086931899, 0.994639605982229, 0.22472784970887, 0.674507348798215, 0.268369639059529, 0.163192977197468, 0.0855742145795375, 0.789525509579107, 0.512554196175188, 0.774369217455387, 0.923106855014339, 0.221761524677277, 0.210538962390274, 0.373382325284183, 0.19418924045749, 0.537217083852738, 0.958966332254931, 0.995521137025207, 0.519611895084381, 0.17462798836641, 0.301806258270517, 0.807299648877233, 0.475521539803594, 0.123340652789921, 0.0330521329306066, 0.226582935312763, 0.592778514139354, 0.40913597936742, 0.988588657230139, 0.47458582976833, 0.450280398828909, 0.0248076610732824, 0.481253786711022, 0.400001139845699, 0.91236132197082, 0.079137149034068, 0.265532097546384, 0.764129124116153, 0.130747414194047, 0.462789227487519, 0.971407816745341, 0.284545786911622, 0.810864606173709, 0.669252628693357, 0.146369312191382, 0.796360068023205, 0.536781032104045, 0.203856596723199, 0.295260102022439, 0.500984658487141, 0.335638803429902, 0.123578557278961, 0.304452047683299, 0.957256727619097, 0.940089493291453, 0.0781541960313916, 0.704572165152058, 0.34525044565089, 0.0298520086798817, 0.312229061964899, 0.958532327320427, 0.0274380634073168, 0.443569626659155, 0.125240624882281, 0.467714087106287, 0.179577215341851, 0.904707710258663, 0.27360455552116, 0.770026854705065, 0.574115626979619, 0.180552308214828, 0.732324986951426, 0.686270593898371, 0.431100028101355, 0.450736756669357, 0.0166870516259223, 0.0297703922260553, 0.310198945226148, 0.433328183367848, 0.283718429971486, 0.646644585533068, 0.625285521382466, 0.8162727127783, 0.800457532750443, 0.990166523959488, 0.92478958168067, 0.860599213512614, 0.488512944197282, 0.751139728119597, 0.00771134928800166, 0.337818597676232, 0.979722319403663, 0.629732104949653, 0.0150884711183608, 0.865503643406555, 0.308907187543809, 0.681364077143371, 0.0594823635183275, 0.523163035977632, 0.0807585082948208, 0.929496264318004, 0.817519392119721, 0.524706760421395, 0.565336460014805, 0.239824283635244, 0.215611485764384, 0.228457318618894, 0.463301569689065, 0.0667275537271053, 0.473851142683998, 0.844409004319459, 0.218895265599713, 0.532466588076204, 0.943711950210854, 0.163562345551327, 0.709484808845446, 0.359283878467977, 0.760611013043672, 0.184441952733323, 0.343451920663938, 0.742358201183379, 0.958318299148232, 0.623409785330296, 0.748366286745295, 0.763372210785747, 0.849118574755266, 0.735835598548874, 0.952376333298162, 0.199196357978508, 0.451917706755921, 0.117741330061108, 0.509693615837023, 0.936386016197503, 0.461435166420415, 0.0231183557771146, 0.739160345634446, 0.100659979740158, 0.932441232725978, 0.205671236850321, 0.259126891382039, 0.735671954695135, 0.68378179660067, 0.944147046422586, 0.466054923832417, 0.857205678010359, 0.890262556262314, 0.332597717875615, 0.0694201339501888, 0.500847592484206, 0.232218517921865, 0.636440449627116, 0.0315858295653015, 0.676209249999374, 0.321122490335256, 0.291716366773471, 0.486539690056816, 0.853960670996457, 0.903684101998806, 0.2450947817415, 0.694630149984732, 0.859362213872373, 0.0664890937041491, 0.884171705227345, 0.548609501216561, 0.48839329672046, 0.595527548575774, 0.385407916503027, 0.559466116363183, 0.388002526946366, 0.877525527495891, 0.869180105393752, 0.420883730519563, 0.997281482676044, 0.426603112369776, 0.159845545422286, 0.0565415029413998, 0.108602405525744, 0.336595460074022, 0.589017304359004, 0.65387433883734, 0.601103808963671, 0.0508082672022283, 0.123356151161715, 0.828687451779842, 0.895631519379094, 0.217326120240614, 0.2301294663921, 0.360433439258486, 0.532813843339682, 0.551670626970008, 0.434792016865686, 0.385208541061729, 0.80563968163915, 0.411028317641467, 0.399294126080349, 0.564645408885553, 0.164791694143787, 0.884522198000923, 0.79066750057973, 0.521986752049997, 0.260674490826204, 0.647233592579141, 0.165051441872492, 0.163509350270033, 0.0585445964243263, 0.318372714333236, 0.680314852623269, 0.60035808570683, 0.835002972977236, 0.941630453569815, 0.293435555649921, 0.202294364338741, 0.899244870059192, 0.82441200572066, 0.400603766553104, 0.626648057252169, 0.785942520480603, 0.432076155906543, 0.609566033584997, 0.856968782609329, 0.221131982048973, 0.280815140809864, 0.244293805211782, 0.130484105087817, 0.339335140073672, 0.238132180646062, 0.848340180469677, 0.817108039278537, 0.932444280711934, 0.0412496225908399, 0.00297189760021865, 0.795818604528904, 0.329218136146665, 0.852630332810804, 0.0448718331754208, 0.813296930864453, 0.19729456724599, 0.512464785017073, 0.806706234347075, 0.281223510857671, 0.0707079342100769, 0.499565447680652, 0.80070947878994, 0.327431719517335, 0.533778185024858, 0.470836412860081, 0.817025860073045, 0.391011719126254, 0.337015770608559, 0.0886466756928712, 0.178402516292408, 0.639966941438615, 0.97692007641308, 0.312989671016112, 0.148437496973202, 0.392375116236508, 0.74573692609556, 0.68813916342333, 0.423511758446693, 0.823558933800086, 0.745497618801892, 0.750493516214192, 0.889910775003955, 0.694144994253293, 0.846918227849528, 0.950853674672544, 0.53316071559675, 0.046517051756382, 0.423723581014201, 0.515187278622761, 0.39242448983714, 0.984577318653464, 0.0283353561535478, 0.949184074066579, 0.704863629303873, 0.802526012528688, 0.739596046507359, 0.0628319310490042, 0.350664904806763, 0.691589180380106, 0.277453454211354, 0.34838344133459, 0.1640497923363, 0.0537577287759632, 0.646367521956563, 0.966762169962749, 0.755611249944195, 0.765721975592896, 0.694838508730754, 0.779706010129303, 0.766672376077622, 0.145486699417233, 0.486261838581413, 0.103103485191241, 0.719706233590841, 0.0222444459795952, 0.260504791047424, 0.125895057339221, 0.569907701574266, 0.864307847106829, 0.567271736916155, 0.342178905615583, 0.14571697707288, 0.561589550925419, 0.516195041593164, 0.5321278530173, 0.694885841803625, 0.159312605159357, 0.756303642876446, 0.573719600215554, 0.845740309916437, 0.599092849995941, 0.647292394889519, 0.220714732771739, 0.878419472603127, 0.455877221655101, 0.863520879298449, 0.675684224115685, 0.856342450948432, 0.566135006258264, 0.721915267407894, 0.323045049095526, 0.0865061557851732, 0.111471456242725, 0.950479417806491, 0.317448040703312, 0.96411458356306, 0.424707910045981, 0.366728153545409, 0.273033315781504, 0.907382227713242, 0.641308838734403, 0.293816416990012, 0.323169451206923, 0.80513640656136, 0.969697776949033, 0.373129994608462, 0.13862966443412, 0.686387801542878, 0.826006549876183, 0.0520734114106745, 0.490186559967697, 0.207027680473402, 0.100879463599995, 0.591354263946414, 0.677563791163266, 0.815889439545572, 0.533670030534267, 0.593215234111995, 0.75420484598726, 0.909697482129559, 0.621966740349308, 0.201697734883055, 0.574426146689802, 0.907823570771143, 0.287022295873612, 0.108367154607549, 0.963441896950826, 0.392786039970815, 0.632078244583681, 0.677536227740347, 0.845420824596658, 0.862878513755277, 0.528004765044898, 0.198589430656284, 0.261470545548946, 0.0872925464063883, 0.158349615288898, 0.240303120343015, 0.864470130298287, 0.0840189554728568, 0.200861366000026, 0.549806201132014, 0.566345863742754, 0.136281114537269, 0.00699827820062637, 0.914874161127955, 0.235336221987382, 0.239894256694242, 0.598771591670811, 0.485433952882886, 0.314038888085634, 0.991771470755339, 0.75447379425168, 0.330549820326269, 0.3894404519815, 0.459418891463429, 0.649070290150121, 0.000532082980498672, 0.714068734319881, 0.285215607145801, 0.752529828809202, 0.329855245770887, 0.506503669545054, 0.555654678260908, 0.421137854922563, 0.0548636356834322, 0.192300642840564, 0.989561641123146, 0.793536774348468, 0.921868957579136, 0.582253954606131, 0.276781211607158, 0.664345920784399, 0.415227097459137, 0.276190217817202, 0.271388317923993, 0.556737426435575, 0.705271982122213, 0.186235094675794, 0.0458120971452445, 0.320666723418981, 0.647190993651748, 0.927515658549964, 0.493846482597291, 0.192509271670133, 0.0763518833555281, 0.314411178929731, 0.527591995429248, 0.919374328339472, 0.866522271884605, 0.505507523193955, 0.875404512742534, 0.566614271374419, 0.658841788768768, 0.606190683552995, 0.988788519287482, 0.414503055857494, 0.159795053536072, 0.116995335090905, 0.266242791665718, 0.231853345641866, 0.508706743596122, 0.653077358845621, 0.602530652424321, 0.0562514583580196, 0.404765083221719, 0.134370694635436, 0.0220093170646578, 0.420703770359978, 0.878911774838343, 0.315388674847782, 0.689539482351393, 0.28613180690445, 0.490605665836483, 0.0686915649566799, 0.6978964144364, 0.763052108464763, 0.30764279095456, 0.544981644954532, 0.374916685046628, 0.125129473628476, 0.949017483042553, 0.306013446301222, 0.239760864060372, 0.20814752811566, 0.43197171879001, 0.28840730083175, 0.994111719308421, 0.62303868914023, 0.0673656766302884, 0.859684847295284, 0.699590774718672, 0.208550573559478, 0.70513208094053, 0.504338868195191, 0.755487646907568, 0.801390724489465, 0.514205386862159, 0.486373810097575, 0.75714861578308, 0.416568857850507, 0.148767900653183, 0.929121924098581, 0.860348745714873, 0.796359378611669, 0.949281268520281, 0.132023562444374, 0.0491003633942455, 0.510714527918026, 0.0735164303332567, 0.547021265141666, 0.832483702804893, 0.0772390803322196, 0.403827905189246, 0.655134578933939, 0.813928278861567, 0.222622385015711, 0.6538050705567, 0.0309194538276643, 0.741127569694072, 0.125373597955331, 0.355262976838276, 0.310505147092044, 0.593206747202203, 0.533311226172373, 0.0408441263716668, 0.0904762621503323, 0.99887781124562, 0.81273198290728, 0.570108536398038, 0.872453971067443, 0.769722426775843, 0.670498898485675, 0.00562015757896006, 0.35212864074856, 0.187145056203008, 0.632282963721082, 0.776829482521862, 0.692559643881395, 0.0819907947443426, 0.197185909142718, 0.459110313327983, 0.157465673983097, 0.434109462657943, 0.606323453597724, 0.897939637303352, 0.86952294036746, 0.0737822202499956, 0.889511531684548, 0.254492875887081, 0.0134464895818383, 0.825022144475952, 0.453061592299491, 0.00468738470226526, 0.157982185482979, 0.847141333622858, 0.992699144408107, 0.513450275175273, 0.163877930259332, 0.224730890942737, 0.923910028068349, 0.698602698277682, 0.701462904224172, 0.937427377793938, 0.117641709977761, 0.925902272574604, 0.732455669902265, 0.729200257454067, 0.444767534034327, 0.749835518887267, 0.0832609750796109, 0.742380757583305, 0.617434876970947, 0.917275237385184, 0.693077678792179, 0.690763578750193, 0.774192153476179, 0.124567818129435, 0.74567326111719, 0.579581390367821, 0.473080797819421, 0.278200753731653, 0.224455944495276, 0.664463209686801, 0.194816088303924, 0.443273490527645, 0.496252768673003, 0.0688920626416802, 0.666735090082511, 0.350219789659604, 0.818645955063403, 0.617123725125566, 0.383947145193815, 0.869032921269536, 0.973404574906453, 0.732927155215293, 0.335409023566172, 0.563627721043304, 0.750236240914091, 0.886195658473298, 0.341664682840928, 0.289763804292306, 0.182110181078315, 0.704644774319604, 0.717558101983741, 0.195881777908653, 0.804476885590702, 0.50320639857091, 0.606084259226918, 0.787288955179974, 0.931059902301058, 0.0848593511618674, 0.115435519255698, 0.0530081607867032, 0.602835885249078, 0.205943766050041, 0.487057270249352, 0.323517396813259, 0.133358257357031, 0.542666477384046, 0.79245478194207, 0.661378082819283, 0.40957658411935, 0.132584178587422, 0.738770015072078, 0.415302014211193, 0.823045262601227, 0.0267636859789491, 0.499105201801285, 0.0839579228777438, 0.564952154411003, 0.78777582780458, 0.541802908759564, 0.825067810947075, 0.0248900032602251, 0.508066131034866, 0.308598356088623, 0.128965029725805, 0.58951463131234, 0.275861018104479, 0.844617420807481, 0.714408047730103, 0.714346984168515, 0.109592921333387, 0.858575663063675, 0.827507365262136, 0.459843427408487, 0.623872299911454, 0.782770068151876, 0.817805031547323, 0.628990042489022, 0.592460300540552, 0.702567953849211, 0.0471342175733298, 0.297291923779994, 0.36347185052, 0.583195859799162, 0.637792132096365, 0.357269685715437, 0.0223186407238245, 0.386767177376896, 0.93350185197778, 0.884292419534177, 0.960457030218095, 0.973285951651633, 0.114345585694537, 0.104603316634893, 0.941649515880272, 0.326751802116632, 0.276131105609238, 0.425357453059405, 0.954336004331708, 0.0997937337961048, 0.580654020188376, 0.0910024764016271, 0.337125414051116, 0.328145834384486, 0.0173078638035804, 0.729852274991572, 0.228091333294287, 0.0633061819244176, 0.731130844447762, 0.730190056143329, 0.943023928673938, 0.252910960232839, 0.640828352887183, 0.925646761897951, 0.940422273473814, 0.612749621272087, 0.644084722269326, 0.67510028113611, 0.101847210433334, 0.254405447049066, 0.549602900631726, 0.841193381464109, 0.30893699452281, 0.655508199008182, 0.978873829590157, 0.330612024990842, 0.428748208796605, 0.611454519676045, 0.444046010496095, 0.426453359890729, 0.899497339501977, 0.426479825982824, 0.12327349674888, 0.667255793698132, 0.176021344494075, 0.407890845788643, 0.034708080580458, 0.920637981267646, 0.992558022495359, 0.303736142581329, 0.691043977160007, 0.956521088723093, 0.240659315139055, 0.869149891659617, 0.57023878232576, 0.473227091133595, 0.428996664704755, 0.208815160440281, 0.962640662444755, 0.0449032764881849, 0.0695959862787277, 0.506474543595687, 0.400938592385501, 0.831674950663, 0.814971424173564, 0.0631145793013275, 0.996933160815388, 0.596510694595054, 0.0820117969997227, 0.880633800756186, 0.728364191716537, 0.75793706253171, 0.590149086434394, 0.929567560087889, 0.514181575039402, 0.320737696951255, 0.186576756415889, 0.499961624620482, 0.696064812364057, 0.744751509977505, 0.0716596159618348, 0.517281027510762, 0.55531515670009, 0.0516272657550871, 0.932196657173336, 0.443774775136262, 0.938814161811024, 0.311514794593677, 0.736770959571004, 0.637670031515881, 0.362799608614296, 0.547128840116784, 0.450251545757055, 0.0554986123461276, 0.63829758297652, 0.677367753116414, 0.165431988425553, 0.0773453335277736, 0.704744399059564, 0.283160673687235, 0.362836377229542, 0.782998718088493, 0.419149760855362, 0.800519622629508, 0.648354586679488, 0.20527891931124, 0.382527112727985, 0.290609729243442, 0.640304670203477, 0.445615947246552, 0.876739646540955, 0.162291290005669, 0.285293678753078, 0.487949375296012, 0.871559427818283, 0.884873702423647, 0.999358384404331, 0.31575574236922, 0.534285941626877, 0.763829063391313, 0.611714461818337, 0.336889859987423, 0.31211303640157, 0.706289920723066, 0.543241410050541, 0.191650304012001, 0.354587291833013, 0.864029027055949, 0.283793937182054, 0.481576327234507, 0.586050528800115, 0.104448780184612, 0.994225088972598, 0.607008044840768, 0.796353494981304, 0.756409703986719, 0.101134226191789, 0.899283716920763, 0.915236850269139, 0.643860126612708, 0.791922030970454, 0.719937289599329, 0.678095621289685, 0.465065036667511, 0.355975126847625, 0.681362104602158, 0.0714264530688524, 0.525516984052956, 0.686521258670837, 0.985957346623763, 0.366863194154575, 0.853637833613902, 0.601511733606458, 0.146676975302398, 0.338803583756089, 0.529078412801027, 0.396697049494833, 0.421765884384513, 0.664394347695634, 0.379595200996846, 0.838436002377421, 0.0179057845380157, 0.845837352797389, 0.535327467136085, 0.317851300118491, 0.358341228216887, 0.649720173561946, 0.336474707582965, 0.445904988329858, 0.992030521389097, 0.605526284547523, 0.739277184475213, 0.77368624182418, 0.138653201283887, 0.930796177592129, 0.635540088405833, 0.401757831685245, 0.0628777171950787, 0.258000377099961, 0.124831109307706, 0.257743429858238, 0.785543080419302, 0.802753800991923, 0.236849831184372, 0.710195878287777, 0.756770962616429, 0.179618084803224, 0.182370932074264, 0.534653107402846, 0.37403788883239, 0.110393198207021, 0.21035732049495, 0.54665837646462, 0.0546889672987163, 0.103204382350668, 0.760058935498819, 0.665561841800809, 0.244015982141718, 0.00100753107108176, 0.782143714139238, 0.870723133906722, 0.871239996282384, 0.931611966108903, 0.901172462617978, 0.669502264354378, 0.728925894480199, 0.170735020423308, 0.09814598178491, 0.427758055506274, 0.408598515205085, 0.693799545057118, 0.0320917433127761, 0.602982484269887, 0.807977820048109, 0.394218202447519, 0.144548943499103, 0.759455878520384, 0.822395073017105, 0.789282822282985, 0.353534374618903, 0.880495385965332, 0.466773462947458, 0.713096316438168, 0.0441281497478485, 0.0118714631535113, 0.704353440320119, 0.368763741571456, 0.437103256583214, 0.57944193831645, 0.408293606946245, 0.352392513072118, 0.755940727423877, 0.881765125785023, 0.267452503554523, 0.632868432905525, 0.690132036572322, 0.857753756223246, 0.904530975967646, 0.123271222226322, 0.297991266008466, 0.131885710870847, 0.398853615391999, 0.2628788666334, 0.687786655966192, 0.869872294133529, 0.369289433583617, 0.876415258739144, 0.927886497229338, 0.19367279484868, 0.896709355060011, 0.317834103247151, 0.879765444202349, 0.803673605900258, 0.385599032510072, 0.796912614954636, 0.00168201513588428, 0.612103516701609, 0.480695126578212, 0.466830874793231, 0.602551258169115, 0.416131711099297, 0.721430759876966, 0.828182919649407, 0.971689831232652, 0.58163801417686, 0.469687894452363, 0.830813198816031, 0.514739624457434, 0.794256068300456, 0.648601642111316, 0.986301678232849, 0.711122872075066, 0.438953050645068, 0.701878638472408, 0.467525853775442, 0.379042874090374, 0.539747139671817, 0.667337534716353, 0.0586621586699039, 0.420973034575582, 0.350936006288975, 0.819443584186956, 0.232462477870286, 0.683728619478643, 0.201769768958911, 0.503052172716707, 0.98598255077377, 0.269785457989201, 0.388701918302104, 0.0802976191043854, 0.835342215374112, 0.313065621769056, 0.00259835622273386, 0.534263301640749, 0.586541226133704, 0.153286844491959, 0.567720729857683, 0.587051816284657, 0.0945907442364842, 0.570225892355666, 0.245165528729558, 0.0961260648909956, 0.947681633988395, 0.405931279063225, 0.128220020094886, 0.764970886521041, 0.903158699162304, 0.213821137091145, 0.956387139623985, 0.148914752528071, 0.106995361158624, 0.803886728361249, 0.0933202104642987, 0.221201008884236, 0.607828601030633, 0.194205036154017, 0.457151796203107, 0.531241740332916, 0.442165714455768, 0.642712748376653, 0.243669528746977, 0.79158331733197, 0.0718203550204635, 0.763510588323697, 0.501275195041671, 0.821138750296086, 0.606766629032791, 0.189698806032538, 0.63156195753254, 0.242714897729456, 0.350026071537286, 0.357284739613533, 0.995279038324952, 0.661281194305047, 0.505410037701949, 0.708320027217269, 0.338497537653893, 0.668395357672125, 0.0157713149674237, 0.094064393080771, 0.269951069261879, 0.690055068349466, 0.959692737553269, 0.10986769804731, 0.874969789991155, 0.62034112541005, 0.929760230239481, 0.271985927829519, 0.160686676157638, 0.154278086265549, 0.117313690017909, 0.969727853313088, 0.679800768382847, 0.319777868688107, 0.216480476083234, 0.0546541674993932, 0.347657384816557, 0.95002650259994, 0.154882629401982, 0.0375483597163111, 0.337739139562473, 0.883623465895653, 0.46268905303441, 0.180787037359551, 0.257911283290014, 0.108074387302622, 0.41635059681721, 0.601710071787238, 0.67825821461156, 0.297554581891745, 0.417190627893433, 0.11674593668431, 0.737724249484017, 0.55199486319907, 0.579140272689983, 0.848708257544786, 0.523656426463276, 0.416917635826394, 0.207249943399802, 0.0815612978767604, 0.695208712248132, 0.981031079310924, 0.605304058874026, 0.31643853825517, 0.727520061656833, 0.00881199119612575, 0.872314997017384, 0.329615565482527, 0.0129485458601266, 0.490387400379404, 0.574172032764181, 0.116323322057724, 0.296532418346033, 0.162703802576289, 0.505560853518546, 0.313012547325343, 0.341274778125808, 0.67773367324844, 0.880743921734393, 0.892336496151984, 0.465632325969636, 0.08502655220218, 0.96909207617864, 0.407121516298503, 0.697520692134276, 0.278496573446319, 0.778330934699625, 0.473373475018889, 0.716458862181753, 0.611902563134208, 0.423254020512104, 0.381269303150475, 0.524726792937145, 0.0112271727994084, 0.0949640024919063, 0.552426541689783, 0.976823578588665, 0.441154429456219, 0.624988228548318, 0.700263284379616, 0.649659571470693, 0.612516398541629, 0.136104651726782, 0.491787261562422, 0.629156657494605, 0.873161988100037, 0.371056579286233, 0.199788532452658, 0.489139058161527, 0.120270563755184, 0.343875574180856, 0.91569995181635, 0.825707148294896, 0.468532094499096, 0.671379165491089, 0.617458835477009, 0.569691371172667, 0.299243273679167, 0.392853375291452, 0.349275680724531, 0.218770820181817, 0.834375814069062, 0.310598383424804, 0.996264490066096, 0.780142630683258, 0.890459532383829, 0.159271581331268, 0.827669065212831, 0.833077088464051, 0.48649855167605, 0.833046551793814, 0.351725978078321, 0.90920980554074, 0.692586227320135, 0.264389345422387, 0.267057141521946, 0.873628780478612, 0.536548051051795, 0.282963875448331, 0.799511649413034, 0.744709439342842, 0.0764241411816329, 0.45481684198603, 0.867652829969302, 0.393861329648644, 0.161203671013936, 0.412344423821196, 0.0291178845800459, 0.954542529769242, 0.291935171000659, 0.124402345623821, 0.512228350155056, 0.567538741510361, 0.823111069155857, 0.357740337494761, 0.680458709131926, 0.493863213574514, 0.0879486501216888, 0.683150040917099, 0.112516875378788, 0.0840283769648522, 0.587925610132515, 0.885078903054819, 0.405548713402823, 0.742840452352539, 0.559917003614828, 0.465999236097559, 0.155620879959315, 0.824847479118034, 0.750224188202992, 0.672688448103145, 0.526605132501572, 0.0363511627074331, 0.705670896917582, 0.802423959830776, 0.847598943160847, 0.307695581577718, 0.154891975689679, 0.907759974477813, 0.303595686564222, 0.0729814644437283, 0.572498633991927, 0.39240623335354, 0.842292696703225, 0.754073687130585, 0.9459053366445, 0.234360623406246, 0.214012988610193, 0.173525220481679, 0.286777293775231, 0.0282064385246485, 0.0824043401516974, 0.885571304475889, 0.0759387891739607, 0.418200600426644, 0.370794092072174, 0.0709146473091096, 0.960230885772035, 0.834678168641403, 0.611933158012107, 0.0266670752316713, 0.267676995368674, 0.22032780572772, 0.0185136387590319, 0.0570285427384079, 0.392613465664908, 0.711479620542377, 0.673850271850824, 0.937828490277752, 0.793360135518014, 0.493949167896062, 0.985821871785447, 0.787026333156973, 0.496808850206435, 0.749276365619153, 0.0650831591337919, 0.472956628305838, 0.328611057950184, 0.292031420627609, 0.763791209319606, 0.203820008551702, 0.455841872375458, 0.412356814136729, 0.697293455014005, 0.659845031565055, 0.153404253767803, 0.507277033524588, 0.244580898666754, 0.140294092707336, 0.914921295130625, 0.252227637683973, 0.165088640060276, 0.218552920501679, 0.391303530195728, 0.587412529857829, 0.967241691658273, 0.212720301467925, 0.6808989320416, 0.73217908712104, 0.439684770768508, 0.996436208719388, 0.333085232414305, 0.992130208062008, 0.240246938541532, 0.0323319286108017, 0.725676778471097, 0.705858574947342, 0.366755797062069, 0.177421405212954, 0.59764862479642, 0.719215755583718, 0.654729253146797, 0.597606474533677, 0.0369871852453798, 0.115461785113439, 0.988626811420545, 0.545166844967753, 0.56852966430597, 0.393003731733188, 0.256584789603949, 0.956428018631414, 0.579689647769555, 0.783996682381257, 0.229201297275722, 0.812158989487216, 0.420280552934855, 0.985218964051455, 0.565481950063258, 0.648762589786202, 0.416051890468225, 0.827935335924849, 0.301357384305447, 0.0356622980907559, 0.514267489081249, 0.666843833168969, 0.907142766518518, 0.337043057428673, 0.115037475945428, 0.342385347466916, 0.000688555184751749, 0.891004423378035, 0.232624593190849, 0.0183933204971254, 0.528471942292526, 0.58330216165632, 0.846041627926752, 0.498225086834282, 0.00629314733669162, 0.569626950193197, 0.103874613996595, 0.140410068910569, 0.182859409367666, 0.202315872069448, 0.00220928387716413, 0.876320012845099, 0.917872106889263, 0.543951852247119, 0.36717001744546, 0.659748181235045, 0.278051239671186, 0.473823754349723, 0.999496773816645, 0.0779293235391378, 0.479530421784148, 0.326298680156469, 0.822569943265989, 0.209620085079223, 0.521940556820482, 0.422194545157254, 0.190519520780072, 0.389614255400375, 0.298630476929247, 0.642774904146791, 0.825321902753785, 0.0166567047126591, 0.674801904940978, 0.0479879709891975, 0.801110078813508, 0.398110306123272, 0.642153365304694, 0.445219085784629, 0.283020672155544, 0.113418700639158, 0.425366231938824, 0.522209513466805, 0.497320590540767, 0.9932440451812, 0.886012348346412, 0.987367500783876, 0.0915972031652927, 0.140812464756891, 0.599318378372118, 0.652228065766394, 0.545889773406088, 0.980995608726516, 0.180609261849895, 0.632611445849761, 0.585264815716073, 0.319765684660524, 0.327398692257702, 0.684831936145201, 0.514942307490855, 0.734503178391606, 0.967834035167471, 0.00570054352283478, 0.0295716719701886, 0.277596951462328, 0.213442161679268, 0.588802093407139, 0.955762568395585, 0.462929038098082, 0.14063734584488, 0.323292611399665, 0.971192282624543, 0.297031103400514, 0.372990509262308, 0.00716152461245656, 0.613093895372003, 0.406489165732637, 0.875845855101943, 0.587355500319973, 0.367319324286655, 0.375180788105354, 0.329719735775143, 0.753830937901512, 0.279102414147928, 0.376512550050393, 0.547471205936745, 0.410924658179283, 0.129425432067364, 0.598849434638396, 0.895086521282792, 0.932592041790485, 0.159573318902403, 0.467435143189505, 0.875310425646603, 0.54647219623439, 0.477480167290196, 0.853682699147612, 0.396236626897007, 0.845408346271142, 0.254269711440429, 0.433304320089519, 0.0307167498394847, 0.153904153266922, 0.830492048757151, 0.0690820345189422, 0.32354302261956, 0.0265916262287647, 0.0107595035806298, 0.250185752985999, 0.779550375649706, 0.370256611844525, 0.599192377878353, 0.814757693558931, 0.52369027142413, 0.227210407145321, 0.56512737646699, 0.894953493727371, 0.452137554762885, 0.483490412821993, 0.514903648523614, 0.61620764201507, 0.782397784292698, 0.806097916560248, 0.451073215343058, 0.679130727890879, 0.571642010007054, 0.012319530826062, 0.647022520191967, 0.667769611580297, 0.91591139906086, 0.627507225610316, 0.401488166768104, 0.28202144196257, 0.300874441629276, 0.684731903951615, 0.00438794726505876, 0.374581462470815, 0.0470743863843381, 0.946368786040694, 0.250709638930857, 0.894741565920413, 0.670243723550811, 0.210059555480257, 0.417711819289252, 0.18904514121823, 0.53558870498091, 0.0969317832496017, 0.567396604223177, 0.0187715247739106, 0.846662069903687, 0.425353250233456, 0.565602875081822, 0.300226155202836, 0.812917276518419, 0.229042579419911, 0.880667260847986, 0.738985189236701, 0.655557212419808, 0.688866876764223, 0.0650300420820713, 0.193542561959475, 0.0258035534061491, 0.180012273835018, 0.863324487581849, 0.907121127238497, 0.0239961845800281, 0.372468093875796, 0.256848994176835, 0.381237060762942, 0.209613844985142, 0.521934470161796, 0.258932354394346, 0.724411508766934, 0.0155776652973145, 0.0158808317501098, 0.817343281349167, 0.600961068179458, 0.699626761954278, 0.14675044384785, 0.764295436674729, 0.170887155923992, 0.681044671917334, 0.292178188683465, 0.458895645337179, 0.409936228534207, 0.473212172044441, 0.964447297854349, 0.809707476524636, 0.806928615318611, 0.277608215576038, 0.0422764918766916, 0.0845296981278807, 0.000442738644778728, 0.504093527561054, 0.0028511113487184, 0.0138006925117224, 0.158272305503488, 0.532893726835027, 0.55000365478918, 0.495023638941348, 0.0428264716174453, 0.554670920362696, 0.368663987610489, 0.201854660641402, 0.0685127393808216, 0.0314796201419085, 0.486921523232013, 0.58433052431792, 0.355626453179866, 0.0126210863236338, 0.986308553721756, 0.125360001577064, 0.831054909620434, 0.993485430488363, 0.966230056947097, 0.610554042737931, 0.393531765090302, 0.357515250565484, 0.950785259250551, 0.190078215906397, 0.235367996385321, 0.625672604190186, 0.28644166723825, 0.93416598951444, 0.881295380881056, 0.194834557361901, 0.751135898986831, 0.686845688382164, 0.207170291570947, 0.845526667544618, 0.222859582165256, 0.914459115592763, 0.808989440789446, 0.995525366161019, 0.567887888522819, 0.748760013375431, 0.278855392709374, 0.529915832448751, 0.565913394792005, 0.946034133434296, 0.557358373887837, 0.216628801543266, 0.203062773682177, 0.942342305323109, 0.146452726796269, 0.874668774427846, 0.155173417180777, 0.935868396656588, 0.269841245841235, 0.0969673176296055, 0.480120276799425, 0.506913677090779, 0.910678969230503, 0.792783330660313, 0.489660663530231, 0.339643622748554, 0.528077296447009, 0.951551859034225, 0.461943234782666, 0.741853581275791, 0.557288331445307, 0.542752986308187, 0.967698878608644, 0.257294444134459, 0.303042466752231, 0.670728468568996, 0.0713612665422261, 0.353936903411523, 0.134100653696805, 0.385971487732604, 0.207510940497741, 0.856696037342772, 0.599557426059619, 0.955185274593532, 0.237804070813581, 0.665385795058683, 0.201990029774606, 0.957025561248884, 0.522802614374086, 0.264725599205121, 0.184312633005902, 0.292397558921948, 0.489384893327951, 0.560977500397712, 0.495193607639521, 0.480707339709625, 0.034403172088787, 0.271634428296238, 0.840245547005907, 0.996249851537868, 0.251729205483571, 0.130830630427226, 0.37331174663268, 0.311764205340296, 0.62097969208844, 0.363737341482192, 0.728032247861847, 0.318649754859507, 0.582656917860731, 0.902479426935315, 0.215568659361452, 0.311802066396922, 0.136201293207705, 0.991401335690171, 0.723931265762076, 0.0166376878041774, 0.110680658370256, 0.0340717383660376, 0.692222309531644, 0.446957850828767, 0.378115863306448, 0.024778722319752, 0.436937114223838, 0.355042634299025, 0.474405544344336, 0.537083505652845, 0.711977965664119, 0.841861109249294, 0.91225060983561, 0.162762417923659, 0.0616234347689897, 0.348511753603816, 0.0183218398597091, 0.248778649838641, 0.124172599753365, 0.268281905213371, 0.573745846282691, 0.108949470100924, 0.633250881219283, 0.520701968576759, 0.720029901713133, 0.377879407722503, 0.825280523858964, 0.612157031195238, 0.718371664173901, 0.370785442413762, 0.301524502458051, 0.115869978442788, 0.0525970603339374, 0.987359684426337, 0.0110676980111748, 0.270274070557207, 0.417474075686187, 0.187689281301573, 0.956850415328518, 0.134260246297345, 0.996759836561978, 0.959422572283074, 0.31887414609082, 0.188644430832937, 0.324031725525856, 0.266030811006203, 0.132295094197616, 0.740693460451439, 0.25089795421809, 0.660752414725721, 0.645625174278393, 0.399029841413721, 0.0772932895924896, 0.299589227652177, 0.170312017435208, 0.294547026278451, 0.842395471176133, 0.430176733760163, 0.0462136007845402, 0.352771722478792, 0.549911193549633, 0.526599356438965, 0.604629100998864, 0.608174173394218, 0.847261869581416, 0.753229975933209, 0.404628772987053, 0.376685020048171, 0.44048379547894, 0.9265024762135, 0.0811097414698452, 0.660698893945664, 0.348225052701309, 0.406867706449702, 0.183837233576924, 0.97805426013656, 0.247842832002789, 0.540479520335793, 0.800969635369256, 0.455961241386831, 0.245817846618593, 0.290701765101403, 0.849220235133544, 0.117828830843791, 0.46538636693731, 0.296739240875468, 0.968717413255945, 0.515619654674083, 0.322267499053851, 0.511051412438974, 0.315439930884168, 0.96527308318764, 0.0300552840344608, 0.780120494309813, 0.220575924264267, 0.319447484333068, 0.636642618803307, 0.18830792279914, 0.361862797988579, 0.675028018653393, 0.412032113177702, 0.491205217549577, 0.201690342044458, 0.1632922552526, 0.0552988543640822, 0.193600221537054, 0.927642523311079, 0.0628351618070155, 0.329414912266657, 0.942682885099202, 0.536817754385993, 0.548022496979684, 0.340346223209053, 0.380534281255677, 0.244872734416276, 0.707649972988293, 0.257308556931093, 0.858828514348716, 0.69855529232882, 0.312957337358966, 0.818758454173803, 0.261955677065998, 0.851486397441477, 0.581500683678314, 0.448524134466425, 0.290899984538555, 0.297824585344642, 0.354958361247554, 0.158394910860807, 0.810073897708207, 0.451860414119437, 0.893827293068171, 0.790566237876192, 0.360214661806822, 0.794171809684485, 0.18749039224349, 0.271432574139908, 0.262875920161605, 0.661252384772524, 0.867170020006597, 0.280153117608279, 0.732094053644687, 0.615506397560239, 0.89043011656031, 0.110920685110614, 0.630452224286273, 0.108742955140769, 0.688264494063333, 0.304663991322741, 0.706654567504302, 0.550659731263295, 0.187412578379735, 0.00728410389274359, 0.385633310768753, 0.690730836242437, 0.21168185537681, 0.0752462937962264, 0.27860975288786, 0.338734850520268, 0.209687493508682, 0.785606074612588, 0.00734856957569718, 0.467851265333593, 0.123779838439077, 0.196275657741353, 0.972068397328258, 0.775602593552321, 0.00187790184281766, 0.126106529729441, 0.598323699086905, 0.693588693160564, 0.694249739637598, 0.54133060388267, 0.810032639652491, 0.881463035708293, 0.431274156086147, 0.440955473575741, 0.899411926511675, 0.597157578915358, 0.362754797330126, 0.111336833331734, 0.978229598142207, 0.924456082750112, 0.0835107383318245, 0.804448566632345, 0.869083489757031, 0.328935159137473, 0.501564309932292, 0.195908189052716, 0.121049958979711, 0.34854256385006, 0.773782802512869, 0.239203375997022, 0.969347496517003, 0.563036703271791, 0.997350248275325, 0.156603710260242, 0.8711318441201, 0.0943765284027904, 0.619883159641176, 0.970721748890355, 0.0399765288457274, 0.776913447771221, 0.507582616526634, 0.251756394281983, 0.74523306870833, 0.585556565551087, 0.663924139691517, 0.984031317522749, 0.948275824775919, 0.420255796052516, 0.592364012030885, 0.694583473727107, 0.940699461614713, 0.413166694808751, 0.849768416956067, 0.972400605678558, 0.30726081947796, 0.478617041604593, 0.282442800467834, 0.581215034937486, 0.529479268705472, 0.0553742721676826, 0.558142366586253, 0.126415198436007, 0.956862045451999, 0.0854401821270585, 0.745368892559782, 0.0879522557370365, 0.418483344372362], + "y": [1.07133244588935, -0.200916269851609, 2.27887432397139, 0.535772187166329, 1.37501905092014, 1.68383651815677, 0.650584790456183, 0.614863213031457, 1.35589370706329, 0.883280268117285, 0.293446765029837, 1.35197637623136, 0.377657619087669, 1.0991238602923, 0.852688641281876, 0.0205533490785612, 1.0325867131834, 1.72805483978006, 1.65521969761619, 1.77063060690071, 0.347160968257639, 0.468628321995501, 2.23290166922923, 0.0274623244115207, 1.01158568110671, 0.506086901215716, 1.0095081382458, 0.474447753974034, 1.99033320507483, 0.730374748993061, 0.299881125452825, 0.206179146921321, 0.306987349329754, 0.868588343958335, 1.35739883305413, 0.159714486388584, 2.22318972918637, 1.65049944415095, 1.39372071001806, -0.0676492277849188, 0.545573622772578, 0.57089538925912, -0.200012555222293, -0.468946539441097, 0.123054772003166, 0.254201511438489, -0.478176365628828, 0.665905237295766, 0.715613881488493, 0.449014674669847, 0.16857129585643, 0.475176536471147, -0.450023228107581, 1.48033963049913, 0.441273418741643, 0.077265492251464, -0.201692750007213, 2.00916309184214, 0.41737400527597, -0.0423122090706929, 0.839490888157092, -0.0870519276306763, -0.140901972293548, -0.290766059364865, 1.29638419025222, 0.242769760761938, 0.204689889238791, 0.781283505079886, 0.97036843415273, 1.5356400241733, -0.131429478656574, -0.331212109828338, 0.493495950823081, -0.177312780341766, -0.0725570018436587, -0.0263959517198476, 0.0225886670870725, -0.248997282039405, -0.2373652489809, 0.257171944505804, -0.497524575886944, 1.72458606650206, 1.98238456219905, 0.234782195556529, 1.43644514935667, 1.26015607257167, 0.652040552909336, 0.699020244907125, 0.0960891127401024, 1.0740463772513, 1.74646721487173, 1.54034733956146, 0.467440956542576, 0.901939486359513, 0.937925275385873, 0.618335653520827, 0.329964937768911, 0.313661124074166, 0.367228695097402, 0.566871922520647, 0.182883115846393, 1.27911819984874, 1.25833293057329, 1.16547917251061, 1.42330187145594, 0.449726754089823, 0.0352812331332478, 1.99061615428478, 0.139275416754868, 0.719255535015769, 0.312960512343817, 2.09474120790796, -0.147552140398022, 1.15341632277877, 1.92072505864026, 1.67157434181954, -0.0169813223062753, 1.22446982471228, 0.873738730237317, 0.386017185953813, 1.81722693914831, 0.33518529407518, 0.332515489887483, 2.04964908398651, 1.44297685178931, 0.949832917652834, 0.874357791110035, 0.752669973875987, 1.87939081679812, 0.210221975313025, 0.347950997151895, 1.89099118711831, 1.57203695045972, 0.608507667669123, 0.765097193887641, 0.7257026021011, 0.25840674587546, 1.12852328861036, -0.277484433974843, -0.313662203124083, 0.791421012698589, 0.186148041008101, 0.722638972378111, -0.149857073402928, 2.03543352565759, 2.17270158254299, 1.3672526317277, -0.0130065281936052, -0.0666932475267623, 0.685796826026634, 0.663197817552783, 0.279481934931862, -0.192835754097478, 0.994163335337094, 1.36555867985371, 1.66391364817826, -0.129931850172527, 0.134603212617607, 1.71729725684219, 1.33851865781728, 1.60873494878013, 0.631847341214398, -0.376603150837314, 0.67654221089637, 1.78824216383032, -0.0529989885732887, 1.12311668991832, 0.100081414925895, 0.931016580843319, 0.333040847486084, 0.0313930562778447, 0.0586329920075636, -0.614388011211204, 1.10663616857622, 1.37852535564074, 0.628124808881268, 0.156774138061564, 1.49597896465232, 1.41531402468716, -0.0260028193819734, 0.691586837930986, 0.154361979244247, 0.164873217258087, 0.123913730794673, 0.6540091553059, 0.3698755945962, 1.30986333878778, 1.02196192671517, 1.7328647901185, 0.23944487936136, 1.03337965668136, 1.1800063586451, 0.827284483475279, 1.41971704426679, 0.191036573043773, 0.656950027337893, 0.544587890690917, 0.307510591129355, -0.0417305634107963, 0.395108625786413, -0.279448174299355, 1.34986681954949, 0.317683327918735, 0.720695536199581, 0.434828859149855, 0.696828557953376, -0.230615494089224, 0.412824939235734, 0.169551013563928, 1.15302285542751, 0.328039685801926, -0.453692965502857, 0.202747866626539, 1.78467887786329, 2.30674907241922, 0.821389620851379, 0.581136321542371, 1.78700781996094, 1.38393031636131, 2.04677051802276, 0.0604920744640821, 0.320592730428236, 1.13023218478252, 0.161075672042172, -0.378165236007885, 1.09496956259475, 1.40404715427551, 0.762974419616135, -0.336178549918958, 1.75845312697915, -0.214929963923677, 0.884881876684851, 0.318820049076555, 0.00910365191642494, 0.303339038959953, 1.74648978360942, 0.491695089482205, 0.806051806251445, 1.48811441963326, -0.0412455843640239, 0.361900413494364, 0.234495145196136, 0.510248067571521, 0.544642922865435, 1.48501260649072, 2.06736190129194, 0.108299875352027, 0.167846233639439, 0.235544731676112, 1.26598162526131, 0.479292618150698, 0.356630901077639, 0.033236488073503, -0.00720854299905024, 1.04962298871617, 1.0650762789662, 1.85608440888343, 0.0355110366858158, 0.317870064427033, 0.265054567887398, 0.909236291137679, 0.521466685445634, 1.16260161082275, -0.301697950614021, -0.116220199269312, 0.961164784897891, 0.753481245570125, 0.230918241301279, 2.07687978746456, 0.203153164609785, 1.66927355942395, 0.892228149924709, -0.266527595970017, 1.14034313874594, 0.396069502968353, -0.213399105454361, -0.039845922923726, 0.430387134973323, 0.238537106936705, -0.0352047851273972, 1.33160366845209, 2.07295461440459, 2.41585477926853, 0.636261430222493, 2.07270251744523, 1.56067029068238, 0.471697737664408, 0.348319072064437, 1.98418372471193, 0.567267945499759, 0.694486692809083, 0.683346803933772, 1.19567060688469, 0.9108771500347, 2.31503948449276, 0.341311881113072, 2.09417231144156, 1.93283978294796, 0.313279955821259, 1.50284970732701, 1.74531193713561, 1.562951590209, 0.999080350597991, 0.607549373086554, 0.941074513422509, 1.1900359955846, 1.35261740663133, 1.25377387686642, 1.37015029028003, 1.4549045996833, 2.3202246915309, 1.67672539780774, 2.81242209364313, 2.029762150633, 2.11545509163496, 1.14292760222778, 1.88981499972965, 0.944379604794945, 1.05102962700017, 2.70088786783364, 0.849820200214155, 0.219504486966638, 1.42057343655222, 0.851354928134521, 0.501745265774066, -0.19223408157895, 0.972779360556559, 0.328574209830714, 1.75406998683866, 1.994015578577, 0.960622982798376, 1.09718077578887, 0.389080380905157, -0.0264944107346188, -0.0596133586892187, 0.69657421011385, 0.225274814406911, 0.751301441457564, 1.80403922305016, 0.341416846141407, 0.861557393366216, 2.15033637914896, -0.47638519805668, 0.959480742230554, 0.398618232869184, 1.12367189479255, 0.208773598733737, 0.481381288386926, 0.99126351220343, 1.31044304466379, 0.860116806006332, 1.89950613255039, 1.83332619843509, 1.57655263326429, 2.317545832872, 2.03482420650406, -0.243400820459938, 0.455459244461716, -0.08884560433631, 1.0033106820485, 1.3828221564168, 1.13265914045134, 0.0912540475691065, 1.68107975596695, 0.299873641000571, 1.44942208237207, 0.016304273758795, 0.194252203555952, 1.4174692001923, 1.21673520039141, 2.33043080117494, 1.3311124920532, 1.547903443069, 1.76354162288447, 0.384039810975058, 0.218595719415148, 0.563749030913321, 0.28635274364544, 1.34856209224657, 0.0899895672609593, 0.808716155144876, 0.23515083568463, 0.531511795340378, 0.684874837921758, 2.05000849375566, 1.7755638264079, 0.114176750014431, 1.19403509238385, 1.72964859421517, 0.339596191287668, 1.37168616344557, 0.596531779519841, 0.819970779319511, 1.49436782382661, 0.486071360475298, 0.628424468913709, 0.664880917917926, 2.08479355039538, 1.71589714530301, 0.719418554220982, 1.89354237472586, 1.07864506474973, 0.36071727671584, 0.0202782009955272, 0.306853804924396, 0.873258464818678, 0.707095104006618, 1.81164645856175, 1.28276436887965, 0.312331892027903, -0.207359427827643, 1.91146097384508, 1.45953856844974, -0.190800642251939, 0.485377325530544, 0.504680125815005, 1.10949599251327, 1.23718158611071, 0.0302818786537209, 1.12172888931901, 1.22716781216682, 1.04519706285173, 0.395051620764375, 1.12645479329832, 0.0861964813599802, 1.10547300440734, 2.01026766590393, 0.591488489563161, 0.567228434807384, 1.69003572012875, 0.0925778841530392, -0.171143944179735, -0.388705606864912, 0.622684589912327, 0.674136344155983, 0.851697055510861, 1.98204706223077, 1.80268260103875, 0.738676797115392, 0.284444333478808, 2.17450476001003, 1.9185689941014, 1.06808170088778, 1.66625207689595, 1.12632266457833, 0.949410954894062, 1.24365515494006, 1.7032084310288, 0.675481693226172, 0.859009493468949, 0.807986488749014, 0.251139147143973, -0.0618139096608694, 0.0625681330462206, 1.39879943877553, 1.5395017732842, 1.8535344227637, -0.0448145121321545, -0.605234167772726, 1.42094931693338, 0.381185877266672, 2.39123425680561, -0.223998721304458, 1.92294896078151, 0.551639792325546, 0.626494454363885, 1.43441801967276, 0.759879901405501, 0.273426913535704, 0.645196985076165, 1.64538960391218, 0.718903008318661, 0.718644048220269, 0.80388735994272, 1.86709364028384, 0.765820756704448, 0.250067802092974, 0.0202328024843373, 0.365593747121889, 0.826842588856257, 1.54657121687808, -0.0441895993317028, -0.513685257430419, 0.683841019908802, 0.921167792840441, 0.37811223519012, 0.542720040839738, 1.02170812730748, 1.38834260346224, 1.25725272124397, 1.17896744950041, 1.47867652180592, 1.437692930376, 1.47702663256574, 0.683228930799326, -0.596031206695393, 0.807415603447065, 0.433652471600966, 0.392987768522711, 2.36949728591211, -0.254438991650834, 2.12720696236281, 0.973690211702053, 0.980912120388469, 1.41087536578859, -0.298461427152811, 0.12980363636829, 0.696852845251118, 0.272697980147607, 0.773933042342707, -0.386953493848969, -0.0304833406807326, 0.811247018160368, 1.85123493740675, 1.36585045158559, 1.14397580924759, 0.521431709144738, 0.913608897999684, 1.1206408358704, -0.446469650863259, 0.545079475480388, -0.400992139481609, 0.26325550796413, -0.494056391291201, 0.611171625963579, -0.541636913317168, 0.536608753849425, 1.18055503131097, 0.218470599056506, 0.422483136327821, -0.185182136647862, 0.178249151587561, 0.0914087870038718, -0.312079619361035, 0.215090034680387, 0.110780359888317, 0.277599292174162, 0.671197344746446, 1.27670315562621, 0.573763376816735, 0.695173155008517, -0.91293919278048, 1.44667029658933, 0.199044793200847, 1.05194814219908, 1.07904522620953, 0.920690457438165, 0.517596428608301, 0.427647187865974, -0.29297887082853, -0.169686395569777, -0.289116646728032, 0.457769293456626, 0.308400719588012, 1.4890928141074, -0.0431528449557086, 0.373940817052781, -0.814949910495518, 1.16016822924073, 0.0977838800338022, 0.126189866309702, 0.578517396110757, 0.597125941408711, 1.71424296519109, -0.0622543270221891, -0.267898060948762, 0.587715653097233, 0.84802326027943, -0.731632110170724, 0.24589583690395, -0.133800716799397, -0.344722086330542, 0.815127707725771, 0.676979942980236, 0.598748031430966, 0.294801117190126, 0.42624708642479, 1.40869326068717, 1.42411074680876, 0.707182948479266, 0.0495084056954143, 0.383549045275569, 1.08275563984623, -0.103593403171446, 0.246440023443554, 1.14348182149427, -0.570605826858704, 0.208859457270313, 1.32347139434075, 1.04626977423011, 1.11861927125857, -0.154697499560247, -0.718724921106365, 0.454601843513632, -0.765755547527729, 0.379645915881077, -0.188777876020424, 1.1169003819155, -0.4851288598072, 0.0418383944897414, 1.12131227510712, 0.465417115367073, 0.559386171221775, 0.421935764462888, 2.05299590664394, 0.45568206191451, 0.115466569075092, 1.31810841685361, 0.604155700221287, 0.0138712662372742, 1.94528526800236, 1.27246808171622, 0.755670781318627, 0.336719184340952, 0.823400405837053, 0.786281364363725, 0.185539934474309, 1.28173475298144, 0.78490263263505, 1.25555041380891, 0.5391884800164, 0.956426966924286, 1.46771038636022, 0.199781570798328, -0.0338677430758552, 0.642126481625004, 1.88256153731616, 1.2604019700477, 1.96699747287617, 1.04163985221578, 0.420203158739315, 1.13150158317654, 0.660468546978748, 0.61045270319631, 0.00386595624555158, 0.272337754545337, 1.46044510610833, 0.41953760588754, 0.223422351086045, 0.427600386333355, 2.11240674108483, 2.3643716242173, 1.55991659335044, 1.02463778288141, 0.584742506171867, 1.29682771501757, 0.790506701979861, 2.32579093989429, 1.79695562889779, 1.39261424975754, 1.90872541268887, 0.899777309667427, 1.84914416909734, 1.23082606726274, 1.93876420195975, 0.642043257678194, 0.485071327206407, -0.168341093535914, 0.677853079637427, 0.704612777448557, 0.751518780289527, 1.21914646716998, 1.60807810921655, 0.595291552832992, 1.03139310229312, 1.02744905237154, 0.221055462898328, 1.0806855902362, 2.40275711418066, 0.581671206786131, 2.11911018673383, 0.0905550229215267, 1.29470526022406, 0.27033513887578, 1.79896019467385, 1.49391396282504, 0.807094184615432, 1.12459999835471, 1.02080723724058, -0.0233036245296161, 1.37742817116968, 0.413106416347908, 0.396030929033222, 0.0138417164958657, 0.647005117507243, 0.513853390977721, 1.93804054823553, 0.957171010906208, -0.400480054438146, 1.85302387077377, 0.661356210971167, -0.215343870604963, 1.04220819136166, 0.756209611395242, 1.31537005051789, 1.15427291453239, 0.330212178260349, 0.631985745752613, 1.28767487893152, -0.103826259942334, -0.224985257563399, 2.38334996046506, 1.48129110452194, 1.52231774622592, 1.73974523238656, -0.692466878904385, 0.286279779535902, 0.332431447820397, -0.201311306459104, 0.972104219395063, 1.79659655598007, -0.363093538657625, -0.128283722917584, 1.24983168426485, 0.979984464307444, 0.246739752874721, 0.824681908504387, -0.22794685592641, 0.910694819547284, -0.234505220046392, 0.784786576922557, 0.813868509480232, 1.53823622540268, 1.30738625400184, 0.902007431783055, 0.878077133969706, 2.85515491405298, 1.89568472787465, 1.59356123567185, 2.51282844510868, 2.14488543458601, 1.61529042269229, 0.809203946361958, 0.474478861675283, 0.97258026626452, 1.90237596840653, 2.15218379169503, 1.81331642240182, 0.704473060869644, 0.972258897276318, 1.03527404080372, 0.347125043862506, 1.15484955304719, 1.08680803409116, 1.95395322648574, 2.33276011274458, 0.898708989081306, 2.85426630344154, 1.1999229056324, 0.849500206544552, 1.81796168838598, 1.40782554187583, 0.253238951893478, 1.01343230000007, 1.97856192973214, 2.5658220793705, 1.80531270521127, 0.601560984443771, 0.699732083967479, 2.58455596275998, 0.630597776595924, 0.143478592596305, 1.41113434304455, -0.114675098747368, 1.46846967806047, 0.191127713963754, 1.02997372426886, 0.202191960806355, 0.636967940194074, -0.34853120965073, 0.786645934895286, 1.09805216697105, 1.8330585962866, 0.0268478586603482, 0.648447479747888, 0.724619439356785, 0.0917682434308463, 0.911171092449521, 0.476370899108165, 0.329025580427382, 0.179494916032595, -0.568057492640406, 0.831957869205469, -0.114402203047699, -0.0761208568793403, 0.0926054966478922, -0.165892758360017, 0.42599411295837, -0.672721922462582, 1.16743430713563, 0.684323938828941, -0.143384027809398, 0.93425778693309, 1.03347643778654, 1.21928728743512, 0.314183786019715, 0.502600073282269, 1.08545697581795, 0.682411897444282, -0.626391017924843, 0.979142378588868, 0.022037544443666, 1.93393423137146, 1.33235528905644, 0.772274406100821, 1.57305032941487, 1.94809390552403, 1.60590244326151, 2.02576991887409, 1.85182798048698, 0.133379700764007, -0.184236280612117, 0.322318435198515, 1.17090565470342, 0.461834467029428, 1.13402985763052, 1.21237219173938, -0.0329522572296471, 0.927894420941793, 1.86552574283935, 0.679981386161805, 1.05663228943763, 0.502364914616262, 1.85373192211336, 0.983363240657695, 2.17861837716201, 0.269912790353285, 0.970314205485205, -0.0375053258396322, 1.20865984247076, 1.98092025608684, 1.04689303494119, 1.69875870283473, 0.0239967435344116, 0.64981077246597, 0.411936850945091, 0.38532668001528, 0.943113652147457, 0.431582040663729, 1.91485848911855, 1.69079386831983, 1.90720388720216, 0.790586953181192, 2.42922863605374, 1.2408507759671, 1.22762428317871, 1.08803304417299, 1.3136617154512, 1.9728027629523, 1.66012487391996, 0.704044805161286, 1.3418167969219, 0.520905281037021, 0.749526296570199, 0.758272517377334, 0.949818434880444, 1.1289352514541, 0.312576629558277, -0.0270680886728193, 0.945318718809558, 2.33671864475524, 2.3735951626025, 2.42771311341293, 2.62512029496693, 0.0181013128774154, 0.0517205203087651, 2.51589181971745, 0.877556888108076, 0.79214106936172, 0.8112797048502, 2.23785128894409, 0.387910040711408, 1.68082774769551, 0.902330958621851, 1.00216101369281, 0.088083853255204, 0.427233101022456, 1.88735127005524, 0.226386439036589, 0.426263610540872, 1.29930357527264, 1.5154269811135, 1.57070513201008, 0.188085148533069, 0.981950072612068, 2.04189819678783, 1.900098151079, 1.42114434854468, 0.910933292703554, 1.30510980796679, -0.179536018494128, 0.560520117613276, 1.16833642319089, 1.74234988200232, 0.438567043489552, 1.09663177574498, 2.00854119224154, 0.501338770047185, 0.392883251293625, 0.144722897281472, 0.792655422691694, 0.532488387052724, 1.61789297407219, 0.963466760435259, -0.318523236816095, 1.12598255040287, 0.0557842658656978, 0.610404232121954, 0.623107828568012, 1.70134841282254, 2.17565153643999, -0.235763641755286, 1.05735758460956, 1.94632718335332, 0.551577062514504, 1.30490934262249, 0.795526458371385, 1.03005771822519, 0.956878811786111, 0.418064834487975, 1.65666696230653, -0.176765194087526, 0.124409887472236, 0.929822856167353, 0.794193697549008, 1.59636303668378, 1.25729678412203, 0.29935180902576, 2.24064816220774, 0.680237421823046, -0.248953893687744, 1.93267249288191, 0.874186800574422, 1.79020516701855, 1.1861028880246, 1.92054240921957, 0.81500651023582, -0.257403138260859, -0.226437512956341, 1.09070396093174, 1.45325056566308, 1.26827864668803, 0.252593251984208, 1.24543612085558, 0.608890557912188, 0.249465517856276, 1.85181051094331, 0.785295367453084, 1.46576542748737, 0.659043267508126, 1.08649279585559, 0.806775074592334, 0.0554631435506065, 0.202621267619888, 1.34807638712227, 0.0183127112436282, 0.991406568610371, 0.802893291402775, -0.0872168676165779, -0.0901450443598845, 1.82468107860566, 0.649969064157592, 0.72163575357698, 1.56468876850696, 0.83616547741515, 1.97571301608619, 1.70165589334084, 0.673505038242513, 0.860098488110025, 0.85066932844522, 1.61983522921408, 1.22227438767344, 1.98658339744017, 0.612857158616578, 0.547704355262653, 0.867129439251349, 2.02264878870826, 2.02585994911703, 2.67626665726181, 0.333842384385208, 1.22279342165155, 1.74921612804894, 1.50508967564006, 0.860334110309166, 0.445211103506701, 1.51967013183608, 0.914189708363574, 0.139064241820653, 0.854443968993093, 2.40894271050764, 1.19607610810375, 1.53662504989602, 1.00575126037296, 1.00683116993584, 2.36779991938827, 1.57713897474261, 1.71400375402613, 1.56488501762735, 0.521131940139622, 1.40478487183907, 2.12287924619807, 1.82455047281532, 1.24231103971101, 2.05007161837062, 1.72421965475571, 0.506490847948683, 0.919058692967116, 1.60440951236233, 0.916659868265052, 0.744647545139204, 1.08356820679968, 2.4251257814837, 0.894461573782065, 1.66981406779839, 1.44924751817903, 0.798821408474327, 1.12120981759726, 1.13955138784243, 0.1602048105142, 1.12625061246368, 1.67647939076932, 1.15280917260482, 1.40865334667679, 0.100223520677576, 2.16141716995261, 0.722093904088404, 1.04914112755096, 0.909138412825244, 1.25169950442098, 0.724606417221578, 0.657785218121706, 2.38239856254596, 1.98309154835387, 2.21331038404364, 1.7255686250435, 0.669627652194158, 2.60731283459262, 0.896264474935548, 1.1847142222257, 0.375164710201568, -0.417079368618034, -0.41653242301609, -0.544480857949823, 0.78760600753174, 1.27834064765715, -0.708300276511943, 0.635799227414429, 1.33444703992315, -0.0122220532473572, -0.318406978526542, 0.0606176382433996, -0.231220572395472, -0.364060049120071, -0.603903164277971, -0.126552904144329, -0.432377793907056, -0.358649590741878, 0.520686056905552, 1.02368298103165, 0.116833919636436, -1.19706715938169, 0.722893585788471, 1.11092855078576, 1.28932367163613, 0.928062724571586, 1.32544025941958, 0.531990229866909, 0.783716230235817, -0.562233100483619, -0.558839711776772, 0.137311145026886, 0.0473389463900167, 0.588854856924535, -0.907748623480818, 0.718592663397503, 0.634191641764861, 0.233359407598586, -0.4101097212553, 0.819360294284708, 1.00515384831756, 2.60680172705295, 0.529661685119192, 2.82155522631132, 1.9131549149272, 2.03011013260848, 1.28489393284136, 0.655186287800712, 2.05889239622635, 1.23851512368108, 1.11339143653202, 1.52065859580202, 1.51285882934856, 1.11132834534683, 1.77448046020768, 1.99071239468683, 1.03144960783948, 1.96351977868262, 1.82300482965183, 2.79217088105381, 2.67930042456783, 0.414851795694983, 1.46974830344273, 0.0726147844594871, 1.51977573260612, 0.471911892792808, 2.23290133382198, 2.25538080217126, 1.2485116831036, 2.62064849108216, 2.75567234708377, 0.783203045760082, 2.66165011970715, 1.55165766150577, 2.44733137583694, 2.29937582050954, 1.49662620868658, 2.31527645710449, 0.647562363243245, 1.26263936616891, 1.48137335248557, 0.53383521022574, 1.04250170633575, 0.288295137289986, 0.992678923299253, 1.32075304670526, 2.29666075890883, 0.395980626454583, 0.0271335656754919, 1.34473539268478, 0.554026584990854, 1.5423352398977, 0.952465802711147, 1.93826337496179, 1.26601854000424, -0.0351554462541057, 0.64664196020745, 0.200273555682465, 0.0754970155269165, 0.447013620409895, 0.456078536234136, -0.300631981378801, -0.0539614927819863, -0.240133971606932, 1.09836632339581, -0.194592987402571, 0.784412094946744, -0.190525647718623, 0.336746534846832, 1.54572241270565, -0.274982179787969, -0.0738580134400138, 0.253937815477555, 0.992805220764187, 0.103924786681772, -1.07102314247752, 0.928277594303448, 0.742587860463703, -0.0421971570966639, 0.394034870144217, 0.715700598934686, -0.837645863519355, 0.445998690448591, -0.112064654200615, 0.221243678754608, 1.56203207220452, 0.527426686173121, -0.25003155195583, 1.14682017397865, 1.86531451768945, -0.915270159942556, 1.42580808723778, -0.0101951292830611, 0.12030280479129, 1.22920837499848, 0.0752014903477607, 0.227103399677153, 0.616363065606312, -0.0015755000890611, 0.337285154618198, 1.13965891826612, 0.30337615897103, 0.790522017694784, 0.677649033504273, 1.71488734937026, 0.106611379062299, 1.14336512761932, 0.711122846089724, 1.74910852224227, 0.913640209031019, 0.111437092231084, 0.865605408279204, -0.253056253067206, 0.447045316649528, -0.274260404185701, 2.30477850603343, 1.43094715918436, 0.585334533293392, 0.912026145734576, 0.650582721390643, 0.445174646335123, 0.184159372446346, -0.0866042023769068, 0.551153951885231, 1.76610131200813, 2.33033327798125, 0.109720116800676, 1.79364614749891, 1.45881795623142, 1.78600320954264, 0.51882139148168, 0.11280285632593, 0.201019651695438, 0.476368751567352, 2.2565200895553, 1.01250781546951, 0.380867667008098, 0.488049954530165, -0.243851710845817, 0.0599924936769859, 1.36984039347337, 0.293272317115452, 0.0999667469956895, 0.671415671019877, 1.74538906292716, 0.729666517224863, 0.317354088216305, -0.0407901451327695, -0.487660059078119, 1.22608857731447, 1.13339776397756, 0.708439928591088, 0.23898272606991, 0.697033001294166, 0.324002984513729, 1.7525873018141, 1.27266643524758, 0.894345186257982, 1.64050356902093, 1.51191570184839, 0.3565512298043, -0.127864781225012, 0.205322373446278, 0.691163549648851, 1.89200360490402, 1.00699894146009, 0.0980733948282547, 1.35764680948595, 0.0709258396731206, 1.84723422238188, 0.371622948140956, -0.766970058732867, 0.472432880014259, 0.806466719805722, 0.141623520946507, 0.669918585992219, 0.0338801509327354, 1.08812478378347, 0.56891074440476, 0.152761561364598, 1.49096729797732, 1.05962321044548, 1.47164863511971, 0.479255757450679, -0.158513304300665, 1.94410507234757, 0.635410726228807, 1.11815678185135, 0.900584645083972, 1.12078001143112, 0.864290280082459, 1.59895969169802, 1.05494101103665, 0.514186145712914, 0.516502684285169, 0.741741016283028, 0.044385930369528, -0.382617035739471, 0.984374763984292, 2.03946866052628, 0.637641081805271, 0.653671701883372, 1.46129410448707, 1.46679756242626, 1.43701452586414, 0.657516439407235, 1.05255225083744, 1.20705946133025, 1.35758854745099, 0.917065027010378, -0.28198040386945, 0.55347442938801, 0.298823210499991, 0.125250721019845, 1.91268159932193, 1.98133939637794, 0.55600350730996, 0.996668443371014, 0.618192932136803, 0.999020780820253, 0.456054843506889, 0.435578018563068, 0.63242086596933, 0.292636062938148, 1.22633620684799, 0.865185056571469, 2.25214728208298, 1.28905607142895, 1.52718389999076, 0.519486009799956, 1.4336091238806, 1.83870231870883, 0.872191223442335, 1.47481069607496, 0.188609690481286, 1.24970681930864, 0.90849074775445, 0.0261983779441859, 0.470642766816802, 1.98888846153452, 1.3519537898795, -0.0821637034968598, 0.948985238831341, 1.45570302287138, 0.401956397416793, 0.846355386053845, 1.79005853078242, 0.789790468492038, 0.158189699000879, 0.74474686441973, -0.232823609132727, 2.03420134019333, 0.121235899945517, -0.06051479213361, 0.639898270322568, 0.242923611294522, 0.683402938348316, 0.294136068110055, 1.02340659799725, 0.336828491219542, 0.632921474698639, 1.18603993609599, -0.155064563477884, -0.0429983761160878, 1.03497864777934, 1.9138780419174, 0.775577994683059, 1.26350888838166, 0.325952624562197, 0.598052644091595, -0.131389228307546, 1.36208438216818, 0.655169249874217, 0.942412104473213, 0.689332049512191, -1.00901801917305, 1.18319532329149, 0.705038162091613, 1.18937837939873, -0.232657517041613, 0.225738337064829, 1.6923833750397, 0.463272742189541, -0.44293559835046, 1.22585961066496, -0.160210279780994, 1.86209629055607, 1.59822805391876, 1.83929204288038, -0.0370133152645025, 0.203904759769219, 0.0893346109641325, -0.125962317488162, 0.423671364345521, -0.0576427025229068, 1.82530392377356, 0.301715916406419, 0.470353139473535, 0.694878356916871, 0.235327878464531, 1.41821830097718, 1.12653253039668, 0.969360281898597, 0.112501433509767, 0.633602093632234, 0.0840076271278051, -0.401609094006162, 0.39624532636728, 0.448875065542287, 1.15213689806596, 0.70015179275946, 1.68894947220442, 1.36859524769397, 0.410893804998012, 1.75836650357165, 1.25408276992975, 0.457158772301226, 1.42988642004043, 0.48219466509821, 0.308975295378838, 0.275449374906462, 0.799023600551147, 1.66885506958366, 0.33549595145625, 0.66320346940497, 0.685843151189599, 0.985770009337848, 0.953547919232606, -0.333717551753758, 0.65317679770791, 0.252695425192919, -0.221957339424008, 1.78658194716805, 0.561654965188493, 0.309594514089078, 0.762181832328246, 0.221147225399571, 0.237285770685085, 1.58878785919823, 0.287689121320333, 1.03730190698486, 1.26033073952052, 0.792147357105999, 1.85229263559235, -0.0248126924394355, 2.07487682621611, -0.420221054004962, -0.490780728603656, 1.09774518168233, 0.783666220536031, 0.967658492630195, 0.180761638903303, 1.28088950232284, 1.03880244176829, 0.844085887490636, 1.22552056765154, -0.752246116720899, 0.0049972056409945, 2.14081129453846, 1.0588077863184, 1.14408520893818, 1.14067062204251, -0.745695624774601, 1.78020080569575, 1.26215991626375, 1.39798563667785, 0.469989504169663, 1.305123221355, 0.580109577071728, 2.45696663997116, 1.30246424288362, 1.39224106590164, 0.866651401138335, 1.50954652934937, 0.514091895978506, -0.0477879692386716, 1.15926599862947, 1.01997487964137, 1.53990082349303, 0.508084760951152, 0.0866685280017998, 0.945354075066742, 0.179261310680762, 1.52637967238882, 0.674125434435955, 0.0207118285551442, 1.1008112963125, 0.883338463384373, 1.48052487867944, 1.40627806748121, 0.237719183690643, 1.50247739058742, 0.4749463544043, -0.355098900916019, 0.179122007051328, 0.590817671343543, 0.157674728506252, 2.03810785496386, 1.76767249450129, 0.79425803431456, 1.03573269495166, 1.21064427446807, 0.360282575831981, 1.22655712789011, 2.20504650867569, 0.229627186854898, 0.978122893977077, 0.942549013766646, 2.22578373289955, 0.631862074454389, 0.94888403759078, 1.3574697756893, 0.0907424501336543, 0.385078290840447, 1.08960527135197, 1.72467040605602, 1.73360590436176, 0.147369317436942, 1.77630085681618, 0.410918827563274, 1.33281511304529, 0.998964426782533, 1.30625381383827, 0.695823037281838, 0.769702104890782, 0.425149063838488, 0.750873787808988, 0.823344501289083, 1.1966414837972, 2.33331001461984, 1.66057606868223, 2.07770787165249, 0.421764221096864, 0.71923389302453, 1.22416196037324, 1.0614444138056, 0.812554340953582, 2.65738263132494, 0.876132614667673, 0.584316710575858, 0.95578880711683, 0.208564503260225, 0.905086351961102, 1.06612949419143, 0.831542521518635, 1.24938407682647, 1.70619165769776, -0.178552676497988, 0.355801012648757, 0.672726449854442, 0.269305457981949, 0.863394007583001, 2.66598199466273, 0.922437675366634, -0.050610262841764, 0.436500361366293, 1.70563595303462, 0.972602795346629, 0.294547024006724, 0.468732333758138, 1.22858981813686, 0.532716102025851, 1.64510700583409, 1.31012331032502, 0.399768192847279, 0.680716443602451, 0.363235265344801, 1.33268608421726, 0.63887535660985, 0.319563307014066, 1.49260014529688, 0.107143923703879, 0.0822848789520714, 0.951564245261156, 1.42227451595569, 2.21635922166433, 0.544141364476678, 1.0295880204545, 1.62858810948557, 0.775901791218619, 0.976160014853861, 1.115913452704, 0.070754427746549, 1.21558018610693, 0.0662887460116666, 0.800924555997822, -0.307098327199718, -0.130306289504248, 1.21632911109054, -0.152808000928452, 0.187565310767082, -0.384772986549513, -0.634179476077575, 0.198329076886487, 0.901674539382348, 0.22049808148488, 0.571405251985265, 1.41926624030182, 1.10799704298574, 0.344814544431241, 0.472198136211367, 1.44216941684823, 0.541559126233252, 0.426664388087812, 0.242213903639594, 1.00251517161234, 0.919420211422228, 0.980741573338727, 0.404326984714201, 1.4669454706815, 0.4597666162558, -0.186441111885327, 0.86171438932911, 0.662431758391985, 1.16970920774406, 0.489129674292332, 0.374525876675888, 0.171547109579224, -0.168124821976203, 1.18926966503115, -0.0122537048463147, 0.292748115413511, -0.0814310620903541, 1.37666797746424, 0.541521810934548, 1.64365266429577, 0.531201500686458, 0.107962878806896, 0.398612504051913, -0.295519177111279, 0.464143146235405, -0.682955151945763, 0.767758598517087, -0.411757051405001, 0.878055991198477, 0.339571565875398, 0.544522971553363, -0.102030925726319, 1.04526436626769, -0.383140342955138, 1.26924647088374, 1.03936818946897, 1.20064466736287, 0.648098633694871, -0.112802504744075, 0.0357574058032665, 0.196394367986506, -0.0443778155576098, 1.33791640728806, 1.34209459767204, -0.179979735235638, -0.178198493292498, 0.208476603836385, 0.0355472003340841, -0.482072853636648, 0.989632213460199, 0.187068191756798, 0.919924112681545, -0.441228894660061, 0.158657459523055, 0.839976114602029, 1.16048209025015, 1.17032251186831, 0.238032839033439, 0.673445734245338, 0.626006058117222, 1.03944554496177, 0.39212719125478, 0.930253042838123, 0.287434877645928, 0.353113197676407, 2.06716755764769, 1.63476941033871, 1.46969395480719, 0.357135314473476, -0.856739498623162, -0.129351373415631, -0.333810789013795, 0.381166264846526, 0.506338739439548, -0.290714260892765, -0.0334477010029352, 0.396421562151552, 0.583001700039147, 0.852123859662925, -0.420453413450342, 0.939631251076654, 0.256856734068728, -0.437731230719643, 0.0613875386395052, -0.184138145884892, 0.676639261274781, 1.11180783277049, 0.222737579738503, 0.423007019511726, 2.17187751880813, -0.33385434991506, 1.31314568581811, 2.07099259178712, 2.05648338881989, 0.996770170879441, 0.669748045102607, -0.242766170686718, 2.03605174195567, -0.182783916587869, 0.488276871483585, 0.989126052150196, 0.140155056924475, 1.89140547294445, 2.11543081598556, 0.450890154587483, 0.940603876938778, 1.05378234815875, -0.102003794373455, 2.06199201917057, 1.01102964085758, 1.72896540436256, 1.49955502947314, 2.33160676257921, 0.889746727845194, 1.1780911024068, -0.0429350666516778, 0.585914495606378, 0.929172567868738, 2.34732156111981, 0.736688596852161, -0.0366741849289647, 0.672362887779442, 1.96011647980715, 0.520223582376033, 1.70853102045957, 0.55830646052413, 1.81963802296329, 0.0681614773013769, 0.288567024188878, 1.22660228900488, 0.714391797417367, 0.983494268302738, 1.68803708772357, 1.10533891956614, 0.174358384788045, 0.569732556028029, 1.27047051689497, 0.72048483417047, 1.10079620865731, 0.807818761616778, 0.912669995667608, 1.99395695226177, 0.398291187582248, 0.452319763871642, 1.18500192097466, 0.307434039653226, 0.57544741788437, 0.229998514742552, -0.407478532010363, 0.793496647644899, 1.48541699956894, 1.22587696787814, 1.7978760676999, -0.222496723556314, 0.774475371784529, 0.284594007117907, 2.35986636659827, 0.643968752070867, 0.331348151981395, 0.0462282385447713, 0.650578441891862, 0.682724614487053, 0.396845217156677, 0.847636413381031, 0.772692804372569, 0.392770659592438, 0.0377743520911508, 2.06050298626906, 1.68554482271353, 0.298915890675278, 0.167587897021543, 0.784387022146233, 0.00245343713867169, 0.787784377252427, 0.251445888183466, 1.35213519190133, 0.254876520354106, 1.18511886575528, 2.23070777247215, 0.187931392593262, 0.282648829736671, 0.587795843204539, 2.20017691459686, 1.64336089524785, 0.0314824788050088, -0.0816138451294711, 0.337780519198975, 1.10909671627112, 0.919043666674578, 0.604686247797159, -0.312743344031789, 0.266634734213468, 0.208675762040134, 1.01337055962851, 0.685172562733913, 1.32476618366885, 1.40126321840954, 2.16922081556031, 0.032734637545744, 0.323221762233607, 0.839421680543724, -0.162398038452217, 0.315146392075216, 0.681262649761112, 0.823666016403067, 1.25086939766754, 0.0860637531376381, 1.03156495715006, 1.07722889722318, 1.01978579960449, 0.213657407073706, 1.50652731898577, 1.4044260254455, 1.58377999181705, 0.564956957336393, 0.204639690726329, 0.358297672467924, 0.397340504088806, 1.87407786629188, -0.335475168734842, 0.405961534875411, 0.641617097660185, 0.359338287799584, 1.63157513177033, 0.711119738502526, 1.95789901206228, 2.28565809219069, 0.550560099226039, 0.559538140687893, 0.760482158368552, 0.572144899673639, 0.288314542496382, 1.0665133989783, 0.245960861776799, 0.650617136149474, 1.00378968422578, 0.123999012101873, -0.028953028993564, 0.636917117110109, 0.774689646613411, -0.127938324050484, 1.11603391636947, 0.0819515349867393, -0.334380636132213, 0.349238266614889, 0.75844096956264, 0.753454652080876, 0.923502407934418, 1.65862951784088, 1.91347957776148, 0.978769500381529, 0.59491398730973, 0.67075208135729, 1.19735293590665, 2.05770491510326, -0.0531189843294192, 1.71769401397167, 1.1295826983346, 0.563839487608209, 0.557697917426278, 1.91624479462111, 0.591672398344139, 1.21617235024187, 1.55278671393418, 0.826715442914329, 0.878877244010383, 0.95679106897218, 1.77298683136592, -0.00831927151006706, 1.29565212936056, 0.589916510924773, 1.81547986972201, 0.97970699363573, -0.0518281500873731, 0.594435432001077, 0.761724075246291, 2.44018429077079, 0.498392807630958, 1.5704397856737, 0.227501257513054, 0.195638523067928, 1.36421080256631, 0.335464276006739, 0.565630935494069, 1.53551704533068, 0.693520549789316, 0.654024526336094, 0.371666179255503, -0.218519265388179, -0.0891224175753466, 0.531360584178851, 2.2472923316503, 0.757730748202434, 0.529005638054468, 1.61497885770746, 0.915324581995106, 1.03511645805115, -0.265740460391012, 0.852483583215599, -0.279726135750677, 0.466306921542009, 0.124459781368211, 1.60792159169863, 1.2623094864123, 0.811223942949002, 1.59637106873318, 0.66584428246377, 1.0115795457491, 1.02768419848352, 0.580682309069184, 0.583903720796185, 0.437000443363087, 0.860685595360162, 0.591531147494531, 1.63897337079041, 0.678911624439819, 2.01472982178581, 1.26628113260548, 0.281267336422358, 0.990624660377246, 0.256890366264562, 0.519179646897818, 0.711693745119301, 1.36810544645322, 1.53442893486162, 0.215518269391763, 1.40545551541724, 0.732737941569409, 1.85400241235142, 0.173811234559262, 0.959016937404552, 0.208416434964397, 0.839721411324815, 0.400247188413285, 1.36085960365686, 0.502545655485879, 0.0595352818212858, 0.153951437750732, 0.552553262396575, 0.72118143811498, 0.129105213117664, -0.118492500432522, -0.115806571312701, 0.302316603269402, 0.581814873730445, 1.52275323111466, -0.137727244307493, 0.779495053232909, 0.595664233613407, -0.296777565838298, 1.74609340875744, 1.51525980227941, -0.658861047312888, -0.106855531097042, 0.380224478936205, 0.837795050759744, 0.938295779656772, 0.210953744900122, 1.15657326673495, 1.42163375067242, -0.0512022680146731, 0.0129941479607884, 1.31414409591106, 0.942974686647348, 0.358286560599043, 0.332776455870625, 1.93797302304304, 1.66463955865708, -0.0537420186449701, 0.999209536476294, 0.821571201940667, 0.364065586164229, 0.31163629289176, -0.0803220973572801, 0.186768959176896, 0.567136897051149, 1.69655072169731, -0.206549840149836, 2.16168541155781, 0.834657996238587, 2.29130527718109, 0.403317080172394, 1.86691874290677, -0.133539981006292, 1.18427231042614, 1.73049755372095, 0.0837829885793387, 0.744965482033375, 0.279024028078438, 0.229363762153835, 0.853178567667675, 1.34696210404883, 0.910301426043459, 2.2993863301226, 1.5086459059105, 0.642065974564831, 0.917418398622227, 1.04743654058321, 1.42243996685657, 0.743461510561633, 1.67274581268395, 2.35837971239504, 0.40262192203704, 1.0555135204185, 0.763203552211574, 1.64381311046892, 0.374658573911773, -0.177087430901145, 0.515219355869784, 1.01736950618185, 1.91700568130868, 0.123624808339136, 1.36895028135042, 0.23956727271979, 0.252615545991974], + "cluster": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50], + "kernel": "epa", + "vce": "nn", + "h_manual": 0.3, + "b_manual": 0.3, + "description": "Clustered (50 groups of 40) Uniform(0,1); manual h=b=0.3 to sidestep nprobust's singleton-cluster bug in the mse-dpi pilot fits.", + "eval_point": 0, + "h": 0.3, + "b": 0.3, + "n_used": 613, + "tau_cl": 0.00164268333154833, + "tau_bc": 0.0155638542217708, + "se_cl": 0.0527229454458908, + "se_rb": 0.0732985811281314, + "ci_low": -0.128098724907254, + "ci_high": 0.159226433350796, + "alpha": 0.05, + "z": 1.95996398454005 + }, + "dgp5": { + "n": 2000, + "d": [0.406871334835887, 0.794641403481364, 0.656792987324297, 0.300647196732461, 0.263382390327752, 0.979912678897381, 0.891765490919352, 0.770052402280271, 0.350256270170212, 0.870273575931788, 0.208004191890359, 0.630736863054335, 0.200065826624632, 0.637998984567821, 0.606950234435499, 0.314745792374015, 0.468503163382411, 0.959041154384613, 0.814621959626675, 0.485925967618823, 0.271069660410285, 0.743866945430636, 0.287492303736508, 0.978395533934236, 0.510630229301751, 0.899596177972853, 0.438766929320991, 0.302579759433866, 0.971182103268802, 0.899072906374931, 0.284974713250995, 0.270202528499067, 0.690627243369818, 0.344804626889527, 0.861363085731864, 0.712148909270763, 0.219482283852994, 0.420856949128211, 0.702921131066978, 0.666480872035027, 0.848816182464361, 0.582767248898745, 0.945073506981134, 0.450508540123701, 0.608089503832161, 0.85131862834096, 0.802231714688242, 0.564867144823074, 0.802824619039893, 0.85568872243166, 0.27611619438976, 0.920842274278402, 0.348979895934463, 0.5364262400195, 0.20463259331882, 0.783599713817239, 0.358157143741846, 0.610920447297394, 0.633752677217126, 0.745500368624926, 0.840076459944248, 0.414276486635208, 0.339090491086245, 0.745605493150651, 0.980576609447599, 0.73170361071825, 0.313631516322494, 0.743923041038215, 0.669568857550621, 0.759364659152925, 0.777250795438886, 0.820695217140019, 0.794879558868706, 0.436251003295183, 0.749473785981536, 0.677307233400643, 0.776827478967607, 0.805413873679936, 0.327928773127496, 0.783913494646549, 0.687084710597992, 0.997152029164135, 0.74630662817508, 0.773063529655337, 0.359185188636184, 0.62266095019877, 0.46716431081295, 0.291137325577438, 0.22054765317589, 0.692988856323063, 0.675792267359793, 0.68045362830162, 0.778122758306563, 0.857146004587412, 0.791246066987515, 0.443042682297528, 0.224792104028165, 0.314170050434768, 0.622498033381999, 0.624158031865954, 0.961310947500169, 0.908590920828283, 0.794068519957364, 0.879478679783642, 0.215755770541728, 0.416334629245102, 0.513161670044065, 0.261001127585769, 0.571363135613501, 0.763192314095795, 0.668137690611184, 0.231979104876518, 0.44222352579236, 0.719277591630817, 0.868462212197483, 0.216356779448688, 0.313107053562999, 0.616351844742894, 0.313609589450061, 0.948333019576967, 0.249415912106633, 0.769742550514638, 0.482066464051604, 0.964187979511917, 0.509274256974459, 0.550168538279831, 0.23326207883656, 0.556343677081168, 0.390991439670324, 0.795496392436326, 0.31143611073494, 0.83026077542454, 0.69428730700165, 0.45493622161448, 0.669269030541182, 0.279039482027292, 0.691155914589763, 0.719361985661089, 0.95901839286089, 0.352088412828743, 0.633595720678568, 0.577311149053276, 0.264790458604693, 0.873640743456781, 0.663207350112498, 0.635026926919818, 0.397848454117775, 0.989685584232211, 0.791051642596722, 0.392075455188751, 0.266315589286387, 0.928756368719041, 0.568437555991113, 0.706509019620717, 0.549534433707595, 0.297705047391355, 0.715069934166968, 0.32495935652405, 0.547849670238793, 0.871489008143544, 0.486833428218961, 0.247921438328922, 0.38345337677747, 0.941383014246821, 0.74049115870148, 0.977945405803621, 0.504963798075914, 0.359821577556431, 0.576085509546101, 0.651291252486408, 0.633064786717296, 0.941483237035573, 0.971012745425105, 0.933994450047612, 0.263477068208158, 0.893037134967744, 0.554003181494772, 0.223643156141043, 0.336336537823081, 0.310193499177694, 0.280067180283368, 0.341376776620746, 0.997004217095673, 0.745603575184941, 0.659814919345081, 0.717013480328023, 0.240649710223079, 0.622555949166417, 0.741487029753625, 0.47470144405961, 0.753104900941253, 0.91670738030225, 0.764584014564753, 0.443545817583799, 0.259010490588844, 0.346844135224819, 0.598599252477288, 0.284329390153289, 0.468023563176394, 0.86623741555959, 0.409260829351842, 0.835343363136053, 0.830974660813808, 0.253944319486618, 0.630254048295319, 0.677529124356806, 0.41946308016777, 0.786896795593202, 0.406782718934119, 0.393411607295275, 0.71097533646971, 0.865241187252104, 0.498135086894035, 0.907495317049325, 0.258284019306302, 0.447318648733199, 0.467485263571143, 0.496747724153101, 0.493150727637112, 0.740665728412569, 0.990785738639534, 0.582357685267925, 0.3190344305709, 0.828422791883349, 0.519112238287926, 0.46171900536865, 0.400978867523372, 0.264783352799714, 0.235875575058162, 0.507415590621531, 0.242308470234275, 0.850467541068792, 0.837823843210936, 0.684460042789579, 0.55414462313056, 0.926440256088972, 0.789947912283242, 0.70668213609606, 0.922456486523151, 0.629019698873162, 0.661638798005879, 0.24650121666491, 0.586836164072156, 0.681104505620897, 0.504432160407305, 0.783611057512462, 0.67775810547173, 0.501828799955547, 0.77914223279804, 0.367493351921439, 0.667683422192931, 0.50367153454572, 0.406505749747157, 0.868928680196404, 0.8271046243608, 0.699726623296738, 0.509290342032909, 0.64384717810899, 0.714557278901339, 0.454660655371845, 0.434812285378575, 0.263606684841216, 0.238673931732774, 0.86127284001559, 0.556333301216364, 0.284314730018377, 0.411244752816856, 0.547528238035738, 0.928257000632584, 0.990814460813999, 0.808441665582359, 0.643104894645512, 0.996556769497693, 0.720810490474105, 0.931661877781153, 0.24239878822118, 0.388498053513467, 0.976899806037545, 0.710011543892324, 0.867750979959965, 0.402796254120767, 0.266483690030873, 0.251527597382665, 0.99647173229605, 0.24033660273999, 0.606577316857874, 0.550806636735797, 0.935271150059998, 0.60568239800632, 0.302254783920944, 0.406689228489995, 0.511395204998553, 0.439476444758475, 0.93921839222312, 0.212139395065606, 0.689212317764759, 0.306924941949546, 0.507336407341063, 0.29311260227114, 0.544916448928416, 0.686607236601412, 0.321811975352466, 0.332186637446284, 0.552188441902399, 0.251469318754971, 0.447158474475145, 0.585270248353481, 0.30359690412879, 0.219357096217573, 0.905501449108124, 0.556224244832993, 0.799956978857517, 0.594180314615369, 0.663298696838319, 0.575706338323653, 0.683013361506164, 0.378748281672597, 0.92171956691891, 0.532765958458185, 0.37195530179888, 0.447363517060876, 0.4904740806669, 0.59497676063329, 0.965182683430612, 0.794628237746656, 0.833613967709243, 0.577605975791812, 0.299228875339031, 0.81961428374052, 0.938818617723882, 0.768373915366829, 0.42077660318464, 0.215993262827396, 0.614610024541617, 0.442707951553166, 0.708962225914001, 0.881380892172456, 0.345646959915757, 0.219051056168973, 0.852275298163295, 0.305557020008564, 0.552425611764193, 0.303053144179285, 0.670175881870091, 0.663006302714348, 0.582066214457154, 0.234910102188587, 0.582760489732027, 0.871951987221837, 0.79629114549607, 0.64234321936965, 0.797545932792127, 0.245792662911117, 0.801748408935964, 0.952589945495129, 0.904691093415022, 0.248064755089581, 0.435416841879487, 0.94633583240211, 0.298288441263139, 0.677362079359591, 0.269885523617268, 0.862953861430287, 0.912040820159018, 0.893054289184511, 0.956762768141925, 0.240712281502783, 0.529618639871478, 0.712052985467017, 0.455596067756414, 0.837361499480903, 0.228045413456857, 0.242084477283061, 0.809449485130608, 0.354032107256353, 0.496917382441461, 0.861937871575356, 0.537928235903382, 0.332429162971675, 0.417699993774295, 0.578547753766179, 0.935248015075922, 0.419888190738857, 0.745627436414361, 0.51244286634028, 0.259612569399178, 0.85985115300864, 0.746237766742706, 0.395763868652284, 0.678750584088266, 0.847054896131158, 0.416397067159414, 0.476440278813243, 0.748835730925202, 0.245319980941713, 0.998843836225569, 0.688746259175241, 0.283395384252071, 0.493445679359138, 0.773027885891497, 0.641145037859678, 0.401047582179308, 0.482157840207219, 0.25831751357764, 0.748743624426425, 0.803540744259954, 0.56004790905863, 0.46395068038255, 0.580192233994603, 0.208901534043252, 0.587136061303318, 0.233177362941206, 0.364249517023563, 0.743037890456617, 0.539022241532803, 0.37575630042702, 0.949508755840361, 0.766082156077027, 0.853838640078902, 0.497515517100692, 0.45645062290132, 0.679778810031712, 0.436387553997338, 0.817131092585623, 0.321404973603785, 0.963432705774903, 0.797192509286106, 0.338143966533244, 0.467451545409858, 0.794682872667909, 0.575824308395386, 0.235856505669653, 0.984621887095273, 0.667921965010464, 0.316694886051118, 0.639467090554535, 0.469477926939726, 0.321568231284618, 0.968632818758488, 0.995972739346325, 0.278325647488236, 0.68448594622314, 0.519880916923285, 0.411854992248118, 0.575990703701973, 0.269802985340357, 0.322885619103909, 0.614276793412864, 0.392104646936059, 0.527159740030766, 0.5707439891994, 0.359801557101309, 0.356045913696289, 0.749989144317806, 0.700587368384004, 0.550886199064553, 0.264640416018665, 0.505145331844687, 0.860682614520192, 0.279580459743738, 0.452605591900647, 0.638788924738765, 0.371221655234695, 0.60335088763386, 0.602904621325433, 0.859974789060652, 0.313078406825662, 0.532807764969766, 0.205570081807673, 0.99922004416585, 0.319282119721174, 0.602665412798524, 0.740360968746245, 0.506776938959956, 0.243228797242045, 0.779697682522237, 0.393207308091223, 0.952626092918217, 0.971310019306839, 0.397818726301193, 0.716294346563518, 0.43531146440655, 0.367979066632688, 0.994073797762394, 0.648501594550908, 0.343350775353611, 0.481385127454996, 0.929219831340015, 0.736722750402987, 0.885398052632809, 0.554255084320903, 0.257453387230635, 0.231172065064311, 0.493714947067201, 0.653549794107676, 0.692217537015677, 0.407200543023646, 0.91788816805929, 0.847157374210656, 0.396447047032416, 0.641357669979334, 0.37922678142786, 0.85394822191447, 0.327667674794793, 0.507363541796804, 0.825513305515051, 0.283844354748726, 0.91799825001508, 0.266191784478724, 0.533572870120406, 0.847817213647068, 0.959183121286333, 0.524934860318899, 0.862762327864766, 0.393292165547609, 0.709450387209654, 0.241373819671571, 0.495687895454466, 0.329105798527598, 0.257389470003545, 0.425247041508555, 0.98331387322396, 0.721507726795971, 0.916923902928829, 0.993820382654667, 0.677077664621174, 0.415545131824911, 0.92722101137042, 0.256900181807578, 0.979626392014325, 0.297060686722398, 0.640208079107106, 0.906279082968831, 0.59915178027004, 0.64419866874814, 0.877116537466645, 0.810208756662905, 0.335351523943245, 0.237630383484066, 0.530647467635572, 0.527983018569648, 0.360712818615139, 0.84049855619669, 0.782696964964271, 0.212250296398997, 0.915305252745748, 0.68034282438457, 0.754669541120529, 0.468584830500186, 0.329375287890434, 0.407739054039121, 0.685254793614149, 0.38298847284168, 0.905976949073374, 0.777605021931231, 0.904328432679176, 0.663903004489839, 0.333905071392655, 0.844351310096681, 0.238921881094575, 0.377213169820607, 0.954277487844229, 0.445597865246236, 0.943447467684746, 0.47523910459131, 0.367013050056994, 0.483809911459684, 0.297582030668855, 0.408178467862308, 0.402746216207743, 0.884436759538949, 0.759549595788121, 0.371255763620138, 0.336986040696502, 0.988033970072866, 0.43105202242732, 0.312267814017832, 0.655317956395447, 0.702230988815427, 0.624699491076171, 0.312582155130804, 0.842208992876113, 0.66409670766443, 0.348919825255871, 0.878909491188824, 0.934722888655961, 0.555225351452827, 0.72308469992131, 0.63567733746022, 0.777384807728231, 0.393285578489304, 0.305739852413535, 0.297277712635696, 0.939625337347388, 0.774334038421512, 0.932538314536214, 0.430603657849133, 0.626064549386501, 0.357588763907552, 0.462773933075368, 0.4233248334378, 0.822471611388028, 0.211638833396137, 0.883390669897199, 0.770635534450412, 0.261081808619201, 0.34427256397903, 0.428558286838233, 0.586508243530989, 0.806677709333599, 0.541193851456046, 0.424901007674634, 0.773493338003755, 0.924800579622388, 0.621236927807331, 0.342336634546518, 0.403557904809713, 0.944588495604694, 0.392854348011315, 0.975773243606091, 0.268967700563371, 0.594646056741476, 0.813029431924224, 0.806696833483875, 0.663082734309137, 0.792412928678095, 0.769480622373521, 0.983927513659, 0.27065708655864, 0.314342354983091, 0.600367947295308, 0.888056669197977, 0.687128872796893, 0.749963320605457, 0.645559413172305, 0.672573499567807, 0.40458907764405, 0.949823467619717, 0.672146432101727, 0.716653976030648, 0.753491733968258, 0.723318073712289, 0.4880431169644, 0.561026498675346, 0.76754420530051, 0.256530160829425, 0.888549918867648, 0.402330438792706, 0.8662827687338, 0.523146335966885, 0.386836315318942, 0.490238963253796, 0.38806872908026, 0.980499673634768, 0.949957541376352, 0.329803372733295, 0.23554122839123, 0.763497228734195, 0.969440498389304, 0.428237693943083, 0.206623070500791, 0.745374705828726, 0.34570736605674, 0.230416911840439, 0.660001023299992, 0.839080483093858, 0.618724203109741, 0.460370156355202, 0.718134752102196, 0.465561534836888, 0.60516998283565, 0.553910447284579, 0.955150016956031, 0.927959811314941, 0.85682782586664, 0.347628423571587, 0.637285824865103, 0.998566382005811, 0.894269352778792, 0.979331213794649, 0.690731310099363, 0.769710969366133, 0.980519840307534, 0.793217679485679, 0.748187915608287, 0.674061897024512, 0.322366735525429, 0.927107127383351, 0.928087027743459, 0.53093498069793, 0.783066815510392, 0.243308485858142, 0.666968079842627, 0.585504082590342, 0.721331590227783, 0.284674688242376, 0.306167185679078, 0.214400909282267, 0.614963497407734, 0.9448745328933, 0.876763543859124, 0.241144126094878, 0.862921761721373, 0.233759389817715, 0.376228163018823, 0.889139044284821, 0.592392067611218, 0.56166318282485, 0.494275958091021, 0.858166419528425, 0.805188542231917, 0.302578348852694, 0.858257489651442, 0.965798943303525, 0.548045456595719, 0.280888641811907, 0.439667834714055, 0.819661171920598, 0.409519100561738, 0.806487981416285, 0.725141845829785, 0.89420657325536, 0.580854004435241, 0.530445739999413, 0.371123911067843, 0.471254648268223, 0.830122232995927, 0.89321222845465, 0.814181533828378, 0.448525088466704, 0.598303617164493, 0.325314956717193, 0.859018468856812, 0.342017517983913, 0.350106722861528, 0.63732709158212, 0.389129409007728, 0.486016236804426, 0.468722934275866, 0.981762253493071, 0.536575503833592, 0.382435477152467, 0.36683204062283, 0.428317867405713, 0.926130523346365, 0.255372100137174, 0.383097563497722, 0.523393915779889, 0.379495188780129, 0.727924991212785, 0.4711007155478, 0.943741642311215, 0.861622778512538, 0.826039815880358, 0.276949046738446, 0.886790284328163, 0.588696935214102, 0.753113983012736, 0.410980843938887, 0.326849348843098, 0.933082875050604, 0.41193832475692, 0.306820198707283, 0.261045106686652, 0.955037020891905, 0.506142737716436, 0.350923991389573, 0.540857553854585, 0.994149224460125, 0.933326226100326, 0.630945944599807, 0.757362007163465, 0.916968563012779, 0.532489248923957, 0.862968382425606, 0.20142507404089, 0.864968065172434, 0.401824227906764, 0.644383777491748, 0.615026276931167, 0.877786210551858, 0.989684634841979, 0.895295184478164, 0.844062326103449, 0.492904360964894, 0.223243257589638, 0.638367781415582, 0.644874594733119, 0.246148576587439, 0.952907673455775, 0.20125926733017, 0.443715428933501, 0.383787139691412, 0.874681784212589, 0.478792806901038, 0.232649700529873, 0.382046308368444, 0.766483433172107, 0.536071467772126, 0.548417176119983, 0.50214912481606, 0.758213104866445, 0.556094069220126, 0.257661823183298, 0.733407270163298, 0.871113751456142, 0.55153789781034, 0.382131920382381, 0.23100246284157, 0.596175040490925, 0.690126545540989, 0.408163185045123, 0.236855526827276, 0.326111724413931, 0.439677009731531, 0.851432185992599, 0.954128296114504, 0.445185792446136, 0.299632388353348, 0.963377822749317, 0.50155789013952, 0.228374828957021, 0.423187871277332, 0.936754606850445, 0.211259659565985, 0.540544756874442, 0.63498259074986, 0.246538120135665, 0.453756821714342, 0.607117464952171, 0.781034672632813, 0.649622244015336, 0.552845692634582, 0.807204073853791, 0.619827735982835, 0.353426834195852, 0.600756558217108, 0.961645156517625, 0.754601347818971, 0.403115624375641, 0.225425616651773, 0.824494837597013, 0.233788690902293, 0.971916853450239, 0.6816341875121, 0.25986732468009, 0.308241131715477, 0.55934670753777, 0.226061223261058, 0.751017904467881, 0.620730495639145, 0.534481268748641, 0.266769765131176, 0.484234128519893, 0.938416286930442, 0.554558075591922, 0.236837921664119, 0.212812651507556, 0.316399721615017, 0.562371898069978, 0.935625154338777, 0.66232338193804, 0.770408452674747, 0.946412949077785, 0.568374566733837, 0.549644956178963, 0.32445522826165, 0.598204152844846, 0.569916575029492, 0.900303541310132, 0.404828177765012, 0.761761936359107, 0.524441513977945, 0.795789215527475, 0.695053534954786, 0.25434562060982, 0.680998104996979, 0.949570882320404, 0.529626050963998, 0.287806058488786, 0.301431743241847, 0.477363654226065, 0.531272424943745, 0.556914111599326, 0.889729951880872, 0.725959768332541, 0.797688136808574, 0.311558427289128, 0.322028980776668, 0.729572913050652, 0.747595838457346, 0.388625655137002, 0.399862300232053, 0.741676186583936, 0.238673630356789, 0.530458190478384, 0.492525638639927, 0.267507074587047, 0.34223405122757, 0.890115731954575, 0.341027268767357, 0.361792509630323, 0.435065817832947, 0.637262924201787, 0.677245222218335, 0.246985369175673, 0.937498888559639, 0.600873046554625, 0.954977685585618, 0.887918076477945, 0.513141223601997, 0.949504899978638, 0.440056377276778, 0.324851090833545, 0.410730614513159, 0.273620993643999, 0.227483328618109, 0.484053780511022, 0.205932160653174, 0.855245535820723, 0.303423845767975, 0.296508779376745, 0.649793030135334, 0.223927453532815, 0.735749850235879, 0.633969002589583, 0.495747874863446, 0.33084989823401, 0.200628294609487, 0.318213472515345, 0.249607175216079, 0.362541946768761, 0.634221936203539, 0.581951617635787, 0.928128950484097, 0.640099808946252, 0.805496327020228, 0.762132773734629, 0.709169141761959, 0.703084646351635, 0.371165924705565, 0.325605103187263, 0.793682152964175, 0.231759688258171, 0.63412007689476, 0.922142949141562, 0.343526221811771, 0.396317135170102, 0.213243623077869, 0.903044482879341, 0.67292647883296, 0.6202542565763, 0.965491008386016, 0.756888242997229, 0.457184593193233, 0.605736822262406, 0.980298480950296, 0.741799396649003, 0.245747895911336, 0.426535530202091, 0.254941356740892, 0.585105783864856, 0.588096047379077, 0.890560095757246, 0.52317148335278, 0.956463732011616, 0.853574598766863, 0.930651165917516, 0.392236796393991, 0.818841490522027, 0.255938717350364, 0.76286348067224, 0.279836361669004, 0.981250510551035, 0.89414381776005, 0.549884312413633, 0.465943886712194, 0.495946639403701, 0.319263783283532, 0.775011225603521, 0.673544757254422, 0.825148840993643, 0.745842855237424, 0.307031080126762, 0.942244074493647, 0.230608903989196, 0.429739687032998, 0.62970586437732, 0.257416889816523, 0.644290422089398, 0.651779018156231, 0.651652227155864, 0.443128835596144, 0.365302986465394, 0.779157505370677, 0.734978438913822, 0.692567883990705, 0.358770199306309, 0.306603199802339, 0.395503837801516, 0.514141092076898, 0.695107496529818, 0.945841698534787, 0.873548150993884, 0.592842557840049, 0.959758093208075, 0.349114205315709, 0.242320626787841, 0.373613066971302, 0.859818494133651, 0.536623568274081, 0.464365400187671, 0.341393935121596, 0.404664517194033, 0.900311480090022, 0.561383399553597, 0.907305350527167, 0.326136669330299, 0.981454136781394, 0.962655873596668, 0.775932171009481, 0.750685519911349, 0.859517910704017, 0.503263748623431, 0.775888686813414, 0.244455755129457, 0.594260308891535, 0.994220974668861, 0.843016878142953, 0.349718091450632, 0.211739565804601, 0.332670723833144, 0.449075289256871, 0.788496514037252, 0.210003895685077, 0.501249978505075, 0.53901737369597, 0.308329423330724, 0.486724177747965, 0.567417855747044, 0.717233192548156, 0.989786439761519, 0.842591429129243, 0.588236740790308, 0.415967672690749, 0.385127343796194, 0.475663695111871, 0.266738959215581, 0.688257451541722, 0.792149191536009, 0.652721059694886, 0.722468161955476, 0.59633177742362, 0.208574530668557, 0.581721173040569, 0.608454897254705, 0.79666087590158, 0.598958130180836, 0.5643783852458, 0.859581036679447, 0.564416790939868, 0.619094534218311, 0.965588062815368, 0.524494863301516, 0.781841276958585, 0.628425876609981, 0.602951348014176, 0.581976082921028, 0.348314476385713, 0.721579541452229, 0.297581905126572, 0.383307135850191, 0.497674048691988, 0.523241988942027, 0.277438152953982, 0.294988442584872, 0.228378225117922, 0.893593708053231, 0.518594019114971, 0.74761566221714, 0.638646572642028, 0.857623736560345, 0.771135310456157, 0.966184771060944, 0.341261546686292, 0.431093541160226, 0.529193048737943, 0.286614318564534, 0.725842379033566, 0.478396150097251, 0.368299080431461, 0.721307393535972, 0.869432219490409, 0.334688119217753, 0.750601446442306, 0.525831658765674, 0.476665092073381, 0.690955290012062, 0.368143859505653, 0.71299269348383, 0.360203815251589, 0.529005500860512, 0.509943915531039, 0.518967696093023, 0.341159587725997, 0.859214586950839, 0.366904476471245, 0.590628535486758, 0.660962287336588, 0.536828616261482, 0.928850825875998, 0.283667773753405, 0.229251223616302, 0.530941712483764, 0.445963042974472, 0.373412875644863, 0.730436804145575, 0.716080426611006, 0.836374962888658, 0.581331392377615, 0.711105999909341, 0.745001237653196, 0.671882040426135, 0.511893005855382, 0.805861438438296, 0.637150677107275, 0.414229785837233, 0.590913792327046, 0.806641781330109, 0.566939629241824, 0.781716191396117, 0.46690042167902, 0.387233149260283, 0.463553828187287, 0.877605530433357, 0.318963313661516, 0.34184103384614, 0.632006482034922, 0.213558290712535, 0.971692826040089, 0.975791828148067, 0.417663824371994, 0.390835795551538, 0.413094088993967, 0.933328094147146, 0.671058081649244, 0.23258450999856, 0.248817070573568, 0.526131454482675, 0.911310565657914, 0.710881747119129, 0.555731997452676, 0.757848851755262, 0.307866942882538, 0.526189242862165, 0.960838599130511, 0.255303495936096, 0.427595530822873, 0.464970403723419, 0.924633595719934, 0.876059870235622, 0.233426374010742, 0.947632242180407, 0.601509945653379, 0.51970389932394, 0.798932813853026, 0.939311260543764, 0.541266202554107, 0.784951508231461, 0.676010711863637, 0.662476137839258, 0.375044584088027, 0.978600291348994, 0.305982427857816, 0.289558162167668, 0.316457634232938, 0.588365049473941, 0.922397219203413, 0.515037616342306, 0.402205918729305, 0.982709257118404, 0.450554583966732, 0.750673919171095, 0.788647547923028, 0.953264124132693, 0.653826766274869, 0.854829363338649, 0.631100529432297, 0.517249400354922, 0.775785296596587, 0.986750292219222, 0.345325811393559, 0.451010510139167, 0.433106366172433, 0.588552916236222, 0.891337846778333, 0.746091632731259, 0.635398188792169, 0.501940257102251, 0.770564649067819, 0.83545643184334, 0.751907780952752, 0.454052289947867, 0.429283745400608, 0.67947304379195, 0.792205278947949, 0.230600471794605, 0.789250386692584, 0.433928816393018, 0.943960155546665, 0.249910162948072, 0.52223483491689, 0.982502104341984, 0.78779006563127, 0.494178571738303, 0.925183686986566, 0.918191841989756, 0.232546666823328, 0.734375364892185, 0.735608612559736, 0.801065115816891, 0.660427107848227, 0.897715961001814, 0.88871606439352, 0.63272743485868, 0.515531763061881, 0.612325247190893, 0.758678697608411, 0.657029047235847, 0.60629265550524, 0.832671213150024, 0.681669960916042, 0.390058928728104, 0.214468264020979, 0.297165617719293, 0.620530669204891, 0.960690163820982, 0.28197815567255, 0.727029119804502, 0.355000576190651, 0.213220947608352, 0.222919045947492, 0.540353554487228, 0.205081950314343, 0.484847303852439, 0.386355762369931, 0.534014260210097, 0.230637050978839, 0.699423548206687, 0.9298714177683, 0.970916805416346, 0.912040359340608, 0.384069602377713, 0.437892879731953, 0.617209062352777, 0.288526903092861, 0.721059725247324, 0.758422283455729, 0.645992321893573, 0.947928679175675, 0.861233987286687, 0.210938646830618, 0.23518687505275, 0.944024069420993, 0.63268437422812, 0.774038801155984, 0.643424224108458, 0.790266027860344, 0.263676028139889, 0.333029043488205, 0.719285244494677, 0.296089465171099, 0.747710388340056, 0.971752916276455, 0.666152702085674, 0.382247623801231, 0.209479783847928, 0.246258448436856, 0.485681089572608, 0.417466937750578, 0.37958096023649, 0.519637694396079, 0.245110438205302, 0.327558473870158, 0.402850016579032, 0.301006939820945, 0.333151771686971, 0.533002421818674, 0.448748576827347, 0.57625763528049, 0.582217034697533, 0.42862963154912, 0.908921729959548, 0.769689005613327, 0.769844575598836, 0.581010807864368, 0.280901670455933, 0.421070394851267, 0.267030080594122, 0.76206920761615, 0.36571024954319, 0.609107353910804, 0.689523792639375, 0.609251064620912, 0.208334540203214, 0.851739897951484, 0.525183539092541, 0.583970245718956, 0.760562523640692, 0.406679854355752, 0.39526338968426, 0.735512413457036, 0.300458340719342, 0.927559259533882, 0.860366106405854, 0.523837057314813, 0.724805126711726, 0.348371545411646, 0.735631529428065, 0.996243074163795, 0.312670526467264, 0.645755967125297, 0.537022952362895, 0.690730339474976, 0.535293015837669, 0.525786532647908, 0.266294552758336, 0.371991986595094, 0.53775578122586, 0.879081125743687, 0.557832462899387, 0.24161372743547, 0.783538900502026, 0.701600125618279, 0.439935969561338, 0.987270394898951, 0.398216497153044, 0.883742777071893, 0.865985597111285, 0.749243402853608, 0.997555415146053, 0.720931220240891, 0.843583219498396, 0.914021676965058, 0.961035460047424, 0.98578565903008, 0.465076583251357, 0.527030809782445, 0.501348251849413, 0.853554408811033, 0.520506181754172, 0.67373782992363, 0.3787144318223, 0.718024738691747, 0.308214426413178, 0.747665669955313, 0.394747458770871, 0.525821910053492, 0.777170666307211, 0.387421810440719, 0.318540724180639, 0.949537809193134, 0.771647712215781, 0.650647427514195, 0.595229764282703, 0.2534886457026, 0.699033839255571, 0.826510225050151, 0.487324623949826, 0.297376619651914, 0.219535670615733, 0.617735449410975, 0.944808679260314, 0.622221146896482, 0.437059670500457, 0.5528923695907, 0.790990036725998, 0.663335701450706, 0.756051116250455, 0.35782485473901, 0.381296969205141, 0.441010196879506, 0.229847758635879, 0.960197479836643, 0.489168510958552, 0.880976184457541, 0.630705967545509, 0.741516927629709, 0.596580502763391, 0.690106890723109, 0.575721235573292, 0.71953302975744, 0.487172209471464, 0.928728473186493, 0.628709865920246, 0.474032104946673, 0.572059882804751, 0.463322621583939, 0.488119137473404, 0.601671859063208, 0.793987003713846, 0.943609973974526, 0.609933161363006, 0.693668941408396, 0.227706342563033, 0.588290712051094, 0.505718355067074, 0.210080857202411, 0.238036281988025, 0.516931489668787, 0.740033390745521, 0.649825152009726, 0.364224755950272, 0.256520836800337, 0.822351757623255, 0.697235371917486, 0.822010027989745, 0.757399511896074, 0.314317513816059, 0.221493942290545, 0.908744572848082, 0.391155656799674, 0.334612845815718, 0.852134263142943, 0.443042900785804, 0.64175770599395, 0.842683133669198, 0.65160490013659, 0.455243479833007, 0.313491803407669, 0.382074055448175, 0.654159359261394, 0.646309422515333, 0.699326749145985, 0.754259841144085, 0.393910487368703, 0.37766773533076, 0.394501186534762, 0.920111528784037, 0.648163888417184, 0.882882505096495, 0.83896850310266, 0.916578936576843, 0.855798934586346, 0.364762002229691, 0.579244287312031, 0.591066834144294, 0.220047864876688, 0.655094656534493, 0.918835105188191, 0.796770132891834, 0.848706387542188, 0.92869577780366, 0.261067123897374, 0.948345260508359, 0.941398802958429, 0.453975673764944, 0.371100142225623, 0.823163960501552, 0.863020814582706, 0.707091135159135, 0.304942827671766, 0.659876732155681, 0.487372408248484, 0.683448989130557, 0.636294221505523, 0.735299810580909, 0.331901676952839, 0.295515860803425, 0.241614919342101, 0.312153858505189, 0.381146546266973, 0.595645395666361, 0.511021529324353, 0.209196290187538, 0.546408412791789, 0.339812517166138, 0.40352838896215, 0.706624644808471, 0.403264820575714, 0.230388916656375, 0.594134745001793, 0.30086014457047, 0.222726367600262, 0.982216456718743, 0.362954685278237, 0.598745149746537, 0.635457899048924, 0.792075079120696, 0.355578528158367, 0.260028428956866, 0.564048585109413, 0.940337179973722, 0.920367909967899, 0.859254986979067, 0.560454378277063, 0.680198732949793, 0.438310334831476, 0.713263202272356, 0.974712631478906, 0.732799756713212, 0.247328743711114, 0.201421963237226, 0.547196893766522, 0.940907236002386, 0.677928788028658, 0.909088020585477, 0.904260175488889, 0.864779454097152, 0.916301384568214, 0.443672814778984, 0.632447658106685, 0.409373616240919, 0.457588556781411, 0.512660874426365, 0.442939955368638, 0.606900514103472, 0.69149637632072, 0.934531908482313, 0.418630045838654, 0.886623495072126, 0.73669268079102, 0.789522502943873, 0.211944936402142, 0.842250021919608, 0.898513565771282, 0.7546735227108, 0.287041505612433, 0.461696016229689, 0.885021497309208, 0.615339644812048, 0.706708703003824, 0.852811694145203, 0.340339414961636, 0.867312830500305, 0.891746864840388, 0.831625476665795, 0.378554572165012, 0.315405883640051, 0.368952158279717, 0.616538710519671, 0.300014046765864, 0.688223704323173, 0.447330236434937, 0.310125493630767, 0.59714753460139, 0.852292258664966, 0.854118959978223, 0.821566230617464, 0.248738737218082, 0.951395351625979, 0.576876695267856, 0.611647359840572, 0.251380613259971, 0.285105442628264, 0.200959604233503, 0.326580293849111, 0.75830649882555, 0.66681698281318, 0.871332308836281, 0.351011813245714, 0.800624988786876, 0.954294321499765, 0.264474561810494, 0.440641061961651, 0.399041666463017, 0.567612369172275, 0.226712588220835, 0.463212127797306, 0.638972987048328, 0.701111013814807, 0.947887805663049, 0.883087608590722, 0.541502134129405, 0.276141744107008, 0.276548779197037, 0.884875770099461, 0.360972031205893, 0.277157779037952, 0.895847012102604, 0.736195548437536, 0.995367974601686, 0.807033488340676, 0.452644529007375, 0.538756372220814, 0.757859296351671, 0.202459325455129, 0.542067823559046, 0.982205063477159, 0.940355867147446, 0.497802920639515, 0.968348197638988, 0.821389227360487, 0.749178227037191, 0.424865365214646, 0.454931739903986, 0.458250751160085, 0.502476102113724, 0.720955514907837, 0.89502575173974, 0.489767642691731, 0.956551766768098, 0.328358846902847, 0.206547901965678, 0.920468348637223, 0.567524812929332, 0.322703639790416, 0.940512344799936, 0.541911867447197, 0.776014834828675, 0.341066150180996, 0.803037086501718, 0.509526331163943, 0.344657657667994, 0.443431971222162, 0.210184776037931, 0.946718576923013, 0.464686392620206, 0.904372510500252, 0.506963189691305, 0.278607863374054, 0.649110781028867, 0.70974239949137, 0.986063679680228, 0.905098853819072, 0.41752024628222, 0.967319778911769, 0.747050126455724, 0.709753329865634, 0.580088491551578, 0.252063005790114, 0.84014376886189, 0.414158911444247, 0.794753324426711, 0.349341887794435, 0.918448180891573, 0.908078016340733, 0.93577421605587, 0.247530600614846, 0.694730513356626, 0.906408120319247, 0.835730660334229, 0.577713632583618, 0.436505332961679, 0.892356838844717, 0.425288178026676, 0.651904974877834, 0.454802246764302, 0.209458137117326, 0.2295230794698, 0.843473059870303, 0.472755883075297, 0.344010987505317, 0.305416238494217, 0.236369510367513, 0.944684744626284, 0.406527569517493, 0.788213096745312, 0.33156747687608, 0.269598366506398, 0.514089736901224, 0.638114540278912, 0.504261158406734, 0.812477615661919, 0.977982171624899, 0.42489221226424, 0.349282043986022, 0.507814149744809, 0.816724264062941, 0.356908251345158, 0.290474721230567, 0.244887514784932, 0.458272681757808, 0.737066622637212, 0.340707541629672, 0.268005507439375, 0.225210078433156, 0.44275736939162, 0.28062112275511, 0.334018648602068, 0.267256339453161, 0.779638255760074, 0.344540623575449, 0.96209216453135, 0.863214030489326, 0.633498167060316, 0.282686145789921, 0.821893478929997, 0.653378353267908, 0.657676136307418, 0.967512781918049, 0.818118315376341, 0.311781816370785, 0.719478353299201, 0.234989481791854, 0.534730619192123, 0.950878482684493, 0.629089996777475, 0.950581233762205, 0.470469103753567, 0.213011433929205, 0.283516117744148, 0.323891051858664, 0.917696589417756, 0.555053575709462, 0.583253974094987, 0.285673729330301, 0.254544126614928, 0.339098479039967, 0.812558578886092, 0.636823382973671, 0.829003019444644, 0.340354388579726, 0.345429770834744, 0.802951896935701, 0.461683010682464, 0.687472718022764, 0.569961853697896, 0.201811410300434, 0.945557973720133, 0.90689176786691, 0.949431144632399, 0.361669302731752, 0.324211858585477, 0.778661952540278, 0.347372049093246, 0.962944006733596, 0.913648337684572, 0.595091308094561, 0.908038051240146, 0.871935565397143, 0.438518244028091, 0.890412740968168, 0.986226115562022, 0.484535010904074, 0.631893746741116, 0.94564193803817, 0.46768144313246, 0.335876970924437, 0.432464417256415, 0.660224737785757, 0.831408541835845, 0.63300952129066, 0.92119092065841, 0.263204211182892, 0.30290121268481, 0.291905439272523, 0.228213831037283, 0.231830826029181, 0.970485470257699, 0.335155218094587, 0.389636564254761, 0.672498279251158, 0.73353265710175, 0.49560200534761, 0.579790428839624, 0.519011769257486, 0.471661199443042, 0.456199827417731, 0.810560586676002, 0.995610405504704, 0.257728067412972, 0.605122332833707, 0.790529370680451, 0.669500953704119, 0.460263484157622, 0.277640596963465, 0.818947173841298, 0.738605292327702, 0.89781304076314, 0.848820650950074, 0.586717126704753, 0.516312023811042, 0.401592034846544, 0.298431300185621, 0.946731380186975, 0.546398342959583, 0.22513291426003, 0.876022339053452, 0.947473020292819, 0.932548513635993, 0.696382371149957, 0.238594607450068, 0.861788020096719, 0.631922946497798, 0.60692030210048, 0.403038194775581, 0.41934040915221, 0.214751821383834, 0.342073111608624, 0.334107652679086, 0.384291966632009, 0.398132652044296, 0.443341758474708, 0.996355197578669, 0.983443707600236, 0.659957653656602, 0.253480197302997, 0.612757560238242, 0.474499693512917, 0.648298699036241, 0.568523168377578, 0.717361336573958, 0.632581249624491, 0.236942851729691, 0.913147926516831, 0.976955563016236, 0.220265611074865, 0.428411837853491, 0.641340152360499, 0.80327026695013, 0.425596855394542, 0.376768292114139, 0.867618851177394, 0.670353294163942, 0.872422316297889, 0.811436702683568, 0.731054898537695, 0.554112513363361, 0.774695396609604, 0.403076827339828, 0.941620250232518, 0.781722884438932, 0.918310943990946, 0.42453162651509, 0.892437730357051, 0.452712626755238, 0.960036286339164, 0.6335742931813, 0.740630038268864, 0.681486895121634, 0.777925849892199, 0.883206051401794, 0.595489831082523, 0.436021882481873, 0.363914243504405, 0.980455021373928, 0.236408869363368, 0.212458730116487, 0.683896322734654, 0.211975673772395, 0.985042605362833, 0.997451346926391, 0.296462981030345, 0.880128047429025, 0.357862459868193, 0.29069952853024, 0.536559618450701, 0.430948681756854, 0.442696448229253, 0.511581089533865, 0.911058691889048, 0.469064740091562, 0.304779510572553, 0.387950417399406, 0.340511816367507, 0.596575348824263, 0.911787700280547, 0.557245375216007, 0.272716417722404, 0.380160582624376, 0.832780553214252, 0.367946034297347, 0.461153145134449, 0.50782810356468, 0.572647970542312, 0.375240441039205, 0.584295541234314, 0.535064539127052, 0.383442571759224, 0.449521302431822, 0.623610332421959, 0.51100507080555, 0.774450571648777, 0.902848021686077, 0.749876704625785, 0.926374148204923, 0.379269939847291, 0.688294917531312, 0.607674442231655, 0.99576749112457, 0.676942970044911, 0.780752748437226, 0.535425830073655, 0.285235743410885, 0.86143411770463, 0.828267741575837, 0.966825773753226, 0.647001668810844, 0.586287083104253, 0.894634069316089, 0.752396768331528, 0.549948050267994, 0.8348842298612, 0.272164152748883, 0.421303491480649, 0.238746803626418, 0.263558468781412, 0.268010632321239, 0.876982289925218, 0.472449992969632, 0.592227701097727, 0.791356815211475, 0.655738587118685, 0.904105585440993, 0.725226902402937, 0.637211636826396, 0.677813027985394, 0.614338991045952, 0.695657406188548, 0.428776907920837, 0.733471500501037, 0.773201632685959, 0.463061304204166, 0.276219692453742, 0.616288897395134, 0.626772878691554, 0.734533404186368, 0.782847397215664, 0.356922867894173, 0.647059006243944, 0.544306773133576, 0.439406641386449, 0.710456696338952, 0.50174884069711, 0.203408777713776, 0.257826832681894, 0.580478638038039, 0.754076308757067, 0.449621854908764, 0.802275714091957, 0.407904606871307, 0.540506238117814, 0.42207164876163, 0.294925748556852, 0.404539225436747, 0.337213378585875, 0.237857284769416, 0.524555748142302, 0.795041685365141, 0.239999129809439, 0.705612673610449, 0.983765768259764, 0.9525320796296, 0.682129258476198, 0.343256887421012, 0.859274021722376, 0.727990475483239, 0.763605295494199, 0.429446761868894, 0.455156118609011, 0.846094085276127, 0.661770036630333, 0.419135150685906, 0.301712701097131, 0.433781344816089, 0.891571380198002, 0.596630977466702, 0.702915935218334, 0.859514799900353, 0.586743035912514, 0.523417614400387, 0.921049203537405, 0.579039460606873, 0.98710795622319, 0.879755877517164, 0.83630351498723, 0.238104188628495, 0.986811869777739, 0.646995247341692, 0.722809157148004, 0.374921425804496, 0.74260720256716, 0.571362571790814, 0.998733760416508, 0.308386059850454, 0.265650593675673, 0.749121302552521, 0.474115508981049, 0.283878158405423, 0.774018982797861, 0.523078270629048, 0.87162223495543, 0.405490882508457, 0.454438066482544, 0.670927486941218, 0.242275165952742, 0.629667711816728, 0.614281228370965, 0.926483704335988, 0.224540500156581, 0.804242278262973, 0.865045023523271, 0.41373085398227, 0.271038805693388, 0.787129903398454, 0.323169868066907, 0.957217337749898, 0.909275486133993, 0.74948389660567], + "y": [-0.237232289955976, 0.933646542134029, 1.0101880145006, -0.0291497813737048, 0.158433565205764, 1.1665148623601, 0.0167490969502742, 0.696420503335142, 0.194116782353101, 0.983366981920846, -0.345613740971069, 0.582153309217102, -0.0156114852225143, 0.289179795520866, -0.0101791789257988, -0.479197137460096, -0.07085557129724, 2.10306476166334, 1.19184928927724, 0.344758335521413, 0.801781066025693, 1.64712891074927, 0.852128936296544, 1.8436626067635, 1.05619867969641, 1.06452244919922, 0.322905401465711, -0.069869602987587, 1.75811603044215, 1.08397842130653, 0.217091188846763, -0.0184462777019573, 0.633553615232926, -0.0542111430770182, 0.693683815113913, 0.856910773826123, -0.360354925501012, 0.134376823445816, 0.990310271262976, 0.776275586830117, 1.64641116966763, -0.168131124285568, 2.2071093651067, 0.0646384447606094, -0.250685615688469, 0.898246214995544, 1.74998346057724, 0.423939819835263, 0.693828928150754, 0.962434329004359, -0.374706470738784, 1.69595554330459, 0.365296326816851, -0.229432516894612, 0.370144231115955, 1.11439869005074, -0.667058633437398, 1.07264789999282, 0.871088604482515, 0.678600656546001, 1.34883894604901, 0.0462458419124043, 0.652163975064128, 0.955489713863211, 1.86551010806319, 0.17627777121688, 0.429156708195019, 1.20894049014679, 0.443319523964509, 0.664761457284396, 1.73496009885325, 0.837639576647686, 0.735706010594797, 0.497197609631453, 0.666621590754522, 0.61393290300658, 0.778889581130872, 0.957930390421315, 0.189698915342354, 0.745082251177771, 0.412487192281672, 1.62763294123849, 1.1678557039124, 1.12601585955958, 0.0184100473502773, 0.849040385043663, 0.778670340914331, -0.212870256485882, 0.202233343149832, 1.46623476561064, 0.0495923094863785, 0.936757631184404, 1.2946330631825, 1.73369487457987, 1.15445697775385, -0.255471384805605, 0.857783190346274, 0.097018833174903, 0.205630178345104, 0.276845308083767, 1.93164563136742, 1.09521216994153, 0.913868630400723, 1.81361467896408, 0.163299353194799, -0.0835948634081319, 0.0869193907840207, 0.345532414249801, 0.513854251102578, 0.754638701367066, 2.08693014668998, -0.385375161540118, 0.0193063769301616, 1.18143838866292, 0.602052047663756, -0.172288136668579, 0.657833909501045, 1.09322447155865, -0.389578548901213, 1.89940179949638, -0.541511700148401, 1.17006123061192, 0.64775835645872, 1.49567148164997, -0.0985591438135571, 1.43476891769592, 0.348665476850621, 1.37213679582924, 0.10547872830456, 0.921336500291451, -0.695015137438098, 1.74694676786343, 0.685854718883254, 0.0775818434210297, 0.240318924738247, 0.091928669151988, 0.405322460491526, 0.938251318835117, 1.06872291347552, 0.656045642344716, -0.514079751759317, 0.564076913764494, 0.698961472263594, 0.979689607424137, 0.254533354743386, 0.617946979881784, 0.606289605268246, 2.03342213060813, 0.901444504829194, -0.0927446521206861, -0.698984831617059, 1.21225267507614, 0.344056517633669, 0.500937401737638, 0.229505618646966, -0.0644217720908174, 0.427798311711313, 0.213432854323492, 0.922301767279378, 1.20180924492912, 0.318347699981054, 0.5122905574753, 0.619889537452709, 0.942919104206392, 0.753461486080703, 0.797235478830159, 0.0244529413194617, -0.88271017756162, 0.165142611683018, 1.39355528047688, 1.01279444312943, 1.05274388895956, 1.53383738668958, 2.1253579352515, -0.282469410414231, 0.940053560212897, 0.492569426057181, -0.072071018785491, 0.0350149476831448, -0.885190424444644, -0.250093471101426, 0.353257626165188, 1.66404391452149, 1.27623935224036, 0.445831679027707, 1.19667591432693, -0.264961195659272, 0.557511799479686, 0.803118108846809, 0.314865571842282, 1.18249496967604, 0.951839198430527, 0.601881637632947, 0.0469138285260548, -0.813574683828902, -0.203564119784301, 0.330591807036606, -0.324616659724861, 0.46831211126139, 0.573655355758976, -0.119823452296301, 1.35233552569495, 1.69053591627612, -0.381023986113569, 0.194565209272881, 1.31299575147542, 0.0326877923885911, 0.633083414863121, -0.480756182904121, -0.435555748995815, 1.24939430080708, 0.591937407023773, 0.757895433778624, 0.532876746914711, 0.0656707486239504, 0.993806104308206, 0.379525276438466, 0.662583726083161, 0.362854466315371, 2.03615808234564, 1.12086598589262, 0.302743477453408, 0.102447005326583, 0.39007847550977, 0.141715540995222, 0.867717682784988, 0.449305716812168, 1.2133339784775, 0.467625074864701, 0.370472295370933, 0.520392741698721, 0.390847455288404, 0.822646324685884, 1.21895682962838, 0.91676939170396, 1.06651777731109, 1.61773019928568, 0.948268631103492, 1.3649878188468, 2.22957448135722, 0.368511320178116, -0.284229317535271, 0.375067099030944, -0.0951487894930786, 0.0349689279099722, 2.14340040276431, 0.845157214619603, 0.316784753068709, 0.379861380371341, -0.208829721733319, 0.809124658437775, 0.932984283058634, -0.66066895336717, 1.34409107053827, 0.959308700702324, 1.24376413797306, 0.602852710611001, 0.535780652486054, 1.37344858785274, 0.354498574468115, -0.204759929632961, 0.195768552403718, -0.303625549806588, -0.615710169704475, -0.179056097006971, -0.135001477427907, 0.795706641000916, 1.00004171347018, 1.71163696204976, 1.8748428453242, 0.91020368685522, 0.780326621705145, 0.98829336059224, 1.36340875097231, 0.949620665978916, 0.178952957378555, 0.64772556269482, 1.23386406372763, 0.165735797655784, 1.41738619423464, -0.158681409283877, 0.608866589974561, -0.184258488131604, 1.24011006536501, -0.214282747010715, 0.844409994913001, 0.608397229159685, 1.26844908258946, 0.180415098359512, 0.366202618839403, 0.275073906760392, 0.486517518356177, 0.708341006833988, 2.35899730119054, -0.583333396782725, 0.947334583617283, 0.745448886336065, 1.14958444145797, -0.274391510050036, 1.3813174538188, 0.901737792270213, 0.0237321085596219, 0.475057999930458, 0.311016795214694, -0.566685618050381, 0.726741580845455, -0.0836643979717242, 0.366085567879616, 0.172847867505908, 1.33379596524485, 0.617285630017835, -0.140271954853629, 0.552882405304142, -0.0529406629167753, 0.15175014393221, -0.0999275832953573, 0.065419524779044, 1.68489678149474, -0.571952811755867, 0.0586493949909668, 1.20163346579071, -0.217111002542468, 1.3003853269313, 1.36321165704063, 1.40409531673697, 0.727535333468902, 0.997423514267122, 0.538436360071229, 1.05258417411165, 0.337774315201168, 1.26321656857455, 0.0399396180469082, 0.16540354618659, 0.779244686158727, 1.04699173971015, 0.548327271026441, 1.11999005663659, 0.453834909705633, -0.455509771593597, 1.18616196796389, 0.0378850307624736, -0.137178158223785, 0.336888087377565, 0.155855717700714, 1.09175233867936, 0.739842123250185, -0.689994859401114, 0.513333361163558, 1.55699515339789, 1.07377712801824, 0.528249571834613, 0.990123274770723, -0.467638676662704, 0.3096606627012, 1.91333978736891, 2.46161448415038, -0.417607347458243, -0.255210117633984, 1.07346632819611, -0.321869017346391, 0.350996116886064, -0.32019542144765, 0.487505102799116, 0.986346968680038, 1.11327959081647, 2.23127277379205, -0.134705799681481, 0.608891201098285, 1.29383665911319, -0.553276413226833, 0.825997310761341, 0.550474652626336, -0.0688043162443631, 1.05981549549218, 0.538963013510974, 0.525051893156949, 1.32540379076221, 0.728099839237792, 0.208654330280895, 0.823784770105799, 1.49444297872966, 0.642934997240276, 0.0428813781816036, 1.29853125932506, 0.443003159132754, -0.165717467609409, 1.49715994109287, 0.929662529945369, 0.0258642143998106, 1.03324471520261, 1.93555372592149, 0.558940226621173, -0.53724442150881, 0.796172592616173, -0.108480715996158, 1.15379973377703, 0.185305984066051, 0.115606388685057, 0.835278449136012, 0.409209643555606, -0.0413691917283758, -0.0471915783739195, 0.212858466699285, 0.591667294987749, 0.778479819072902, 1.35946393514972, 0.956799556177685, 0.31674054943279, 1.16623628881068, 1.4133455382531, 1.04077966732003, 0.0872158496202415, 0.39627492002005, 0.883116395673358, -0.242303467249204, 1.05576699075679, 0.986940666844663, 0.390731583476168, 1.80591002095498, 0.125248778869824, 0.873188935190964, 0.579008385561777, -0.311772381730126, 1.24846729778668, -0.0175549563131666, 1.33409822957489, 0.474100090068249, -0.212998395317771, 0.519128668767193, 1.26071928980291, 0.826993795703696, -0.774722116776654, 2.12707335953694, 0.391225125551965, -0.605053180942425, 1.17658529790289, 0.0142776258073953, 0.261990962143992, 0.699529236879832, 1.30714799823996, -1.06827417333363, 0.0529644108601534, 0.693070939468194, 0.760894804614331, 0.350008136243087, 0.518995707490978, -0.139503952219082, 0.8801964668008, 0.166726938489641, 0.0808834835272768, 1.14987159169594, -0.313257606876381, 0.321448389465449, 0.824729136190425, 1.36117272934842, 1.41837196219515, 0.574000456263437, 1.0824165651515, 1.95354690648774, -0.548863109169129, -0.108962459138157, 0.163640781922479, -0.0215828639394271, 0.402186179187989, 0.691660931957393, 0.509886272655741, -0.574484093945584, 0.410335151177789, 0.216432824067583, 1.91709709643749, 0.173258199173235, 0.175911668437449, 0.640617155243485, -1.02095220441351, 0.161626828575407, 1.70980058600938, 0.627452980275054, 1.76595014604194, 0.720366186288299, -0.0251503329337585, 0.570016159935443, 0.0173711773910978, 0.00597288507822988, 1.38470201728478, 1.28736034691796, 0.561934190609911, -0.00562547182634787, 2.35608997177091, 0.957428400498588, 1.47034252056958, 1.023232847044, 0.0620727980855989, -0.0595185676921285, 0.146795932217879, 0.314125222443125, -0.0667426205779678, 0.485995277722216, -0.0449422025391, 1.0033929199643, 0.609121216746143, 0.603686149512179, 0.225161923202789, 0.467585359468046, -0.198560164777799, 0.801798736794811, 1.01635871839513, 0.318251816950818, 0.552469824193019, 0.296683305671682, 0.271209121713577, 1.16605361512605, 1.7113517187332, 0.784100551882252, 1.65386628432705, 0.687253290954599, 1.45015855906142, -0.446086116722128, 0.697757443960151, 0.313524656620872, 0.0709451894004866, 0.524815578431381, 0.954042047971471, 1.07421230080578, 1.44467945282066, 0.854823592578941, -0.0712531426664783, -0.538765450946422, 1.05677369373095, 0.54979690258008, 1.12058917580028, -0.106637344641912, 0.861162846772006, 1.29491349442305, 0.269899095689756, -0.0258367917573518, 1.24913943937174, 1.04240706772731, -0.152505360532454, 0.486565082566932, 0.280659941955439, 1.21899440910257, -0.320397186379199, 0.119263875673645, 0.672634634786179, 0.637286078981759, 0.488796628010192, 0.725578683827741, 1.54849935792167, 0.662551759638361, 0.273456199846094, 0.0172262076689312, 0.46113620441239, 0.409478218656255, 0.515013159761164, 0.927354105471204, 1.38187675760149, 0.0454790935818974, -0.503221758639868, 1.03934751787072, 0.0207427139688023, 0.679631368618024, 1.43714897409143, 0.286647788012901, 1.04745657230718, 0.0473637459532448, 0.290873957390822, 0.766061448004147, 0.0514248022270755, 0.405456449619727, -0.254009111364647, 2.08143174789362, 0.864565811839626, 0.217568755013233, -0.371244508265738, 2.85687593912146, 0.887384104889116, 0.114493482326593, 0.0944125817305217, -0.0180258286242743, 1.0710661003819, 0.362404721514719, 0.940036866381142, 0.673286102358352, 0.190818761291204, 1.68136981195977, 1.10374680752144, 1.88364650399366, 0.858044786193244, 0.927507773032267, 1.06329117712943, 0.508198662155751, 0.0246292846467939, 0.00823186582024929, 1.36395034773844, 1.07748686323526, 2.12919386033808, 0.320409913220801, 0.862945224036839, 0.832080756154828, 0.70610241876365, 1.13345522932007, 0.726953526239246, -0.548658521912585, 1.46943418294265, 1.42047193507779, 0.290245863770001, -1.35137546885781, 0.230120512100058, -0.0314672270946623, 0.609197224948372, 0.238674323337662, 0.2542243638094, 1.67470261485771, 1.20300935943712, 0.650158642534107, -0.250741901484752, -0.0706350391137668, 2.13313934759648, 0.10811100260927, 1.72734908243188, -0.0540269147190468, 0.435685752211693, -0.160963558225418, 0.552678230261836, -0.162046958710432, 0.72653641508036, 0.510598984378425, 1.16953639762432, -0.160611278526944, 0.237315863693153, 0.31538226519705, 1.28207201396985, -0.32189089322183, 1.03550046678408, 0.0842590802590284, 0.507833637055237, 0.830663116941314, 1.89163275456429, 0.181576286536391, -0.671344006947583, 0.490503270138842, 0.708454459537984, 0.12475712624574, 0.661027447069395, 0.687303217312853, 0.0370731507975496, 1.47519725634314, 0.28477939094122, 0.604085245466533, 0.158801487501232, 0.106441945376779, 0.670050906624345, 0.629707417413405, 0.98260395333275, 0.912845860229256, -0.541740281201688, -0.304189108288026, 0.267657216787388, 1.38427995582496, -0.261593962471368, 0.504903164197678, 0.612407875134403, 0.0807564702056933, -0.245242143876456, 0.267165124061774, 1.01138788214878, 0.717099008649273, 0.201200646123196, 0.499123869347658, -0.00502591283475795, 0.326230483752946, 1.08919456639622, 1.56951188848661, 0.612059340578881, 0.666065899715497, 0.168211360790177, 0.545073384809805, 0.617615720815278, 0.66457148339598, 1.41948305026932, 0.871632604224268, 1.42483746653532, 1.52079833847913, 0.998826684925275, -0.357034229698886, 0.432566715115041, 0.184080989941534, 1.22130724890766, 1.43767494471035, -0.116786006253771, 0.684855266037607, 0.0756775600342986, -0.245375336968985, 0.618338046688032, 0.237069978380789, -0.203396252262159, 0.788111608456127, -0.802602659476451, 0.861653536036688, 1.50345068267512, 0.76011532255785, 0.0561244369214916, 2.00241322497966, 0.331836075715703, 0.635586185433097, 0.949735836409267, -0.439319208887465, 0.734570703186828, 0.215404499856095, 1.6300280052487, 1.73125041543175, 0.79598867492143, 1.18446092556234, 0.784716464059988, 0.693316359889072, -0.059168208686135, -0.24828962999789, 0.203008964048995, -0.171820483981584, 0.464464884057128, 1.01485705511189, 1.73433710019858, 0.949492302450428, -0.403301216793233, 0.519975993094721, 0.649098430952967, 1.36438251399862, 1.66002162872815, 0.857309831742089, 0.900220816344347, 0.222200732722613, -0.507857482283777, 0.938817678135927, 0.719449516261421, 0.385197629056985, 0.429602186350175, -0.0130557544952418, 0.298756998441183, 0.512877545487912, 1.85813070012307, 0.750138028625509, 1.04297065628039, 0.0676773887731933, 0.680870795077257, 0.281634345463862, 0.264546616415184, 0.886215835901466, 0.432213496699024, 1.379011092818, 1.69160297068938, -0.107197108192009, 1.0281425829439, 1.18395427816233, 0.557784342300173, -0.0990807785287951, 1.38101391423395, -0.108435920983541, 0.102732814804934, 0.270389636370644, -0.575086499881751, 1.20467979510913, 0.953715675097571, -0.18554458875143, -0.0911262923956637, 1.20775212707775, -0.759830112439792, 0.176749615205905, 0.161518784630741, 1.26499982086649, 0.854905118218433, 0.315651182912942, 0.733294644524564, 0.656257622482223, 1.10796255137035, 1.44280903882041, 0.289619415576404, 0.938037897060918, -0.13985935274833, 0.659350825673373, 1.06758762440189, 1.18230210604974, 1.17452162804456, 1.31422416281428, 1.76840611839669, 0.296248241972319, -0.255432387101214, 0.919923922530829, 0.846259146125511, -0.156379626228344, 0.8486604502852, 0.822359323731726, 0.299785174657936, -0.039639573533174, 2.09617733378159, 0.88946801014941, 0.425347256355993, 0.51480200193891, 0.14978481922685, 0.202216444358347, -0.603612915922895, -0.929205605253287, 0.449646238777166, 1.84157281845832, 0.160695871818185, 1.18417866834607, 1.12466840588537, 0.529477092462227, 1.59861302917112, 0.0624659117677143, -0.766910139012373, 1.30978944569261, 0.492451763763004, -0.675353702456258, -0.127911501810199, 0.992344885897783, -0.344263097244252, 0.459866094635894, 1.08547784869945, 0.0032271948730252, 1.35644862589439, 1.10650755275871, -0.102137293117517, 0.482687895803364, 1.29637076072404, -0.346988120371403, 0.134790017150169, 0.943894330223708, -0.402435254081567, 0.479070554022023, 0.0700052791125026, 0.953756425779041, 0.824537593488886, 0.949482570569085, 0.868295275258454, -0.210085558061923, 0.454823270278694, 0.286617275162563, 1.4399612794595, 0.995847446114892, -0.0386503393290432, 0.0334136857319961, 0.747113509295024, -0.591263278577125, 1.99320944222009, 0.884696005065082, -0.823271121851754, -0.0359861896192483, 0.238344195976855, -0.344131668906809, 1.25360209636853, 0.645002636750796, 0.429335125458985, 0.28179879997014, -1.05258712675281, 1.07511633079147, -0.281193282368063, 0.425832306089314, -0.440724086240407, 0.547036266657545, 1.12971204168953, 1.84012929784812, 1.4409199922649, 1.37196748176388, 1.4105410461572, 0.275366622109137, -0.358676261378877, 0.84604086807115, 0.6265605220695, 0.740883828944238, 0.123596784871666, 0.407367632260141, 1.24975990647589, 0.30132449889674, 1.40685882536867, 0.480445199476129, -0.612134312295804, 0.817870546863555, 0.592583498986924, 0.21745042160984, 0.0852272267766738, 0.908594221564181, 0.614328556088447, 0.495869275761801, -0.00582627156365967, 1.5282884555497, 0.927504179822084, 0.969105709494821, 0.889001809579787, 0.0720622674704336, 1.56908808982802, 0.54809935375217, -0.525520678450354, 0.0975870532009221, -0.0734944510458062, 0.00353417596277084, 0.701338559967317, -0.140070600806782, 0.921747383124346, 0.403116929990367, 1.60629160245495, 0.27778905913947, 0.276650648469257, 0.922700836741345, 0.99901531112242, 0.735464575189932, -0.171930555928522, 1.43517708959535, 0.490572292759172, 1.28095476414943, 0.853534976378778, 0.558602778155584, 2.01208612170754, 0.769149272392544, 0.500784676796906, 0.0246945932424067, -0.757413144110584, 0.264027031563623, 1.23208277195811, -0.403016049927686, 0.973466613923028, 0.458673170538465, 0.169860933380922, 1.21223856699219, -0.0960379096991411, 1.39021219899342, 0.457531921932186, 0.915147197569846, 0.0387405591476708, 0.0827580809621141, 0.485824249936528, 0.417007681966613, 0.775400237256002, -0.253714931773374, 0.482354793147539, 0.448345053650504, 0.580283025698266, 1.42973620165975, 1.3780840259374, 0.577596247238332, 0.905565252668081, 0.729852181710206, 0.291795701696705, 0.192930110452704, -0.0766579516001368, 1.32813339102863, 1.36391264400295, -0.535733900474297, -0.350970266205838, -0.732730740257958, 1.04956214827793, -0.0248310163442478, 0.0937736561837124, -0.142499018929899, 1.09334810928428, 0.520143913650091, 1.49173653399288, 1.09078096710133, 0.115462941309698, -1.02321365797867, -0.691027992623229, -0.0472608563199465, 0.48336838135218, 0.459499542950177, 1.25459906823246, 0.0749506719329561, 1.29114647548357, 0.489162731518297, 1.61275370298329, -0.810634036638801, 0.692114925332461, -0.635493543976153, 0.897429837228428, 0.259646783780583, 1.12037134361815, 1.42776580537603, 0.409010440277279, -0.120061746150651, 0.208527900051853, 0.451412820998386, 0.885276885279832, 0.543466079832567, 0.544527553709475, 1.84683441862526, 0.668810770189856, 1.8494181043671, 1.01967883232099, 0.492527737636388, 0.385259666913159, 0.360648663903621, 0.829287161290807, 0.479205269118615, 0.580745616730503, -0.153930364996703, 0.0127769177220682, 1.70589455669128, 0.570421352687248, 0.88196787593826, 0.616489735242757, 0.722737455147201, 0.546145616756484, -0.0683958066449279, 1.88196562075765, 1.05626607255927, 0.743128542325178, 1.05568362915976, 2.02398057206381, -0.21752428286891, -1.28147758621769, 0.322811366196708, 1.06259472540841, 1.22455819183389, 0.670538797309779, 1.78232305588922, 0.038953521660484, 1.17744252292429, 0.967858033699745, 0.724218183723701, -0.361530559853556, 1.02567712206113, 1.34658942333379, -0.205229662824007, 1.06370271868253, 0.985080688137926, 0.0516799763002732, 1.43472615462063, 0.582162156962545, -0.0932884180319524, 1.45548965985623, 1.72863942947475, 0.542048627747977, 0.44967712040114, -0.0556078905332228, 1.51359363076418, 0.0778420661409788, 0.0373989861341711, 0.165522221479662, 0.244260384451388, -0.934308818647128, 1.22258510603193, 0.358060979009278, 0.0572937368618398, 2.02714355477187, 1.16397991585358, 0.102513124906414, 0.806040681301549, 0.223205570638838, -0.36021510508646, -0.0376115036566323, 0.529218677571835, -0.448227356544161, 1.20222160250675, 0.406366670454271, 0.623495905224344, -0.438408112989804, -0.252735614971419, 1.18719684984946, 0.110863537908404, 0.929523537487961, 0.470875755998596, 1.33727384921693, 1.1273934590146, 0.321088891353542, 0.959435245221035, -0.1711949380965, 1.05402620604763, 0.484918344268155, 0.672517158577174, -0.163535644072722, 1.52465243685083, 1.47568489730879, -0.292551592344278, 0.149780434935014, -0.293784319370881, 0.355875165521928, 0.794618350421689, -0.360535783998336, -0.042321137678257, 1.28647684276312, -0.560214358091377, 1.17580477763732, -0.12607613442255, 0.957754963852015, 0.35912534276018, 0.917411527596088, 1.15187872195456, 0.937342801829547, 0.153973108589415, -0.155205746253268, -0.0731961760391147, 0.356282058672927, -0.394606432224902, 0.492921669150072, 1.1091222016551, 0.0488152875789736, 1.41385383204533, 0.645405980512531, 0.708110802580926, 0.0261935596582212, 0.333727541092608, 0.810996785995662, 0.055027989711199, 0.124214954270998, 0.586440471319881, 0.776051364462826, 0.379474012364263, 1.73782198504122, 0.155127131585129, 0.00879283268642184, 0.204841493241246, 0.216461414166408, 1.05623279368447, -0.245071010209809, -0.0255640274076345, 0.866084128872341, 0.537569332911243, -0.607976245218767, 0.461279854698954, 0.765052627213658, 0.385367901619151, 1.31271465096192, 1.23384859066538, 0.451667698073028, 1.15647922728464, 0.301412738908554, 1.13786685597791, 0.72745268152744, -0.155305199340991, 0.0816048905769064, 0.950794067214558, 0.787516407829744, 0.670548711900367, 0.304217245511727, 0.24188750310265, 0.981869261988236, 0.96945669971994, 0.820262312711816, 0.427527243060922, 1.29157300306964, 0.527751224465638, 1.83600280280492, 1.62291740157181, 0.467103371814904, -0.397451791994512, 0.865983487285116, 0.943414636000923, 0.577803153264823, 0.218124952122844, -0.224613554255886, 0.0533731269101684, 0.548871688550805, 0.622742467508845, -0.123030842124888, 0.560744568193681, 0.27107133175749, 0.708393578637464, 1.00111764533793, 0.155706390282714, -0.112766542943756, 0.0290588070549097, 1.80034312720024, 0.795477768657092, 0.370157040200301, 1.07349940483904, 0.316359087321501, 0.269465366563691, 0.211964911068717, 1.3215918025778, -0.0384908210129173, 1.03413706911602, 0.753424865453445, 0.743533564296333, -0.419598033708736, 0.676462790238385, -0.480319551674586, 1.03659605436021, 0.0749568065166846, 0.413811489390386, 2.28800722795756, 0.362063774015845, 0.92035588950488, 1.49227053373357, -0.3532048057131, 1.24120768790591, 0.386277030870038, 2.0991290253557, 0.809939433992823, 0.121416341868771, 0.684100744696431, -0.137221492507405, 0.155367490838422, 1.5310076308889, 0.918663634911973, 0.358142206646232, 0.0597234331291891, 0.510845641390325, 1.33521374553516, 0.646284973693199, 0.927430820118009, 0.202587468825603, 0.496469860121873, 0.802109556194275, 0.273336355248158, 0.667110803686161, 0.558996444209418, 0.494044556102876, 1.09393037672153, 0.102728439862747, 1.17886356518138, -0.0118461920670811, 1.15672529735674, -0.436070443869514, 1.10018913598016, 2.52561355072254, 1.52204780403928, 0.265571398070781, 1.58598119284164, 1.17138654022637, 0.414480305875871, 1.00822330203887, 1.01733366366738, 0.544566885910581, 0.0898031702920165, 1.10612024020862, 0.812395866927109, 0.519274457065025, 0.0125700073894511, 1.21933727161167, 0.567642516027979, 1.11597646078422, 0.644393682784876, 1.4575081270882, 0.417786262420858, 0.617339610223641, 0.641685851843807, -0.397060462272351, 0.247057345612289, 0.885043476584408, 0.488738949776224, -0.185182190761011, -0.116310025648806, 0.569384261947777, -0.198303929335139, 0.289241975329286, -0.0434940345105195, -0.574695989520427, 0.607854415506791, 0.983198165220346, -0.232740005905354, 0.756816906862515, 1.20107090609397, 2.35734019724646, 1.18797492892227, -0.471807005903172, -0.179627022887246, 1.70481398710819, 0.268655102142039, 0.581495714537663, 1.63407474074799, 0.565216076593786, 1.44925682037684, 0.459499131745653, 0.405674900247548, 0.307014559509683, 0.297360759342169, 0.626173667784133, 0.584818479804401, 0.355592613626884, 0.962730914009798, 0.0313048672167063, 0.864635516579537, 1.24490943511445, 0.545942677836082, 1.00101220157036, 1.14649729597412, 0.305105787246747, -0.0753619758082733, 0.0825448192806064, -0.0572266343516716, -0.10576716890612, -0.493691381680668, 0.66268312104477, 0.0992365372212284, -0.258462992885946, -0.701692044880585, 0.699573728330733, -0.668899716546432, 0.367560273077134, 0.414663224623498, 0.1029457918501, 0.222031273456361, 0.219414750153561, 0.215514062794718, 0.477429098118046, 0.655717209072141, 0.801601203561653, 0.853212483419881, -1.05787351036959, -0.790239945972905, 0.371659468392946, 0.911127412681105, 0.255354919942037, 0.177505700843542, 1.14530494384325, 0.80893190256668, 0.195138824910052, 1.50645113380467, 0.731495864945851, 0.390048690579322, 1.52555447576581, -0.00740441013721488, 0.15344601956687, 1.03389454999116, 0.674607954260698, 1.18182089330537, 1.50558989095196, -0.394928126879204, 0.808621385384674, 0.434095516166559, 0.60091728893376, 0.275869349807884, 0.646387326037847, -0.318445526119004, 1.36327140164352, 0.806179875115792, 0.843526295209666, 1.02155944180854, 0.403735196419041, 0.228862871603363, -0.142907842575466, 0.876550217085355, 1.66431462038886, 0.401674056833474, 1.21268249660085, 0.103219435218595, 1.01649196427033, 0.641503397292566, 0.390434621991192, 0.870258952665705, 1.58229589813295, -0.0439515134608712, 1.87230028179812, 0.303597573659207, 1.40213473318793, 1.05362354549651, 1.43717435606451, 0.944220610707289, 0.900919578072429, 0.404869356354365, 0.718007457008776, 1.08568550161182, -0.318997345733909, 0.808850211203908, -0.188442556527634, 0.480662187065891, 0.0347934930283641, 0.225895841093074, -0.328909880555408, 0.418543401927807, 1.24745572456314, -0.232475448083065, 0.132680197328815, 0.575804641422204, 0.176673486495496, 0.428383847271237, 1.04340051952629, -0.349047075908864, 1.36581150661901, 0.541409240466045, -0.267010125758659, 0.0756835395891519, -0.183068398788886, 1.04787787075847, 1.20587379733717, -0.0918172855396635, 0.729105262528003, 0.190104008756586, 1.39494675882353, 0.990374514017912, 0.746221967003654, 0.0351214850337938, 0.885919905429955, 0.917527310888862, -0.0148176062950757, 0.746371754403377, 2.05673863657624, 1.2528964640404, 1.59704095711802, 0.621209981584557, -0.263006890763479, 0.779917226054048, 0.600867583282841, 0.637119145980485, 1.16141471655501, 1.11608733506957, 1.32386464952351, -0.152974883954024, 0.946973699761258, 0.395935644775727, 0.512398412710542, 0.431863856093167, 0.810236442150173, 1.29936267880581, 0.837059903716343, 0.887629190008337, 0.437273800725551, 1.95707051221205, 0.885488559369918, 0.343776886138168, 0.64245937741061, 0.953710788450579, 0.825390008420843, 0.31274252212029, 0.26514214794117, 0.0993605908478351, 1.04179842311824, -0.432173707621493, 1.4798793720755, 1.07916466718412, 1.11322642839384, -0.399915990976488, 1.05305019103454, 1.03405465715673, 0.620880118769055, 1.19178822289114, 1.27153924685829, 1.54588640551665, 1.86595066999491, 0.515288513863776, -0.108338776735739, 0.0134633604280337, 0.808950389126432, -0.182400034132375, 0.747675165136505, 0.225669857151053, 1.00005908124547, 0.518571955278697, -1.11197489868034, -0.180324797335735, 0.821394397909498, 1.16613818805918, 1.04339083947578, 0.642586526522501, 1.94840369369789, 2.84497023818759, 0.0536764752512024, 0.176354820200683, 0.886328096694181, -0.768979039656579, -0.119207606192304, 2.01190759008583, 0.793123618726456, 1.97996045192593, 1.89077965395285, -0.00579286043100852, 0.821645133742183, 2.06696523446962, 0.282613021013426, 1.57576604306794, 0.702695042385209, 1.6973502608857, 1.39113838810038, 0.984359370987872, 1.07827918585116, 0.703651284192336, 0.739813503657119, 0.328781330741509, 1.05553827055125, -0.210066408947847, 1.37894832522559, 0.197875407747717, -0.0930999486083408, 0.408323816594121, 0.676980060535548, 0.502794121013055, -0.15526375285583, -0.175138857058243, -0.336511898236793, 0.384913313430159, 1.17428110223707, 0.146195590723112, -0.145576815627138, 1.08093994482638, -0.139987024423379, -0.379080591919198, 1.24526921080624, 0.473753110969344, -0.18189820921206, 0.837155581138771, 0.996409521685046, 0.462788805200363, 0.333557606261732, 1.16621363536499, 2.04152176495396, 1.62610236362898, 0.292828987181071, 0.742965508397561, 0.62189953834437, 0.137561895565361, 0.500767685587353, 1.241964610936, 1.47578256240369, 0.933205364610332, 0.285598376374189, 0.6412525888971, 1.65573679562665, 1.54673121603092, 1.03384500635375, 1.01046090554333, 1.71160621887121, 1.89681910746117, 0.569210570026883, 0.422479704302392, -0.389980442674417, -0.275537166017101, 0.0221509776616333, 0.776848881556495, 0.224242975821559, 1.28916564806309, 0.847283792574424, 0.343252719625899, 1.74062676859585, 1.00057137750164, 1.00017913300897, -0.817625171406632, 1.24920845921163, 0.473554403574509, 0.598299050853691, -0.165696082240687, -0.0867472524211224, 2.09369975511609, 0.429814434439927, -0.0792039990767941, 1.06593635392282, -0.261373068322558, 0.595016860544809, 1.56409490825924, 1.24994334881995, -0.325995104186137, 0.587238594088265, -0.115051049013692, 1.33180705625656, -0.0517995815676748, 1.23583165526481, 0.184844918760449, -0.200704206166572, 0.752101838244232, 1.10833155894883, 1.72387528466977, 0.837404094381837, 0.135407816712932, 1.63587160314114, 0.995919448125732, 0.295372764179469, -0.227686827669086, 0.33580860920611, 0.198400456546091, -0.0542115922453425, 0.434365111691899, 0.929682198445975, 1.0940956750014, 0.0597513042366162, 1.48773110669547, 0.809983724896435, 0.515436681718215, 0.451413884831619, 0.422183832515793, 0.112200463846852, 0.334673838608217, -0.545297151550671, 0.0818671217735595, 1.11363004732215, 1.62243945343234, 0.616774520875608, 0.575588417473845, -0.039651401999448, -0.227921753055529, 0.489909514444899, -0.205932305750997, 0.0533297035142931, 1.16188836580359, 0.42090191471371, 2.0842990545377, 0.35387839478113, 0.398996334085897, 0.944662905908394, 0.873233220999589, -0.220038936598731, 1.10508778174163, 0.996708760949319, 0.773482315263034, -0.608649932289872, 1.01515090681015, 1.06336248037723, 0.740291851652935, 0.62233634518664, 0.11791442134966, 1.02952518310504, 0.357442915565603, 0.0942036944161815, 0.678279369772404, 0.453802955982785, 1.94551387463712, -0.350181227584648, -0.633344575478288, 0.924583926853749, 0.714486041583057, 0.490004638850079, 0.582361790859027, 1.15876724856749, 1.1587620628931, -0.118227772248285, 0.587124412697027, -0.85866754995948, 0.747587986969044, -0.280285142360189, 0.127610121611781, 0.841007631068992, 0.169410252465022, 1.91143270543288, 0.246303458801864, 0.0328273159758261, 0.393652088519419, 0.497509103435132, 1.3219709838303, 0.535945467340757, -0.113073664849127, 1.62346480594106, 1.08460683970867, 0.803965362005555, 0.467488722091726, 0.92466394132617, 1.22062770871577, 0.231138814458017, 1.43612405030596, 0.104785710702571, 1.33267445245405, 0.878433346164878, 1.75143884925832, 0.400721050391, 1.04775069336176, 1.07968461741534, 1.03763134751944, 1.20621262434734, -0.493479743571578, 0.794986335796116, -0.472988326190429, 0.821139871035964, 0.00765246230628802, 0.744509600424102, 0.146138182001716, 1.70969454376705, -0.260330361176064, 0.723081120845974, -0.174445745764254, 0.029836477686225, 1.58335610484854, -0.336596082489393, 0.322752496090111, 0.128211523419086, 0.253563612694943, 1.12877324926699, 1.26605240103352, 0.456120776653084, 1.36555010330157, 0.845392882863438, 0.462572613928342, 0.614385030393658, -0.0113451188789521, 1.52565220457281, -0.894701245906838, 0.500576886312412, 0.314240853843359, 0.155855502439752, 0.332735863707122, 0.044875372607105, 0.9426536044488, 0.550124136335753, -0.223541033484956, 0.289423278156373, -0.706842241239407, 0.688040608460384, 1.12447034990507, -0.198090761036756, 0.554961635767261, 1.80341827512725, 0.147932208697006, -0.184345424850946, 1.69775961067991, 0.485984278334081, 0.228838425203804, 1.71000461973591, 0.728317341234109, 0.0131363561679143, 1.34428331918288, 0.321367932394047, 0.636741551554976, 1.17500425485988, 0.775968394532587, 1.92140281819539, 0.058004436849117, -0.246523483512883, -0.712824760580022, -0.362108792140441, 1.25640639372513, -0.127079655377787, 1.03439984401259, 0.117549626637212, 0.707531264763501, 0.313906076452269, 1.11355953752464, 0.549198982650768, 0.815174352324556, 0.118384839906952, -0.0550135882111343, 0.53538500161965, -0.0522351724431738, 0.618847311426058, 1.09105801703426, -0.57348887441217, 1.72321648133601, 1.20917421000129, 0.8286912661464, 0.776862548878601, 1.31134403190368, 1.00251333485021, 1.14349586529461, 1.77321083977427, 1.48698864208268, 0.759429742720422, 1.31488018392775, 1.52833775331933, 0.510898787159918, 0.556477841043698, 1.31155532615291, 0.333855245954413, 1.16433079478026, 1.15342732151666, 0.317526607577919, -0.0267123322548645, 0.047901945347597, -0.568756123876889, 0.819440781925469, 0.851729685392414, 0.743964862947866, -0.231131970414776, 0.673539135801717, -0.0498077436988574, -0.267144366667032, -0.711568197024222, 1.28733190080408, -0.308597361422716, 0.574835808212567, 1.33266753627612, 0.393669917932491, -0.118057065877938, 0.189219476396549, 0.158032290349838, 1.04710460691499, 0.837016511567304, 0.610952305613426, 0.431190291887235, 0.333301301142444, -0.00545518098307496, 1.82723215572612, 0.540175428534927, 0.431151149936412, 0.962251209271992, 0.948877724820977, 1.58123140661479, 1.37081858385303, 1.32291507349691, 1.73211525692024, -0.0697318211996769, -0.454903988153249, 0.299961672955422, 1.67550726845811, -0.218163725245419, -0.181026123930157, 0.525800250673161, 0.650406621705085, 1.05729639899367, 0.769783118815795, 0.268537222996038, 0.742333089555839, 0.454580671800194, 0.693017673201837, -0.29563330680463, -0.926392170450187, 0.205122640136193, -0.46986533137685, 0.51758422791186, -0.308438775890596, -0.19618302604324, -0.00733334988504197, 1.20155878285942, 0.93349896532914, 1.45302939858562, -0.495669108549072, 0.449182145691271, 0.183521877973075, 1.00512696064022, 0.254554655211125, 1.1128629880196, 0.815452870727518, 0.611857286252187, 1.27225040884606, 2.01209024873248, 0.230987666442843, 0.0589191382995423, 0.317323053216434, 0.779145806175688, 0.516815639632055, 0.544585556498209, 0.450538899844928, 1.44300191689459, 1.14995777453729, 0.566791015434693, 0.264782938103848, 0.660693962283614, 0.560859784218618, 1.09373705969673, 0.681412644983159, 0.559998222190324, 0.909130052928156, 1.02174568442372, 0.38495785924811, -0.495286130461929, 0.661310152632827, 0.479837210956365, 0.862504682302447, 0.582891124230526, 0.503059286038048, 1.6177952770734, 1.24185106276014, 1.15176481585543, -0.246699355850209, 1.22604971981097, 0.0272718175006641, 0.126662960658543, -0.0331852020630667, -0.766765674289124, 0.994950961034, 1.5413288434578, 0.264685497766897, 1.68101603797511, -0.0120411937735755, 0.659978046087873, 0.0158557750578996, 0.927308547835992, 0.721648997790048, 0.0123965772901441, 1.80269787150482, 1.59835840572723, 0.222788761963925, -0.0125226376786925, -0.134267020730879, 0.359163047039327, 0.391087582644699, 0.700530987860741, -0.721693663398294, -0.466344321546338, 1.19576813599644, 0.0770446894025383, -0.0582796803900617, 0.136655330902354, 0.512602817792141, -0.251077580798784, 1.21519746238144, 0.456465294465972, 0.194806782259385, -0.171587864574173, 0.510183476659908, 0.88012328550031, 0.875560277503005, 0.712013946730311, 1.74043162151525, 1.57251568822287, -0.294054193252319, 0.963722055893516, 0.517530349395015, 1.85577096427782, 1.0535221259179, 1.37738547141423, 0.632467753876355, 1.39817050103741, 1.08479219560051, 1.28824975930743, 0.687907989631766, 0.631780258478429, 0.554580492261919, 1.07476387324498, 0.934169608943511, 0.207022000962658, 0.853481010800033, 0.452371488150482, 0.662265084590873, 0.267315874472321, -0.142767336609378, 0.219274152046202, 0.913490937061911, 0.817212367993934, 0.881967827053636, 1.08726144329838, 0.88326692056238, 0.97933020486456, 0.870441794726809, 0.0236679288567008, 1.4883417333234, 0.443992150942496, 1.21388596662803, 0.110459969409559, 1.7559110483674, 0.0844064135165956, 0.42344963905262, 0.348019668847476, 1.15612257995029, 1.42007162750251, 0.38954702210786, 0.670565384538732, 0.277106978817186, 0.695782425053551, 0.327275170457179, 0.506434435477034, 0.767461850849952, 0.19165387525051, 0.815859037453525, 0.174946366501467, 0.389921232837122, 1.90736112869816, 0.105840923465634, 0.821173950083154, -0.192034586006937, 0.950391715005211, 0.315165549632643, -0.369510218928515, 0.5083455071336, 0.26483003192519, 0.395509035399422, -0.0137420157742683, 1.17851096866813, 0.38490756245539, 1.30604840862513, 0.619053304917158, 1.31871077817868, 0.440300070346841, -0.444670228100312, 1.19453176677785, 0.393416212680385, 0.0357903413760596, -0.39321328693598, -0.799194911500912, 1.37144601006414, 1.43433731120853, -0.0527611619936224, 0.586474593017689, -0.360182949481435, 1.41207609884511, 0.7591186608694, 0.526696807466523, 0.722144511399929, -0.843505279457182, -0.141772943216177, 1.36174388680607, 0.756685357657174, 2.31511158640755, 0.339926852690354, 0.990309793564212, 0.241890806806442, 0.453810547574544, 0.828394457153557, 1.16700004964587, 0.749697083833512, 0.848492626768534, 1.06674429022048, 1.24638671031143, -0.0962910197164503, -0.380601523097779, 0.271939351432164, -0.0505051163673298, -0.167087666686016, 0.882139358862972, 1.12978334068642, 1.46971850298463, 0.229878142226036, 0.826094385324799, 0.4439951595996, -0.706412057084625, 0.43599275239653, 0.922982547381903, 0.804487102036967, 0.344216687654569, 0.898545383749414, 0.776663899563578, -0.0565662048359099, -1.39119303915688, 0.24538581486386, -0.969357666947855, 0.773960381944239, 1.0552694533684, 0.0780695616349825], + "eval_point_override": 0.200065826624632, + "kernel": "epa", + "vce": "nn", + "description": "Uniform(0.2, 1.0), Design 1 boundary = d.min()", + "eval_point": 0.200065826624632, + "h": 0.229467816034591, + "b": 0.229467816034591, + "n_used": 616, + "tau_cl": -0.00488236513440486, + "tau_bc": -0.000516751312178704, + "se_cl": 0.0389186990376008, + "se_rb": 0.0611240163998688, + "ci_low": -0.120317622046357, + "ci_high": 0.119284119422, + "alpha": 0.05, + "z": 1.95996398454005 + } +} diff --git a/diff_diff/__init__.py b/diff_diff/__init__.py index 8145f1da..0859335f 100644 --- a/diff_diff/__init__.py +++ b/diff_diff/__init__.py @@ -46,7 +46,9 @@ from diff_diff.local_linear import ( KERNELS, BandwidthResult, + BiasCorrectedFit, LocalLinearFit, + bias_corrected_local_linear, epanechnikov_kernel, kernel_moments, local_linear_fit, @@ -427,6 +429,9 @@ # MSE-optimal bandwidth selector (Phase 1b for HeterogeneousAdoptionDiD) "BandwidthResult", "mse_optimal_bandwidth", + # Bias-corrected local-linear (Phase 1c for HeterogeneousAdoptionDiD) + "BiasCorrectedFit", + "bias_corrected_local_linear", # Datasets "load_card_krueger", "load_castle_doctrine", diff --git a/diff_diff/_nprobust_port.py b/diff_diff/_nprobust_port.py index 5f519ab7..6712c500 100644 --- a/diff_diff/_nprobust_port.py +++ b/diff_diff/_nprobust_port.py @@ -55,6 +55,7 @@ from __future__ import annotations +import math from dataclasses import dataclass from typing import Optional @@ -66,11 +67,13 @@ "NPROBUST_VERSION", "NPROBUST_SHA", "LprobustBwResult", + "LprobustResult", "kernel_W", "qrXXinv", "lprobust_res", "lprobust_vce", "lprobust_bw", + "lprobust", "lpbwselect_mse_dpi", ] @@ -921,3 +924,361 @@ def _fun(H: float) -> float: stage_b=C_b, stage_h=C_h, ) + + +# ============================================================================= +# lprobust single-eval-point path (lprobust.R:177-248) — Phase 1c +# ============================================================================= +# +# Port of the body of nprobust::lprobust's per-eval-point loop iteration from +# lprobust.R (version pinned by NPROBUST_VERSION / NPROBUST_SHA above). The +# single-eval path produces the classical (no bias correction) and Calonico- +# Cattaneo-Titiunik (2014) bias-corrected point estimates plus their naive +# and robust standard errors. The multi-eval grid and the covgrid=TRUE +# cross-covariance branch (lprobust.R:253-378) are intentionally out of scope +# for Phase 1c. +# +# Active-window rule (lprobust.R:181-182, single-eval only): ``ind = ind.b`` +# by default, overwritten to ``ind.h`` only when ``h > b``. This is a +# CONDITIONAL REPLACEMENT, not a union. The union ``ind.h | ind.b`` is only +# used in the covgrid branch. + + +@dataclass +class LprobustResult: + """Single-eval-point result of ``lprobust`` (CCT 2014 bias correction). + + Mirrors the per-eval-point row of nprobust's ``Estimate`` matrix + (lprobust.R:163-164, 248) plus the full intermediate ``(p+1)x(p+1)`` + variance matrices (kept so Phase 2 diagnostics can inspect them). + + Attributes + ---------- + eval_point : float + Evaluation point (``c`` in nprobust's notation; the boundary in HAD). + h, b : float + Main and bias-correction bandwidths as actually used after the + ``bwcheck`` clip (never below the ``bwcheck``-nearest-neighbor floor). + n_used : int + Observations in the SELECTED single kernel window (line 181-182 of + lprobust.R): ``sum(ind.b)`` when ``h <= b`` and ``sum(ind.h)`` when + ``h > b``. With ``rho=1`` default (``h == b``), the two windows + coincide. + tau_cl : float + Classical point estimate ``factorial(deriv) * beta.p[deriv+1]`` + (lprobust.R:226). + tau_bc : float + Bias-corrected point estimate ``factorial(deriv) * + beta.bc[deriv+1]`` (lprobust.R:227), equal to ``mu_hat + M_hat`` in + the Equation 8 notation of de Chaisemartin et al. (2026). + se_cl : float + Naive plug-in standard error ``sqrt(factorial(deriv)^2 * + V.Y.cl[deriv+1, deriv+1])`` (lprobust.R:245). + se_rb : float + Robust standard error under the CCT (2014) bias-corrected + asymptotics ``sqrt(factorial(deriv)^2 * V.Y.bc[deriv+1, deriv+1])`` + (lprobust.R:246). + V_Y_cl, V_Y_bc : np.ndarray, shape (p+1, p+1) + Full classical and robust variance matrices. CI bounds are not + produced here; the public wrapper ``bias_corrected_local_linear`` + adds ``ci_low``/``ci_high`` from ``tau.bc +/- z_{1-alpha/2} * se.rb``. + """ + + eval_point: float + h: float + b: float + n_used: int + tau_cl: float + tau_bc: float + se_cl: float + se_rb: float + V_Y_cl: np.ndarray + V_Y_bc: np.ndarray + + +def lprobust( + y: np.ndarray, + x: np.ndarray, + eval_point: float, + h: float, + b: float, + p: int = 1, + q: Optional[int] = None, + deriv: int = 0, + kernel: str = "epa", + vce: str = "nn", + cluster: Optional[np.ndarray] = None, + nnmatch: int = 3, + bwcheck: Optional[int] = 21, +) -> LprobustResult: + """Local-polynomial point estimate with CCT (2014) bias correction. + + Single-eval port of ``nprobust::lprobust`` (lprobust.R:177-246) from + ``nprobust`` version ``NPROBUST_VERSION`` (SHA ``NPROBUST_SHA``). + Produces both the classical and bias-corrected point estimates along + with their naive and robust standard errors. + + Computation (source-mapped to lprobust.R:177-246): + + w.h = kernel_W((x - eval_point) / h, kernel) / h # line 177 + w.b = kernel_W((x - eval_point) / b, kernel) / b # line 178 + ind.h = w.h > 0; ind.b = w.b > 0 # line 179 + ind = ind.b # line 181 (default) + if h > b: ind = ind.h # line 182 (conditional + # replacement, NOT union) + eN = sum(ind); eY = y[ind]; eX = x[ind] # line 189-191 + W.h = w.h[ind]; W.b = w.b[ind] # line 192-193 + u_h = (eX - eval_point) / h # line 212 + R.q[:, j] = (eX - eval_point)^j, j = 0..q # line 213-214 + R.p = R.q[:, :p+1] # line 215 + L = (R.p * W.h).T @ u_h^(p+1) # line 218 + invG.q = qrXXinv(sqrt(W.b) * R.q) # line 219 + invG.p = qrXXinv(sqrt(W.h) * R.p) # line 220 + e_{p+2}: unit vector with 1 at position p+2 # line 221 (1-indexed) + Q.q = (R.p * W.h) - h^(p+1) * L @ e_{p+2}.T + @ (invG.q @ R.q.T * W.b).T # line 223 (eN, p+1) + beta.p = invG.p @ (R.p * W.h).T @ eY # line 224 + beta.bc = invG.p @ Q.q.T @ eY # line 224 + tau.cl = deriv! * beta.p[deriv+1] # line 226 + tau.bc = deriv! * beta.bc[deriv+1] # line 227 + res.h = lprobust_res(..., j=p+1, vce=vce) # line 239 + res.b = res.h if vce=="nn" else + lprobust_res(..., j=q+1) # line 240-241 + V.Y.cl = invG.p @ lprobust_vce(R.p*W.h, res.h, eC) @ invG.p # line 243 + V.Y.bc = invG.p @ lprobust_vce(Q.q, res.b, eC) @ invG.p # line 244 + se.cl = sqrt(deriv!^2 * V.Y.cl[deriv+1, deriv+1]) # line 245 + se.rb = sqrt(deriv!^2 * V.Y.bc[deriv+1, deriv+1]) # line 246 + + Parameters + ---------- + y, x : np.ndarray, shape (N,) + Outcome and regressor. + eval_point : float + Evaluation point ``c``. + h, b : float + Main and bias-correction bandwidths. Must both be positive. + With nprobust's ``rho=1`` default, the caller passes ``h == b``. + p : int, default=1 + Main polynomial order. + q : int or None, default=None + Bias-correction polynomial order. ``None`` resolves to ``p + 1``. + deriv : int, default=0 + Derivative order to estimate. Must satisfy ``deriv <= p``. + kernel : {"epa", "uni", "tri", "gau"}, default="epa" + vce : {"nn", "hc0", "hc1", "hc2", "hc3"}, default="nn" + cluster : np.ndarray or None + Per-observation cluster IDs for cluster-robust variance. Length + must match ``x``. ``None`` for unclustered. + nnmatch : int, default=3 + Number of nearest neighbors for ``vce="nn"`` residuals. + bwcheck : int or None, default=21 + Floor ``h`` and ``b`` at the distance to the ``bwcheck``-th nearest + neighbor of ``eval_point``. Matches nprobust's default. + + Returns + ------- + LprobustResult + + Raises + ------ + ValueError + On shape mismatch, empty/non-finite inputs, unknown ``kernel``/ + ``vce``, ``deriv > p``, or a rank-deficient design (surfaced from + ``qrXXinv``). + """ + # --- input coercion + validation --- + if kernel not in _VALID_KERNELS: + raise ValueError(f"Unknown kernel {kernel!r}. Expected one of {_VALID_KERNELS}.") + if vce not in _VALID_VCE: + raise ValueError(f"Unknown vce {vce!r}. Expected one of {_VALID_VCE}.") + if p < 0 or deriv < 0 or nnmatch <= 0: + raise ValueError("p, deriv, nnmatch must be nonneg integers; nnmatch > 0.") + if deriv > p: + raise ValueError(f"deriv ({deriv}) cannot exceed p ({p}).") + if q is None: + q = p + 1 + if q < p: + raise ValueError(f"q ({q}) cannot be less than p ({p}).") + if not (np.isfinite(h) and h > 0): + raise ValueError(f"h must be finite and positive; got {h!r}.") + if not (np.isfinite(b) and b > 0): + raise ValueError(f"b must be finite and positive; got {b!r}.") + if not np.isfinite(eval_point): + raise ValueError(f"eval_point must be finite; got {eval_point!r}.") + + x = np.asarray(x, dtype=np.float64).ravel() + y = np.asarray(y, dtype=np.float64).ravel() + if x.shape != y.shape: + raise ValueError(f"x and y must have the same shape; got {x.shape} and {y.shape}.") + N = x.shape[0] + if N == 0: + raise ValueError("x and y must be non-empty.") + if not np.all(np.isfinite(x)): + raise ValueError("x contains non-finite values (NaN or Inf).") + if not np.all(np.isfinite(y)): + raise ValueError("y contains non-finite values (NaN or Inf).") + + if cluster is not None: + cluster = np.asarray(cluster).ravel() + if cluster.shape[0] != N: + raise ValueError( + f"cluster length ({cluster.shape[0]}) does not match x/y ({N})." + ) + # Reject NaN cluster IDs (Phase 1b convention: surface missingness + # rather than silently drop rows). + cluster_float = np.asarray(cluster, dtype=np.float64).ravel() if np.issubdtype( + cluster.dtype, np.floating + ) else None + if cluster_float is not None and np.any(~np.isfinite(cluster_float)): + raise ValueError("cluster contains non-finite values (NaN or Inf).") + + # --- vce="nn" setup: sort ascending, precompute dups --- + dups: Optional[np.ndarray] = None + dupsid: Optional[np.ndarray] = None + if vce == "nn": + order_x = np.argsort(x, kind="mergesort") # stable, matches R order() + x = x[order_x] + y = y[order_x] + if cluster is not None: + cluster = cluster[order_x] + dups, dupsid = _precompute_nn_duplicates(x) + + # --- bwcheck floor (lprobust.R:169-175) --- + if bwcheck is not None: + if bwcheck < 1 or bwcheck > N: + raise ValueError(f"bwcheck must be in [1, {N}]; got {bwcheck}.") + bw_min = float(np.sort(np.abs(x - eval_point))[bwcheck - 1]) + h = max(h, bw_min) + b = max(b, bw_min) + + # --- kernel weights and active-window selection (lprobust.R:177-182) --- + w_h = kernel_W((x - eval_point) / h, kernel) / h + w_b = kernel_W((x - eval_point) / b, kernel) / b + ind_h = w_h > 0 + ind_b = w_b > 0 + + # Single-eval CONDITIONAL REPLACEMENT: default to the b-window, swap to + # the h-window only when h > b. This is NOT a union; the union form + # appears only in the out-of-scope covgrid branch (lprobust.R:275). + ind = ind_b.copy() + if h > b: + ind = ind_h.copy() + + eN = int(np.sum(ind)) + if eN < (p + 1): + raise ValueError( + f"Active kernel window retains only {eN} observations; need at " + f"least p+1={p+1} for the local-polynomial fit. Widen h/b or " + f"pick a boundary with more distinct values nearby." + ) + + eY = y[ind] + eX = x[ind] + W_h = w_h[ind] + W_b = w_b[ind] + + eC: Optional[np.ndarray] = None + if cluster is not None: + eC = cluster[ind] + + edups: Optional[np.ndarray] = None + edupsid: Optional[np.ndarray] = None + if vce == "nn": + assert dups is not None and dupsid is not None # set above + edups = dups[ind] + edupsid = dupsid[ind] + + # --- design matrices (lprobust.R:212-215) --- + u_h = (eX - eval_point) / h + R_q = np.empty((eN, q + 1), dtype=np.float64) + for j in range(q + 1): + R_q[:, j] = (eX - eval_point) ** j + R_p = R_q[:, : p + 1] + + # --- L vector (lprobust.R:218): L = crossprod(R.p*W.h, u^(p+1)) --- + L = (R_p * W_h[:, None]).T @ (u_h ** (p + 1)) # shape (p+1,) + + # --- Inverses (lprobust.R:219-220) --- + # qrXXinv expects an already-row-scaled design; sqrt(W) * R. + invG_q = qrXXinv(R_q * np.sqrt(W_b)[:, None]) + invG_p = qrXXinv(R_p * np.sqrt(W_h)[:, None]) + + # --- Q.q combined design matrix (lprobust.R:223) --- + # e.p1 has 1 at R-index p+2 (1-indexed) = Python index p+1 (0-indexed). + e_p1 = np.zeros(q + 1, dtype=np.float64) + e_p1[p + 1] = 1.0 + + # R: Q.q <- t(t(R.p*W.h) - h^(p+1)*(L%*%t(e.p1))%*%t(t(invG.q%*%t(R.q))*W.b)) + # Unpacking in Python (see block comment above for derivation). + # BLAS matmul on some platforms (Accelerate / OpenBLAS) can raise + # spurious divide/overflow/invalid FPE warnings on SIMD intermediates + # even when the input and output are finite and bounded. These are + # known benign (numpy issue #21432 pattern); suppress locally. + R_p_W_h = R_p * W_h[:, None] # (eN, p+1) + L_outer = np.outer(L, e_p1) # (p+1, q+1) + with np.errstate(divide="ignore", over="ignore", invalid="ignore", under="ignore"): + C = invG_q @ R_q.T # (q+1, eN) + CW = C * W_b[None, :] # (q+1, eN), column j scaled by W_b[j] + F = (h ** (p + 1)) * (L_outer @ CW) # (p+1, eN) + Q_q = (R_p_W_h.T - F).T # (eN, p+1) + if not np.all(np.isfinite(Q_q)): + raise ValueError( + "Q.q bias-combined design matrix contains non-finite values. " + "This typically signals a degenerate bandwidth pair (h or b " + "near zero) or a rank-deficient window." + ) + + # --- beta.p and beta.bc (lprobust.R:224) --- + beta_p = invG_p @ (R_p_W_h.T @ eY) # (p+1,) + beta_bc = invG_p @ (Q_q.T @ eY) # (p+1,) + + deriv_fact = float(math.factorial(deriv)) + tau_cl = deriv_fact * float(beta_p[deriv]) + tau_bc = deriv_fact * float(beta_bc[deriv]) + + # --- Residuals (lprobust.R:239-241) --- + # hc2/hc3 need the hat-matrix diagonal hii. For vce="nn", hii is unused. + hii: Optional[np.ndarray] = None + predicts_p: Optional[np.ndarray] = None + predicts_q: Optional[np.ndarray] = None + if vce in ("hc0", "hc1", "hc2", "hc3"): + predicts_p = (R_p @ beta_p).reshape(-1, 1) + # R.q @ beta.q where beta.q is the q-polynomial fit. But the R code + # computes beta.q only for hc2/hc3 and reuses it for predicts.q. We + # compute it on demand. + beta_q = invG_q @ ((R_q * W_b[:, None]).T @ eY) # (q+1,) + predicts_q = (R_q @ beta_q).reshape(-1, 1) + if vce in ("hc2", "hc3"): + # hii[j] = R.p[j] @ invG.p @ (R.p * W.h)[j] + # = W.h[j] * R.p[j] @ invG.p @ R.p[j] + RpG = R_p @ invG_p # (eN, p+1) + hii = (np.sum(RpG * R_p, axis=1) * W_h).reshape(-1, 1) + + res_h = lprobust_res(eX, eY, predicts_p if predicts_p is not None else np.zeros((eN, 1)), + hii, vce, nnmatch, edups, edupsid, p + 1) + if vce == "nn": + res_b = res_h + else: + res_b = lprobust_res(eX, eY, predicts_q if predicts_q is not None else np.zeros((eN, 1)), + hii, vce, nnmatch, edups, edupsid, q + 1) + + # --- Variance matrices (lprobust.R:243-244) --- + V_Y_cl = invG_p @ lprobust_vce(R_p_W_h, res_h, eC) @ invG_p + V_Y_bc = invG_p @ lprobust_vce(Q_q, res_b, eC) @ invG_p + + # --- Standard errors (lprobust.R:245-246) --- + se_cl = float(np.sqrt((deriv_fact ** 2) * V_Y_cl[deriv, deriv])) + se_rb = float(np.sqrt((deriv_fact ** 2) * V_Y_bc[deriv, deriv])) + + return LprobustResult( + eval_point=float(eval_point), + h=float(h), + b=float(b), + n_used=eN, + tau_cl=tau_cl, + tau_bc=tau_bc, + se_cl=se_cl, + se_rb=se_rb, + V_Y_cl=V_Y_cl, + V_Y_bc=V_Y_bc, + ) diff --git a/diff_diff/local_linear.py b/diff_diff/local_linear.py index 987d947c..9ebfa1e1 100644 --- a/diff_diff/local_linear.py +++ b/diff_diff/local_linear.py @@ -20,8 +20,13 @@ ``mse_optimal_bandwidth`` / ``BandwidthResult`` (this module), a thin wrapper over the Calonico-Cattaneo-Farrell (2018) plug-in selector ported in ``diff_diff/_nprobust_port.py``. -- Phase 1c will add the bias-corrected confidence interval per Equation 8 of - de Chaisemartin, Ciccia, D'Haultfoeuille & Knau (2026, arXiv:2405.04465v6). +- Phase 1c ships the bias-corrected local-linear fit + ``bias_corrected_local_linear`` / ``BiasCorrectedFit`` (this module), a + thin wrapper over the Calonico-Cattaneo-Titiunik (2014) robust-bias + correction ported in ``diff_diff/_nprobust_port.py``. This produces + the mu-scale point estimate and CI for Equation 8 of de Chaisemartin, + Ciccia, D'Haultfoeuille & Knau (2026, arXiv:2405.04465v6); Phase 2 + applies the ``(1/G) * sum(D_{g,2})`` beta-scale rescaling. References ---------- @@ -48,6 +53,8 @@ __all__ = [ "BandwidthResult", + "BiasCorrectedFit", + "bias_corrected_local_linear", "epanechnikov_kernel", "triangular_kernel", "uniform_kernel", @@ -492,124 +499,53 @@ class BandwidthResult: } -def mse_optimal_bandwidth( +def _validate_had_inputs( d: np.ndarray, y: np.ndarray, - boundary: float = 0.0, - kernel: str = "epanechnikov", - weights: Optional[np.ndarray] = None, - bwcheck: Optional[int] = 21, - bwregul: float = 1.0, - return_diagnostics: bool = False, -): - """MSE-optimal bandwidth for local-linear regression at a boundary. - - Port of ``nprobust::lpbwselect(bwselect="mse-dpi")`` (R package - ``nprobust`` 0.5.0, SHA ``36e4e53``). Implements the Calonico, - Cattaneo, and Farrell (2018, JASA 113(522)) direct-plug-in DPI - bandwidth selector for the local-linear boundary estimator used in - Design 1' of de Chaisemartin et al. (2026) (HAD). - - The three-stage algorithm produces five bandwidths (``c_bw``, - ``bw_mp2``, ``bw_mp3``, ``b_mse``, ``h_mse``); see - ``BandwidthResult`` for full diagnostics. - - **Public API scope (Phase 1b of HAD).** This wrapper is intentionally - restricted to the HAD configuration: ``p=1`` (local-linear), - ``deriv=0`` (mean regression), ``interior=False`` (boundary eval - point), ``vce="nn"`` (nearest-neighbor variance), and ``nnmatch=3`` - are hard-coded. The underlying ``diff_diff._nprobust_port`` supports - additional ``vce`` modes (``hc0`` / ``hc1`` / ``hc2`` / ``hc3``), - interior evaluation, and higher polynomial orders, but those paths - are NOT parity-tested against ``nprobust`` and are deferred to Phase - 1c / Phase 2. Do not rely on this public wrapper for anything - outside HAD Phase 1b; use the port directly if you need the broader - surface and accept that parity has not been separately verified. + boundary: float, +) -> tuple[np.ndarray, np.ndarray]: + """HAD-scope input validation shared across Phase 1b and Phase 1c. + + Coerces ``d`` and ``y`` to 1-D ``float64`` arrays and enforces the + HAD input contract used by both ``mse_optimal_bandwidth`` (Phase 1b) + and ``bias_corrected_local_linear`` (Phase 1c). Each caller handles + its own ``weights=`` rejection upfront because the phase name and + message differ; every other rule lives here. + + Rules (matching Phase 1b's original inline checks verbatim): + + - ``d`` and ``y`` must be shape-matched, non-empty, and finite. + - ``boundary`` must be finite. + - Doses are nonnegative (HAD support ``D_{g,2} >= 0``). + - ``boundary`` is approximately ``0`` (Design 1') or approximately + ``d.min()`` (Design 1 continuous-near-d_lower); other boundaries + raise so off-support calls do not silently target a different + estimand. + - Mass-point designs at ``d.min() > 0`` with modal-min fraction + ``> 2%`` raise ``NotImplementedError`` pointing to Phase 2's 2SLS + path, per the paper's Section 3.2.4. + - Design 1' plausibility heuristic: when ``boundary ~ 0``, require + ``d.min() <= 0.05 * median(|d|)``; samples above that ratio are + redirected to ``boundary=float(d.min())``. Parameters ---------- - d : np.ndarray, shape (G,) - Regressor values (the dose ``D_{g,2}`` in HAD). - y : np.ndarray, shape (G,) - Outcome values (the first-difference ``Delta Y_g`` in HAD). - boundary : float, default=0.0 - Evaluation point ``d_0``. The Phase 1b wrapper accepts only - two values (within float tolerance): ``boundary = 0`` for - Design 1' or ``boundary = float(d.min())`` for Design 1 - continuous-near-``d_lower``. Use the sample minimum - ``d.min()`` (not a known theoretical lower bound of the - support), because the downstream selector operates on the - realized data. Any other value -- including - ``boundary < d.min()``, interior points, or - ``boundary > d.min()`` -- raises ``ValueError``. - kernel : str, default="epanechnikov" - One of ``"epanechnikov"``, ``"triangular"``, ``"uniform"``. - weights : np.ndarray or None, default=None - Not supported in Phase 1b (raises ``NotImplementedError``). - ``nprobust::lpbwselect`` has no weight argument and thus no - parity anchor. Weighted-data support is queued for Phase 2+. - bwcheck : int or None, default=21 - If set, clip ``c_bw`` (and all downstream bandwidths) below the - distance to the ``bwcheck``-th nearest neighbor of ``boundary``. - Matches ``nprobust::lpbwselect`` default. - bwregul : float, default=1.0 - Bias-regularization scale used in Stage 3. ``bwregul=0`` disables - the regularization term; ``bwregul=1`` matches ``nprobust`` - default. - return_diagnostics : bool, default=False - When ``False`` (default) return the final bandwidth as a - ``float``. When ``True`` return a ``BandwidthResult`` with all - five stage bandwidths plus per-stage ``(V, B1, B2, R)`` - diagnostics. + d, y : np.ndarray + Regressor (dose) and outcome. + boundary : float + Evaluation point. Returns ------- - float or BandwidthResult - The MSE-optimal bandwidth ``h*``, or (if - ``return_diagnostics=True``) a ``BandwidthResult`` dataclass. + tuple[np.ndarray, np.ndarray] + Coerced ``(d, y)`` as 1-D float64 arrays. Raises ------ - ValueError - Raised on: shape mismatch between ``d`` and ``y``; non-finite - values in ``d``, ``y``, or ``boundary``; unknown ``kernel`` - name; ``bwcheck`` outside ``[1, len(d)]``; ``boundary`` that - is not approximately 0 or approximately ``d.min()`` (the only - two supported HAD estimands in Phase 1b); or a rank-deficient - / under-determined pilot fit inside the DPI port (surfaced - from ``qrXXinv`` or the per-stage count guards in - ``lprobust_bw``). - NotImplementedError - Raised on: ``weights=`` passed (no nprobust parity anchor); - detected Design 1 mass-point design (``d.min() > 0`` and - modal fraction at ``d.min()`` exceeds 2%, per the paper's - Section 3.2.4 redirection to the 2SLS sample-average - estimator, queued for Phase 2). - - Notes - ----- - The port parity-tests at 1% relative error against R - ``nprobust::lpbwselect(bwselect="mse-dpi", vce="nn")`` on three - deterministic DGPs (see - ``benchmarks/R/generate_nprobust_golden.R``). In practice the - agreement is at machine precision (0.0000% on the golden tests); - the 1% tolerance is the hard gate before a deviation is considered - a regression. + ValueError, NotImplementedError """ - if weights is not None: - raise NotImplementedError( - "weights= is not supported in Phase 1b of the MSE-optimal " - "bandwidth selector. nprobust::lpbwselect has no weight " - "argument, so there is no parity anchor. Weighted-data " - "support is queued for Phase 2+ (survey-design adaptation)." - ) - - if kernel not in _KERNEL_NAME_TO_NPROBUST: - raise ValueError( - f"Unknown kernel {kernel!r}. Expected one of " - f"{sorted(_KERNEL_NAME_TO_NPROBUST.keys())}." - ) - nprobust_kernel = _KERNEL_NAME_TO_NPROBUST[kernel] + if not np.isfinite(boundary): + raise ValueError(f"boundary must be finite; got {boundary}") d = np.asarray(d, dtype=np.float64).ravel() y = np.asarray(y, dtype=np.float64).ravel() @@ -624,8 +560,6 @@ def mse_optimal_bandwidth( raise ValueError("d contains non-finite values (NaN or Inf)") if not np.all(np.isfinite(y)): raise ValueError("y contains non-finite values (NaN or Inf)") - if not np.isfinite(boundary): - raise ValueError(f"boundary must be finite; got {boundary}") # HAD support restriction: de Chaisemartin et al. (2026) Assumption # (dose definition in Section 2) treats ``D_{g,2}`` as the period-2 @@ -733,6 +667,130 @@ def mse_optimal_bandwidth( f"would be closer to zero relative to the data scale)." ) + return d, y + + +def mse_optimal_bandwidth( + d: np.ndarray, + y: np.ndarray, + boundary: float = 0.0, + kernel: str = "epanechnikov", + weights: Optional[np.ndarray] = None, + bwcheck: Optional[int] = 21, + bwregul: float = 1.0, + return_diagnostics: bool = False, +): + """MSE-optimal bandwidth for local-linear regression at a boundary. + + Port of ``nprobust::lpbwselect(bwselect="mse-dpi")`` (R package + ``nprobust`` 0.5.0, SHA ``36e4e53``). Implements the Calonico, + Cattaneo, and Farrell (2018, JASA 113(522)) direct-plug-in DPI + bandwidth selector for the local-linear boundary estimator used in + Design 1' of de Chaisemartin et al. (2026) (HAD). + + The three-stage algorithm produces five bandwidths (``c_bw``, + ``bw_mp2``, ``bw_mp3``, ``b_mse``, ``h_mse``); see + ``BandwidthResult`` for full diagnostics. + + **Public API scope (Phase 1b of HAD).** This wrapper is intentionally + restricted to the HAD configuration: ``p=1`` (local-linear), + ``deriv=0`` (mean regression), ``interior=False`` (boundary eval + point), ``vce="nn"`` (nearest-neighbor variance), and ``nnmatch=3`` + are hard-coded. The underlying ``diff_diff._nprobust_port`` supports + additional ``vce`` modes (``hc0`` / ``hc1`` / ``hc2`` / ``hc3``), + interior evaluation, and higher polynomial orders, but those paths + are NOT parity-tested against ``nprobust`` and are deferred to Phase + 1c / Phase 2. Do not rely on this public wrapper for anything + outside HAD Phase 1b; use the port directly if you need the broader + surface and accept that parity has not been separately verified. + + Parameters + ---------- + d : np.ndarray, shape (G,) + Regressor values (the dose ``D_{g,2}`` in HAD). + y : np.ndarray, shape (G,) + Outcome values (the first-difference ``Delta Y_g`` in HAD). + boundary : float, default=0.0 + Evaluation point ``d_0``. The Phase 1b wrapper accepts only + two values (within float tolerance): ``boundary = 0`` for + Design 1' or ``boundary = float(d.min())`` for Design 1 + continuous-near-``d_lower``. Use the sample minimum + ``d.min()`` (not a known theoretical lower bound of the + support), because the downstream selector operates on the + realized data. Any other value -- including + ``boundary < d.min()``, interior points, or + ``boundary > d.min()`` -- raises ``ValueError``. + kernel : str, default="epanechnikov" + One of ``"epanechnikov"``, ``"triangular"``, ``"uniform"``. + weights : np.ndarray or None, default=None + Not supported in Phase 1b (raises ``NotImplementedError``). + ``nprobust::lpbwselect`` has no weight argument and thus no + parity anchor. Weighted-data support is queued for Phase 2+. + bwcheck : int or None, default=21 + If set, clip ``c_bw`` (and all downstream bandwidths) below the + distance to the ``bwcheck``-th nearest neighbor of ``boundary``. + Matches ``nprobust::lpbwselect`` default. + bwregul : float, default=1.0 + Bias-regularization scale used in Stage 3. ``bwregul=0`` disables + the regularization term; ``bwregul=1`` matches ``nprobust`` + default. + return_diagnostics : bool, default=False + When ``False`` (default) return the final bandwidth as a + ``float``. When ``True`` return a ``BandwidthResult`` with all + five stage bandwidths plus per-stage ``(V, B1, B2, R)`` + diagnostics. + + Returns + ------- + float or BandwidthResult + The MSE-optimal bandwidth ``h*``, or (if + ``return_diagnostics=True``) a ``BandwidthResult`` dataclass. + + Raises + ------ + ValueError + Raised on: shape mismatch between ``d`` and ``y``; non-finite + values in ``d``, ``y``, or ``boundary``; unknown ``kernel`` + name; ``bwcheck`` outside ``[1, len(d)]``; ``boundary`` that + is not approximately 0 or approximately ``d.min()`` (the only + two supported HAD estimands in Phase 1b); or a rank-deficient + / under-determined pilot fit inside the DPI port (surfaced + from ``qrXXinv`` or the per-stage count guards in + ``lprobust_bw``). + NotImplementedError + Raised on: ``weights=`` passed (no nprobust parity anchor); + detected Design 1 mass-point design (``d.min() > 0`` and + modal fraction at ``d.min()`` exceeds 2%, per the paper's + Section 3.2.4 redirection to the 2SLS sample-average + estimator, queued for Phase 2). + + Notes + ----- + The port parity-tests at 1% relative error against R + ``nprobust::lpbwselect(bwselect="mse-dpi", vce="nn")`` on three + deterministic DGPs (see + ``benchmarks/R/generate_nprobust_golden.R``). In practice the + agreement is at machine precision (0.0000% on the golden tests); + the 1% tolerance is the hard gate before a deviation is considered + a regression. + """ + if weights is not None: + raise NotImplementedError( + "weights= is not supported in Phase 1b of the MSE-optimal " + "bandwidth selector. nprobust::lpbwselect has no weight " + "argument, so there is no parity anchor. Weighted-data " + "support is queued for Phase 2+ (survey-design adaptation)." + ) + + if kernel not in _KERNEL_NAME_TO_NPROBUST: + raise ValueError( + f"Unknown kernel {kernel!r}. Expected one of " + f"{sorted(_KERNEL_NAME_TO_NPROBUST.keys())}." + ) + nprobust_kernel = _KERNEL_NAME_TO_NPROBUST[kernel] + + d, y = _validate_had_inputs(d, y, boundary) + # Defer heavy import to call time to avoid import-cycle risk. from diff_diff._nprobust_port import lpbwselect_mse_dpi @@ -781,3 +839,315 @@ def mse_optimal_bandwidth( kernel=kernel, boundary=float(boundary), ) + + +# ============================================================================= +# Bias-corrected local-linear fit (Phase 1c) +# ============================================================================= +# +# Public wrapper around diff_diff._nprobust_port.lprobust. The port is a +# faithful Python translation of the single-eval-point path of +# nprobust::lprobust (R package nprobust 0.5.0, SHA 36e4e53) implementing +# Calonico, Cattaneo, and Titiunik (2014) robust bias correction. +# +# This wrapper produces the mu-scale quantities of Equation 8 in de +# Chaisemartin, Ciccia, D'Haultfoeuille, and Knau (2026): a classical and +# bias-corrected point estimate plus naive and robust standard errors and +# the bias-corrected confidence interval [tau.bc +/- z_{1-alpha/2} * se.rb]. +# The beta-scale rescaling in Equation 8 (divide by ``(1/G) * sum(D_{g,2})``) +# is applied by Phase 2's ``HeterogeneousAdoptionDiD.fit()``, not here. + + +@dataclass +class BiasCorrectedFit: + """Bias-corrected local-linear fit at a boundary (Phase 1c). + + Output of :func:`bias_corrected_local_linear`. Produces the mu-scale + quantities needed by Equation 8 of de Chaisemartin, Ciccia, + D'Haultfoeuille, and Knau (2026). Phase 2's ``HeterogeneousAdoptionDiD`` + class applies the beta-scale ``(1/G) * sum(D_{g,2})`` rescaling. + + Attributes + ---------- + estimate_classical : float + Classical point estimate ``tau.cl`` from ``nprobust::lprobust`` + (local-linear boundary intercept at ``h``; no bias correction). + estimate_bias_corrected : float + Bias-corrected point estimate ``tau.bc = mu_hat + M_hat`` from the + Calonico-Cattaneo-Titiunik (2014) combined design-matrix statistic. + se_classical : float + Naive plug-in standard error. + se_robust : float + Robust standard error accounting for the additional variability + introduced by the bias-correction term (CCT 2014). + ci_low, ci_high : float + Endpoints of the bias-corrected CI: ``tau.bc +/- z_{1-alpha/2} * + se.rb``. + alpha : float + CI level (``0.05`` gives a 95% CI). + h, b : float + Main and bias-correction bandwidths actually used (post-``bwcheck`` + floor). + bandwidth_source : {"auto", "user"} + ``"auto"`` when the selector chose ``h`` and ``b`` via + :func:`mse_optimal_bandwidth`; ``"user"`` when the caller passed + explicit bandwidths. + bandwidth_diagnostics : BandwidthResult or None + Full Phase 1b selector output when ``bandwidth_source == "auto"``; + ``None`` when the user supplied bandwidths (to avoid a redundant + Phase 1b computation). + n_used : int + Observations retained in the active kernel window (``sum(ind.b)`` + when ``h <= b`` and ``sum(ind.h)`` when ``h > b``; with the + ``rho=1`` default the two coincide). + n_total : int + Total observations passed in (before kernel filtering). + kernel : str + Kernel name as supplied by the caller. + boundary : float + Evaluation point ``c``. + + Notes + ----- + ``p=1``, ``q=2``, ``deriv=0`` are hard-coded for HAD Phase 1c and are + not exposed as fields. Phase 2 may surface them on the estimator-level + result class if a use case materializes. + """ + + estimate_classical: float + estimate_bias_corrected: float + se_classical: float + se_robust: float + ci_low: float + ci_high: float + alpha: float + h: float + b: float + bandwidth_source: str + bandwidth_diagnostics: Optional[BandwidthResult] + n_used: int + n_total: int + kernel: str + boundary: float + + +def bias_corrected_local_linear( + d: np.ndarray, + y: np.ndarray, + boundary: float = 0.0, + kernel: str = "epanechnikov", + h: Optional[float] = None, + b: Optional[float] = None, + alpha: float = 0.05, + vce: str = "nn", + cluster: Optional[np.ndarray] = None, + nnmatch: int = 3, + weights: Optional[np.ndarray] = None, +) -> BiasCorrectedFit: + """Bias-corrected local-linear fit with robust CI at a boundary. + + Ports the single-eval-point path of ``nprobust::lprobust`` (Calonico, + Cattaneo, and Titiunik 2014) and produces the mu-scale outputs of + Equation 8 in de Chaisemartin, Ciccia, D'Haultfoeuille, and Knau + (2026). Phase 2's ``HeterogeneousAdoptionDiD`` class applies the + beta-scale rescaling to return the final estimand. + + **Public API scope (Phase 1c of HAD).** Hard-coded for the HAD + configuration: ``p=1`` (local-linear), ``q=2`` (bias-correction + order), ``deriv=0`` (level), ``interior=False`` (boundary eval + point), ``bwcheck=21``, ``bwregul=1``. The underlying + ``diff_diff._nprobust_port`` supports more. HC0-3 vce modes are + exposed here but NOT separately golden-parity-tested against R in + Phase 1c; use at your own risk until Phase 2+. + + Parameters + ---------- + d : np.ndarray, shape (G,) + Regressor (dose ``D_{g,2}`` in HAD). + y : np.ndarray, shape (G,) + Outcome (first-difference ``Delta Y_g`` in HAD). + boundary : float, default=0.0 + Evaluation point ``d_0``. Accepts only ``boundary ~ 0`` (Design 1') + or ``boundary ~ float(d.min())`` (Design 1 continuous-near-d_lower); + see Phase 1b's input contract. + kernel : {"epanechnikov", "triangular", "uniform"}, default="epanechnikov" + h : float or None, default=None + Main bandwidth. ``None`` auto-selects both ``h`` and ``b`` via + :func:`mse_optimal_bandwidth`. If ``h`` is provided and ``b`` is + ``None``, ``b = h`` (nprobust ``rho=1`` default). + b : float or None, default=None + Bias-correction bandwidth. Pairs with ``h`` (see above). ``b`` + provided without ``h`` raises ``ValueError``. + alpha : float, default=0.05 + CI level; ``0.05`` gives a 95% CI. Must be in ``(0, 1)``. + vce : {"nn", "hc0", "hc1", "hc2", "hc3"}, default="nn" + Variance-estimation method. ``"nn"`` is parity-tested in + Phase 1c; other modes are exposed but not golden-parity-tested. + cluster : np.ndarray or None + Per-observation cluster IDs for cluster-robust variance. Missing + (NaN) cluster IDs raise ``ValueError`` rather than silently + dropping rows. + nnmatch : int, default=3 + Number of nearest neighbors for ``vce="nn"`` residuals. + weights : np.ndarray or None, default=None + Not supported in Phase 1c (raises ``NotImplementedError``). + + Returns + ------- + BiasCorrectedFit + + Raises + ------ + ValueError + Shape mismatch, non-finite inputs, off-support boundary, negative + doses, ``alpha`` outside ``(0, 1)``, unsupported ``kernel``/``vce``, + NaN cluster IDs, incompatible ``vce="hc2"/"hc3"`` with clustering, + ``b`` supplied without ``h``, or a rank-deficient window. + NotImplementedError + ``weights=`` passed, or a Design 1 mass-point sample (redirects to + Phase 2's 2SLS sample-average path per the paper's Section 3.2.4). + + Notes + ----- + Parity against ``nprobust::lprobust(..., bwselect="mse-dpi")`` is tiered + (see ``docs/methodology/REGISTRY.md``): bit-parity on ``tau_cl``/``se_cl`` + (same arithmetic path as Phase 1b's bit-parity-verified primitives); + ``atol=1e-12`` on ``tau_bc``/``se_rb`` (new outer-product step); and + ``atol=1e-13`` on CI bounds (R's ``z_{1-alpha/2}`` is stored in the + golden JSON so Python consumes it directly rather than calling + ``scipy.stats.norm.ppf``). + """ + if weights is not None: + raise NotImplementedError( + "weights= is not supported in Phase 1c of the bias-corrected " + "local-linear estimator. nprobust::lprobust has no weight " + "argument, so there is no parity anchor. Weighted-data " + "support is queued for Phase 2+ (survey-design adaptation)." + ) + + if kernel not in _KERNEL_NAME_TO_NPROBUST: + raise ValueError( + f"Unknown kernel {kernel!r}. Expected one of " + f"{sorted(_KERNEL_NAME_TO_NPROBUST.keys())}." + ) + nprobust_kernel = _KERNEL_NAME_TO_NPROBUST[kernel] + + if not (0.0 < alpha < 1.0): + raise ValueError(f"alpha must be in (0, 1); got {alpha!r}.") + + # Reject manifestly-incompatible vce+cluster combinations upfront. + # nprobust's lprobust silently accepts hc2/hc3 + cluster and produces a + # weighted-score cluster meat that is NOT the standard CR2 or clustered + # HC estimator. Rather than propagate that ambiguity, reject. + if cluster is not None and vce in ("hc2", "hc3"): + raise ValueError( + f"vce={vce!r} combined with cluster= is not a well-defined " + "estimator in nprobust (hc2/hc3 assume independent observations)." + " Use vce='nn' or drop the cluster argument." + ) + + # HAD-scope input validation (shared with Phase 1b via _validate_had_inputs). + d, y = _validate_had_inputs(d, y, boundary) + n_total = int(d.shape[0]) + + # Reject missing cluster IDs up front (Phase 1b convention). + cluster_arr: Optional[np.ndarray] = None + if cluster is not None: + cluster_arr = np.asarray(cluster).ravel() + if cluster_arr.shape[0] != n_total: + raise ValueError( + f"cluster length ({cluster_arr.shape[0]}) does not match " + f"d/y ({n_total})." + ) + if np.issubdtype(cluster_arr.dtype, np.floating) and not np.all( + np.isfinite(cluster_arr) + ): + raise ValueError("cluster contains non-finite values (NaN or Inf).") + + # --- Resolve (h, b) --- + # nprobust's lprobust() with the default rho=1 sets b = h / rho = h + # whenever h is unspecified (R lprobust.R:121-124 and 139: even though + # lpbwselect returns a distinct b_mse, `if (rho>0) b <- h/rho` discards + # it). Auto mode here matches that behavior to preserve bit-parity. The + # distinct b_mse from Phase 1b's selector is still surfaced via + # bandwidth_diagnostics.b_mse for callers that want to inspect or + # override. The paper (de Chaisemartin et al. 2026) likewise uses a + # single h*_G throughout Equation 8. + bw_source: str + bw_diag: Optional[BandwidthResult] = None + if h is None and b is None: + bw_diag = mse_optimal_bandwidth( + d=d, + y=y, + boundary=boundary, + kernel=kernel, + weights=None, # already validated + return_diagnostics=True, + ) + h_val = float(bw_diag.h_mse) + b_val = h_val # rho=1 default to match nprobust + bw_source = "auto" + elif h is not None: + h_val = float(h) + if b is None: + b_val = h_val # nprobust rho=1 default + else: + b_val = float(b) + if not (np.isfinite(h_val) and h_val > 0): + raise ValueError(f"h must be finite and positive; got {h!r}.") + if not (np.isfinite(b_val) and b_val > 0): + raise ValueError(f"b must be finite and positive; got {b!r}.") + bw_source = "user" + else: + # h is None but b is not None: ambiguous. + raise ValueError( + "b provided without h; pass both bandwidths explicitly or " + "leave both as None to auto-select via mse_optimal_bandwidth." + ) + + # --- Call the port --- + # Defer heavy import to call time to avoid import-cycle risk. + from diff_diff._nprobust_port import lprobust + + result = lprobust( + y=y, + x=d, + eval_point=float(boundary), + h=h_val, + b=b_val, + p=1, + q=2, + deriv=0, + kernel=nprobust_kernel, + vce=vce, + cluster=cluster_arr, + nnmatch=nnmatch, + bwcheck=21, + ) + + # --- Bias-corrected CI (lprobust summary.lprobust:420-421) --- + # z_{1 - alpha/2}; Python uses scipy.stats.norm.ppf. For parity with R + # on the golden tests, the golden JSON stores R's qnorm value. + from scipy.stats import norm as _norm + + z = float(_norm.ppf(1.0 - alpha / 2.0)) + ci_low = result.tau_bc - z * result.se_rb + ci_high = result.tau_bc + z * result.se_rb + + return BiasCorrectedFit( + estimate_classical=result.tau_cl, + estimate_bias_corrected=result.tau_bc, + se_classical=result.se_cl, + se_robust=result.se_rb, + ci_low=ci_low, + ci_high=ci_high, + alpha=float(alpha), + h=result.h, + b=result.b, + bandwidth_source=bw_source, + bandwidth_diagnostics=bw_diag, + n_used=result.n_used, + n_total=n_total, + kernel=kernel, + boundary=float(boundary), + ) diff --git a/docs/methodology/REGISTRY.md b/docs/methodology/REGISTRY.md index 9affc045..d33c1500 100644 --- a/docs/methodology/REGISTRY.md +++ b/docs/methodology/REGISTRY.md @@ -2313,8 +2313,8 @@ Shipped as `did_had_pretest_workflow()` and surfaced via `practitioner_next_step - **Note (deviation from the fully-symmetric enum):** `MultiPeriodDiD(cluster=..., vcov_type="hc2_bm")` is intentionally **not supported** and raises `NotImplementedError`. The scalar-coefficient `DifferenceInDifferences` path handles the cluster + CR2 Bell-McCaffrey combination (`_compute_cr2_bm` returns a per-coefficient Satterthwaite DOF that is valid for the single-ATT contrast), but `MultiPeriodDiD` also reports a post-period-average ATT constructed as a *contrast* of the event-study coefficients. The cluster-aware CR2 BM DOF for that contrast (i.e., the Pustejovsky-Tipton 2018 per-cluster adjustment matrices applied to an arbitrary aggregation contrast) is not yet implemented. Pairing CR2 cluster-robust SEs with the one-way Imbens-Kolesar (2016) contrast DOF would be a broken hybrid, so the combination fails fast with a clear workaround message (drop the cluster for one-way HC2+BM, or use `vcov_type="hc1"` with cluster for CR1 Liang-Zeger). Tracked in `TODO.md` under Methodology/Correctness. Applies only to `MultiPeriodDiD`; `DifferenceInDifferences(cluster=..., vcov_type="hc2_bm")` works. - [x] Phase 1a: `clubSandwich::vcovCR(..., type="CR2")` parity harness committed: R script at `benchmarks/R/generate_clubsandwich_golden.R` plus a regression-anchor JSON at `benchmarks/data/clubsandwich_cr2_golden.json`. **Note:** the committed JSON currently has `"source": "python_self_reference"` and pins numerical stability only; authoritative R-produced values are generated by running the R script, which the TODO.md row under Methodology/Correctness tracks. The parity test at `tests/test_linalg_hc2_bm.py::TestCR2BMCluster::test_cr2_parity_with_golden` runs at 1e-6 tolerance (Phase 1a plan commits 6-digit parity once R regen completes). - [x] Phase 1b: Calonico-Cattaneo-Farrell (2018) MSE-optimal bandwidth selector. In-house port of `nprobust::lpbwselect(bwselect="mse-dpi")` (nprobust 0.5.0, SHA `36e4e53`) as `diff_diff.mse_optimal_bandwidth` and `BandwidthResult`, backed by the private `diff_diff._nprobust_port` module (`kernel_W`, `lprobust_bw`, `lpbwselect_mse_dpi`). Three-stage DPI with four `lprobust.bw` calls at orders `q+1`, `q+2`, `q`, `p`. Python matches R to `0.0000%` relative error (i.e., bit-parity within float64 precision, ~8-13 digits agreement) on all five stage bandwidths (`c_bw`, `bw_mp2`, `bw_mp3`, `b_mse`, `h_mse`) across three deterministic DGPs (uniform, Beta(2,2), half-normal) via `benchmarks/R/generate_nprobust_golden.R` → `benchmarks/data/nprobust_mse_dpi_golden.json`. **Note:** `weights=` is currently unsupported (raises `NotImplementedError`); nprobust's `lpbwselect` has no weight argument so there is no parity anchor. Weighted-data support deferred to Phase 2 (survey-design adaptation). **Note (public API scope restriction):** the exported wrapper `mse_optimal_bandwidth` hard-codes the HAD Phase 1b configuration (`p=1`, `deriv=0`, `interior=False`, `vce="nn"`, `nnmatch=3`). The underlying port supports a broader surface (`hc0`/`hc1`/`hc2`/`hc3` variance, interior evaluation, higher `p`), but those paths are not parity-tested against `nprobust` and are deferred. Callers needing the broader surface should use `diff_diff._nprobust_port.lpbwselect_mse_dpi` directly and accept that parity has not been verified on non-HAD configurations. **Note (input contract):** the wrapper enforces HAD's support restriction `D_{g,2} >= 0` (front-door `ValueError` on negative doses and empty inputs). `boundary` must equal `0` (Design 1') or `float(d.min())` (Design 1 continuous-near-d_lower) within float tolerance; off-support values raise `ValueError`. When `boundary ~ 0`, the wrapper additionally requires `d.min() <= 0.05 * median(|d|)` as a Design 1' support plausibility heuristic, chosen to pass the paper's thin-boundary-density DGPs (Beta(2,2), d.min/median ~ 3%) while rejecting substantially off-support samples (U(0.5, 1.0), d.min/median ~ 1.0). Detected mass-point designs (`d.min() > 0` with modal fraction at `d.min() > 2%`) raise `NotImplementedError` pointing to the Phase 2 2SLS path per paper Section 3.2.4. -- [ ] Phase 1c: First-order bias estimator `M̂_{ĥ*_G}` and robust variance `V̂_{ĥ*_G}`. -- [ ] Phase 1c: Bias-corrected CI (Equation 8) with `nprobust` parity. +- [x] Phase 1c: First-order bias estimator `M̂_{ĥ*_G}` and robust variance `V̂_{ĥ*_G}`. Implemented via Calonico-Cattaneo-Titiunik (2014) bias-combined design matrix `Q.q` in the in-house port `diff_diff._nprobust_port.lprobust` (single-eval-point path of `nprobust::lprobust`, npfunctions.R:177-246). +- [x] Phase 1c: Bias-corrected CI (Equation 8) with `nprobust` parity. Public wrapper `diff_diff.bias_corrected_local_linear` returns `BiasCorrectedFit` with μ̂-scale point estimate, robust SE, and bias-corrected 95% CI `[tau.bc ± z_{1-α/2} * se.rb]`. The β-scale rescaling from Equation 8, `(1/G) Σ D_{g,2}`, is applied by Phase 2's `HeterogeneousAdoptionDiD.fit()`. Parity against `nprobust::lprobust(..., bwselect="mse-dpi")` is tiered: `atol=1e-12` on `tau_cl`/`tau_bc`/`se_cl`/`se_rb` (the `Q.q` outer-product + broadcast-multiply path drifts slightly from the Phase 1b bit-parity primitives), `atol=1e-13` on CI bounds (R's `z_{1-α/2}` is stored in the golden JSON so Python consumes it directly rather than calling `scipy.stats.norm.ppf`). The clustered DGP achieves bit-parity (`atol=1e-14`) when cluster IDs happen to be sorted; otherwise BLAS reduction ordering can drift to `atol=1e-10`. Generator: `benchmarks/R/generate_nprobust_lprobust_golden.R`. **Note:** The wrapper matches nprobust's `rho=1` default (`b = h` in auto mode), so Phase 1b's separately-computed `b_mse` is surfaced via `bandwidth_diagnostics.b_mse` but not applied. **Deviation from R:** nprobust silently accepts `vce="hc2"`/`vce="hc3"` combined with `cluster=`; this wrapper raises `ValueError` because the combination is not a well-defined estimator (hc2/hc3 assume independent observations). **Note (Phase 1c internal bug workaround):** The clustered golden DGP 4 uses manual `h=b=0.3` to sidestep an nprobust-internal singleton-cluster shape bug in `lprobust.vce` fired by the mse-dpi pilot fits; the Python port has no equivalent bug. - [ ] Phase 2: `HeterogeneousAdoptionDiD` class with separate code paths for Design 1', Design 1 mass-point, and Design 1 continuous-near-`d̲`. - [ ] Phase 2: `design="auto"` detection rule (`min_g D_{g,2} < 0.01 · median_g D_{g,2}` → continuous_at_zero; modal-min fraction > 2% → mass_point; else continuous_near_lower). - [ ] Phase 2: Panel validator verifies `D_{g,1} = 0` for all units; error on staggered timing without last-cohort subgroup. diff --git a/tests/test_bias_corrected_lprobust.py b/tests/test_bias_corrected_lprobust.py new file mode 100644 index 00000000..ebc9a372 --- /dev/null +++ b/tests/test_bias_corrected_lprobust.py @@ -0,0 +1,420 @@ +"""End-to-end tests for ``bias_corrected_local_linear`` (Phase 1c). + +Wrapper-level parity, input-contract, CI, and parameter-interaction tests. +Port-level parity lives in ``tests/test_nprobust_port.py::TestLprobustSingleEval`` +(wrapper-vs-port are orthogonal: the port test exercises ``lprobust`` with +R-supplied bandwidths; this file exercises the public API including the +auto-bandwidth path and every input-contract branch). +""" + +from __future__ import annotations + +import json +from pathlib import Path + +import numpy as np +import pytest + +from diff_diff.local_linear import ( + BandwidthResult, + BiasCorrectedFit, + bias_corrected_local_linear, +) + +GOLDEN_PATH = ( + Path(__file__).resolve().parents[1] + / "benchmarks" + / "data" + / "nprobust_lprobust_golden.json" +) + + +@pytest.fixture(scope="module") +def golden(): + """Load R-generated nprobust::lprobust golden values. Skip if absent.""" + if not GOLDEN_PATH.exists(): + pytest.skip( + "Golden values file not found; " + "run: Rscript benchmarks/R/generate_nprobust_lprobust_golden.R" + ) + with GOLDEN_PATH.open() as f: + return json.load(f) + + +# ============================================================================= +# Shape / return-type tests +# ============================================================================= + + +class TestReturnShape: + def _smoke_data(self, seed=7): + rng = np.random.default_rng(seed) + G = 800 + d = rng.uniform(0.0, 1.0, G) + y = d + d ** 2 + rng.normal(0, 0.4, G) + return d, y + + def test_returns_bias_corrected_fit(self): + d, y = self._smoke_data() + fit = bias_corrected_local_linear(d, y, boundary=0.0) + assert isinstance(fit, BiasCorrectedFit) + assert np.isfinite(fit.estimate_classical) + assert np.isfinite(fit.estimate_bias_corrected) + assert fit.se_classical > 0 + assert fit.se_robust > 0 + assert fit.ci_low < fit.ci_high + assert fit.h > 0 + assert fit.b > 0 + assert fit.n_used > 0 + assert fit.n_total == d.shape[0] + assert fit.kernel == "epanechnikov" + assert fit.boundary == 0.0 + + def test_auto_bandwidth_populates_diagnostics(self): + d, y = self._smoke_data() + fit = bias_corrected_local_linear(d, y, boundary=0.0) + assert fit.bandwidth_source == "auto" + assert isinstance(fit.bandwidth_diagnostics, BandwidthResult) + # Under nprobust rho=1 default, we set b = h (ignoring b_mse). + assert fit.h == fit.b + # h_mse still surfaced via diagnostics for inspection. + assert fit.bandwidth_diagnostics.h_mse == pytest.approx(fit.h, rel=1e-14) + + def test_user_bandwidth_source(self): + d, y = self._smoke_data() + fit = bias_corrected_local_linear(d, y, boundary=0.0, h=0.3, b=0.3) + assert fit.bandwidth_source == "user" + assert fit.bandwidth_diagnostics is None + assert fit.h == 0.3 + assert fit.b == 0.3 + + def test_user_h_only_uses_rho_1(self): + d, y = self._smoke_data() + fit = bias_corrected_local_linear(d, y, boundary=0.0, h=0.3) + # b defaults to h under rho=1. + assert fit.h == 0.3 + assert fit.b == 0.3 + + def test_b_without_h_raises(self): + d, y = self._smoke_data() + with pytest.raises(ValueError, match="b provided without h"): + bias_corrected_local_linear(d, y, boundary=0.0, b=0.3) + + +# ============================================================================= +# Parity tests against R nprobust::lprobust +# ============================================================================= + + +class TestParity: + """Tiered tolerances per plan commit criterion #1. + + - tau_cl, se_cl: atol=1e-14 where achievable (same arithmetic path as + Phase 1b); relaxed to 1e-12 when the Q.q-combined residual path + differs slightly. + - tau_bc, se_rb: atol=1e-12. + - ci_low, ci_high: atol=1e-13 (R's z exported in golden JSON). + """ + + def _dgp(self, golden, name): + g = golden[name] + return np.asarray(g["d"], dtype=np.float64), np.asarray(g["y"], dtype=np.float64), g + + def test_dgp1_all_six_outputs(self, golden): + d, y, g = self._dgp(golden, "dgp1") + fit = bias_corrected_local_linear(d, y, boundary=0.0, kernel="epanechnikov") + # DGP 1 hits bit-parity through the Cholesky path for tau_cl / se_cl. + np.testing.assert_allclose(fit.estimate_classical, g["tau_cl"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.se_classical, g["se_cl"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.estimate_bias_corrected, g["tau_bc"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.se_robust, g["se_rb"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.ci_low, g["ci_low"], + atol=1e-13, rtol=1e-13) + np.testing.assert_allclose(fit.ci_high, g["ci_high"], + atol=1e-13, rtol=1e-13) + # Bandwidth also should match (Phase 1b bit-parity path). + np.testing.assert_allclose(fit.h, g["h"], atol=1e-12, rtol=1e-12) + + def test_dgp2_all_six_outputs(self, golden): + d, y, g = self._dgp(golden, "dgp2") + fit = bias_corrected_local_linear(d, y, boundary=0.0, kernel="epanechnikov") + np.testing.assert_allclose(fit.estimate_classical, g["tau_cl"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.estimate_bias_corrected, g["tau_bc"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.se_classical, g["se_cl"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.se_robust, g["se_rb"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.ci_low, g["ci_low"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.ci_high, g["ci_high"], + atol=1e-12, rtol=1e-12) + + def test_dgp3_all_six_outputs(self, golden): + d, y, g = self._dgp(golden, "dgp3") + fit = bias_corrected_local_linear(d, y, boundary=0.0, kernel="epanechnikov") + np.testing.assert_allclose(fit.estimate_classical, g["tau_cl"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.estimate_bias_corrected, g["tau_bc"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.se_classical, g["se_cl"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.se_robust, g["se_rb"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.ci_low, g["ci_low"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.ci_high, g["ci_high"], + atol=1e-12, rtol=1e-12) + + def test_clustered_parity_dgp_4(self, golden): + """DGP 4 uses manual h=b=0.3 to sidestep an nprobust-internal + singleton-cluster bug in the mse-dpi pilot fits.""" + g = golden["dgp4"] + d = np.asarray(g["d"], dtype=np.float64) + y = np.asarray(g["y"], dtype=np.float64) + cluster = np.asarray(g["cluster"]) + fit = bias_corrected_local_linear( + d, y, boundary=0.0, kernel="epanechnikov", + h=g["h"], b=g["b"], cluster=cluster, + ) + # Cluster IDs are sequential (1..50), so np.unique order matches R's + # unique(); bit-parity is achievable. + np.testing.assert_allclose(fit.estimate_classical, g["tau_cl"], + atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(fit.estimate_bias_corrected, g["tau_bc"], + atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(fit.se_classical, g["se_cl"], + atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(fit.se_robust, g["se_rb"], + atol=1e-14, rtol=1e-14) + + def test_shifted_boundary_parity_dgp_5(self, golden): + """Design 1 continuous-near-d_lower: boundary = d.min() > 0.""" + g = golden["dgp5"] + d = np.asarray(g["d"], dtype=np.float64) + y = np.asarray(g["y"], dtype=np.float64) + eval_point = float(g["eval_point_override"]) + fit = bias_corrected_local_linear( + d, y, boundary=eval_point, kernel="epanechnikov", + ) + np.testing.assert_allclose(fit.estimate_classical, g["tau_cl"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.estimate_bias_corrected, g["tau_bc"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.se_classical, g["se_cl"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.se_robust, g["se_rb"], + atol=1e-12, rtol=1e-12) + + +# ============================================================================= +# CI behavior +# ============================================================================= + + +class TestCI: + def _smoke(self): + rng = np.random.default_rng(0) + d = rng.uniform(0.0, 1.0, 1000) + y = d + rng.normal(0, 0.3, 1000) + return d, y + + def test_ci_symmetric_about_tau_bc(self): + d, y = self._smoke() + fit = bias_corrected_local_linear(d, y, boundary=0.0, h=0.2, b=0.2) + midpoint = 0.5 * (fit.ci_low + fit.ci_high) + np.testing.assert_allclose( + midpoint, fit.estimate_bias_corrected, atol=1e-14, rtol=1e-14, + ) + + def test_alpha_01_wider_than_alpha_05(self): + d, y = self._smoke() + fit_05 = bias_corrected_local_linear(d, y, h=0.2, b=0.2, alpha=0.05) + fit_01 = bias_corrected_local_linear(d, y, h=0.2, b=0.2, alpha=0.01) + # alpha=0.01 gives 99% CI > 95% CI width. + width_05 = fit_05.ci_high - fit_05.ci_low + width_01 = fit_01.ci_high - fit_01.ci_low + assert width_01 > width_05 + + def test_alpha_out_of_range_raises(self): + d = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] * 20) + y = d + 0.1 + for bad_alpha in (0.0, 1.0, -0.1, 1.1): + with pytest.raises(ValueError, match="alpha must be in"): + bias_corrected_local_linear(d, y, h=0.3, b=0.3, alpha=bad_alpha) + + +# ============================================================================= +# Input contract (mirrors Phase 1b test_bandwidth_selector.py) +# ============================================================================= + + +class TestInputContract: + def test_empty_raises(self): + d = np.array([], dtype=np.float64) + y = np.array([], dtype=np.float64) + with pytest.raises(ValueError, match="non-empty"): + bias_corrected_local_linear(d, y, boundary=0.0, h=0.3) + + def test_non_finite_d_raises(self): + d = np.array([0.1, np.nan, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) + y = np.arange(10, dtype=np.float64) + with pytest.raises(ValueError, match="d contains non-finite"): + bias_corrected_local_linear(d, y, boundary=0.0, h=0.3) + + def test_non_finite_y_raises(self): + d = np.linspace(0.05, 1.0, 20) + y = d.copy() + y[5] = np.inf + with pytest.raises(ValueError, match="y contains non-finite"): + bias_corrected_local_linear(d, y, boundary=0.0, h=0.3) + + def test_shape_mismatch_raises(self): + d = np.linspace(0.05, 1.0, 20) + y = np.linspace(0.0, 1.0, 15) + with pytest.raises(ValueError, match="same shape"): + bias_corrected_local_linear(d, y, boundary=0.0, h=0.3) + + def test_negative_dose_raises(self): + rng = np.random.default_rng(1) + d = rng.uniform(-0.5, 1.0, 500) + y = d + rng.normal(0, 0.3, 500) + with pytest.raises(ValueError, match="Negative dose"): + bias_corrected_local_linear(d, y, boundary=0.0) + + def test_off_support_boundary_raises(self): + rng = np.random.default_rng(2) + d = rng.uniform(0.3, 1.0, 500) + y = d + rng.normal(0, 0.3, 500) + with pytest.raises(ValueError, match="not compatible with a Design 1'"): + bias_corrected_local_linear(d, y, boundary=0.0) + + def test_mass_point_raises(self): + # d.min() > 0 with > 2% at the mode. + rng = np.random.default_rng(3) + d = np.concatenate( + [np.full(100, 0.1), rng.uniform(0.1, 1.0, 400)] + ) + y = d + rng.normal(0, 0.3, 500) + with pytest.raises(NotImplementedError, match="mass-point"): + bias_corrected_local_linear(d, y, boundary=0.1) + + def test_weights_raises_not_implemented(self): + d = np.linspace(0.05, 1.0, 100) + y = d.copy() + with pytest.raises(NotImplementedError, match="weights="): + bias_corrected_local_linear(d, y, h=0.3, weights=np.ones(100)) + + def test_cluster_nan_raises(self): + d = np.linspace(0.0, 1.0, 100) + y = d.copy() + cluster = np.repeat(np.arange(10), 10).astype(np.float64) + cluster[5] = np.nan + with pytest.raises(ValueError, match="cluster contains non-finite"): + bias_corrected_local_linear(d, y, h=0.3, cluster=cluster) + + def test_unknown_kernel_raises(self): + d = np.linspace(0.05, 1.0, 100) + y = d.copy() + with pytest.raises(ValueError, match="Unknown kernel"): + bias_corrected_local_linear(d, y, h=0.3, kernel="cosine") + + +# ============================================================================= +# Parameter interactions +# ============================================================================= + + +class TestParameterInteractions: + def test_cluster_with_manual_bandwidth(self): + """Cluster + user-supplied h/b should just work.""" + rng = np.random.default_rng(11) + G = 400 + d = rng.uniform(0.0, 1.0, G) + y = d + rng.normal(0, 0.3, G) + cluster = np.repeat(np.arange(20), 20) + fit = bias_corrected_local_linear( + d, y, h=0.3, b=0.3, cluster=cluster, + ) + assert np.isfinite(fit.estimate_bias_corrected) + assert fit.se_robust > 0 + + def test_vce_hc2_with_cluster_raises(self): + d = np.linspace(0.05, 1.0, 100) + y = d.copy() + cluster = np.repeat(np.arange(10), 10) + with pytest.raises(ValueError, match="hc2.*not a well-defined"): + bias_corrected_local_linear( + d, y, h=0.3, vce="hc2", cluster=cluster, + ) + + def test_vce_hc3_with_cluster_raises(self): + d = np.linspace(0.05, 1.0, 100) + y = d.copy() + cluster = np.repeat(np.arange(10), 10) + with pytest.raises(ValueError, match="hc3.*not a well-defined"): + bias_corrected_local_linear( + d, y, h=0.3, vce="hc3", cluster=cluster, + ) + + +# ============================================================================= +# End-to-end +# ============================================================================= + + +class TestEndToEnd: + def test_auto_bandwidth_covers_truth_at_95(self): + """Full chain: data -> mse_optimal_bandwidth -> bias_corrected fit -> + reasonable CI. Directional check (single draw), not a coverage test. + + True DGP: y = beta0 + beta1 * d + noise at d=0 gives m(0) = beta0. + """ + rng = np.random.default_rng(20260419) + G = 3000 + d = rng.uniform(0.0, 1.0, G) + beta0_true = 0.0 # intercept + beta1 = 1.0 + y = beta0_true + beta1 * d + rng.normal(0, 0.3, G) + fit = bias_corrected_local_linear(d, y, boundary=0.0) + # CI should contain the true boundary intercept (=0) for a single + # seed with G=3000 with high probability. Do a loose sanity check. + assert fit.ci_low <= beta0_true <= fit.ci_high + + +# ============================================================================= +# Validator idempotence (regression gate for the Phase 1b extraction) +# ============================================================================= + + +class TestValidatorIdempotence: + """Plan commit criterion #5: _validate_had_inputs extraction must be + idempotent (coerced output remains valid on re-validation).""" + + def test_idempotent_on_valid_inputs(self): + from diff_diff.local_linear import _validate_had_inputs + + rng = np.random.default_rng(42) + d_raw = rng.uniform(0.0, 1.0, 200) + y_raw = rng.normal(0, 0.3, 200) + d1, y1 = _validate_had_inputs(d_raw, y_raw, 0.0) + d2, y2 = _validate_had_inputs(d1, y1, 0.0) + np.testing.assert_array_equal(d1, d2) + np.testing.assert_array_equal(y1, y2) + + def test_idempotent_at_boundary_d_min(self): + from diff_diff.local_linear import _validate_had_inputs + + rng = np.random.default_rng(7) + d_raw = rng.uniform(0.2, 1.0, 200) + y_raw = rng.normal(0, 0.3, 200) + boundary = float(d_raw.min()) + d1, y1 = _validate_had_inputs(d_raw, y_raw, boundary) + d2, y2 = _validate_had_inputs(d1, y1, boundary) + np.testing.assert_array_equal(d1, d2) + np.testing.assert_array_equal(y1, y2) diff --git a/tests/test_nprobust_port.py b/tests/test_nprobust_port.py index ac1df0d8..802acee9 100644 --- a/tests/test_nprobust_port.py +++ b/tests/test_nprobust_port.py @@ -419,3 +419,199 @@ def test_clustered_end_to_end_through_lprobust_bw(self): assert res.h_mse_dpi > 0.0 assert np.isfinite(res.c_bw) assert res.c_bw > 0.0 + + +# ============================================================================= +# lprobust single-eval (Phase 1c: lprobust.R:177-246 port) +# ============================================================================= +# +# Port-level parity tests. Exercise lprobust() directly with R-supplied +# bandwidths so drift is localized to the single-eval math (Q.q, beta.bc, +# CCT-2014 robust variance), not the bandwidth-selection pipeline. Wrapper- +# level parity lives in tests/test_bias_corrected_lprobust.py. + + +def _load_lprobust_golden(): + """Skip if benchmarks/ is absent (CI isolated-install path).""" + import json + from pathlib import Path + + path = Path(__file__).resolve().parents[1] / "benchmarks" / "data" / "nprobust_lprobust_golden.json" + if not path.exists(): + pytest.skip( + "Golden values file not found; " + "run: Rscript benchmarks/R/generate_nprobust_lprobust_golden.R" + ) + with path.open() as f: + return json.load(f) + + +@pytest.fixture(scope="module") +def lprobust_golden(): + return _load_lprobust_golden() + + +class TestLprobustSingleEval: + """Parity and behavioral tests for the single-eval-point port of + nprobust::lprobust (lprobust.R:177-246). + + Cluster parity here is ORTHOGONAL to the wrapper-level clustered test + in test_bias_corrected_lprobust.py: this class exercises the port + (lprobust_vce cluster branch -> Q.q -> V.Y.bc), while the wrapper test + verifies the public API's cluster contract (NaN rejection, vce+cluster + interactions). + """ + + def _dgp(self, golden, name): + g = golden[name] + return ( + np.asarray(g["d"], dtype=np.float64), + np.asarray(g["y"], dtype=np.float64), + g, + ) + + def test_lprobust_dgp1_parity(self, lprobust_golden): + from diff_diff._nprobust_port import lprobust + + d, y, g = self._dgp(lprobust_golden, "dgp1") + res = lprobust( + y, d, eval_point=0.0, h=g["h"], b=g["b"], p=1, q=2, deriv=0, + kernel="epa", vce="nn", + ) + # Tiered tolerances per plan commit criterion #1. + np.testing.assert_allclose(res.tau_cl, g["tau_cl"], atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(res.se_cl, g["se_cl"], atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(res.tau_bc, g["tau_bc"], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(res.se_rb, g["se_rb"], atol=1e-12, rtol=1e-12) + assert res.n_used == int(g["n_used"]) + + def test_lprobust_dgp2_parity(self, lprobust_golden): + from diff_diff._nprobust_port import lprobust + + d, y, g = self._dgp(lprobust_golden, "dgp2") + res = lprobust( + y, d, eval_point=0.0, h=g["h"], b=g["b"], p=1, q=2, deriv=0, + kernel="epa", vce="nn", + ) + np.testing.assert_allclose(res.tau_cl, g["tau_cl"], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(res.se_cl, g["se_cl"], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(res.tau_bc, g["tau_bc"], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(res.se_rb, g["se_rb"], atol=1e-12, rtol=1e-12) + + def test_lprobust_dgp3_parity(self, lprobust_golden): + from diff_diff._nprobust_port import lprobust + + d, y, g = self._dgp(lprobust_golden, "dgp3") + res = lprobust( + y, d, eval_point=0.0, h=g["h"], b=g["b"], p=1, q=2, deriv=0, + kernel="epa", vce="nn", + ) + np.testing.assert_allclose(res.tau_cl, g["tau_cl"], atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(res.se_cl, g["se_cl"], atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(res.tau_bc, g["tau_bc"], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(res.se_rb, g["se_rb"], atol=1e-12, rtol=1e-12) + + def test_lprobust_manual_bandwidths_rho_1(self): + """Smoke test that lprobust runs with user-supplied h == b == 0.3.""" + from diff_diff._nprobust_port import lprobust + + rng = np.random.default_rng(20260420) + G = 1000 + d = rng.uniform(0.0, 1.0, G) + y = d + d ** 2 + rng.normal(0, 0.5, G) + res = lprobust(y, d, eval_point=0.0, h=0.3, b=0.3, p=1, q=2, deriv=0, + kernel="epa", vce="nn") + assert np.isfinite(res.tau_cl) + assert np.isfinite(res.tau_bc) + assert res.se_cl > 0 + assert res.se_rb > 0 + assert res.h == 0.3 + assert res.b == 0.3 + + def test_lprobust_cluster_parity(self, lprobust_golden): + """Port-level clustered parity. DGP 4 uses manual h=b=0.3 to sidestep + an nprobust-internal singleton-cluster bug in mse-dpi pilot fits. + """ + from diff_diff._nprobust_port import lprobust + + g = lprobust_golden["dgp4"] + d = np.asarray(g["d"], dtype=np.float64) + y = np.asarray(g["y"], dtype=np.float64) + cluster = np.asarray(g["cluster"]) + res = lprobust( + y, d, eval_point=0.0, h=g["h"], b=g["b"], p=1, q=2, deriv=0, + kernel="epa", vce="nn", cluster=cluster, + ) + # Cluster IDs happen to match R's first-appearance order here (IDs + # are already sequential 1..50), so bit-parity is achievable. + np.testing.assert_allclose(res.tau_cl, g["tau_cl"], atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(res.tau_bc, g["tau_bc"], atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(res.se_cl, g["se_cl"], atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(res.se_rb, g["se_rb"], atol=1e-14, rtol=1e-14) + + def test_lprobust_bwcheck_clip_floor(self): + """Sparse-ish data where requested h is below the 21st-NN + distance should clip up to bw.min.""" + from diff_diff._nprobust_port import lprobust + + rng = np.random.default_rng(7) + G = 100 + d = np.abs(rng.normal(0, 1, G)) # few obs near 0 + y = d + rng.normal(0, 0.5, G) + # Very small h; bwcheck should float it up. + res = lprobust( + y, d, eval_point=0.0, h=0.001, b=0.001, p=1, q=2, deriv=0, + kernel="epa", vce="nn", bwcheck=21, + ) + # Bandwidth must have been floored — original 0.001 will not hold. + assert res.h > 0.001 + assert res.b > 0.001 + # The floor is the 21st-NN distance to boundary 0; must be positive. + sorted_dists = np.sort(np.abs(d - 0.0)) + expected_floor = sorted_dists[20] + assert res.h == pytest.approx(expected_floor, rel=1e-14) + + def test_lprobust_shifted_boundary_dgp5(self, lprobust_golden): + """Parity at a non-zero boundary (Design 1 continuous-near-d_lower). + """ + from diff_diff._nprobust_port import lprobust + + g = lprobust_golden["dgp5"] + d = np.asarray(g["d"], dtype=np.float64) + y = np.asarray(g["y"], dtype=np.float64) + res = lprobust( + y, d, eval_point=g["eval_point_override"], h=g["h"], b=g["b"], + p=1, q=2, deriv=0, kernel="epa", vce="nn", + ) + np.testing.assert_allclose(res.tau_cl, g["tau_cl"], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(res.tau_bc, g["tau_bc"], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(res.se_cl, g["se_cl"], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(res.se_rb, g["se_rb"], atol=1e-12, rtol=1e-12) + + def test_lprobust_h_gt_b_selects_h_window(self): + """When h > b, the active window is ind.h (lprobust.R:182 conditional + replacement), not a union of ind.h and ind.b.""" + from diff_diff._nprobust_port import lprobust + + rng = np.random.default_rng(42) + G = 800 + d = rng.uniform(0.0, 1.0, G) + y = d + rng.normal(0, 0.3, G) + # h = 0.4 > b = 0.2 -> active window = ind.h (the larger window). + # Expected n_used = count of obs within kernel support of h-window, + # which for epa is 0 <= (d - 0)/h <= 1 => 0 <= d <= h. + h = 0.4 + b = 0.2 + res = lprobust(y, d, eval_point=0.0, h=h, b=b, p=1, q=2, deriv=0, + kernel="epa", vce="nn", bwcheck=None) + # Post-sort d; ind.h = (|d|/h <= 1) & (d <= h) => d in [0, h]. + sorted_d = np.sort(d) + expected_n_h = int(np.sum((np.abs(sorted_d) / h <= 1) & (sorted_d != h))) + # Relaxed: must be close to expected, exact match because epa is + # > 0 strictly inside |u| <= 1 minus the point (avoided by continuity). + # Just assert n_used > sum of b-window (which is smaller). + expected_n_b = int(np.sum((np.abs(sorted_d) / b <= 1))) + assert res.n_used > expected_n_b, ( + f"h > b should select the wider h-window: n_used={res.n_used} " + f"should exceed b-window count ({expected_n_b})" + ) From 237a80098e62b21c956ec5db755f5bcfc04ccbc0 Mon Sep 17 00:00:00 2001 From: igerber Date: Sun, 19 Apr 2026 19:34:56 -0400 Subject: [PATCH 2/8] Address CI review P0 + P1 on Phase 1c P0: bias_corrected_local_linear now routes the CI through `safe_inference()` so degenerate cases with `se_robust <= 0` or non-finite `se_robust` (e.g., exact-fit / constant-y) return `(NaN, NaN)` rather than a misleading zero-width or infinite CI. Matches the repo-wide inference contract (CLAUDE.md Key Design Pattern #6). P1: Auto-bandwidth path now calls `lpbwselect_mse_dpi` directly with `cluster`, `vce`, and `nnmatch` forwarded. Previously it went through `mse_optimal_bandwidth` which hard-codes unclustered / nn / nnmatch=3, silently mismatching the downstream `lprobust` fit's reported estimator. Tests added: TestNaNSafeCI (constant-y + near-zero-SE) and TestAutoBandwidthForwardsParameters (cluster+auto, vce='hc1'+auto, nnmatch=5+auto), all asserting the selected bandwidth changes when the corresponding parameter changes (catches silent fallback). Also: suppress spurious BLAS FPE warnings in lprobust_bw's hc/hc2/hc3 branch (numpy issue #21432 pattern), newly reachable via the wired-through vce='hc1' auto-bandwidth path. Co-Authored-By: Claude Opus 4.7 (1M context) --- diff_diff/_nprobust_port.py | 18 +++-- diff_diff/local_linear.py | 76 ++++++++++++++---- tests/test_bias_corrected_lprobust.py | 108 ++++++++++++++++++++++++++ 3 files changed, 183 insertions(+), 19 deletions(-) diff --git a/diff_diff/_nprobust_port.py b/diff_diff/_nprobust_port.py index 6712c500..4bdad35b 100644 --- a/diff_diff/_nprobust_port.py +++ b/diff_diff/_nprobust_port.py @@ -519,12 +519,18 @@ def lprobust_bw( dups_B = dups[ind1] if dups is not None else None dupsid_B = dupsid[ind1] if dupsid is not None else None if vce in ("hc0", "hc1", "hc2", "hc3"): - predicts_B = R_B1 @ beta_B1 - if vce in ("hc2", "hc3"): - hii_B = np.empty(n_B1, dtype=np.float64) - RW1 = R_B1 * eW1[:, None] - for i in range(n_B1): - hii_B[i] = R_B1[i, :] @ invG_B1 @ RW1[i, :] + # Suppress spurious BLAS FPE warnings (numpy issue #21432 + # pattern); matmul on some platforms (Accelerate / OpenBLAS) + # sets divide/overflow flags on SIMD intermediates even when + # input and output are finite. + with np.errstate(divide="ignore", over="ignore", + invalid="ignore", under="ignore"): + predicts_B = R_B1 @ beta_B1 + if vce in ("hc2", "hc3"): + hii_B = np.empty(n_B1, dtype=np.float64) + RW1 = R_B1 * eW1[:, None] + for i in range(n_B1): + hii_B[i] = R_B1[i, :] @ invG_B1 @ RW1[i, :] res_B = lprobust_res( eX1, eY1, diff --git a/diff_diff/local_linear.py b/diff_diff/local_linear.py index 9ebfa1e1..d3020dbf 100644 --- a/diff_diff/local_linear.py +++ b/diff_diff/local_linear.py @@ -1073,16 +1073,59 @@ def bias_corrected_local_linear( # bandwidth_diagnostics.b_mse for callers that want to inspect or # override. The paper (de Chaisemartin et al. 2026) likewise uses a # single h*_G throughout Equation 8. + # + # In auto mode, cluster / vce / nnmatch are forwarded to + # ``lpbwselect_mse_dpi`` so bandwidth selection reflects the same + # estimator the final ``lprobust`` call will use. Calling + # ``mse_optimal_bandwidth`` (the public wrapper) instead would hard-code + # ``cluster=None, vce="nn", nnmatch=3`` and silently mismatch the + # downstream fit — a methodology bug (CI review PR #340 P1). bw_source: str bw_diag: Optional[BandwidthResult] = None if h is None and b is None: - bw_diag = mse_optimal_bandwidth( - d=d, + # Defer heavy import to call time to avoid import-cycle risk. + from diff_diff._nprobust_port import lpbwselect_mse_dpi + + stages = lpbwselect_mse_dpi( y=y, - boundary=boundary, + x=d, + cluster=cluster_arr, + eval_point=float(boundary), + p=1, + q=2, + deriv=0, + kernel=nprobust_kernel, + bwcheck=21, + bwregul=1.0, + vce=vce, + nnmatch=nnmatch, + interior=False, + ) + bw_diag = BandwidthResult( + h_mse=stages.h_mse_dpi, + b_mse=stages.b_mse_dpi, + c_bw=stages.c_bw, + bw_mp2=stages.bw_mp2, + bw_mp3=stages.bw_mp3, + stage_d1_V=stages.stage_d1.V, + stage_d1_B1=stages.stage_d1.B1, + stage_d1_B2=stages.stage_d1.B2, + stage_d1_R=stages.stage_d1.R, + stage_d2_V=stages.stage_d2.V, + stage_d2_B1=stages.stage_d2.B1, + stage_d2_B2=stages.stage_d2.B2, + stage_d2_R=stages.stage_d2.R, + stage_b_V=stages.stage_b.V, + stage_b_B1=stages.stage_b.B1, + stage_b_B2=stages.stage_b.B2, + stage_b_R=stages.stage_b.R, + stage_h_V=stages.stage_h.V, + stage_h_B1=stages.stage_h.B1, + stage_h_B2=stages.stage_h.B2, + stage_h_R=stages.stage_h.R, + n=int(d.shape[0]), kernel=kernel, - weights=None, # already validated - return_diagnostics=True, + boundary=float(boundary), ) h_val = float(bw_diag.h_mse) b_val = h_val # rho=1 default to match nprobust @@ -1125,14 +1168,21 @@ def bias_corrected_local_linear( bwcheck=21, ) - # --- Bias-corrected CI (lprobust summary.lprobust:420-421) --- - # z_{1 - alpha/2}; Python uses scipy.stats.norm.ppf. For parity with R - # on the golden tests, the golden JSON stores R's qnorm value. - from scipy.stats import norm as _norm - - z = float(_norm.ppf(1.0 - alpha / 2.0)) - ci_low = result.tau_bc - z * result.se_rb - ci_high = result.tau_bc + z * result.se_rb + # --- Bias-corrected CI via safe_inference (NaN-safe gate) --- + # When se_robust is zero, negative, or non-finite (e.g., exact-fit + # cases where the residual vector collapses), ALL inference fields — + # including the CI — must return NaN. This enforces the repo-wide + # inference contract (CLAUDE.md Key Design Pattern #6; CI review + # PR #340 P0) rather than returning a misleading zero-width or infinite + # CI. safe_inference also handles the R z = qnorm(1 - alpha/2) critical + # value via scipy.stats.norm.ppf (the golden JSON stores R's z so + # parity tests consume R's value directly and drift is pure + # tau.bc + z * se.rb arithmetic). + from diff_diff.utils import safe_inference + + _, _, (ci_low, ci_high) = safe_inference( + result.tau_bc, result.se_rb, alpha=float(alpha) + ) return BiasCorrectedFit( estimate_classical=result.tau_cl, diff --git a/tests/test_bias_corrected_lprobust.py b/tests/test_bias_corrected_lprobust.py index ebc9a372..e0101b68 100644 --- a/tests/test_bias_corrected_lprobust.py +++ b/tests/test_bias_corrected_lprobust.py @@ -387,6 +387,114 @@ def test_auto_bandwidth_covers_truth_at_95(self): assert fit.ci_low <= beta0_true <= fit.ci_high +# ============================================================================= +# NaN-safe CI (CI review PR #340 P0) +# ============================================================================= + + +class TestNaNSafeCI: + """``bias_corrected_local_linear`` must route the CI through + ``safe_inference`` so degenerate cases with ``se_robust <= 0`` or + non-finite ``se_robust`` surface as ``ci_low = ci_high = NaN`` rather + than a misleading zero-width or infinite CI.""" + + def test_constant_y_returns_nan_ci(self): + """Constant y makes residuals zero; se_robust collapses to 0. CI + must be (NaN, NaN), not a finite zero-width CI.""" + d = np.linspace(0.0, 1.0, 200) + y = np.full_like(d, 1.5) # zero residuals everywhere + fit = bias_corrected_local_linear(d, y, h=0.3, b=0.3) + assert fit.se_robust == 0.0 or not np.isfinite(fit.se_robust) + assert np.isnan(fit.ci_low) + assert np.isnan(fit.ci_high) + + def test_near_zero_se_returns_nan_ci(self): + """Near-constant y produces a tiny se_robust; the NaN-safe gate + fires when it hits zero exactly (covers the exact-fit edge case + the CI review flagged without tripping a pre-existing Phase 1b + ZeroDivisionError in the auto-bandwidth selector on truly + constant y, which is tracked separately).""" + rng = np.random.default_rng(0) + d = np.linspace(0.0, 1.0, 500) + # Residuals near machine epsilon; tau_bc stays finite. + y = 0.1 * np.ones_like(d) + rng.normal(0, 1e-300, size=d.shape) + fit = bias_corrected_local_linear(d, y, h=0.3, b=0.3) + # Either the inference should be fully valid, OR the CI gate has + # correctly fired. The contract is: se_rb <= 0 / non-finite => + # NaN CI. + if not (np.isfinite(fit.se_robust) and fit.se_robust > 0): + assert np.isnan(fit.ci_low) + assert np.isnan(fit.ci_high) + + +# ============================================================================= +# Auto-bandwidth parameter forwarding (CI review PR #340 P1) +# ============================================================================= + + +class TestAutoBandwidthForwardsParameters: + """Auto-bandwidth must forward ``cluster``, ``vce``, and ``nnmatch`` to + the bandwidth selector. Calling the public ``mse_optimal_bandwidth`` + wrapper would hard-code ``cluster=None, vce="nn", nnmatch=3`` and + silently mismatch the downstream ``lprobust`` fit — a methodology + bug. These tests pin the correct wiring.""" + + def _smoke_data(self, seed=33): + rng = np.random.default_rng(seed) + G = 600 + d = rng.uniform(0.0, 1.0, G) + y = d + d ** 2 + rng.normal(0, 0.3, G) + return d, y + + def test_auto_cluster_returns_finite(self): + """Auto-bandwidth with cluster produces a finite BiasCorrectedFit. + + No R parity anchor (nprobust's internal lpbwselect has a + singleton-cluster bug on the pilot fits); this test pins that the + Python path completes and uses the clustered bandwidth downstream, + not the unclustered one. + """ + d, y = self._smoke_data() + cluster = np.repeat(np.arange(30), 20) + fit_cluster = bias_corrected_local_linear(d, y, cluster=cluster) + fit_uncluster = bias_corrected_local_linear(d, y) + assert fit_cluster.bandwidth_source == "auto" + assert np.isfinite(fit_cluster.estimate_bias_corrected) + assert np.isfinite(fit_cluster.se_robust) + # The clustered bandwidth should differ from the unclustered one + # (different residual meat feeds into Stage-2/3 AMSE minimization). + # If the wrapper were silently passing cluster=None, these would + # be identical to bit-parity. + assert fit_cluster.h != fit_uncluster.h + + def test_auto_vce_hc1_returns_finite(self): + """Auto-bandwidth with non-default vce must use the requested vce + during bandwidth selection, not silently fall back to nn.""" + d, y = self._smoke_data() + fit_hc1 = bias_corrected_local_linear(d, y, vce="hc1") + fit_nn = bias_corrected_local_linear(d, y, vce="nn") + assert fit_hc1.bandwidth_source == "auto" + assert np.isfinite(fit_hc1.estimate_bias_corrected) + assert np.isfinite(fit_hc1.se_robust) + # Different residual definitions yield different stage-2/3 AMSE + # and therefore different bandwidths. Bit-identity would indicate + # the selector silently ignored vce. + assert fit_hc1.h != fit_nn.h + + def test_auto_nnmatch_non_default_returns_finite(self): + """Auto-bandwidth with non-default nnmatch must forward it to the + selector, not silently use the hard-coded default of 3.""" + d, y = self._smoke_data() + fit_nn5 = bias_corrected_local_linear(d, y, nnmatch=5) + fit_nn3 = bias_corrected_local_linear(d, y, nnmatch=3) + assert fit_nn5.bandwidth_source == "auto" + assert np.isfinite(fit_nn5.estimate_bias_corrected) + # nnmatch controls the NN residual construction; different values + # give different meat matrices and therefore different stage + # bandwidths. + assert fit_nn5.h != fit_nn3.h + + # ============================================================================= # Validator idempotence (regression gate for the Phase 1b extraction) # ============================================================================= From bee6805c663aef540fce95cda7152b9708181bd0 Mon Sep 17 00:00:00 2001 From: igerber Date: Sun, 19 Apr 2026 19:44:30 -0400 Subject: [PATCH 3/8] Reject object-dtype missing cluster IDs across all three surfaces CI review follow-up: the floating-dtype-only missing-ID guard in `bias_corrected_local_linear` and `lprobust` let object-dtype arrays with `None` / object `np.nan` sentinels bypass validation. The downstream `lprobust_vce` cluster loop would then group on `np.unique`, treating the sentinel as a real cluster and silently misstating clustered SE. Extract the dtype-agnostic `_cluster_has_missing` helper already used inside `lpbwselect_mse_dpi` and apply it at all three entry points: the selector, the port-level `lprobust`, and the public `bias_corrected_local_linear` wrapper. Regression tests: object-dtype cluster arrays with None and with np.nan sentinels raise a targeted ValueError at both the wrapper (test_bias_corrected_lprobust) and the port (test_nprobust_port) entry points. Co-Authored-By: Claude Opus 4.7 (1M context) --- diff_diff/_nprobust_port.py | 67 ++++++++++++++++----------- diff_diff/local_linear.py | 18 +++++-- tests/test_bias_corrected_lprobust.py | 25 +++++++++- tests/test_nprobust_port.py | 31 +++++++++++++ 4 files changed, 109 insertions(+), 32 deletions(-) diff --git a/diff_diff/_nprobust_port.py b/diff_diff/_nprobust_port.py index 4bdad35b..e46fe122 100644 --- a/diff_diff/_nprobust_port.py +++ b/diff_diff/_nprobust_port.py @@ -84,6 +84,33 @@ _VALID_VCE = ("nn", "hc0", "hc1", "hc2", "hc3") +def _cluster_has_missing(cluster: np.ndarray) -> bool: + """Detect missing cluster IDs across float / object / string dtypes. + + nprobust::lpbwselect complete-case-filters (x, y, cluster) before + dispatch. This port deliberately rejects missingness instead so + callers see it rather than silently losing rows. Used by + ``lpbwselect_mse_dpi`` and ``lprobust`` (and the public + ``bias_corrected_local_linear`` wrapper) so all three surfaces + honor the same contract. + """ + if cluster.dtype.kind in ("f", "c"): + return bool(np.any(~np.isfinite(cluster))) + # Object / string / None-containing arrays: treat None and NaN-like + # sentinels as missing. + try: + if bool(np.any([v is None for v in cluster])): + return True + except TypeError: + pass + try: + # np.nan comparisons are False; cast to float and check finiteness. + cluster_f = cluster.astype(np.float64, copy=False) + return bool(np.any(~np.isfinite(cluster_f))) + except (TypeError, ValueError): + return False + + # ============================================================================= # Kernel (W.fun, npfunctions.R:1-7) # ============================================================================= @@ -684,25 +711,9 @@ def lpbwselect_mse_dpi( # before dispatch; this port deliberately rejects instead so # callers see the missingness rather than lose rows silently. # The "reject" vs "filter" choice is documented in the module - # docstring deviations list. - has_missing = False - if cluster.dtype.kind in ("f", "c"): - has_missing = bool(np.any(~np.isfinite(cluster))) - else: - # object / string / None-containing arrays: treat None and - # NaN-like sentinels as missing. - try: - has_missing = bool(np.any([x is None for x in cluster])) - except TypeError: - has_missing = False - if not has_missing: - try: - # np.nan comparisons are False; use pd-style check. - cluster_f = cluster.astype(np.float64, copy=False) - has_missing = bool(np.any(~np.isfinite(cluster_f))) - except (TypeError, ValueError): - pass - if has_missing: + # docstring deviations list. Dtype-agnostic via + # `_cluster_has_missing`. + if _cluster_has_missing(cluster): raise ValueError( "cluster contains missing values (NaN / None). Unlike " "nprobust::lpbwselect which complete-case-filters " @@ -1130,13 +1141,17 @@ def lprobust( raise ValueError( f"cluster length ({cluster.shape[0]}) does not match x/y ({N})." ) - # Reject NaN cluster IDs (Phase 1b convention: surface missingness - # rather than silently drop rows). - cluster_float = np.asarray(cluster, dtype=np.float64).ravel() if np.issubdtype( - cluster.dtype, np.floating - ) else None - if cluster_float is not None and np.any(~np.isfinite(cluster_float)): - raise ValueError("cluster contains non-finite values (NaN or Inf).") + # Dtype-agnostic missingness check. Float NaN/Inf, object None, + # and object np.nan all get rejected here (shared with + # `lpbwselect_mse_dpi` via `_cluster_has_missing`) so the + # downstream `lprobust_vce` cluster grouping on `np.unique` + # cannot silently treat a missing sentinel as a real cluster. + if _cluster_has_missing(cluster): + raise ValueError( + "cluster contains missing values (NaN / None). " + "Filter your data before the call or drop missing " + "observations explicitly." + ) # --- vce="nn" setup: sort ascending, precompute dups --- dups: Optional[np.ndarray] = None diff --git a/diff_diff/local_linear.py b/diff_diff/local_linear.py index d3020dbf..ca0339f4 100644 --- a/diff_diff/local_linear.py +++ b/diff_diff/local_linear.py @@ -1050,19 +1050,27 @@ def bias_corrected_local_linear( d, y = _validate_had_inputs(d, y, boundary) n_total = int(d.shape[0]) - # Reject missing cluster IDs up front (Phase 1b convention). + # Reject missing cluster IDs up front (Phase 1b convention). Delegates + # to the dtype-agnostic `_cluster_has_missing` helper in the port so + # wrapper, port-level `lprobust`, and `lpbwselect_mse_dpi` all enforce + # the same missing-sentinel contract across float / object / string + # dtypes (CI review PR #340 P1 follow-up). cluster_arr: Optional[np.ndarray] = None if cluster is not None: + from diff_diff._nprobust_port import _cluster_has_missing + cluster_arr = np.asarray(cluster).ravel() if cluster_arr.shape[0] != n_total: raise ValueError( f"cluster length ({cluster_arr.shape[0]}) does not match " f"d/y ({n_total})." ) - if np.issubdtype(cluster_arr.dtype, np.floating) and not np.all( - np.isfinite(cluster_arr) - ): - raise ValueError("cluster contains non-finite values (NaN or Inf).") + if _cluster_has_missing(cluster_arr): + raise ValueError( + "cluster contains missing values (NaN / None). Filter " + "your data before the call or drop missing observations " + "explicitly." + ) # --- Resolve (h, b) --- # nprobust's lprobust() with the default rho=1 sets b = h / rho = h diff --git a/tests/test_bias_corrected_lprobust.py b/tests/test_bias_corrected_lprobust.py index e0101b68..b143c6dc 100644 --- a/tests/test_bias_corrected_lprobust.py +++ b/tests/test_bias_corrected_lprobust.py @@ -311,11 +311,34 @@ def test_weights_raises_not_implemented(self): bias_corrected_local_linear(d, y, h=0.3, weights=np.ones(100)) def test_cluster_nan_raises(self): + """Float NaN in cluster IDs is rejected.""" d = np.linspace(0.0, 1.0, 100) y = d.copy() cluster = np.repeat(np.arange(10), 10).astype(np.float64) cluster[5] = np.nan - with pytest.raises(ValueError, match="cluster contains non-finite"): + with pytest.raises(ValueError, match="cluster contains missing"): + bias_corrected_local_linear(d, y, h=0.3, cluster=cluster) + + def test_cluster_object_none_raises(self): + """Object-dtype cluster with a ``None`` sentinel is rejected. + Float-only checks let this through; the dtype-agnostic helper + catches it (CI review PR #340 follow-up P1).""" + d = np.linspace(0.0, 1.0, 100) + y = d.copy() + cluster = np.array( + [i // 10 if i != 5 else None for i in range(100)], dtype=object + ) + with pytest.raises(ValueError, match="cluster contains missing"): + bias_corrected_local_linear(d, y, h=0.3, cluster=cluster) + + def test_cluster_object_nan_raises(self): + """Object-dtype cluster with np.nan is rejected.""" + d = np.linspace(0.0, 1.0, 100) + y = d.copy() + cluster = np.array( + [i // 10 if i != 5 else np.nan for i in range(100)], dtype=object + ) + with pytest.raises(ValueError, match="cluster contains missing"): bias_corrected_local_linear(d, y, h=0.3, cluster=cluster) def test_unknown_kernel_raises(self): diff --git a/tests/test_nprobust_port.py b/tests/test_nprobust_port.py index 802acee9..017375cb 100644 --- a/tests/test_nprobust_port.py +++ b/tests/test_nprobust_port.py @@ -588,6 +588,37 @@ def test_lprobust_shifted_boundary_dgp5(self, lprobust_golden): np.testing.assert_allclose(res.se_cl, g["se_cl"], atol=1e-12, rtol=1e-12) np.testing.assert_allclose(res.se_rb, g["se_rb"], atol=1e-12, rtol=1e-12) + def test_lprobust_cluster_object_none_raises(self): + """Port-level: object-dtype cluster with None sentinel is rejected. + Mirror of the wrapper test; pins that `_cluster_has_missing` fires + inside the direct port entry point too (CI review PR #340 + follow-up P1).""" + from diff_diff._nprobust_port import lprobust + + rng = np.random.default_rng(0) + G = 200 + d = rng.uniform(0.0, 1.0, G) + y = d + rng.normal(0, 0.3, G) + cluster = np.array( + [i // 10 if i != 5 else None for i in range(G)], dtype=object + ) + with pytest.raises(ValueError, match="cluster contains missing"): + lprobust(y, d, eval_point=0.0, h=0.3, b=0.3, cluster=cluster) + + def test_lprobust_cluster_object_nan_raises(self): + """Port-level: object-dtype cluster with np.nan is rejected.""" + from diff_diff._nprobust_port import lprobust + + rng = np.random.default_rng(0) + G = 200 + d = rng.uniform(0.0, 1.0, G) + y = d + rng.normal(0, 0.3, G) + cluster = np.array( + [i // 10 if i != 5 else np.nan for i in range(G)], dtype=object + ) + with pytest.raises(ValueError, match="cluster contains missing"): + lprobust(y, d, eval_point=0.0, h=0.3, b=0.3, cluster=cluster) + def test_lprobust_h_gt_b_selects_h_window(self): """When h > b, the active window is ind.h (lprobust.R:182 conditional replacement), not a union of ind.h and ind.b.""" From 7672f8d3b2dbb7b2a32afa6e793b411367e40085 Mon Sep 17 00:00:00 2001 From: igerber Date: Sun, 19 Apr 2026 20:34:00 -0400 Subject: [PATCH 4/8] Clarify auto-bandwidth docstring: direct selector + rho=1 Docstring note from AI review. The wrapper's docstring still said auto mode chooses both h and b via `mse_optimal_bandwidth`, but the implementation now calls `_nprobust_port.lpbwselect_mse_dpi` directly (to forward cluster / vce / nnmatch) and then sets `b = h` per nprobust's rho=1 default. Update the docstrings to reflect that. Behavior is unchanged; this is a comment-only clarification. Co-Authored-By: Claude Opus 4.7 (1M context) --- diff_diff/local_linear.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/diff_diff/local_linear.py b/diff_diff/local_linear.py index ca0339f4..4250bfcd 100644 --- a/diff_diff/local_linear.py +++ b/diff_diff/local_linear.py @@ -889,13 +889,17 @@ class applies the beta-scale ``(1/G) * sum(D_{g,2})`` rescaling. Main and bias-correction bandwidths actually used (post-``bwcheck`` floor). bandwidth_source : {"auto", "user"} - ``"auto"`` when the selector chose ``h`` and ``b`` via - :func:`mse_optimal_bandwidth`; ``"user"`` when the caller passed - explicit bandwidths. + ``"auto"`` when the wrapper called the Phase 1b DPI selector + (``_nprobust_port.lpbwselect_mse_dpi``) internally with the + caller's ``cluster`` / ``vce`` / ``nnmatch``; ``"user"`` when the + caller passed explicit bandwidths. Auto mode then enforces + nprobust's ``rho=1`` default by setting ``b = h``; the + selector's distinct ``b_mse`` is surfaced via + ``bandwidth_diagnostics`` but not applied. bandwidth_diagnostics : BandwidthResult or None Full Phase 1b selector output when ``bandwidth_source == "auto"``; ``None`` when the user supplied bandwidths (to avoid a redundant - Phase 1b computation). + selector call). n_used : int Observations retained in the active kernel window (``sum(ind.b)`` when ``h <= b`` and ``sum(ind.h)`` when ``h > b``; with the @@ -972,9 +976,15 @@ def bias_corrected_local_linear( see Phase 1b's input contract. kernel : {"epanechnikov", "triangular", "uniform"}, default="epanechnikov" h : float or None, default=None - Main bandwidth. ``None`` auto-selects both ``h`` and ``b`` via - :func:`mse_optimal_bandwidth`. If ``h`` is provided and ``b`` is - ``None``, ``b = h`` (nprobust ``rho=1`` default). + Main bandwidth. ``None`` auto-selects ``h`` by calling + ``diff_diff._nprobust_port.lpbwselect_mse_dpi`` directly with the + supplied ``cluster``, ``vce``, and ``nnmatch`` so the selector + and the final fit use the same estimator. ``b`` is then set to + ``h`` per nprobust's ``rho=1`` default; the selector's distinct + ``b_mse`` is surfaced through + ``BiasCorrectedFit.bandwidth_diagnostics`` for inspection but + not applied. If ``h`` is provided and ``b`` is ``None``, + ``b = h`` likewise. b : float or None, default=None Bias-correction bandwidth. Pairs with ``h`` (see above). ``b`` provided without ``h`` raises ``ValueError``. From 12a8efea071535d7dd3798ca0bf8981af9980c4f Mon Sep 17 00:00:00 2001 From: igerber Date: Mon, 20 Apr 2026 06:39:40 -0400 Subject: [PATCH 5/8] Clarify z-critical-value doc claims (audit export, not direct consumption) P3 doc-accuracy note from AI review: the registry, R generator, and local_linear.py comments said the Python side "consumes R's z directly" but the wrapper actually computes its own z via scipy.stats.norm.ppf inside safe_inference(). The golden JSON's z field is an audit/reference export so a reviewer can confirm R's qnorm and Python's scipy.stats.norm.ppf agree to machine precision. The parity harness compares Python-computed CI bounds to R-computed CI bounds (not R's z fed into Python's arithmetic). Behavior is unchanged; only doc phrasing. Co-Authored-By: Claude Opus 4.7 (1M context) --- benchmarks/R/generate_nprobust_lprobust_golden.R | 7 +++++-- diff_diff/local_linear.py | 12 +++++++----- docs/methodology/REGISTRY.md | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/benchmarks/R/generate_nprobust_lprobust_golden.R b/benchmarks/R/generate_nprobust_lprobust_golden.R index b5995669..5f4ada04 100644 --- a/benchmarks/R/generate_nprobust_lprobust_golden.R +++ b/benchmarks/R/generate_nprobust_lprobust_golden.R @@ -123,8 +123,11 @@ golden <- list( generator = "benchmarks/R/generate_nprobust_lprobust_golden.R", algorithm = paste("nprobust::lprobust(..., bwselect='mse-dpi') at a single", "eval point, p=1, deriv=0, kernel='epa', vce='nn'", - "unless noted. z = qnorm(1 - alpha/2) exported so the", - "Python side consumes R's critical value directly.") + "unless noted. The Python wrapper computes its own", + "z_{1-alpha/2} via scipy.stats.norm.ppf inside", + "safe_inference(); R's z is exported here for audit", + "so a reviewer can verify the two critical values", + "agree to machine precision.") ), dgp1 = c(list(n = G, d = d1, y = y1, kernel = "epa", vce = "nn", description = "Uniform(0,1), polynomial m(d) = d + d^2"), diff --git a/diff_diff/local_linear.py b/diff_diff/local_linear.py index 4250bfcd..c1e88d81 100644 --- a/diff_diff/local_linear.py +++ b/diff_diff/local_linear.py @@ -1191,11 +1191,13 @@ def bias_corrected_local_linear( # cases where the residual vector collapses), ALL inference fields — # including the CI — must return NaN. This enforces the repo-wide # inference contract (CLAUDE.md Key Design Pattern #6; CI review - # PR #340 P0) rather than returning a misleading zero-width or infinite - # CI. safe_inference also handles the R z = qnorm(1 - alpha/2) critical - # value via scipy.stats.norm.ppf (the golden JSON stores R's z so - # parity tests consume R's value directly and drift is pure - # tau.bc + z * se.rb arithmetic). + # PR #340 P0) rather than returning a misleading zero-width or + # infinite CI. safe_inference computes the critical value z_{1-α/2} + # via scipy.stats.norm.ppf; the parity tests compare Python's + # scipy-computed ci_low/ci_high to R's qnorm-computed ci_low/ci_high + # stored in the golden JSON. The golden JSON also exports R's raw + # `z` value for audit/reference so a reviewer can verify the two + # critical values agree to machine precision. from diff_diff.utils import safe_inference _, _, (ci_low, ci_high) = safe_inference( diff --git a/docs/methodology/REGISTRY.md b/docs/methodology/REGISTRY.md index d33c1500..d69d225c 100644 --- a/docs/methodology/REGISTRY.md +++ b/docs/methodology/REGISTRY.md @@ -2314,7 +2314,7 @@ Shipped as `did_had_pretest_workflow()` and surfaced via `practitioner_next_step - [x] Phase 1a: `clubSandwich::vcovCR(..., type="CR2")` parity harness committed: R script at `benchmarks/R/generate_clubsandwich_golden.R` plus a regression-anchor JSON at `benchmarks/data/clubsandwich_cr2_golden.json`. **Note:** the committed JSON currently has `"source": "python_self_reference"` and pins numerical stability only; authoritative R-produced values are generated by running the R script, which the TODO.md row under Methodology/Correctness tracks. The parity test at `tests/test_linalg_hc2_bm.py::TestCR2BMCluster::test_cr2_parity_with_golden` runs at 1e-6 tolerance (Phase 1a plan commits 6-digit parity once R regen completes). - [x] Phase 1b: Calonico-Cattaneo-Farrell (2018) MSE-optimal bandwidth selector. In-house port of `nprobust::lpbwselect(bwselect="mse-dpi")` (nprobust 0.5.0, SHA `36e4e53`) as `diff_diff.mse_optimal_bandwidth` and `BandwidthResult`, backed by the private `diff_diff._nprobust_port` module (`kernel_W`, `lprobust_bw`, `lpbwselect_mse_dpi`). Three-stage DPI with four `lprobust.bw` calls at orders `q+1`, `q+2`, `q`, `p`. Python matches R to `0.0000%` relative error (i.e., bit-parity within float64 precision, ~8-13 digits agreement) on all five stage bandwidths (`c_bw`, `bw_mp2`, `bw_mp3`, `b_mse`, `h_mse`) across three deterministic DGPs (uniform, Beta(2,2), half-normal) via `benchmarks/R/generate_nprobust_golden.R` → `benchmarks/data/nprobust_mse_dpi_golden.json`. **Note:** `weights=` is currently unsupported (raises `NotImplementedError`); nprobust's `lpbwselect` has no weight argument so there is no parity anchor. Weighted-data support deferred to Phase 2 (survey-design adaptation). **Note (public API scope restriction):** the exported wrapper `mse_optimal_bandwidth` hard-codes the HAD Phase 1b configuration (`p=1`, `deriv=0`, `interior=False`, `vce="nn"`, `nnmatch=3`). The underlying port supports a broader surface (`hc0`/`hc1`/`hc2`/`hc3` variance, interior evaluation, higher `p`), but those paths are not parity-tested against `nprobust` and are deferred. Callers needing the broader surface should use `diff_diff._nprobust_port.lpbwselect_mse_dpi` directly and accept that parity has not been verified on non-HAD configurations. **Note (input contract):** the wrapper enforces HAD's support restriction `D_{g,2} >= 0` (front-door `ValueError` on negative doses and empty inputs). `boundary` must equal `0` (Design 1') or `float(d.min())` (Design 1 continuous-near-d_lower) within float tolerance; off-support values raise `ValueError`. When `boundary ~ 0`, the wrapper additionally requires `d.min() <= 0.05 * median(|d|)` as a Design 1' support plausibility heuristic, chosen to pass the paper's thin-boundary-density DGPs (Beta(2,2), d.min/median ~ 3%) while rejecting substantially off-support samples (U(0.5, 1.0), d.min/median ~ 1.0). Detected mass-point designs (`d.min() > 0` with modal fraction at `d.min() > 2%`) raise `NotImplementedError` pointing to the Phase 2 2SLS path per paper Section 3.2.4. - [x] Phase 1c: First-order bias estimator `M̂_{ĥ*_G}` and robust variance `V̂_{ĥ*_G}`. Implemented via Calonico-Cattaneo-Titiunik (2014) bias-combined design matrix `Q.q` in the in-house port `diff_diff._nprobust_port.lprobust` (single-eval-point path of `nprobust::lprobust`, npfunctions.R:177-246). -- [x] Phase 1c: Bias-corrected CI (Equation 8) with `nprobust` parity. Public wrapper `diff_diff.bias_corrected_local_linear` returns `BiasCorrectedFit` with μ̂-scale point estimate, robust SE, and bias-corrected 95% CI `[tau.bc ± z_{1-α/2} * se.rb]`. The β-scale rescaling from Equation 8, `(1/G) Σ D_{g,2}`, is applied by Phase 2's `HeterogeneousAdoptionDiD.fit()`. Parity against `nprobust::lprobust(..., bwselect="mse-dpi")` is tiered: `atol=1e-12` on `tau_cl`/`tau_bc`/`se_cl`/`se_rb` (the `Q.q` outer-product + broadcast-multiply path drifts slightly from the Phase 1b bit-parity primitives), `atol=1e-13` on CI bounds (R's `z_{1-α/2}` is stored in the golden JSON so Python consumes it directly rather than calling `scipy.stats.norm.ppf`). The clustered DGP achieves bit-parity (`atol=1e-14`) when cluster IDs happen to be sorted; otherwise BLAS reduction ordering can drift to `atol=1e-10`. Generator: `benchmarks/R/generate_nprobust_lprobust_golden.R`. **Note:** The wrapper matches nprobust's `rho=1` default (`b = h` in auto mode), so Phase 1b's separately-computed `b_mse` is surfaced via `bandwidth_diagnostics.b_mse` but not applied. **Deviation from R:** nprobust silently accepts `vce="hc2"`/`vce="hc3"` combined with `cluster=`; this wrapper raises `ValueError` because the combination is not a well-defined estimator (hc2/hc3 assume independent observations). **Note (Phase 1c internal bug workaround):** The clustered golden DGP 4 uses manual `h=b=0.3` to sidestep an nprobust-internal singleton-cluster shape bug in `lprobust.vce` fired by the mse-dpi pilot fits; the Python port has no equivalent bug. +- [x] Phase 1c: Bias-corrected CI (Equation 8) with `nprobust` parity. Public wrapper `diff_diff.bias_corrected_local_linear` returns `BiasCorrectedFit` with μ̂-scale point estimate, robust SE, and bias-corrected 95% CI `[tau.bc ± z_{1-α/2} * se.rb]`. The β-scale rescaling from Equation 8, `(1/G) Σ D_{g,2}`, is applied by Phase 2's `HeterogeneousAdoptionDiD.fit()`. Parity against `nprobust::lprobust(..., bwselect="mse-dpi")` is tiered: `atol=1e-12` on `tau_cl`/`tau_bc`/`se_cl`/`se_rb` (the `Q.q` outer-product + broadcast-multiply path drifts slightly from the Phase 1b bit-parity primitives), `atol=1e-13` on CI bounds (the Python wrapper computes its own `z_{1-α/2}` via `scipy.stats.norm.ppf` inside `safe_inference()`; R's `qnorm` value is stored in the golden JSON for audit, and the parity harness compares Python's CI bounds to R's pre-computed CI bounds so any residual drift is purely the floating-point arithmetic in `tau.bc ± z * se.rb`, not a critical-value disagreement). The clustered DGP achieves bit-parity (`atol=1e-14`) when cluster IDs happen to be sorted; otherwise BLAS reduction ordering can drift to `atol=1e-10`. Generator: `benchmarks/R/generate_nprobust_lprobust_golden.R`. **Note:** The wrapper matches nprobust's `rho=1` default (`b = h` in auto mode), so Phase 1b's separately-computed `b_mse` is surfaced via `bandwidth_diagnostics.b_mse` but not applied. **Deviation from R:** nprobust silently accepts `vce="hc2"`/`vce="hc3"` combined with `cluster=`; this wrapper raises `ValueError` because the combination is not a well-defined estimator (hc2/hc3 assume independent observations). **Note (Phase 1c internal bug workaround):** The clustered golden DGP 4 uses manual `h=b=0.3` to sidestep an nprobust-internal singleton-cluster shape bug in `lprobust.vce` fired by the mse-dpi pilot fits; the Python port has no equivalent bug. - [ ] Phase 2: `HeterogeneousAdoptionDiD` class with separate code paths for Design 1', Design 1 mass-point, and Design 1 continuous-near-`d̲`. - [ ] Phase 2: `design="auto"` detection rule (`min_g D_{g,2} < 0.01 · median_g D_{g,2}` → continuous_at_zero; modal-min fraction > 2% → mass_point; else continuous_near_lower). - [ ] Phase 2: Panel validator verifies `D_{g,1} = 0` for all units; error on staggered timing without last-cohort subgroup. From 7eeb42ac95be199eb937c4e827f9bb382135b6ac Mon Sep 17 00:00:00 2001 From: igerber Date: Mon, 20 Apr 2026 07:13:21 -0400 Subject: [PATCH 6/8] Align Phase 1c parity-contract narrative across wrapper, JSON, tests P3 follow-up from AI review. Three small inconsistencies to resolve: 1. `bias_corrected_local_linear` docstring still described tau_cl/se_cl as bit-parity and said Python consumes R's z directly. The actual contract is atol=1e-12 on all four scalars (DGP 1-3) and the wrapper computes its own z via scipy.stats.norm.ppf; R's qnorm is stored in the JSON for audit only. Docstring updated to match. 2. Committed golden JSON metadata still had the old "consume R's critical value directly" string because the generator was edited without regenerating. Regenerated so JSON metadata matches the corrected audit-export wording in the R script. 3. Parity tests for DGP 4 and DGP 5 did not assert CI bounds. Added ci_low / ci_high assertions at the same tolerance as the corresponding se_rb assertion (bit-parity for DGP 4, 1e-12 for DGP 5), so the audit surface matches what the registry states. Behavior unchanged; tests strengthened and docs aligned. Co-Authored-By: Claude Opus 4.7 (1M context) --- benchmarks/data/nprobust_lprobust_golden.json | 2 +- diff_diff/local_linear.py | 17 +++++++++++------ tests/test_bias_corrected_lprobust.py | 13 +++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/benchmarks/data/nprobust_lprobust_golden.json b/benchmarks/data/nprobust_lprobust_golden.json index 2118c7a4..c27db69f 100644 --- a/benchmarks/data/nprobust_lprobust_golden.json +++ b/benchmarks/data/nprobust_lprobust_golden.json @@ -10,7 +10,7 @@ "dgp5": 20260421 }, "generator": "benchmarks/R/generate_nprobust_lprobust_golden.R", - "algorithm": "nprobust::lprobust(..., bwselect='mse-dpi') at a single eval point, p=1, deriv=0, kernel='epa', vce='nn' unless noted. z = qnorm(1 - alpha/2) exported so the Python side consumes R's critical value directly." + "algorithm": "nprobust::lprobust(..., bwselect='mse-dpi') at a single eval point, p=1, deriv=0, kernel='epa', vce='nn' unless noted. The Python wrapper computes its own z_{1-alpha/2} via scipy.stats.norm.ppf inside safe_inference(); R's z is exported here for audit so a reviewer can verify the two critical values agree to machine precision." }, "dgp1": { "n": 2000, diff --git a/diff_diff/local_linear.py b/diff_diff/local_linear.py index c1e88d81..be799146 100644 --- a/diff_diff/local_linear.py +++ b/diff_diff/local_linear.py @@ -1020,12 +1020,17 @@ def bias_corrected_local_linear( Notes ----- Parity against ``nprobust::lprobust(..., bwselect="mse-dpi")`` is tiered - (see ``docs/methodology/REGISTRY.md``): bit-parity on ``tau_cl``/``se_cl`` - (same arithmetic path as Phase 1b's bit-parity-verified primitives); - ``atol=1e-12`` on ``tau_bc``/``se_rb`` (new outer-product step); and - ``atol=1e-13`` on CI bounds (R's ``z_{1-alpha/2}`` is stored in the - golden JSON so Python consumes it directly rather than calling - ``scipy.stats.norm.ppf``). + (see ``docs/methodology/REGISTRY.md``): ``atol=1e-12`` on ``tau_cl``, + ``tau_bc``, ``se_cl``, and ``se_rb`` across the three unclustered + golden DGPs; ``atol=1e-13`` on CI bounds. The Python wrapper computes + its own ``z_{1-alpha/2}`` via ``scipy.stats.norm.ppf`` inside + ``safe_inference()``; R's ``qnorm`` value is stored in the golden JSON + for audit, and the parity harness compares Python's CI bounds to R's + pre-computed CI bounds, so any residual drift is purely the + floating-point arithmetic in ``tau.bc +/- z * se.rb``, not a + critical-value disagreement. Clustered DGP 4 achieves bit-parity + (``atol=1e-14``) when cluster IDs happen to be in first-appearance + order; otherwise BLAS reduction ordering can drift to ``atol=1e-10``. """ if weights is not None: raise NotImplementedError( diff --git a/tests/test_bias_corrected_lprobust.py b/tests/test_bias_corrected_lprobust.py index b143c6dc..2383f619 100644 --- a/tests/test_bias_corrected_lprobust.py +++ b/tests/test_bias_corrected_lprobust.py @@ -192,6 +192,13 @@ def test_clustered_parity_dgp_4(self, golden): atol=1e-14, rtol=1e-14) np.testing.assert_allclose(fit.se_robust, g["se_rb"], atol=1e-14, rtol=1e-14) + # CI bounds at bit-parity too (Python's scipy ppf and R's qnorm + # agree to ULP; the remaining drift is pure tau.bc +/- z * se.rb + # floating-point arithmetic). + np.testing.assert_allclose(fit.ci_low, g["ci_low"], + atol=1e-14, rtol=1e-14) + np.testing.assert_allclose(fit.ci_high, g["ci_high"], + atol=1e-14, rtol=1e-14) def test_shifted_boundary_parity_dgp_5(self, golden): """Design 1 continuous-near-d_lower: boundary = d.min() > 0.""" @@ -210,6 +217,12 @@ def test_shifted_boundary_parity_dgp_5(self, golden): atol=1e-12, rtol=1e-12) np.testing.assert_allclose(fit.se_robust, g["se_rb"], atol=1e-12, rtol=1e-12) + # CI bounds at the same tolerance (Python scipy ppf vs R qnorm + # agree to ULP; tau.bc +/- z * se.rb inherits se_rb's drift). + np.testing.assert_allclose(fit.ci_low, g["ci_low"], + atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(fit.ci_high, g["ci_high"], + atol=1e-12, rtol=1e-12) # ============================================================================= From 2c48e60e7efd8524acd69b5aeab939e688fadd89 Mon Sep 17 00:00:00 2001 From: igerber Date: Mon, 20 Apr 2026 07:34:21 -0400 Subject: [PATCH 7/8] Restrict Phase 1c wrapper vce to 'nn'; align tolerance docs Address CI review P1 on HC2/HC3 leverage. nprobust's lprobust reuses the p-fit hat-matrix leverage for the q-fit residual path (lprobust.R:229-241). The Python port matches R exactly, but that R behavior deserves a derivation and a dedicated golden anchor before the public wrapper can advertise CCT-2014 conformance on hc-mode paths. The Phase 1c plan always said hc0-3 were "exposed but not golden-tested"; this commit restricts the public surface to what actually has a parity anchor. Changes: - `bias_corrected_local_linear`: `vce != "nn"` now raises `NotImplementedError` with a pointer to the port-level `diff_diff._nprobust_port.lprobust` for callers who still need the broader surface. Docstring updated. - Tests: swap positive-path hc-mode tests for negative-path raises; drop `test_auto_vce_hc1_returns_finite` (now superseded by `test_auto_vce_hc1_rejected_in_phase_1c`); drop the cluster+hc2/hc3 tests (now covered by the plain hc2/hc3 rejection tests). - REGISTRY.md: swap "Deviation from R" wording for a clearer "public-API surface restriction" note explaining the R-side hii reuse and the deferred derivation. - TODO.md: upgrade the hc-mode expansion TODO from Low to Medium and document the q-fit leverage derivation as the gating work. Also fix the P3 tolerance-doc inconsistency: registry/docstring now say atol=1e-12 on all six scalars across unclustered DGPs (tests actually assert 1e-12, with DGP 1 / DGP 3 landing closer to 1e-13 in practice). Co-Authored-By: Claude Opus 4.7 (1M context) --- TODO.md | 2 +- diff_diff/local_linear.py | 62 ++++++++++++++++----------- docs/methodology/REGISTRY.md | 2 +- tests/test_bias_corrected_lprobust.py | 54 ++++++++++++----------- 4 files changed, 68 insertions(+), 52 deletions(-) diff --git a/TODO.md b/TODO.md index f3876d5d..0f44c662 100644 --- a/TODO.md +++ b/TODO.md @@ -87,7 +87,7 @@ Deferred items from PR reviews that were not addressed before merge. | TROP Rust vs Python grid-search divergence on rank-deficient Y: on two near-parallel control units, LOOCV grid-search ATT diverges ~6% between Rust (`trop_global.py:688`) and Python fallback (`trop_global.py:753`). Either grid-winner ties are broken differently or the per-λ solver reaches different stationary points under rank deficiency. Audit finding #23 flagged this surface. `@pytest.mark.xfail(strict=True)` in `tests/test_rust_backend.py::TestTROPRustEdgeCaseParity::test_grid_search_rank_deficient_Y` baselines the gap. | `trop_global.py`, `rust/` | follow-up | Medium | | TROP Rust vs Python bootstrap SE divergence under fixed seed: `seed=42` on a tiny panel produces ~28% bootstrap-SE gap. Root cause: Rust bootstrap uses its own RNG (`rand` crate) while Python uses `numpy.random.default_rng`; same seed value maps to different bytestreams across backends. Audit axis-H (RNG/seed) adjacent. `@pytest.mark.xfail(strict=True)` in `tests/test_rust_backend.py::TestTROPRustEdgeCaseParity::test_bootstrap_seed_reproducibility` baselines the gap. Unifying RNG (threading a numpy-generated seed-sequence into Rust, or porting Python to ChaCha) would close it. | `trop_global.py`, `rust/` | follow-up | Medium | | `bias_corrected_local_linear`: extend golden parity to `kernel="triangular"` and `kernel="uniform"` (currently epa-only; all three kernels share `kernel_W` and the `lprobust` math, so parity is expected but not separately asserted). | `benchmarks/R/generate_nprobust_lprobust_golden.R`, `tests/test_bias_corrected_lprobust.py` | Phase 1c | Low | -| `bias_corrected_local_linear`: extend golden parity to `vce in {"hc0", "hc1", "hc2", "hc3"}`. The port supports all four via `lprobust_res`'s hc branches but Phase 1c golden-tested only `vce="nn"`. | `benchmarks/R/generate_nprobust_lprobust_golden.R`, `tests/test_bias_corrected_lprobust.py` | Phase 1c | Low | +| `bias_corrected_local_linear`: expose `vce in {"hc0", "hc1", "hc2", "hc3"}` on the public wrapper once R parity goldens exist (currently raises `NotImplementedError`). The port-level `lprobust` and `lprobust_res` already support all four; expanding the public surface requires a golden generator for each hc mode and a decision on hc2/hc3 q-fit leverage (R reuses p-fit `hii` for q-fit residuals; whether to match that or stage-match deserves a derivation before the wrapper advertises CCT-2014 conformance). | `diff_diff/local_linear.py::bias_corrected_local_linear`, `benchmarks/R/generate_nprobust_lprobust_golden.R`, `tests/test_bias_corrected_lprobust.py` | Phase 1c | Medium | | `bias_corrected_local_linear`: support `weights=` once survey-design adaptation lands. nprobust's `lprobust` has no weight argument so there is no parity anchor; derivation needed. | `diff_diff/local_linear.py`, `diff_diff/_nprobust_port.py::lprobust` | Phase 1c | Medium | | `bias_corrected_local_linear`: support multi-eval grid (`neval > 1`) with cross-covariance (`covgrid=TRUE` branch of `lprobust.R:253-378`). Not needed for HAD but useful for multi-dose diagnostics. | `diff_diff/_nprobust_port.py::lprobust` | Phase 1c | Low | | Clustered-DGP parity: Phase 1c's DGP 4 uses manual `h=b=0.3` to sidestep an nprobust-internal singleton-cluster bug in `lpbwselect.mse.dpi`'s pilot fits. Once nprobust ships a fix (or we derive one independently), add a clustered-auto-bandwidth parity test. | `benchmarks/R/generate_nprobust_lprobust_golden.R` | Phase 1c | Low | diff --git a/diff_diff/local_linear.py b/diff_diff/local_linear.py index be799146..19db3b52 100644 --- a/diff_diff/local_linear.py +++ b/diff_diff/local_linear.py @@ -990,9 +990,11 @@ def bias_corrected_local_linear( provided without ``h`` raises ``ValueError``. alpha : float, default=0.05 CI level; ``0.05`` gives a 95% CI. Must be in ``(0, 1)``. - vce : {"nn", "hc0", "hc1", "hc2", "hc3"}, default="nn" - Variance-estimation method. ``"nn"`` is parity-tested in - Phase 1c; other modes are exposed but not golden-parity-tested. + vce : {"nn"}, default="nn" + Variance-estimation method. Only ``"nn"`` is supported in + Phase 1c; hc0/hc1/hc2/hc3 are queued for Phase 2+ pending + dedicated R parity goldens. Passing anything else raises + ``NotImplementedError``. cluster : np.ndarray or None Per-observation cluster IDs for cluster-robust variance. Missing (NaN) cluster IDs raise ``ValueError`` rather than silently @@ -1019,18 +1021,19 @@ def bias_corrected_local_linear( Notes ----- - Parity against ``nprobust::lprobust(..., bwselect="mse-dpi")`` is tiered - (see ``docs/methodology/REGISTRY.md``): ``atol=1e-12`` on ``tau_cl``, - ``tau_bc``, ``se_cl``, and ``se_rb`` across the three unclustered - golden DGPs; ``atol=1e-13`` on CI bounds. The Python wrapper computes - its own ``z_{1-alpha/2}`` via ``scipy.stats.norm.ppf`` inside - ``safe_inference()``; R's ``qnorm`` value is stored in the golden JSON - for audit, and the parity harness compares Python's CI bounds to R's - pre-computed CI bounds, so any residual drift is purely the - floating-point arithmetic in ``tau.bc +/- z * se.rb``, not a - critical-value disagreement. Clustered DGP 4 achieves bit-parity - (``atol=1e-14``) when cluster IDs happen to be in first-appearance - order; otherwise BLAS reduction ordering can drift to ``atol=1e-10``. + Parity against ``nprobust::lprobust(..., bwselect="mse-dpi")`` is + asserted at ``atol=1e-12`` on ``tau_cl``, ``tau_bc``, ``se_cl``, + ``se_rb``, ``ci_low``, and ``ci_high`` across the three unclustered + golden DGPs; DGP 1 and DGP 3 typically land closer to ``1e-13``. + The Python wrapper computes its own ``z_{1-alpha/2}`` via + ``scipy.stats.norm.ppf`` inside ``safe_inference()``; R's ``qnorm`` + value is stored in the golden JSON for audit, and the parity harness + compares Python's CI bounds to R's pre-computed CI bounds, so any + residual drift is purely the floating-point arithmetic in + ``tau.bc +/- z * se.rb``, not a critical-value disagreement. + Clustered DGP 4 achieves bit-parity (``atol=1e-14``) when cluster + IDs are in first-appearance order; otherwise BLAS reduction + ordering can drift to ``atol=1e-10``. """ if weights is not None: raise NotImplementedError( @@ -1050,15 +1053,26 @@ def bias_corrected_local_linear( if not (0.0 < alpha < 1.0): raise ValueError(f"alpha must be in (0, 1); got {alpha!r}.") - # Reject manifestly-incompatible vce+cluster combinations upfront. - # nprobust's lprobust silently accepts hc2/hc3 + cluster and produces a - # weighted-score cluster meat that is NOT the standard CR2 or clustered - # HC estimator. Rather than propagate that ambiguity, reject. - if cluster is not None and vce in ("hc2", "hc3"): - raise ValueError( - f"vce={vce!r} combined with cluster= is not a well-defined " - "estimator in nprobust (hc2/hc3 assume independent observations)." - " Use vce='nn' or drop the cluster argument." + # Phase 1c public-wrapper vce restriction. + # Only ``vce="nn"`` is golden-tested against R in Phase 1c. Exposing + # hc0/hc1/hc2/hc3 on the public surface would ship non-parity-verified + # inference -- and nprobust's internal hc2/hc3 residual path reuses + # the p-fit hat-matrix leverage for the q-fit residuals (lprobust.R + # :229-241), a detail that would need its own R parity anchor before + # the Python port can advertise it as CCT-2014-compliant. Defer the + # hc-mode public surface to Phase 2+ with dedicated goldens. The + # port-level ``diff_diff._nprobust_port.lprobust`` still accepts + # hc0..hc3 for callers who need the broader surface and accept that + # the hc-mode behavior has not been separately parity-tested. + if vce != "nn": + raise NotImplementedError( + f"vce={vce!r} is not supported on bias_corrected_local_linear " + "in Phase 1c. Only vce='nn' is golden-tested against R " + "nprobust::lprobust in this phase; hc0/hc1/hc2/hc3 are queued " + "for Phase 2+ pending dedicated R parity goldens. If you need " + "the hc-mode port path for exploratory use, call " + "diff_diff._nprobust_port.lprobust directly and accept that " + "those paths are not separately parity-tested." ) # HAD-scope input validation (shared with Phase 1b via _validate_had_inputs). diff --git a/docs/methodology/REGISTRY.md b/docs/methodology/REGISTRY.md index d69d225c..5847b819 100644 --- a/docs/methodology/REGISTRY.md +++ b/docs/methodology/REGISTRY.md @@ -2314,7 +2314,7 @@ Shipped as `did_had_pretest_workflow()` and surfaced via `practitioner_next_step - [x] Phase 1a: `clubSandwich::vcovCR(..., type="CR2")` parity harness committed: R script at `benchmarks/R/generate_clubsandwich_golden.R` plus a regression-anchor JSON at `benchmarks/data/clubsandwich_cr2_golden.json`. **Note:** the committed JSON currently has `"source": "python_self_reference"` and pins numerical stability only; authoritative R-produced values are generated by running the R script, which the TODO.md row under Methodology/Correctness tracks. The parity test at `tests/test_linalg_hc2_bm.py::TestCR2BMCluster::test_cr2_parity_with_golden` runs at 1e-6 tolerance (Phase 1a plan commits 6-digit parity once R regen completes). - [x] Phase 1b: Calonico-Cattaneo-Farrell (2018) MSE-optimal bandwidth selector. In-house port of `nprobust::lpbwselect(bwselect="mse-dpi")` (nprobust 0.5.0, SHA `36e4e53`) as `diff_diff.mse_optimal_bandwidth` and `BandwidthResult`, backed by the private `diff_diff._nprobust_port` module (`kernel_W`, `lprobust_bw`, `lpbwselect_mse_dpi`). Three-stage DPI with four `lprobust.bw` calls at orders `q+1`, `q+2`, `q`, `p`. Python matches R to `0.0000%` relative error (i.e., bit-parity within float64 precision, ~8-13 digits agreement) on all five stage bandwidths (`c_bw`, `bw_mp2`, `bw_mp3`, `b_mse`, `h_mse`) across three deterministic DGPs (uniform, Beta(2,2), half-normal) via `benchmarks/R/generate_nprobust_golden.R` → `benchmarks/data/nprobust_mse_dpi_golden.json`. **Note:** `weights=` is currently unsupported (raises `NotImplementedError`); nprobust's `lpbwselect` has no weight argument so there is no parity anchor. Weighted-data support deferred to Phase 2 (survey-design adaptation). **Note (public API scope restriction):** the exported wrapper `mse_optimal_bandwidth` hard-codes the HAD Phase 1b configuration (`p=1`, `deriv=0`, `interior=False`, `vce="nn"`, `nnmatch=3`). The underlying port supports a broader surface (`hc0`/`hc1`/`hc2`/`hc3` variance, interior evaluation, higher `p`), but those paths are not parity-tested against `nprobust` and are deferred. Callers needing the broader surface should use `diff_diff._nprobust_port.lpbwselect_mse_dpi` directly and accept that parity has not been verified on non-HAD configurations. **Note (input contract):** the wrapper enforces HAD's support restriction `D_{g,2} >= 0` (front-door `ValueError` on negative doses and empty inputs). `boundary` must equal `0` (Design 1') or `float(d.min())` (Design 1 continuous-near-d_lower) within float tolerance; off-support values raise `ValueError`. When `boundary ~ 0`, the wrapper additionally requires `d.min() <= 0.05 * median(|d|)` as a Design 1' support plausibility heuristic, chosen to pass the paper's thin-boundary-density DGPs (Beta(2,2), d.min/median ~ 3%) while rejecting substantially off-support samples (U(0.5, 1.0), d.min/median ~ 1.0). Detected mass-point designs (`d.min() > 0` with modal fraction at `d.min() > 2%`) raise `NotImplementedError` pointing to the Phase 2 2SLS path per paper Section 3.2.4. - [x] Phase 1c: First-order bias estimator `M̂_{ĥ*_G}` and robust variance `V̂_{ĥ*_G}`. Implemented via Calonico-Cattaneo-Titiunik (2014) bias-combined design matrix `Q.q` in the in-house port `diff_diff._nprobust_port.lprobust` (single-eval-point path of `nprobust::lprobust`, npfunctions.R:177-246). -- [x] Phase 1c: Bias-corrected CI (Equation 8) with `nprobust` parity. Public wrapper `diff_diff.bias_corrected_local_linear` returns `BiasCorrectedFit` with μ̂-scale point estimate, robust SE, and bias-corrected 95% CI `[tau.bc ± z_{1-α/2} * se.rb]`. The β-scale rescaling from Equation 8, `(1/G) Σ D_{g,2}`, is applied by Phase 2's `HeterogeneousAdoptionDiD.fit()`. Parity against `nprobust::lprobust(..., bwselect="mse-dpi")` is tiered: `atol=1e-12` on `tau_cl`/`tau_bc`/`se_cl`/`se_rb` (the `Q.q` outer-product + broadcast-multiply path drifts slightly from the Phase 1b bit-parity primitives), `atol=1e-13` on CI bounds (the Python wrapper computes its own `z_{1-α/2}` via `scipy.stats.norm.ppf` inside `safe_inference()`; R's `qnorm` value is stored in the golden JSON for audit, and the parity harness compares Python's CI bounds to R's pre-computed CI bounds so any residual drift is purely the floating-point arithmetic in `tau.bc ± z * se.rb`, not a critical-value disagreement). The clustered DGP achieves bit-parity (`atol=1e-14`) when cluster IDs happen to be sorted; otherwise BLAS reduction ordering can drift to `atol=1e-10`. Generator: `benchmarks/R/generate_nprobust_lprobust_golden.R`. **Note:** The wrapper matches nprobust's `rho=1` default (`b = h` in auto mode), so Phase 1b's separately-computed `b_mse` is surfaced via `bandwidth_diagnostics.b_mse` but not applied. **Deviation from R:** nprobust silently accepts `vce="hc2"`/`vce="hc3"` combined with `cluster=`; this wrapper raises `ValueError` because the combination is not a well-defined estimator (hc2/hc3 assume independent observations). **Note (Phase 1c internal bug workaround):** The clustered golden DGP 4 uses manual `h=b=0.3` to sidestep an nprobust-internal singleton-cluster shape bug in `lprobust.vce` fired by the mse-dpi pilot fits; the Python port has no equivalent bug. +- [x] Phase 1c: Bias-corrected CI (Equation 8) with `nprobust` parity. Public wrapper `diff_diff.bias_corrected_local_linear` returns `BiasCorrectedFit` with μ̂-scale point estimate, robust SE, and bias-corrected 95% CI `[tau.bc ± z_{1-α/2} * se.rb]`. The β-scale rescaling from Equation 8, `(1/G) Σ D_{g,2}`, is applied by Phase 2's `HeterogeneousAdoptionDiD.fit()`. Parity against `nprobust::lprobust(..., bwselect="mse-dpi")` is asserted at `atol=1e-12` on `tau_cl`/`tau_bc`/`se_cl`/`se_rb`/`ci_low`/`ci_high` across the three unclustered golden DGPs (DGP 1 and DGP 3 typically land closer to `1e-13`). The Python wrapper computes its own `z_{1-α/2}` via `scipy.stats.norm.ppf` inside `safe_inference()`; R's `qnorm` value is stored in the golden JSON for audit, and the parity harness compares Python's CI bounds to R's pre-computed CI bounds so any residual drift is purely the floating-point arithmetic in `tau.bc ± z * se.rb`, not a critical-value disagreement. The clustered DGP achieves bit-parity (`atol=1e-14`) when cluster IDs are in first-appearance order; otherwise BLAS reduction ordering can drift to `atol=1e-10`. Generator: `benchmarks/R/generate_nprobust_lprobust_golden.R`. **Note:** The wrapper matches nprobust's `rho=1` default (`b = h` in auto mode), so Phase 1b's separately-computed `b_mse` is surfaced via `bandwidth_diagnostics.b_mse` but not applied. **Note (public-API surface restriction):** Phase 1c restricts the public wrapper's `vce` parameter to `"nn"`; hc0/hc1/hc2/hc3 raise `NotImplementedError` and are queued for Phase 2+ pending dedicated R parity goldens. The port-level `diff_diff._nprobust_port.lprobust` still accepts all five vce modes (matching R's `nprobust::lprobust` signature) for callers who need the broader surface and accept that the hc-mode variance path — which reuses p-fit hat-matrix leverage for the q-fit residual in R (lprobust.R:229-241) — has not been separately parity-tested. **Note (Phase 1c internal bug workaround):** The clustered golden DGP 4 uses manual `h=b=0.3` to sidestep an nprobust-internal singleton-cluster shape bug in `lprobust.vce` fired by the mse-dpi pilot fits; the Python port has no equivalent bug. - [ ] Phase 2: `HeterogeneousAdoptionDiD` class with separate code paths for Design 1', Design 1 mass-point, and Design 1 continuous-near-`d̲`. - [ ] Phase 2: `design="auto"` detection rule (`min_g D_{g,2} < 0.01 · median_g D_{g,2}` → continuous_at_zero; modal-min fraction > 2% → mass_point; else continuous_near_lower). - [ ] Phase 2: Panel validator verifies `D_{g,1} = 0` for all units; error on staggered timing without last-cohort subgroup. diff --git a/tests/test_bias_corrected_lprobust.py b/tests/test_bias_corrected_lprobust.py index 2383f619..0762a1c6 100644 --- a/tests/test_bias_corrected_lprobust.py +++ b/tests/test_bias_corrected_lprobust.py @@ -380,23 +380,30 @@ def test_cluster_with_manual_bandwidth(self): assert np.isfinite(fit.estimate_bias_corrected) assert fit.se_robust > 0 - def test_vce_hc2_with_cluster_raises(self): - d = np.linspace(0.05, 1.0, 100) + def test_vce_hc0_raises_not_implemented(self): + """Only vce='nn' is golden-tested in Phase 1c; hc-modes raise.""" + d = np.linspace(0.0, 1.0, 100) y = d.copy() - cluster = np.repeat(np.arange(10), 10) - with pytest.raises(ValueError, match="hc2.*not a well-defined"): - bias_corrected_local_linear( - d, y, h=0.3, vce="hc2", cluster=cluster, - ) + with pytest.raises(NotImplementedError, match="vce='hc0'"): + bias_corrected_local_linear(d, y, h=0.3, vce="hc0") - def test_vce_hc3_with_cluster_raises(self): - d = np.linspace(0.05, 1.0, 100) + def test_vce_hc1_raises_not_implemented(self): + d = np.linspace(0.0, 1.0, 100) + y = d.copy() + with pytest.raises(NotImplementedError, match="vce='hc1'"): + bias_corrected_local_linear(d, y, h=0.3, vce="hc1") + + def test_vce_hc2_raises_not_implemented(self): + d = np.linspace(0.0, 1.0, 100) + y = d.copy() + with pytest.raises(NotImplementedError, match="vce='hc2'"): + bias_corrected_local_linear(d, y, h=0.3, vce="hc2") + + def test_vce_hc3_raises_not_implemented(self): + d = np.linspace(0.0, 1.0, 100) y = d.copy() - cluster = np.repeat(np.arange(10), 10) - with pytest.raises(ValueError, match="hc3.*not a well-defined"): - bias_corrected_local_linear( - d, y, h=0.3, vce="hc3", cluster=cluster, - ) + with pytest.raises(NotImplementedError, match="vce='hc3'"): + bias_corrected_local_linear(d, y, h=0.3, vce="hc3") # ============================================================================= @@ -503,19 +510,14 @@ def test_auto_cluster_returns_finite(self): # be identical to bit-parity. assert fit_cluster.h != fit_uncluster.h - def test_auto_vce_hc1_returns_finite(self): - """Auto-bandwidth with non-default vce must use the requested vce - during bandwidth selection, not silently fall back to nn.""" + def test_auto_vce_hc1_rejected_in_phase_1c(self): + """Phase 1c public wrapper restricts vce to 'nn'; hc-modes raise. + Port-level lprobust still forwards vce through, so + lpbwselect_mse_dpi gets the correct setting when unlocked in + Phase 2+.""" d, y = self._smoke_data() - fit_hc1 = bias_corrected_local_linear(d, y, vce="hc1") - fit_nn = bias_corrected_local_linear(d, y, vce="nn") - assert fit_hc1.bandwidth_source == "auto" - assert np.isfinite(fit_hc1.estimate_bias_corrected) - assert np.isfinite(fit_hc1.se_robust) - # Different residual definitions yield different stage-2/3 AMSE - # and therefore different bandwidths. Bit-identity would indicate - # the selector silently ignored vce. - assert fit_hc1.h != fit_nn.h + with pytest.raises(NotImplementedError, match="vce='hc1'"): + bias_corrected_local_linear(d, y, vce="hc1") def test_auto_nnmatch_non_default_returns_finite(self): """Auto-bandwidth with non-default nnmatch must forward it to the From 5cd60516a9d9b6288ebe26ae2f80c2a3bc2b9d3d Mon Sep 17 00:00:00 2001 From: igerber Date: Mon, 20 Apr 2026 07:44:22 -0400 Subject: [PATCH 8/8] Sync `bias_corrected_local_linear` docstring with vce='nn'-only surface P3 follow-up from AI review. The class-level scope note still claimed HC0-3 were "exposed here", and the Raises section listed the old `ValueError` for `vce='hc2'/'hc3'` with cluster. Both are stale: the wrapper now raises `NotImplementedError` for any `vce != "nn"` regardless of cluster. Updated the scope note and Raises section to reflect the current behavior. Behavior unchanged; docstring-only. Co-Authored-By: Claude Opus 4.7 (1M context) --- diff_diff/local_linear.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/diff_diff/local_linear.py b/diff_diff/local_linear.py index 19db3b52..e8286bd2 100644 --- a/diff_diff/local_linear.py +++ b/diff_diff/local_linear.py @@ -959,10 +959,12 @@ def bias_corrected_local_linear( **Public API scope (Phase 1c of HAD).** Hard-coded for the HAD configuration: ``p=1`` (local-linear), ``q=2`` (bias-correction order), ``deriv=0`` (level), ``interior=False`` (boundary eval - point), ``bwcheck=21``, ``bwregul=1``. The underlying - ``diff_diff._nprobust_port`` supports more. HC0-3 vce modes are - exposed here but NOT separately golden-parity-tested against R in - Phase 1c; use at your own risk until Phase 2+. + point), ``bwcheck=21``, ``bwregul=1``, and ``vce="nn"`` (the only + variance mode golden-parity-tested against R in this phase). The + underlying ``diff_diff._nprobust_port.lprobust`` accepts the broader + surface (hc0/hc1/hc2/hc3, higher ``p``, interior eval), but those + paths are not separately parity-tested and remain private until + Phase 2+ ships dedicated goldens. Parameters ---------- @@ -1012,12 +1014,14 @@ def bias_corrected_local_linear( ------ ValueError Shape mismatch, non-finite inputs, off-support boundary, negative - doses, ``alpha`` outside ``(0, 1)``, unsupported ``kernel``/``vce``, - NaN cluster IDs, incompatible ``vce="hc2"/"hc3"`` with clustering, - ``b`` supplied without ``h``, or a rank-deficient window. + doses, ``alpha`` outside ``(0, 1)``, unknown ``kernel``, + NaN / None cluster IDs, ``b`` supplied without ``h``, or a + rank-deficient window. NotImplementedError - ``weights=`` passed, or a Design 1 mass-point sample (redirects to - Phase 2's 2SLS sample-average path per the paper's Section 3.2.4). + ``weights=`` passed; ``vce != "nn"`` (hc0/hc1/hc2/hc3 deferred + to Phase 2+ pending dedicated R parity goldens); a Design 1 + mass-point sample (redirects to Phase 2's 2SLS sample-average + path per the paper's Section 3.2.4). Notes -----