diff options
Diffstat (limited to 'Paper.jl')
| -rw-r--r-- | Paper.jl | 3041 |
1 files changed, 3041 insertions, 0 deletions
diff --git a/Paper.jl b/Paper.jl new file mode 100644 index 0000000..b1d462f --- /dev/null +++ b/Paper.jl @@ -0,0 +1,3041 @@ +### A Pluto.jl notebook ### +# v1.0.4 + +using Markdown +using InteractiveUtils + +# ╔═╡ 82290cf0-cc7e-11f1-afb5-679eb5954384 +begin + using Downloads + using CodecZlib + using CSV + using DataFrames + using Dates + using GLM + using LinearAlgebra + using Statistics + using JSON + using CairoMakie + using GeoMakie + using FileIO + using ImageIO +end + +# ╔═╡ f6602dd0-292c-4a63-8247-94d626d87f39 +# ╠═╡ disabled = true +#=╠═╡ + + ╠═╡ =# + +# ╔═╡ 57fe870c-3366-4aaf-b2a3-014edf609e7a +md""" +# Ilmatar Energy + +# Alajärvi wind farm complex +""" + +# ╔═╡ 88ef8628-e883-4113-abd3-080e2b2376d8 +md""" +## Weather Stations +- Alajarvi Moksy / Huosianmaa (02787) +""" + +# ╔═╡ 5c21db41-78f6-4db7-ad1e-ff1900afdca3 +md""" +Rather than relying on distant municipal weather stations with historical recording gaps, this analysis leverages high-precision telemetry from the Finnish Meteorological Institute (FMI) automated synoptic station at Alajärvi Möksy (02787), positioned directly at the wind park site. The sample spans January 2021 through October 2026 ($N = 2,078$ days), providing unbroken daily wind records that match the operational aerodynamic roughness of the modern 221 MW complex while offering abundant degrees of freedom for robust regression estimation. +""" + +# ╔═╡ d61dc3ca-fccc-4770-af6d-aa5082c55369 +""" +Fetch daily weather time-series for a given Meteostat station ID. +Meteostat bulk daily files do not contain headers; columns follow the v2 standard schema. +""" +function fetch_meteostat_daily(station_id::String) + url = "https://bulk.meteostat.net/v2/daily/$(station_id).csv.gz" + + # In-memory buffer for the compressed stream + io_buffer = IOBuffer() + Downloads.download(url, io_buffer) + seekstart(io_buffer) + + # Meteostat Daily v2 standard schema + col_names = [ + "date", "tavg", "tmin", "tmax", "prcp", + "snow", "wdir", "wspd", "wpgt", "pres", "tsun" + ] + + # Decompress in-memory and read into DataFrame + decompressed = GzipDecompressorStream(io_buffer) + df = CSV.read( + decompressed, + DataFrame; + header = col_names, + missingstring = ["", "NA", "null"], + types = Dict( + "date" => Date, + "tavg" => Union{Float64, Missing}, + "wspd" => Union{Float64, Missing}, + "pres" => Union{Float64, Missing} + ) + ) + close(decompressed) + + # Meteostat records wspd in km/h; convert to m/s for wind turbine modeling + df.wspd_ms = df.wspd ./ 3.6 + + return df +end + +# ╔═╡ fc5e12f2-3978-4979-935c-0d9c83d8d2e0 +""" +Fetch recent daily data from Meteostat's annual partition endpoint. +Unlike the legacy v2 bulk file, these annual files include a header row. +""" +function fetch_meteostat_year(station_id::String, year::Int) + url = "https://data.meteostat.net/daily/$(year)/$(station_id).csv.gz" + + io = IOBuffer() + try + Downloads.download(url, io) + catch e + @warn "Could not fetch annual data for $year: $e" + return DataFrame() + end + seekstart(io) + + decompressed = GzipDecompressorStream(io) + df = CSV.read(decompressed, DataFrame) + close(decompressed) + + # 1. Reconstruct date from split year/month/day columns + if :year in propertynames(df) && :month in propertynames(df) && :day in propertynames(df) + df.date = Date.(df.year, df.month, df.day) + elseif :date in propertynames(df) + df.date = Date.(string.(df.date)) + else + error("Unrecognized date schema. Available columns: $(names(df))") + end + + if :wspd in propertynames(df) + df.wspd_ms = df.wspd ./ 3.6 + end + + return df +end + +# ╔═╡ faaa0eb8-be12-42a4-abf8-c9ffbb07df9a +function fetch_station_series(station_id::String) + # 1. Fetch legacy archive (up to early 2026) + df_hist = fetch_meteostat_daily(station_id) + + # 2. Fetch 2026 stream + df_2026 = fetch_meteostat_year(station_id, 2026) + + # Standardize columns to :date and :wspd_ms + s_hist = select(df_hist, :date, :wspd_ms) + s_2026 = select(df_2026, :date, :wspd_ms) + + # Combine, deduplicate, and sort + df_all = unique(vcat(s_hist, s_2026), :date) + sort!(df_all, :date) + return df_all +end + +# ╔═╡ 02acee4c-f198-43f5-ab21-939f30969361 +df = fetch_station_series("02787") # 02787 02913 + +# ╔═╡ 4e23c813-6e54-4f47-9345-40d6a698913e +last(df, 5) + +# ╔═╡ 2f2ad881-4177-462c-b2e3-6c2ebc9d8fa1 +let + df_valid = dropmissing(df, :wspd_ms) + println("First non-missing wind record: ", minimum(df_valid.date)) + println("Last non-missing wind record: ", maximum(df_valid.date)) + println("Total days with wind data: ", nrow(df_valid)) +end + +# ╔═╡ 7a3ad16b-4d08-434e-82dd-23f186aa1d9b +let + # 1. Synchronize the start boundary to the first recorded date + start_date = Date(2021, 1, 2) + df_valid = filter(r -> r.date >= start_date && !ismissing(r.wspd_ms), df) + end_date = maximum(df_valid.date) # 2026-10-14 + + # 2. Build continuous calendar grid + all_dates = DataFrame(date = collect(start_date:Day(1):end_date)) + + # 3. Identify missing dates + missing_dates_df = antijoin(all_dates, df_valid, on = :date) + sort!(missing_dates_df, :date) + + total_expected = nrow(all_dates) + total_valid = nrow(df_valid) + total_missing = nrow(missing_dates_df) + completeness = round(total_valid / total_expected * 100, digits = 2) + + println("--- Overview ($start_date to $end_date) ---") + println("Expected Calendar Days: ", total_expected) + println("Recorded Days (Valid): ", total_valid) + println("Total Days Missing: ", total_missing, " ($completeness% complete)\n") + + # 4. Group missing dates into contiguous streaks + if total_missing > 0 + missing_dates = missing_dates_df.date + streaks = DataFrame(start_date = Date[], end_date = Date[], days_lost = Int[]) + + cur_start = missing_dates[1] + cur_prev = missing_dates[1] + + for d in missing_dates[2:end] + if d == cur_prev + Day(1) + cur_prev = d + else + push!(streaks, (cur_start, cur_prev, Dates.value(cur_prev - cur_start) + 1)) + cur_start = d + cur_prev = d + end + end + push!(streaks, (cur_start, cur_prev, Dates.value(cur_prev - cur_start) + 1)) + + # 5. Annual breakdown + missing_dates_df.year = Dates.year.(missing_dates_df.date) + annual_summary = combine(groupby(missing_dates_df, :year), nrow => :missing_days) + + ( + Annual_Missing = annual_summary, + Contiguous_Gaps = sort(streaks, :days_lost, rev = true), + All_Missing_Dates = missing_dates_df.date + ) + else + "No missing days found!" + end +end + +# ╔═╡ 76184222-dd79-4e3b-877a-8eced64fe6ae +df_target_clean = let + # Continuous calendar sequence from the first non-missing day + full_calendar = DataFrame(date = collect(Date(2021, 1, 2):Day(1):Date(2026, 10, 14))) + + # Merge valid records + raw_valid = filter(r -> r.date >= Date(2021, 1, 2) && !ismissing(r.wspd_ms), df) + merged = leftjoin(full_calendar, select(raw_valid, :date, :wspd_ms => :wind_target), on = :date) + + # Linear interpolation across isolated missing days + w = merged.wind_target + for i in 1:length(w) + if ismissing(w[i]) + prev_idx = findlast(!ismissing, w[1:i-1]) + next_offset = findfirst(!ismissing, w[i+1:end]) + next_idx = isnothing(next_offset) ? nothing : i + next_offset + + if !isnothing(prev_idx) && !isnothing(next_idx) + p_val, n_val = w[prev_idx], w[next_idx] + w[i] = p_val + (n_val - p_val) * (i - prev_idx) / (next_idx - prev_idx) + elseif !isnothing(prev_idx) + w[i] = w[prev_idx] + end + end + end + merged.wind_target = Float64.(w) + merged +end + +# ╔═╡ c9c823ad-9875-4efa-82b4-d6189a141b12 +network_master_df = let + predictors = Dict( + # Inner Ring (~30-80 km) + :inner_N => "02725", # Halsua Purola + :inner_E => "02915", # Viitasaari + :inner_S => "02924", # Ähtäri + :inner_W => "02913", # Kauhava + + # Outer Ring (~200-400 km) + :outer_N => "02875", # Oulu + :outer_E => "02917", # Kuopio + :outer_S => "02974", # Helsinki-Vantaa + :outer_W => "02286", # Umeå + ) + + df_net = copy(df_target_clean) + + for (role, st_id) in predictors + st_data = filter(r -> r.date >= Date(2021, 1, 2), fetch_station_series(st_id)) + rename!(st_data, :wspd_ms => Symbol("wind_", role)) + df_net = leftjoin(df_net, select(st_data, :date, Symbol("wind_", role)), on = :date) + end + + # Drop rows where any predictor has missing records to guarantee a balanced regression panel + dropmissing!(df_net) + sort!(df_net, :date) + df_net +end + +# ╔═╡ 3b777682-5faa-47c6-bd70-98a06f368d1a +begin + n_days = nrow(network_master_df) + + model_df = DataFrame( + date = network_master_df.date[3:end], + target = network_master_df.wind_target[3:end], + + # Target Autoregressive memory + lag1_target = network_master_df.wind_target[2:end-1], + lag2_target = network_master_df.wind_target[1:end-2], + + # Inner Ring (t-1 and t-2) + lag1_inner_N = network_master_df.wind_inner_N[2:end-1], + lag2_inner_N = network_master_df.wind_inner_N[1:end-2], + lag1_inner_E = network_master_df.wind_inner_E[2:end-1], + lag2_inner_E = network_master_df.wind_inner_E[1:end-2], + lag1_inner_S = network_master_df.wind_inner_S[2:end-1], + lag2_inner_S = network_master_df.wind_inner_S[1:end-2], + lag1_inner_W = network_master_df.wind_inner_W[2:end-1], + lag2_inner_W = network_master_df.wind_inner_W[1:end-2], + + # Outer Ring (t-1 and t-2) + lag1_outer_N = network_master_df.wind_outer_N[2:end-1], + lag2_outer_N = network_master_df.wind_outer_N[1:end-2], + lag1_outer_E = network_master_df.wind_outer_E[2:end-1], + lag2_outer_E = network_master_df.wind_outer_E[1:end-2], + lag1_outer_S = network_master_df.wind_outer_S[2:end-1], + lag2_outer_S = network_master_df.wind_outer_S[1:end-2], + lag1_outer_W = network_master_df.wind_outer_W[2:end-1], + lag2_outer_W = network_master_df.wind_outer_W[1:end-2] + ) + + const latest_date = maximum(model_df.date) + const split_date = latest_date - Day(365) + + train_df = filter(r -> r.date <= split_date, model_df) + holdout_df = filter(r -> r.date > split_date, model_df) + + println("Training: ", nrow(train_df), " days | Holdout: ", nrow(holdout_df), " days") +end + +# ╔═╡ c126fdcc-e149-4834-af5c-503465ffdede +# fit_model0_and_model1 +begin + # --- Model 0: Baseline Persistence (Y_t = Y_{t-1}) --- + m0_preds = holdout_df.lag1_target + m0_errors = holdout_df.target .- m0_preds + m0_mae = mean(abs.(m0_errors)) + m0_rmse = sqrt(mean(m0_errors.^2)) + + # --- Model 1: Static 4-Direction OLS --- + formula_m1 = @formula(target ~ lag1_target + lag2_target + + lag1_inner_W + lag2_inner_W + + lag1_inner_N + lag2_inner_N + + lag1_inner_E + lag2_inner_E + + lag1_inner_S + lag2_inner_S) + + ols_m1 = lm(formula_m1, train_df) + + m1_preds = predict(ols_m1, holdout_df) + m1_errors = holdout_df.target .- m1_preds + m1_mae = mean(abs.(m1_errors)) + m1_rmse = sqrt(mean(m1_errors.^2)) + + ( + Baseline_M0 = (Holdout_MAE = round(m0_mae, digits=3), Holdout_RMSE = round(m0_rmse, digits=3)), + Static_M1 = (Train_R2 = round(r2(ols_m1), digits=4), Adj_R2 = round(adjr2(ols_m1), digits=4), + Holdout_MAE = round(m1_mae, digits=3), Holdout_RMSE = round(m1_rmse, digits=3)) + ) +end + +# ╔═╡ 7aa0f225-948d-4d1f-8b5a-2262f879783b +# fit_model2_dynamic +begin + # All 18 lagged features (2 target lags + 16 station lags) + feature_symbols = [ + :lag1_target, :lag2_target, + :lag1_inner_N, :lag2_inner_N, :lag1_inner_E, :lag2_inner_E, + :lag1_inner_S, :lag2_inner_S, :lag1_inner_W, :lag2_inner_W, + :lag1_outer_N, :lag2_outer_N, :lag1_outer_E, :lag2_outer_E, + :lag1_outer_S, :lag2_outer_S, :lag1_outer_W, :lag2_outer_W + ] + + X_mat = hcat(ones(nrow(model_df)), Matrix(model_df[:, feature_symbols])) + y_vec = Vector(model_df.target) + + window_len = 365 + n_total = nrow(model_df) + m2_all_preds = fill(NaN, n_total) + beta_history = fill(NaN, n_total, size(X_mat, 2)) + + for t in (window_len + 1):n_total + # Trailing 365-day calibration window + X_w = X_mat[(t - window_len):(t - 1), :] + y_w = y_vec[(t - window_len):(t - 1)] + + # Closed-form OLS solution via QR decomposition + b_t = X_w \ y_w + beta_history[t, :] = b_t + + # 1-day ahead out-of-sample prediction + m2_all_preds[t] = dot(X_mat[t, :], b_t) + end + + model_df.pred_m2 = m2_all_preds + + # Evaluate Model 2 strictly over the exact same holdout period + m2_holdout = filter(r -> r.date in holdout_df.date, model_df) + m2_errors = m2_holdout.target .- m2_holdout.pred_m2 + m2_mae = mean(abs.(m2_errors)) + m2_rmse = sqrt(mean(m2_errors.^2)) + + (Holdout_MAE = round(m2_mae, digits=3), Holdout_RMSE = round(m2_rmse, digits=3)) +end + +# ╔═╡ 4aa84d18-d2ec-4219-b85d-6ba5e08bc7e8 +# inspect_m1_coefficients +coeftable(ols_m1) + +# ╔═╡ 73ed2f4e-38d7-4f64-9ac7-b53acc046200 +# model2_coefficient_summary +let + # All 19 parameter names (Intercept + 18 lagged features) + param_names = vcat( + :Intercept, + [ + :lag1_target, :lag2_target, + :lag1_inner_N, :lag2_inner_N, :lag1_inner_E, :lag2_inner_E, + :lag1_inner_S, :lag2_inner_S, :lag1_inner_W, :lag2_inner_W, + :lag1_outer_N, :lag2_outer_N, :lag1_outer_E, :lag2_outer_E, + :lag1_outer_S, :lag2_outer_S, :lag1_outer_W, :lag2_outer_W + ] + ) + + # Filter only rows where the rolling window had enough history (non-NaN) + valid_mask = .!isnan.(beta_history[:, 1]) + valid_betas = beta_history[valid_mask, :] + + # Calculate distribution metrics across all estimation windows + summary_df = DataFrame( + Parameter = param_names, + Mean_Beta = [round(mean(valid_betas[:, j]), digits = 4) for j in 1:length(param_names)], + Std_Beta = [round(std(valid_betas[:, j]), digits = 4) for j in 1:length(param_names)], + Min_Beta = [round(minimum(valid_betas[:, j]), digits = 4) for j in 1:length(param_names)], + Max_Beta = [round(maximum(valid_betas[:, j]), digits = 4) for j in 1:length(param_names)] + ) + + summary_df +end + +# ╔═╡ 92ea415f-c0d8-4f98-8981-a6680e0999d7 +# model2_latest_snapshot +let + param_names = vcat( + :Intercept, + [ + :lag1_target, :lag2_target, + :lag1_inner_W, :lag2_inner_W, :lag1_inner_N, :lag2_inner_N, + :lag1_inner_E, :lag2_inner_E, :lag1_inner_S, :lag2_inner_S, + :lag1_outer_W, :lag2_outer_W, :lag1_outer_SW, :lag2_outer_SW, + :lag1_outer_N, :lag2_outer_N, :lag1_outer_S, :lag2_outer_S + ] + ) + + latest_betas = beta_history[end, :] + + DataFrame( + Parameter = param_names, + Active_Weight = round.(latest_betas, digits = 4) + ) +end + +# ╔═╡ 399edbd0-61e2-4c72-a3a0-a1147cf868fc +# model2_seasonal_shift +let + valid_mask = .!isnan.(beta_history[:, 1]) + valid_dates = model_df.date[valid_mask] + valid_betas = beta_history[valid_mask, :] + + months = Dates.month.(valid_dates) + winter_mask = (months .== 12) .| (months .== 1) .| (months .== 2) + summer_mask = (months .== 6) .| (months .== 7) .| (months .== 8) + + param_names = vcat( + :Intercept, + [ + :lag1_target, :lag2_target, + :lag1_inner_W, :lag2_inner_W, :lag1_inner_N, :lag2_inner_N, + :lag1_inner_E, :lag2_inner_E, :lag1_inner_S, :lag2_inner_S, + :lag1_outer_W, :lag2_outer_W, :lag1_outer_SW, :lag2_outer_SW, + :lag1_outer_N, :lag2_outer_N, :lag1_outer_S, :lag2_outer_S + ] + ) + + DataFrame( + Parameter = param_names, + Winter_Mean = [round(mean(valid_betas[winter_mask, j]), digits = 4) for j in 1:length(param_names)], + Summer_Mean = [round(mean(valid_betas[summer_mask, j]), digits = 4) for j in 1:length(param_names)], + Seasonal_Δ = [round(mean(valid_betas[winter_mask, j]) - mean(valid_betas[summer_mask, j]), digits = 4) for j in 1:length(param_names)] + ) +end + +# ╔═╡ f0f55d3a-7a07-4e84-bf6a-178150a2b71c +# model_comparison_summary +let + y_true = holdout_df.target + + # 1. Predictions aligned to the exact holdout sample + y_m0 = holdout_df.lag1_target + y_m1 = predict(ols_m1, holdout_df) + + m2_holdout = filter(r -> r.date in holdout_df.date, model_df) + y_m2 = m2_holdout.pred_m2 + + # 2. Metric calculation helper + calc_metrics(y_hat, label) = begin + err = y_true .- y_hat + mae = mean(abs.(err)) + rmse = sqrt(mean(err.^2)) + (Model = label, Holdout_MAE = round(mae, digits=3), Holdout_RMSE = round(rmse, digits=3)) + end + + m0 = calc_metrics(y_m0, "Baseline M0 (Persistence)") + m1 = calc_metrics(y_m1, "Static OLS M1 (Inner Ring)") + m2 = calc_metrics(y_m2, "Dynamic OLS M2 (Rolling 365d)") + + df_comp = DataFrame([m0, m1, m2]) + + # 3. Add percentage gains over persistence baseline + base_mae = df_comp.Holdout_MAE[1] + base_rmse = df_comp.Holdout_RMSE[1] + + df_comp.MAE_Reduction = [ + "-", + "$(round((1 - df_comp.Holdout_MAE[2] / base_mae) * 100, digits=1))%", + "$(round((1 - df_comp.Holdout_MAE[3] / base_mae) * 100, digits=1))%" + ] + df_comp.RMSE_Reduction = [ + "-", + "$(round((1 - df_comp.Holdout_RMSE[2] / base_rmse) * 100, digits=1))%", + "$(round((1 - df_comp.Holdout_RMSE[3] / base_rmse) * 100, digits=1))%" + ] + + df_comp +end + +# ╔═╡ da1115e1-76c3-4c35-a6f3-9714b4263dea +# fetch_station_locations +function fetch_station_metadata(station_ids::Vector{String}) + url = "https://bulk.meteostat.net/v2/stations/lite.json.gz" + + io = IOBuffer() + Downloads.download(url, io) + seekstart(io) + + decompressed = GzipDecompressorStream(io) + raw_stations = JSON.parse(decompressed) + close(decompressed) + + id_set = Set(station_ids) + matched = filter(s -> get(s, "id", "") in id_set, raw_stations) + + rows = map(matched) do s + loc = get(s, "location", Dict()) + + # Robust multilingual name parser (handles "en", "fi", or any available key) + raw_name = get(s, "name", "") + clean_name = if raw_name isa AbstractDict + haskey(raw_name, "en") ? raw_name["en"] : + haskey(raw_name, "fi") ? raw_name["fi"] : + (isempty(raw_name) ? "Unknown" : first(values(raw_name))) + else + string(raw_name) + end + + ( + id = string(s["id"]), + name = clean_name, + country = string(get(s, "country", "")), + lat = Float64(loc["latitude"]), + lon = Float64(loc["longitude"]), + elevation = haskey(loc, "elevation") && !isnothing(loc["elevation"]) ? + Float64(loc["elevation"]) : missing + ) + end + + return DataFrame(rows) +end + +# ╔═╡ b0f27193-5c75-48b5-9bac-044089da7443 +df_coords = begin + target_ids = [ + "02787", # Target: Alajärvi Möksy + "02725", # Inner N: Halsua Purola + "02915", # Inner E: Viitasaari Haapaniemi + "02924", # Inner S: Ähtäri + "02913", # Inner W: Kauhava + "02875", # Outer N: Oulu + "02917", # Outer E: Kuopio + "02974", # Outer S: Helsinki-Vantaa + "02286" # Outer W: Umeå (Sweden) + ] + + coords = fetch_station_metadata(target_ids) + coords.role = map(coords.id) do id + id == "02787" ? :target : + id in ["02725", "02915", "02924", "02913"] ? :inner : :outer + end + sort!(coords, :id) +end + +# ╔═╡ fea4b109-3036-4819-94b4-a0a90626b3fb +# plot_figure1_executive_basemap +begin + # ========================================================================= + # 1. BASEMAP THEME SELECTOR + # Options: :light_gray (Recommended for papers), :topo, :streets, :terrain, :satellite, :osm + # ========================================================================= + basemap_choice = :light_gray + + basemap_endpoints = Dict( + :light_gray => "https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/export", + :topo => "https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/export", + :streets => "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/export", + :terrain => "https://services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/export", + :satellite => "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/export", + :osm => "https://services.arcgisonline.com/arcgis/rest/services/OpenStreetMap/MapServer/export" + ) + + # ========================================================================= + # 2. BOUNDING BOX & SQUARE GEOMETRY CALIBRATION + # lon_max extended to 29.6 to provide full margin for Kuopio (27.63°E) + # Coordinates calibrated so that ΔX (Mercator) ≈ ΔY (Mercator) -> 1:1 Square + # ========================================================================= + lon_min, lon_max = 17.6, 29.6 + lat_min, lat_max = 59.7, 65.7 + + lon2x(lon) = lon * 20037508.34 / 180.0 + lat2y(lat) = log(tan((90.0 + lat) * pi / 360.0)) * 20037508.34 / pi + + xmin, xmax = lon2x(lon_min), lon2x(lon_max) + ymin, ymax = lat2y(lat_min), lat2y(lat_max) + + # Square dimension layout + fig_w = 520 + fig_h = 520 + export_scale = 3 # 3x supersampling for publication-grade vector sharpness + srv_w = fig_w * export_scale + srv_h = fig_h * export_scale + + base_url = basemap_endpoints[basemap_choice] + map_url = "$(base_url)?bbox=$(xmin),$(ymin),$(xmax),$(ymax)&bboxSR=3857&imageSR=3857&size=$(srv_w),$(srv_h)&f=image" + + io_map = IOBuffer() + Downloads.download(map_url, io_map) + seekstart(io_map) + basemap_img = rotr90(FileIO.load(io_map)) + close(io_map) + + st_x = lon2x.(df_coords.lon) + st_y = lat2y.(df_coords.lat) + + # ========================================================================= + # 3. FIGURE & AXIS SETUP + # ========================================================================= + fig1 = Figure( + size = (fig_w, fig_h), + fonts = (; + regular = "Inter", + bold = "Inter Bold", + semibold = "Inter SemiBold" + ), + fontsize = 9.5 + ) + + ax = Axis( + fig1[1, 1], + # title = "Ilmatar Alajärvi Wind Farm: Regional Telemetry & Synoptic Arrays", + # titlesize = 11.0, + titlefont = :bold, + aspect = DataAspect() + ) + + hidedecorations!(ax) + hidespines!(ax) + + # Render Basemap Layer + image!(ax, xmin..xmax, ymin..ymax, basemap_img) + + # Coordinates of Target Station (Alajärvi Möksy) + target_idx = findfirst(==( "02787"), df_coords.id) + tx, ty = st_x[target_idx], st_y[target_idx] + + # ========================================================================= + # 4. SYNOPTIC TELEMETRY VECTORS (SPATIAL ARCS) + # ========================================================================= + for i in 1:nrow(df_coords) + if i != target_idx + is_inner = df_coords.role[i] == :inner + # Inner: Cobalt Blue dashed vector | Outer: Deep Rust dashed vector + lines!( + ax, [st_x[i], tx], [st_y[i], ty]; + color = is_inner ? (:royalblue, 0.85) : (colorant"#b45309", 0.75), + linestyle = is_inner ? :dash : :dot, + linewidth = is_inner ? 1.4 : 1.2 + ) + end + end + + inner_mask = df_coords.role .== :inner + outer_mask = df_coords.role .== :outer + + # ========================================================================= + # 5. STATION MARKERS WITH CONTRAST HALOS + # ========================================================================= + # Outer Synoptic Array: Deep Tangerine/Burnt Amber with white outline + scatter!( + ax, st_x[outer_mask], st_y[outer_mask]; + color = "#ea580c", + markersize = 9.5, + strokewidth = 1.4, + strokecolor = :white, + label = "Outer Synoptic Array (~200–400 km)" + ) + + # Inner Ring Array: Deep Royal Blue with white outline + scatter!( + ax, st_x[inner_mask], st_y[inner_mask]; + color = "#1d4ed8", + markersize = 9.5, + strokewidth = 1.4, + strokecolor = :white, + label = "Inner Ring Array (~30–80 km)" + ) + + # Target Asset Marker: Layered Executive Concentric Reticle (Bullseye) + # 1. Outer accent ring + scatter!( + ax, [tx], [ty]; + color = (:crimson, 0.20), + markersize = 22, + strokewidth = 0 + ) + # 2. Main target ring with sharp white border + scatter!( + ax, [tx], [ty]; + color = :crimson, + marker = :circle, + markersize = 13, + strokewidth = 1.8, + strokecolor = :white, + label = "Target Asset: Alajärvi Möksy" + ) + # 3. Inner core center dot + scatter!( + ax, [tx], [ty]; + color = :white, + marker = :circle, + markersize = 4.5, + strokewidth = 0 + ) + + # ========================================================================= + # 6. CARTOGRAPHIC LABELS (Optimized for square extent) + # ========================================================================= + for i in 1:nrow(df_coords) + id = df_coords.id[i] + name = df_coords.name[i] + + offset = offset = if id == "02787" + (7, 7) + elseif id == "02286" # Umeå (Swedish coast) + (-74, -2) + elseif id == "02913" # Kauhava + (-54, 4) + elseif id == "02725" # Halsua Purola + (8, 6) + elseif id == "02924" # Ähtäri + (8, -4) + elseif id == "02915" # Viitasaari + (10, -6) + elseif id == "02917" # Kuopio (Safely inside map margin) + (8, 2) + elseif id == "02875" # Oulu + (8, 5) + elseif id == "02974" # Helsinki-Vantaa + (8, 2) + else + (6, 4) + end + + lbl = id == "02787" ? "Alajärvi Möksy" : name + + text!( + ax, st_x[i], st_y[i]; + text = lbl, + fontsize = id == "02787" ? 9.5 : 8.0, + font = id == "02787" ? :bold : :semibold, + color = "#0f172a", + offset = offset + ) + end + + # Clean executive legend + axislegend( + ax, + position = :lt, + framevisible = true, + backgroundcolor = (:white, 0.92), + framecolor = "#94a3b8", + framewidth = 0.8, + padding = (6, 6, 5, 5), + labelsize = 8.0, + patchsize = (12.0, 8.0) + ) + + # Save vector PDF directly + save("Figure1_Station_Network.pdf", fig1; pt_per_unit = 1.0) + fig1 +end + +# ╔═╡ 3c3ed324-b766-4061-98dc-548a4b71694d +let + slice_mask = Date(2025, 11, 1) .<= model_df.date .<= Date(2025, 12, 5) + df_slice = filter(r -> r.date in model_df.date[slice_mask], model_df) + + holdout_payload = Dict( + "dates" => string.(df_slice.date), + "actual" => round.(df_slice.target, digits = 2), + "m0_pred" => round.(df_slice.lag1_target, digits = 2), + "m1_pred" => round.(predict(ols_m1, df_slice), digits = 2), # Evaluated dynamically from fitted OLS M1 + "m2_pred" => round.(df_slice.pred_m2, digits = 2) # Dynamic 365-day rolling walk-forward + ) + + open("holdout_series.json", "w") do f + JSON.print(f, holdout_payload) + end +end + +# ╔═╡ 9cbf0393-130e-4e6e-a1fc-f0566feec3e3 +# 2. Dynamic Seasonal Parameter Drift (Computed directly from beta_history) +let + valid_mask = .!isnan.(beta_history[:, 1]) + valid_dates = model_df.date[valid_mask] + valid_betas = beta_history[valid_mask, :] + + months = Dates.month.(valid_dates) + winter_mask = (months .== 12) .| (months .== 1) .| (months .== 2) + summer_mask = (months .== 6) .| (months .== 7) .| (months .== 8) + + # Ties directly to feature_symbols to guarantee 1:1 column index alignment with X_mat + param_names = vcat(:Intercept, feature_symbols) + + seasonal_payload = [ + Dict( + "param" => string(param_names[j]), + "winter" => round(mean(valid_betas[winter_mask, j]), digits = 4), + "summer" => round(mean(valid_betas[summer_mask, j]), digits = 4), + "seasonal_del" => round(mean(valid_betas[winter_mask, j]) - mean(valid_betas[summer_mask, j]), digits = 4) + ) + for j in 1:length(param_names) + if param_names[j] != :Intercept # Drops Intercept to focus exclusively on lagged features + ] + + open("seasonal_betas.json", "w") do f + JSON.print(f, seasonal_payload) + end +end + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" +CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" +CodecZlib = "944b1d66-785c-5afd-91f1-9de20f533193" +DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" +Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" +GLM = "38e38edf-8417-5370-95a0-9cbb8c7f171a" +GeoMakie = "db073c08-6b98-4ee5-b6a4-5efafb3259c6" +ImageIO = "82e4d734-157c-48bb-816b-45c225c6df19" +JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[compat] +CSV = "~0.10.17" +CairoMakie = "=0.15.15" +CodecZlib = "~0.7.9" +DataFrames = "~1.8.2" +FileIO = "~1.20.0" +GLM = "~1.9.5" +GeoMakie = "=0.7.17" +ImageIO = "~0.6.10" +JSON = "~1.11.0" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.13.2" +manifest_format = "2.1" +project_hash = "255e0876b0719415c810abd5c5c060b89f136fdc" + +[[deps.AbstractFFTs]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" +registries = "General" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "1.5.0" + + [deps.AbstractFFTs.extensions] + AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" + + [deps.AbstractFFTs.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.AbstractTrees]] +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" +registries = "General" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.5" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] +git-tree-sha1 = "7063ad1083578215c7c4bf410368150abe8d5524" +registries = "General" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.45" + + [deps.Accessors.extensions] + AxisKeysExt = "AxisKeys" + IntervalSetsExt = "IntervalSets" + LinearAlgebraExt = "LinearAlgebra" + StaticArraysExt = "StaticArrays" + StructArraysExt = "StructArrays" + TestExt = "Test" + UnitfulExt = "Unitful" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.Adapt]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "dee8388a9bec89c8713ad176f96960ae2f98598a" +registries = "General" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.7.4" +weakdeps = ["SparseArrays", "StaticArrays"] + + [deps.Adapt.extensions] + AdaptSparseArraysExt = "SparseArrays" + AdaptStaticArraysExt = "StaticArrays" + +[[deps.AdaptivePredicates]] +git-tree-sha1 = "7e651ea8d262d2d74ce75fdf47c4d63c07dba7a6" +registries = "General" +uuid = "35492f91-a3bd-45ad-95db-fcad7dcfedb7" +version = "1.2.0" + +[[deps.AliasTables]] +deps = ["PtrArrays", "Random"] +git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" +registries = "General" +uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" +version = "1.1.3" + +[[deps.Animations]] +deps = ["Colors"] +git-tree-sha1 = "e092fa223bf66a3c41f9c022bd074d916dc303e7" +registries = "General" +uuid = "27a7e980-b3e6-11e9-2bcd-0b925532e340" +version = "0.4.2" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.2" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" + +[[deps.Automa]] +deps = ["PrecompileTools", "TranscodingStreams"] +git-tree-sha1 = "94eab0b3ccdcac361188cc661daf69d4433c1818" +registries = "General" +uuid = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b" +version = "1.2.0" + +[[deps.AxisAlgorithms]] +deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] +git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712" +registries = "General" +uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" +version = "1.1.0" + +[[deps.AxisArrays]] +deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] +git-tree-sha1 = "4126b08903b777c88edf1754288144a0492c05ad" +registries = "General" +uuid = "39de3d68-74b9-583c-8d2d-e117c070f3a9" +version = "0.4.8" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" + +[[deps.BaseDirs]] +git-tree-sha1 = "8c290a1b223deaeea9aea44b235d24546da8eb98" +registries = "General" +uuid = "18cc8868-cbac-4acf-b575-c8ff214dc66f" +version = "1.4.0" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" +registries = "General" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.9+0" + +[[deps.CEnum]] +git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" +registries = "General" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.5.0" + +[[deps.CRC32c]] +uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" +version = "1.11.0" + +[[deps.CRlibm]] +deps = ["CRlibm_jll"] +git-tree-sha1 = "66188d9d103b92b6cd705214242e27f5737a1e5e" +registries = "General" +uuid = "96374032-68de-5a5b-8d9e-752f78720389" +version = "1.0.2" + +[[deps.CRlibm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc" +registries = "General" +uuid = "4e9b3aee-d8a1-5a3d-ad8b-7d824db253f0" +version = "1.0.1+0" + +[[deps.CSV]] +deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] +git-tree-sha1 = "abed1e735dd4152f48c90cf0767e1790e25f332f" +registries = "General" +uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" +version = "0.10.17" + +[[deps.Cairo]] +deps = ["Cairo_jll", "Colors", "Glib_jll", "Graphics", "Libdl", "Pango_jll"] +git-tree-sha1 = "71aa551c5c33f1a4415867fe06b7844faadb0ae9" +registries = "General" +uuid = "159f3aea-2a34-519c-b102-8c37f9878175" +version = "1.1.1" + +[[deps.CairoMakie]] +deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"] +git-tree-sha1 = "1cda0b7d5abfc95357dae18aca934d401f7869ad" +registries = "General" +uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" +version = "0.15.15" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "0cfb779e24fdced77a05df1dbe99200821a9f563" +registries = "General" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.18.8+1" + +[[deps.ChainRulesCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "4378c3544d8fcc3c8a521782db0e93e2c32d1838" +registries = "General" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.26.4" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "970758a3d591a2a5c2a907c53f2e2f8c1b1d3537" +registries = "General" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.9" + +[[deps.CodecZstd]] +deps = ["TranscodingStreams", "Zstd_jll"] +git-tree-sha1 = "da54a6cd93c54950c15adf1d336cfd7d71f51a56" +registries = "General" +uuid = "6b39b394-51ab-5f42-8807-6242bab2b4c2" +version = "0.8.7" + +[[deps.ColorBrewer]] +deps = ["Colors", "JSON"] +git-tree-sha1 = "07da79661b919001e6863b81fc572497daa58349" +registries = "General" +uuid = "a2cac450-b92f-5266-8821-25eda20663c8" +version = "0.4.2" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "b0fd3f56fa442f81e0a47815c92245acfaaa4e34" +registries = "General" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.31.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "a7cf827a79b378a381e31e5c7feca853ec19cb94" +registries = "General" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.12.4" +weakdeps = ["StyledStrings"] + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" +registries = "General" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.11.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Reexport"] +git-tree-sha1 = "a633156e74096f90b3b5e833529292b651b5671a" +registries = "General" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.13.3" + +[[deps.CommonSolve]] +deps = ["PrecompileTools"] +git-tree-sha1 = "6c389fa857f6ca5a95474b52a52023fd77f24cb7" +registries = "General" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.14" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "9d8a54ce4b17aa5bdce0ea5c34bc5e7c340d16ad" +registries = "General" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.18.1" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.5.5+2" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +registries = "General" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ComputePipeline]] +deps = ["Observables", "Preferences"] +git-tree-sha1 = "7bc84b769c1d384315e7b5c4ac03a6c303e6cf35" +registries = "General" +uuid = "95dc2771-c249-4cd0-9c9f-1f3b4330693c" +version = "0.1.8" + +[[deps.ConstructionBase]] +git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb" +registries = "General" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.6.0" +weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"] + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseLinearAlgebraExt = "LinearAlgebra" + ConstructionBaseStaticArraysExt = "StaticArrays" + +[[deps.Contour]] +git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" +registries = "General" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.3" + +[[deps.CoordinateTransformations]] +deps = ["LinearAlgebra", "StaticArrays"] +git-tree-sha1 = "a692f5e257d332de1e554e4566a4e5a8a72de2b2" +registries = "General" +uuid = "150eb455-5306-5404-9cee-2592286d6298" +version = "0.6.4" + +[[deps.CoreMath]] +deps = ["CoreMath_jll"] +git-tree-sha1 = "8c0480f92b1b1796239156a1b9b1bfb1b39499b4" +registries = "General" +uuid = "b7a15901-be09-4a0e-87d2-2e66b0e09b5a" +version = "0.1.0" + +[[deps.CoreMath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a692a4c1dc59a4b8bc0b6403876eb3250fde2bc3" +registries = "General" +uuid = "a38c48d9-6df1-5ac9-9223-b6ada3b5572b" +version = "0.1.0+0" + +[[deps.Crayons]] +git-tree-sha1 = "54b76cbb40d9a0f5368c880725b2f141da77c94f" +registries = "General" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.2.0" + +[[deps.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +registries = "General" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataFrames]] +deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "5fab31e2e01e70ad66e3e24c968c264d1cf166d6" +registries = "General" +uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +version = "1.8.2" + +[[deps.DataStructures]] +deps = ["OrderedCollections"] +git-tree-sha1 = "b0bc6d2cad1fed8b7fd59a1551a991cb3d2809e6" +registries = "General" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.19.6" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +registries = "General" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" + +[[deps.DelaunayTriangulation]] +deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"] +git-tree-sha1 = "e1e28f37cbdca4b594ad86ecfe2ee8f25796ebff" +registries = "General" +uuid = "927a84f5-c5f4-47a5-9785-b46e178433df" +version = "1.7.0" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" + +[[deps.Distributions]] +deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "Roots", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "2ddbc341251ed713d39e503b504593a5d6789551" +registries = "General" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.25.132" + + [deps.Distributions.extensions] + DistributionsChainRulesCoreExt = "ChainRulesCore" + DistributionsDensityInterfaceExt = "DensityInterface" + DistributionsSparseConnectivityTracerExt = "SparseConnectivityTracer" + DistributionsTestExt = "Test" + + [deps.Distributions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" + SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.DocStringExtensions]] +git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" +registries = "General" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.5" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.7.0" + +[[deps.EarCut_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" +registries = "General" +uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" +version = "2.2.4+0" + +[[deps.EnumX]] +git-tree-sha1 = "c49898e8438c828577f04b92fc9368c388ac783c" +registries = "General" +uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" +version = "1.0.7" + +[[deps.ExactPredicates]] +deps = ["IntervalArithmetic", "Random", "StaticArrays"] +git-tree-sha1 = "83231673ea4d3d6008ac74dc5079e77ab2209d8f" +registries = "General" +uuid = "429591f6-91af-11e9-00e2-59fbe8cec110" +version = "2.2.9" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "2bfb1e047e2ad0a5ca94365340bde8005d637568" +registries = "General" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.8.4+0" + +[[deps.Extents]] +git-tree-sha1 = "b309b36a9e02fe7be71270dd8c0fd873625332b4" +registries = "General" +uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" +version = "0.1.6" + +[[deps.FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libva_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "d9d3cd382f2c999f684e6bfa4039fcc16c153b6f" +registries = "General" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "9.0.2+0" + +[[deps.FFTA]] +deps = ["AbstractFFTs", "DocStringExtensions", "LinearAlgebra", "MuladdMacro", "Primes", "Random", "Reexport"] +git-tree-sha1 = "65e55303b72f4a567a51b174dd2c47496efeb95a" +registries = "General" +uuid = "b86e33f2-c0db-4aa1-a6e0-ab43e668529e" +version = "0.3.1" + +[[deps.FileIO]] +deps = ["Pkg", "Requires", "UUIDs"] +git-tree-sha1 = "6621fef488e496356c9c9625d0562c12a6070819" +registries = "General" +uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" +version = "1.20.0" + + [deps.FileIO.extensions] + HTTPExt = "HTTP" + + [deps.FileIO.weakdeps] + HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3" + +[[deps.FilePaths]] +deps = ["FilePathsBase", "MacroTools", "Reexport"] +git-tree-sha1 = "a1b2fbfe98503f15b665ed45b3d149e5d8895e4c" +registries = "General" +uuid = "8fc22ac5-c921-52a6-82fd-178b2807b824" +version = "0.9.0" + + [deps.FilePaths.extensions] + FilePathsGlobExt = "Glob" + FilePathsURIParserExt = "URIParser" + FilePathsURIsExt = "URIs" + + [deps.FilePaths.weakdeps] + Glob = "c27321d9-0574-5035-807b-f59d2c89b15c" + URIParser = "30578b45-9adc-5946-b283-645ec420af67" + URIs = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" + +[[deps.FilePathsBase]] +deps = ["Compat", "Dates"] +git-tree-sha1 = "3bab2c5aa25e7840a4b065805c0cdfc01f3068d2" +registries = "General" +uuid = "48062228-2e41-5def-b9a4-89aafe57970f" +version = "0.9.24" + + [deps.FilePathsBase.extensions] + FilePathsBaseMmapExt = "Mmap" + FilePathsBaseTestExt = "Test" + + [deps.FilePathsBase.weakdeps] + Mmap = "a63ad114-7e13-5084-954f-fe012c677804" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" + +[[deps.FillArrays]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "417289ac840d201005d9ed16789a46defccbe36d" +registries = "General" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.18.1" +weakdeps = ["PDMats", "SparseArrays", "StaticArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStaticArraysExt = "StaticArrays" + FillArraysStatisticsExt = "Statistics" + +[[deps.FixedPointNumbers]] +deps = ["Random", "Statistics"] +git-tree-sha1 = "59af96b98217c6ef4ae0dfe065ac7c20831d1a84" +registries = "General" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.6" + +[[deps.Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] +git-tree-sha1 = "f85dac9a96a01087df6e3a749840015a0ca3817d" +registries = "General" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.17.1+0" + +[[deps.Format]] +git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" +registries = "General" +uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" +version = "1.3.7" + +[[deps.FreeType]] +deps = ["CEnum", "FreeType2_jll"] +git-tree-sha1 = "907369da0f8e80728ab49c1c7e09327bf0d6d999" +registries = "General" +uuid = "b38be410-82b0-50bf-ab77-7b57e271db43" +version = "4.1.1" + +[[deps.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "70329abc09b886fd2c5d94ad2d9527639c421e3e" +registries = "General" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.14.3+1" + +[[deps.FreeTypeAbstraction]] +deps = ["BaseDirs", "ColorVectorSpace", "Colors", "FreeType", "GeometryBasics", "Mmap"] +git-tree-sha1 = "4ebb930ef4a43817991ba35db6317a05e59abd11" +registries = "General" +uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" +version = "0.10.8" + +[[deps.FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7a214fdac5ed5f59a22c2d9a885a16da1c74bbc7" +registries = "General" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.17+0" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" + +[[deps.GLM]] +deps = ["Distributions", "LinearAlgebra", "LogExpFunctions", "Printf", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsModels"] +git-tree-sha1 = "c963639ae5b9aab54f543bdc7504f42f59880bec" +registries = "General" +uuid = "38e38edf-8417-5370-95a0-9cbb8c7f171a" +version = "1.9.5" + +[[deps.Gamma]] +deps = ["LogExpFunctions"] +git-tree-sha1 = "becc397f7cfb06e343496ae6ffb04818a851da51" +registries = "General" +uuid = "a0844989-3bd2-4988-8bea-c9407ab0941b" +version = "1.2.0" + +[[deps.GeoFormatTypes]] +git-tree-sha1 = "7528a7956248c723d01a0a9b0447bf254bf4da52" +registries = "General" +uuid = "68eda718-8dee-11e9-39e7-89f7f65f511f" +version = "0.4.5" + +[[deps.GeoInterface]] +deps = ["DataAPI", "Extents", "GeoFormatTypes"] +git-tree-sha1 = "20f6b13b28c6304104968374f38c24ef71a8ea16" +registries = "General" +uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" +version = "1.6.2" + + [deps.GeoInterface.extensions] + GeoInterfaceMakieExt = ["Makie", "GeometryBasics"] + GeoInterfaceRecipesBaseExt = "RecipesBase" + + [deps.GeoInterface.weakdeps] + GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + +[[deps.GeoJSON]] +deps = ["Extents", "GeoFormatTypes", "GeoInterface", "JSON3", "StructTypes", "Tables"] +git-tree-sha1 = "ce64817b826c36b30493b31be2ce53c55a277835" +registries = "General" +uuid = "61d90e0f-e114-555e-ac52-39dfb47a3ef9" +version = "0.8.4" + + [deps.GeoJSON.extensions] + GeoJSONMakieExt = "Makie" + GeoJSONRecipesBaseExt = "RecipesBase" + + [deps.GeoJSON.weakdeps] + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + +[[deps.GeoMakie]] +deps = ["Colors", "CoordinateTransformations", "Downloads", "GeoFormatTypes", "GeoInterface", "GeoJSON", "Geodesy", "GeometryBasics", "GeometryOps", "ImageIO", "LinearAlgebra", "Makie", "NaturalEarth", "Proj", "Reexport", "Statistics", "StructArrays"] +git-tree-sha1 = "773cdb042ba888de7b4c49451672bac1a38bc28b" +registries = "General" +uuid = "db073c08-6b98-4ee5-b6a4-5efafb3259c6" +version = "0.7.17" + +[[deps.Geodesy]] +deps = ["CoordinateTransformations", "Dates", "LinearAlgebra", "StaticArrays"] +git-tree-sha1 = "d48fa6a8d49350670b5ba409dbe2ddec791b4808" +registries = "General" +uuid = "0ef565a4-170c-5f04-8de2-149903a85f3d" +version = "1.2.0" + +[[deps.GeometryBasics]] +deps = ["EarCut_jll", "LinearAlgebra", "PrecompileTools", "Random", "StaticArrays"] +git-tree-sha1 = "ec46c5825710fa1a15d468acb2d93cc939a7a5fe" +registries = "General" +uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" +version = "0.5.13" +weakdeps = ["Extents", "GeoInterface", "IntervalSets"] + + [deps.GeometryBasics.extensions] + ExtentsExt = "Extents" + GeometryBasicsGeoInterfaceExt = "GeoInterface" + IntervalSetsExt = "IntervalSets" + +[[deps.GeometryOps]] +deps = ["AbstractTrees", "AdaptivePredicates", "CoordinateTransformations", "DataAPI", "DelaunayTriangulation", "ExactPredicates", "Extents", "GeoFormatTypes", "GeoInterface", "GeometryOpsCore", "LinearAlgebra", "PrecompileTools", "Random", "SortTileRecursiveTree", "StaticArrays", "Statistics", "Tables"] +git-tree-sha1 = "b0d208d68332d90d632d9bb4303e0b55ca8fb13c" +registries = "General" +uuid = "3251bfac-6a57-4b6d-aa61-ac1fef2975ab" +version = "0.1.47" + + [deps.GeometryOps.extensions] + GeometryOpsDataFramesExt = "DataFrames" + GeometryOpsDimensionalDataExt = "DimensionalData" + GeometryOpsFlexiJoinsExt = "FlexiJoins" + GeometryOpsLibGEOSExt = "LibGEOS" + GeometryOpsMakieExt = "Makie" + GeometryOpsProjExt = "Proj" + GeometryOpsTGGeometryExt = "TGGeometry" + + [deps.GeometryOps.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + DimensionalData = "0703355e-b756-11e9-17c0-8b28908087d0" + FlexiJoins = "e37f2e79-19fa-4eb7-8510-b63b51fe0a37" + LibGEOS = "a90b1aa1-3769-5649-ba7e-abc5a9d163eb" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + Proj = "c94c279d-25a6-4763-9509-64d165bea63e" + TGGeometry = "d7e755d2-3c95-4bcf-9b3c-79ab1a78647b" + +[[deps.GeometryOpsCore]] +deps = ["DataAPI", "GeoInterface", "StableTasks", "Tables"] +git-tree-sha1 = "8f32a94cf3d80a716cae6025af6cbc4e68421da5" +registries = "General" +uuid = "05efe853-fabf-41c8-927e-7063c8b9f013" +version = "0.1.12" + +[[deps.GettextRuntime_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll"] +git-tree-sha1 = "45288942190db7c5f760f59c04495064eedf9340" +registries = "General" +uuid = "b0724c58-0f36-5564-988d-3bb0596ebc4a" +version = "0.22.4+0" + +[[deps.Giflib_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a3efbbc027441271444dcd0c0a46f2d119dc4329" +registries = "General" +uuid = "59f7168a-df46-5410-90c8-f2779963d0ec" +version = "6.1.3+0" + +[[deps.Glib_jll]] +deps = ["Artifacts", "GettextRuntime_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "ea9f1fb37ff10597353b56f3ba0ebd525acef6e0" +registries = "General" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.90.1+0" + +[[deps.Graphics]] +deps = ["Colors", "LinearAlgebra", "NaNMath"] +git-tree-sha1 = "a641238db938fff9b2f60d08ed9030387daf428c" +registries = "General" +uuid = "a2bd30eb-e257-5431-a919-1863eab51364" +version = "1.1.3" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "69ffb934a5c5b7e086a0b4fee3427db2556fba6e" +registries = "General" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.16+0" + +[[deps.GridLayoutBase]] +deps = ["GeometryBasics", "InteractiveUtils", "Observables"] +git-tree-sha1 = "ef70da5e123a06a29e2d6ddff0f09985bc226491" +registries = "General" +uuid = "3955a311-db13-416c-9275-1d80ed98e5e9" +version = "0.11.3" + +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] +git-tree-sha1 = "9d9531a9cb63a9edc33836414e82a07e81710de2" +registries = "General" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "100.14004.0+0" + +[[deps.HypergeometricFunctions]] +deps = ["Gamma", "LinearAlgebra"] +git-tree-sha1 = "31bb6c92405c084617facc1d7ed9eb6c402d061e" +registries = "General" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.30" + +[[deps.ImageAxes]] +deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"] +git-tree-sha1 = "e12629406c6c4442539436581041d372d69c55ba" +registries = "General" +uuid = "2803e5a7-5153-5ecf-9a86-9b4c37f5f5ac" +version = "0.6.12" + +[[deps.ImageBase]] +deps = ["ImageCore", "Reexport"] +git-tree-sha1 = "eb49b82c172811fd2c86759fa0553a2221feb909" +registries = "General" +uuid = "c817782e-172a-44cc-b673-b171935fbb9e" +version = "0.1.7" + +[[deps.ImageCore]] +deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] +git-tree-sha1 = "8c193230235bbcee22c8066b0374f63b5683c2d3" +registries = "General" +uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" +version = "0.10.5" + +[[deps.ImageIO]] +deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs", "WebP"] +git-tree-sha1 = "f0f005f997dfb8c5fe23920d99458a9619873893" +registries = "General" +uuid = "82e4d734-157c-48bb-816b-45c225c6df19" +version = "0.6.10" + +[[deps.ImageMetadata]] +deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"] +git-tree-sha1 = "2a81c3897be6fbcde0802a0ebe6796d0562f63ec" +registries = "General" +uuid = "bc367c6b-8a6b-528e-b4bd-a4b897500b49" +version = "0.9.10" + +[[deps.Imath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "dcc8d0cd653e55213df9b75ebc6fe4a8d3254c65" +registries = "General" +uuid = "905a6f67-0a94-5f89-b386-d35d92009cd1" +version = "3.2.2+0" + +[[deps.IndirectArrays]] +git-tree-sha1 = "012e604e1c7458645cb8b436f8fba789a51b257f" +registries = "General" +uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959" +version = "1.0.0" + +[[deps.Inflate]] +git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" +registries = "General" +uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" +version = "0.1.5" + +[[deps.InlineStrings]] +git-tree-sha1 = "06b65886c7577a3784d616e29f1302c2e36e389d" +registries = "General" +uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" +version = "1.4.6" + + [deps.InlineStrings.extensions] + ArrowTypesExt = "ArrowTypes" + ParsersExt = "Parsers" + + [deps.InlineStrings.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" + Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" + +[[deps.IntegerMathUtils]] +git-tree-sha1 = "c72458f1962faeb003bf23cbdb75164fe6280906" +registries = "General" +uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" +version = "0.1.4" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" + +[[deps.Interpolations]] +deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] +git-tree-sha1 = "48922d06068130f87e43edef52382e6a94305ae6" +registries = "General" +uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" +version = "0.16.3" + + [deps.Interpolations.extensions] + InterpolationsForwardDiffExt = "ForwardDiff" + InterpolationsUnitfulExt = "Unitful" + + [deps.Interpolations.weakdeps] + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.IntervalArithmetic]] +deps = ["CRlibm", "CoreMath", "MacroTools", "OpenBLASConsistentFPCSR_jll", "Printf", "Random", "RoundingEmulator"] +git-tree-sha1 = "1c531bf0f8a5c60a340926e058fd3f209b5eef5d" +registries = "General" +uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" +version = "1.0.12" + + [deps.IntervalArithmetic.extensions] + IntervalArithmeticArblibExt = "Arblib" + IntervalArithmeticDiffRulesExt = "DiffRules" + IntervalArithmeticForwardDiffExt = "ForwardDiff" + IntervalArithmeticIntervalSetsExt = "IntervalSets" + IntervalArithmeticIrrationalConstantsExt = "IrrationalConstants" + IntervalArithmeticLinearAlgebraExt = "LinearAlgebra" + IntervalArithmeticMakieExt = "Makie" + IntervalArithmeticRecipesBaseExt = "RecipesBase" + IntervalArithmeticSparseArraysExt = "SparseArrays" + + [deps.IntervalArithmetic.weakdeps] + Arblib = "fb37089c-8514-4489-9461-98f9c8763369" + DiffRules = "b552c78f-8df3-52c6-915a-8e097449b14b" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + IrrationalConstants = "92d709cd-6900-40b7-9082-c6be49f344b6" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.IntervalSets]] +git-tree-sha1 = "0db6aea5b64caa1c47e9fdd27394f0296f05e8bf" +registries = "General" +uuid = "8197267c-284f-5f27-9208-e0e47529a953" +version = "0.7.15" + + [deps.IntervalSets.extensions] + IntervalSetsMakieExt = "Makie" + IntervalSetsRandomExt = "Random" + IntervalSetsRecipesBaseExt = "RecipesBase" + IntervalSetsStatisticsExt = "Statistics" + + [deps.IntervalSets.weakdeps] + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.InverseFunctions]] +git-tree-sha1 = "5cc6ad3e2bfc75a11eed92632ee341d37f4a4536" +registries = "General" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.18" + + [deps.InverseFunctions.extensions] + InverseFunctionsDatesExt = "Dates" + InverseFunctionsTestExt = "Test" + + [deps.InverseFunctions.weakdeps] + Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.InvertedIndices]] +git-tree-sha1 = "6da3c4316095de0f5ee2ebd875df8721e7e0bdbe" +registries = "General" +uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" +version = "1.3.1" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "b2d91fe939cae05960e760110b328288867b5758" +registries = "General" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.6" + +[[deps.Isoband]] +deps = ["isoband_jll"] +git-tree-sha1 = "f9b6d97355599074dc867318950adaa6f9946137" +registries = "General" +uuid = "f1662d9f-8043-43de-a69a-05efc1cc6ff4" +version = "0.1.1" + +[[deps.IterTools]] +git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" +registries = "General" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.10.0" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +registries = "General" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7204148362dafe5fe6a273f855b8ccbe4df8173e" +registries = "General" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.8.0" + +[[deps.JSON]] +deps = ["Dates", "Logging", "Parsers", "PrecompileTools", "StructUtils", "UUIDs", "Unicode"] +git-tree-sha1 = "9939eb6f799a963b3392ac4a1d49d3fc0646eb80" +registries = "General" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "1.11.0" + + [deps.JSON.extensions] + JSONArrowExt = ["ArrowTypes"] + + [deps.JSON.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" + +[[deps.JSON3]] +deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] +git-tree-sha1 = "411eccfe8aba0814ffa0fdf4860913ed09c34975" +registries = "General" +uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +version = "1.14.3" + + [deps.JSON3.extensions] + JSON3ArrowExt = ["ArrowTypes"] + + [deps.JSON3.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" + +[[deps.JpegTurbo]] +deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"] +git-tree-sha1 = "9496de8fb52c224a2e3f9ff403947674517317d9" +registries = "General" +uuid = "b835a17e-a41a-41e7-81f0-2f016b05efe0" +version = "0.1.6" + +[[deps.JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "037babc10853eeb8e585418922246cb97b8e5b74" +registries = "General" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "3.2.0+1" + +[[deps.JuliaSyntaxHighlighting]] +deps = ["StyledStrings"] +uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011" +version = "1.12.0" + +[[deps.KernelDensity]] +deps = ["Distributions", "DocStringExtensions", "FFTA", "Interpolations", "StatsBase"] +git-tree-sha1 = "9eda8292dd3268b3b7ec9df21bbfac24e177ec52" +registries = "General" +uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" +version = "0.6.12" + +[[deps.LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "059aabebaa7c82ccb853dd4a0ee9d17796f7e1bc" +registries = "General" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.3+0" + +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "39bca05343661c347aae0bca57a5994a0bf4f08d" +registries = "General" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "4.2.0+0" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e5b100780d4d30d63b4618d7930d48af409c1772" +registries = "General" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "23.1.1+0" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "f88f3ccef05a6a72a0cf0ed417c8fd68530f4ab2" +registries = "General" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.4.1" + +[[deps.LazyModules]] +git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" +registries = "General" +uuid = "8cdb02fc-e678-4876-92c5-9defec4f444e" +version = "0.3.1" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "1.0.0" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "LibSSH2_jll", "Libdl", "OpenSSL_jll", "Zlib_jll", "Zstd_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.22.0+0" + +[[deps.LibGit2]] +deps = ["LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" + +[[deps.LibGit2_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "LibSSH2_jll", "Libdl", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.9.7+0" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl", "OpenSSL_jll", "Zlib_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.104+0" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" + +[[deps.Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "c8da7e6a91781c41a863611c7e966098d783c57a" +registries = "General" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.4.7+0" + +[[deps.Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "d36c21b9e7c172a44a10484125024495e2625ac0" +registries = "General" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.7.1+1" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" +registries = "General" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.18.0+0" + +[[deps.Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b8a91037379e1fd661e9b5ff3d7a770424b1f9f2" +registries = "General" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.42.4+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "aebd334d06cee9f24cea70bd19a39749daf73881" +registries = "General" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.7.3+0" + +[[deps.Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "9e887184f306b28dbfcff88cefbb0ec80f1aa9e0" +registries = "General" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.42.4+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.13.0" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "28d620bcdb37a3fb02de9f521928ee453690f414" +registries = "General" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "1.0.3" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" + +[[deps.MacroTools]] +git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" +registries = "General" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.16" + +[[deps.Makie]] +deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "ComputePipeline", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "Pkg", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] +git-tree-sha1 = "5f6f5d1b1fb7ff98c9a083bbfd4c661a9808e758" +registries = "General" +uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" +version = "0.24.15" + + [deps.Makie.extensions] + MakieDynamicQuantitiesExt = "DynamicQuantities" + + [deps.Makie.weakdeps] + DynamicQuantities = "06fc5a27-2a28-4c7c-a15d-362465fb6821" + +[[deps.MappedArrays]] +git-tree-sha1 = "0ee4497a4e80dbd29c058fcee6493f5219556f40" +registries = "General" +uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" +version = "0.4.3" + +[[deps.Markdown]] +deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" + +[[deps.MathTeXEngine]] +deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "UnicodeFun"] +git-tree-sha1 = "aa1078778be5a8e5259ff04fbc3d258b3e78d464" +registries = "General" +uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" +version = "0.6.9" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" +registries = "General" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.2.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" + +[[deps.MosaicViews]] +deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] +git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe" +registries = "General" +uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389" +version = "0.3.4" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2026.8.13" + +[[deps.MuladdMacro]] +deps = ["PrecompileTools"] +git-tree-sha1 = "283bf85d4a767481dd924dff0eee1735e95f449e" +registries = "General" +uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" +version = "0.2.7" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "dbd2e8cd2c1c27f0b584f6661b4309609c5a685e" +registries = "General" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.1.4" + +[[deps.NaturalEarth]] +deps = ["Downloads", "GeoJSON", "Pkg", "Preferences", "Scratch"] +git-tree-sha1 = "334574c147f5e48b62ce4d3f8b80c8b0edf247b5" +registries = "General" +uuid = "436b0209-26ab-4e65-94a9-6526d86fea76" +version = "0.1.1" + +[[deps.Netpbm]] +deps = ["FileIO", "ImageCore", "ImageMetadata"] +git-tree-sha1 = "d92b107dbb887293622df7697a2223f9f8176fcd" +registries = "General" +uuid = "f09324ee-3d7c-5217-9330-fc30815ba969" +version = "1.1.1" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.3.0" + +[[deps.Observables]] +git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" +registries = "General" +uuid = "510215fc-4207-5dde-b226-833fc4488ee2" +version = "0.5.5" + +[[deps.OffsetArrays]] +git-tree-sha1 = "117432e406b5c023f665fa73dc26e79ec3630151" +registries = "General" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.17.0" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" + +[[deps.Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b6aa4566bb7ae78498a5e68943863fa8b5231b59" +registries = "General" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.6+0" + +[[deps.OpenBLASConsistentFPCSR_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "38a93f17e431141c6470bb67a88952a7c4f0e928" +registries = "General" +uuid = "6cdc7f73-28fd-5e50-80fb-958a8875b1af" +version = "0.3.34+0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.30+0" + +[[deps.OpenEXR]] +deps = ["Colors", "FileIO", "OpenEXR_jll"] +git-tree-sha1 = "97db9e07fe2091882c765380ef58ec553074e9c7" +registries = "General" +uuid = "52e1d378-f018-4a11-a4be-720524705ac7" +version = "0.3.3" + +[[deps.OpenEXR_jll]] +deps = ["Artifacts", "Imath_jll", "JLLWrappers", "Libdl", "OpenJPH_jll", "Zlib_jll", "Zstd_jll", "libdeflate_jll"] +git-tree-sha1 = "eb47260eaf61dca5c0e17bd126f4426edac35975" +registries = "General" +uuid = "18a262bb-aa17-5467-a713-aee519bc75cb" +version = "3.5.2+0" + +[[deps.OpenJPH_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libtiff_jll"] +git-tree-sha1 = "1b1f3cabb1130670812b848f4623d69d578ea805" +registries = "General" +uuid = "95196869-6d61-5868-8eee-c38c33804e0c" +version = "0.32.0+0" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.7+0" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.5.8+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" +registries = "General" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.6+0" + +[[deps.Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e2bb57a313a74b8104064b7efd01406c0a50d2ff" +registries = "General" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.6.1+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "b079a6affebde167dad8ffe0d670b53917fbcb68" +registries = "General" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "2.0.3" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.46.0+0" + +[[deps.PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "123266c25174ef6c8d4718920abc206452cf8de6" +registries = "General" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.11.41" +weakdeps = ["StatsBase"] + + [deps.PDMats.extensions] + StatsBaseExt = "StatsBase" + +[[deps.PNGFiles]] +deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"] +git-tree-sha1 = "32b657a0d57c310a1a172bfc8c8cf68c5e674323" +registries = "General" +uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" +version = "0.4.5" + +[[deps.PROJ_jll]] +deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "Libtiff_jll", "SQLite_jll"] +git-tree-sha1 = "6ea32aa551fc86426adc371aab209087876be95b" +registries = "General" +uuid = "58948b4f-47e0-5654-a9ad-f609743f8632" +version = "902.900.0+0" + +[[deps.Packing]] +deps = ["GeometryBasics"] +git-tree-sha1 = "bc5bf2ea3d5351edf285a06b0016788a121ce92c" +registries = "General" +uuid = "19eb6ba3-879d-56ad-ad62-d5c202156566" +version = "0.5.1" + +[[deps.PaddedViews]] +deps = ["OffsetArrays"] +git-tree-sha1 = "0fac6313486baae819364c52b4f483450a9d793f" +registries = "General" +uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" +version = "0.5.12" + +[[deps.Pango_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1912a9f1b9ca55005b03ba075f8e19993583e237" +registries = "General" +uuid = "36c8627f-9965-5494-a995-c6b170f724f3" +version = "1.58.2+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "ba0dc8a8a67cacac4842631f960c046e4e563675" +registries = "General" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.8" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "e4a6721aa89e62e5d4217c0b21bd714263779dda" +registries = "General" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.46.4+0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "Zstd_jll", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.13.0" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" + +[[deps.PkgVersion]] +deps = ["Pkg"] +git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" +registries = "General" +uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" +version = "0.3.3" + +[[deps.PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Reexport", "Statistics"] +git-tree-sha1 = "ddcc36fd83fb4cd459a53c891981697bde0d3de6" +registries = "General" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.5.1" + +[[deps.PolygonOps]] +git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6" +registries = "General" +uuid = "647866c9-e3ac-4575-94e7-e3d426903924" +version = "0.1.2" + +[[deps.PooledArrays]] +deps = ["DataAPI", "Future"] +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" +registries = "General" +uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +version = "1.4.3" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "edbeefc7a4889f528644251bdb5fc9ab5348bc2c" +registries = "General" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.3.4" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "aef1987d90dcc2e2cbd919ad10b2d25bcce4f418" +registries = "General" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.6.1" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "REPL", "Reexport", "StringManipulation", "StyledStrings", "Tables"] +git-tree-sha1 = "99fd8f32ab6728ff205cddd24e2d9ea6cbb498d3" +registries = "General" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "3.5.0" + + [deps.PrettyTables.extensions] + PrettyTablesExcelExt = "XLSX" + PrettyTablesTypstryExt = "Typstry" + PrettyTablesWriteDocxExt = "WriteDocx" + + [deps.PrettyTables.weakdeps] + Typstry = "f0ed7684-a786-439e-b1e3-3b82803b501e" + WriteDocx = "d049ceea-54ee-41d7-a26f-ba29db3b6599" + XLSX = "fdbf4ff8-1666-58a4-91e7-1b58723a45e0" + +[[deps.Primes]] +deps = ["IntegerMathUtils"] +git-tree-sha1 = "25cdd1d20cd005b52fc12cb6be3f75faaf59bb9b" +registries = "General" +uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" +version = "0.5.7" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" + +[[deps.ProgressMeter]] +deps = ["Printf"] +git-tree-sha1 = "d72534986f4a4641b4d2492a154ec0b0e6985284" +registries = "General" +uuid = "92933f4c-e287-5a05-a399-4b506db050ca" +version = "1.12.0" +weakdeps = ["Distributed"] + + [deps.ProgressMeter.extensions] + ProgressMeterDistributedExt = "Distributed" + +[[deps.Proj]] +deps = ["CEnum", "CoordinateTransformations", "GeoFormatTypes", "GeoInterface", "NetworkOptions", "PROJ_jll"] +git-tree-sha1 = "61188669db4f5b400173e4ec60da8bcb72d6e749" +registries = "General" +uuid = "c94c279d-25a6-4763-9509-64d165bea63e" +version = "1.9.0" + +[[deps.PtrArrays]] +git-tree-sha1 = "4fbbafbc6251b883f4d2705356f3641f3652a7fe" +registries = "General" +uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" +version = "1.4.0" + +[[deps.QOI]] +deps = ["ColorTypes", "FileIO", "FixedPointNumbers"] +git-tree-sha1 = "472daaa816895cb7aee81658d4e7aec901fa1106" +registries = "General" +uuid = "4b34888f-f399-49d4-9bb3-47ed5cae4e65" +version = "1.0.2" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "5e8e8b0ab68215d7a2b14b9921a946fee794749e" +registries = "General" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.11.3" + + [deps.QuadGK.extensions] + QuadGKEnzymeExt = "Enzyme" + + [deps.QuadGK.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + +[[deps.REPL]] +deps = ["Base64", "Dates", "FileWatching", "InteractiveUtils", "JuliaSyntaxHighlighting", "Markdown", "Sockets", "StyledStrings", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" + +[[deps.Random]] +deps = ["SHA"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" + +[[deps.RangeArrays]] +git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" +registries = "General" +uuid = "b3c3ace0-ae52-54e7-9d0b-2c1406fd6b9d" +version = "0.3.2" + +[[deps.Ratios]] +deps = ["Requires"] +git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" +registries = "General" +uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" +version = "0.4.5" +weakdeps = ["FixedPointNumbers"] + + [deps.Ratios.extensions] + RatiosFixedPointNumbersExt = "FixedPointNumbers" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +registries = "General" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" +registries = "General" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.1" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" +registries = "General" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.1" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "5b3d50eb374cea306873b371d3f8d3915a018f0b" +registries = "General" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.9.0" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6d40b2fe70437b01397d2a4d5b020008da4e7019" +registries = "General" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.5.2+0" + +[[deps.Roots]] +deps = ["Accessors", "CommonSolve", "Printf"] +git-tree-sha1 = "e6ffa7bd4f8d0b8744d18f219304738d952f9a37" +registries = "General" +uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" +version = "3.0.11" + + [deps.Roots.extensions] + RootsChainRulesCoreExt = "ChainRulesCore" + RootsForwardDiffExt = "ForwardDiff" + RootsIntervalRootFindingExt = "IntervalRootFinding" + RootsSymPyExt = "SymPy" + RootsSymPyPythonCallExt = "SymPyPythonCall" + RootsUnitfulExt = "Unitful" + + [deps.Roots.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + IntervalRootFinding = "d2bf35a9-74e0-55ec-b149-d360ff49b807" + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" + SymPyPythonCall = "bc8888f7-b21e-4b7c-a06a-5d9c9496438c" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.RoundingEmulator]] +git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" +registries = "General" +uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" +version = "0.2.1" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "1.0.0" + +[[deps.SIMD]] +deps = ["PrecompileTools"] +git-tree-sha1 = "37ac518b3c924f110d82d50173eaf4ebeaf27ad7" +registries = "General" +uuid = "fdea26ae-647d-5447-a871-4b548cad5224" +version = "3.8.1" + +[[deps.SQLite_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll", "dlfcn_win32_jll"] +git-tree-sha1 = "581bc13ec7f43745b20f8ff0e70b931ac5c4fdbe" +registries = "General" +uuid = "76ed43ae-9a5d-5a62-8c75-30186b810ce8" +version = "3.54.0+0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "9b81b8393e50b7d4e6d0a9f14e192294d3b7c109" +registries = "General" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.3.0" + +[[deps.SentinelArrays]] +deps = ["Dates", "Random"] +git-tree-sha1 = "084c47c7c5ce5cfecefa0a98dff69eb3646b5a80" +registries = "General" +uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" +version = "1.4.10" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" + +[[deps.ShaderAbstractions]] +deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays"] +git-tree-sha1 = "57aa595158717ef165e6f5ab639fe2e3178c0a2b" +registries = "General" +uuid = "65257c39-d410-5151-9873-9b3e5be5013e" +version = "0.5.1" + +[[deps.SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" + +[[deps.ShiftedArrays]] +git-tree-sha1 = "503688b59397b3307443af35cd953a13e8005c16" +registries = "General" +uuid = "1277b4bf-5013-50f5-be3d-901d8477a67a" +version = "2.0.0" + +[[deps.SignedDistanceFields]] +deps = ["Statistics"] +git-tree-sha1 = "3949ad92e1c9d2ff0cd4a1317d5ecbba682f4b92" +registries = "General" +uuid = "73760f76-fbc4-59ce-8f25-708e95d2df96" +version = "0.4.1" + +[[deps.SimpleTraits]] +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "7ddb0b49c109481b046972c0e4ab02b2127d6a75" +registries = "General" +uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" +version = "0.9.6" + +[[deps.Sixel]] +deps = ["Dates", "FileIO", "ImageCore", "IndirectArrays", "OffsetArrays", "REPL", "libsixel_jll"] +git-tree-sha1 = "2c79185e5261b159474903598c571ddd9f12ff7b" +registries = "General" +uuid = "45858cf5-a6b0-47a3-bbea-62219f50df47" +version = "0.1.6" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" + +[[deps.SortTileRecursiveTree]] +deps = ["AbstractTrees", "Extents", "GeoInterface"] +git-tree-sha1 = "f9aa6616a9b3bd01f93f27c010f1d25fc5a094a9" +registries = "General" +uuid = "746ee33f-1797-42c2-866d-db2fce69d14d" +version = "0.1.4" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "13cd91cc9be159e3f4d95b857fa2aa383b53772a" +registries = "General" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.3" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.13.0" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "429071b23f4c9a13fb6582f807cc2ef454082408" +registries = "General" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.9.0" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + +[[deps.StableTasks]] +git-tree-sha1 = "c4f6610f85cb965bee5bfafa64cbeeda55a4e0b2" +registries = "General" +uuid = "91464d47-22a1-43fe-8b7f-2d57ee82463f" +version = "0.1.7" + +[[deps.StackViews]] +deps = ["OffsetArrays"] +git-tree-sha1 = "be1cf4eb0ac528d96f5115b4ed80c26a8d8ae621" +registries = "General" +uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15" +version = "0.1.2" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "de349d5585559b692f518b6d3fc7c179d64b2364" +registries = "General" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.23" +weakdeps = ["ChainRulesCore", "Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "6ab403037779dae8c514bad259f32a447262455a" +registries = "General" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.4" + +[[deps.Statistics]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "e2b53ce13a53367e96601081e33d34746b571bad" +registries = "General" +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.11.5" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "178ed29fd5b2a2cfc3bd31c13375ae925623ff36" +registries = "General" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.8.0" + +[[deps.StatsBase]] +deps = ["AliasTables", "DataAPI", "DataStructures", "IrrationalConstants", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "adb9da019510162e67a4493fc235c23203d8b09e" +registries = "General" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.13" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "91a5737baed20ee31f3faea0e51f57461f6a689e" +registries = "General" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "2.2.1" +weakdeps = ["ChainRulesCore", "InverseFunctions"] + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + +[[deps.StatsModels]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Printf", "REPL", "ShiftedArrays", "SparseArrays", "StatsAPI", "StatsBase", "StatsFuns", "Tables"] +git-tree-sha1 = "0db41c4e0d9f3fa195395a6401a8290752c9cd3d" +registries = "General" +uuid = "3eaba693-59b7-5ba5-a881-562e759f1c8d" +version = "0.7.10" + +[[deps.StringManipulation]] +deps = ["PrecompileTools", "StyledStrings"] +git-tree-sha1 = "9e3a02d73a8f0a9be04e677dbef758aab40f8bea" +registries = "General" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.6.1" + +[[deps.StructArrays]] +deps = ["ConstructionBase", "DataAPI", "Tables"] +git-tree-sha1 = "4daaddbe37aa80b4551bf7c56adf53e7cfcdf35a" +registries = "General" +uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" +version = "0.7.4" + + [deps.StructArrays.extensions] + AdaptExt = "Adapt" + GPUArraysCoreExt = "GPUArraysCore" + KernelAbstractionsExt = "KernelAbstractions" + LinearAlgebraExt = "LinearAlgebra" + SparseArraysExt = "SparseArrays" + StaticArraysExt = "StaticArrays" + + [deps.StructArrays.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "fd6a55e88450cb4256e49103a5a243f065c7b781" +registries = "General" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.11.1" + +[[deps.StructUtils]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "ad435e30854ed0f50f4b7f67edd71664afecc5d8" +registries = "General" +uuid = "ec057cc2-7a8d-4b58-b3b3-92acb9f63b42" +version = "2.10.0" + + [deps.StructUtils.extensions] + StructUtilsDataFramesExt = ["DataFrames"] + StructUtilsLazilyInitializedFieldsExt = ["LazilyInitializedFields"] + StructUtilsMeasurementsExt = ["Measurements"] + StructUtilsStaticArraysCoreExt = ["StaticArraysCore"] + StructUtilsTablesExt = ["Tables"] + + [deps.StructUtils.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + LazilyInitializedFields = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" + +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.10.1+0" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +registries = "General" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "a94d9bdda1b7bed0046cea645639ab3f62196fac" +registries = "General" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.14.0" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +registries = "General" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.TiffImages]] +deps = ["CodecZstd", "ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "PrecompileTools", "ProgressMeter", "SIMD", "UUIDs"] +git-tree-sha1 = "9ca5f1f2d42f80df4b8c9f6ab5a64f438bbd9976" +registries = "General" +uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" +version = "0.11.9" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" +registries = "General" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.11.3" + +[[deps.TriplotBase]] +git-tree-sha1 = "4d4ed7f294cda19382ff7de4c137d24d16adc89b" +registries = "General" +uuid = "981d1d27-644d-49a2-9326-4793e63143c3" +version = "0.1.0" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" + +[[deps.UnicodeFun]] +deps = ["REPL"] +git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" +registries = "General" +uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" +version = "0.4.1" + +[[deps.Unitful]] +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "1f0f9f401753701a7e4113b5056ca38d33875b55" +registries = "General" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.29.0" + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + ForwardDiffExt = "ForwardDiff" + InverseFunctionsUnitfulExt = "InverseFunctions" + LatexifyExt = ["Latexify", "LaTeXStrings"] + NaNMathExt = "NaNMath" + PrintfExt = "Printf" + + [deps.Unitful.weakdeps] + ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" + Latexify = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" + NaNMath = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" + Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.WeakRefStrings]] +deps = ["DataAPI", "InlineStrings", "Parsers"] +git-tree-sha1 = "0716e01c3b40413de5dedbc9c5c69f27cddfddfc" +registries = "General" +uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" +version = "1.4.3" + +[[deps.WebP]] +deps = ["CEnum", "ColorTypes", "FileIO", "FixedPointNumbers", "ImageCore", "libwebp_jll"] +git-tree-sha1 = "aa1ca3c47f119fbdae8770c29820e5e6119b83f2" +registries = "General" +uuid = "e3aaa7dc-3e4b-44e0-be63-ffb868ccd7c1" +version = "0.1.3" + +[[deps.WoodburyMatrices]] +deps = ["LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "248a7031b3da79a127f14e5dc5f417e26f9f6db7" +registries = "General" +uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" +version = "1.1.0" + +[[deps.WorkerUtilities]] +git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" +registries = "General" +uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" +version = "1.6.1" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e52eca002a11c30a858185efdfb15311e1c7a6bf" +registries = "General" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.8.4+0" + +[[deps.Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "ce91b54a5f90c4f27df6950706234b34e49cf79e" +registries = "General" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.8.14+0" + +[[deps.Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "aa1261ebbac3ccc8d16558ae6799524c450ed16b" +registries = "General" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.13+0" + +[[deps.Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "52858d64353db33a56e13c341d7bf44cd0d7b309" +registries = "General" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.6+0" + +[[deps.Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "1a4a26870bf1e5d26cd585e38038d399d7e65706" +registries = "General" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.8+0" + +[[deps.Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "75e00946e43621e09d431d9b95818ee751e6b2ef" +registries = "General" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "6.0.2+0" + +[[deps.Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "a54cf54677c9f6eac0d97e9d757c233b56bc21b9" +registries = "General" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.13+0" + +[[deps.Xorg_libpciaccess_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "58972370b81423fc546c56a60ed1a009450177c3" +registries = "General" +uuid = "a65dc6b1-eb27-53a1-bb3e-dea574b5389e" +version = "0.19.0+0" + +[[deps.Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"] +git-tree-sha1 = "bfcaf7ec088eaba362093393fe11aa141fa15422" +registries = "General" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.17.1+0" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a63799ff68005991f9d9491b6e95bd3478d783cb" +registries = "General" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.6.0+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.3.2+0" + +[[deps.Zstd_jll]] +deps = ["CompilerSupportLibraries_jll", "Libdl"] +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.7+1" + +[[deps.dlfcn_win32_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e141d67ffe550eadfb5af1bdbdaf138031e4805f" +registries = "General" +uuid = "c4b69c83-5512-53e3-94e6-de98773c479f" +version = "1.4.2+0" + +[[deps.isoband_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c" +registries = "General" +uuid = "9a68df92-36a6-505f-a73e-abb412b6bfb4" +version = "0.2.3+0" + +[[deps.libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1210ba774d3427387d307bf1f416d699b7c39417" +registries = "General" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.15.1+0" + +[[deps.libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "cb007192783c56d8249db4cf0e3495001edfe414" +registries = "General" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.17.5+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.15.0+0" + +[[deps.libdeflate_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7ee221abc4f125ce18e73d48367cde0e16bc93b9" +registries = "General" +uuid = "46979653-d7f6-5232-b59e-dd310c4598de" +version = "1.26.0+0" + +[[deps.libdrm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libpciaccess_jll"] +git-tree-sha1 = "28e57478e8a160d346a19c28b3fffb9273bcc9c2" +registries = "General" +uuid = "8e53e030-5e6c-5a89-a30b-be5b7263a166" +version = "2.4.134+0" + +[[deps.libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "646634dd19587a56ee2f1199563ec056c5f228df" +registries = "General" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "2.0.4+0" + +[[deps.libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "1fcd6cf05d23adab0b5ffc496d020537215751dc" +registries = "General" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.59+1" + +[[deps.libsixel_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "libpng_jll"] +git-tree-sha1 = "e067c8bae65bb40866552296a2d5b4dc65b8928f" +registries = "General" +uuid = "075b6546-f08a-558a-be8f-8157d0f608a5" +version = "1.80.702+0" + +[[deps.libva_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "libdrm_jll"] +git-tree-sha1 = "7dbf96baae3310fe2fa0df0ccbb3c6288d5816c9" +registries = "General" +uuid = "9a156e7d-b971-5f62-b2c9-67348b8fb97c" +version = "2.23.0+0" + +[[deps.libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll"] +git-tree-sha1 = "11e1772e7f3cc987e9d3de991dd4f6b2602663a5" +registries = "General" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.8+0" + +[[deps.libwebp_jll]] +deps = ["Artifacts", "Giflib_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libglvnd_jll", "Libtiff_jll", "libpng_jll"] +git-tree-sha1 = "52d3b9475133c3bc8c0a7f90f18bfc8cdb5a443a" +registries = "General" +uuid = "c5f90fcd-3b7e-5836-afba-fc50a0988cb2" +version = "1.6.1+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.70.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.8.3+0" + +[[deps.x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "14cc7083fc6dff3cc44f2bc435ee96d06ed79aa7" +registries = "General" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "10164.0.1+0" + +[[deps.x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e7b67590c14d487e734dcb925924c5dc43ec85f3" +registries = "General" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "4.1.0+0" + +[registries.General] +url = "https://github.com/JuliaRegistries/General.git" +uuid = "23338594-aafe-5451-b93e-139f81909106" +""" + +# ╔═╡ Cell order: +# ╠═f6602dd0-292c-4a63-8247-94d626d87f39 +# ╠═82290cf0-cc7e-11f1-afb5-679eb5954384 +# ╠═57fe870c-3366-4aaf-b2a3-014edf609e7a +# ╠═88ef8628-e883-4113-abd3-080e2b2376d8 +# ╠═5c21db41-78f6-4db7-ad1e-ff1900afdca3 +# ╠═d61dc3ca-fccc-4770-af6d-aa5082c55369 +# ╠═fc5e12f2-3978-4979-935c-0d9c83d8d2e0 +# ╠═faaa0eb8-be12-42a4-abf8-c9ffbb07df9a +# ╠═02acee4c-f198-43f5-ab21-939f30969361 +# ╠═4e23c813-6e54-4f47-9345-40d6a698913e +# ╠═2f2ad881-4177-462c-b2e3-6c2ebc9d8fa1 +# ╠═7a3ad16b-4d08-434e-82dd-23f186aa1d9b +# ╠═76184222-dd79-4e3b-877a-8eced64fe6ae +# ╠═c9c823ad-9875-4efa-82b4-d6189a141b12 +# ╠═3b777682-5faa-47c6-bd70-98a06f368d1a +# ╠═c126fdcc-e149-4834-af5c-503465ffdede +# ╠═7aa0f225-948d-4d1f-8b5a-2262f879783b +# ╠═4aa84d18-d2ec-4219-b85d-6ba5e08bc7e8 +# ╠═73ed2f4e-38d7-4f64-9ac7-b53acc046200 +# ╠═92ea415f-c0d8-4f98-8981-a6680e0999d7 +# ╠═399edbd0-61e2-4c72-a3a0-a1147cf868fc +# ╠═f0f55d3a-7a07-4e84-bf6a-178150a2b71c +# ╠═da1115e1-76c3-4c35-a6f3-9714b4263dea +# ╠═b0f27193-5c75-48b5-9bac-044089da7443 +# ╠═fea4b109-3036-4819-94b4-a0a90626b3fb +# ╠═3c3ed324-b766-4061-98dc-548a4b71694d +# ╠═9cbf0393-130e-4e6e-a1fc-f0566feec3e3 +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 |
