From 24d96a64d7c962910fd729a4b3671fb39bcc605a Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Thu, 19 Sep 2024 06:30:00 +0000 Subject: [PATCH] build based on b4b08dd --- dev/404.html | 4 +- dev/UserGuide/cache.html | 10 ++-- dev/UserGuide/chunk.html | 10 ++-- dev/UserGuide/combine.html | 10 ++-- dev/UserGuide/compute.html | 28 +++++----- dev/UserGuide/convert.html | 44 +++++++-------- dev/UserGuide/create.html | 10 ++-- dev/UserGuide/faq.html | 42 +++++++------- dev/UserGuide/group.html | 14 ++--- dev/UserGuide/read.html | 12 ++-- dev/UserGuide/select.html | 10 ++-- dev/UserGuide/types.html | 10 ++-- dev/UserGuide/write.html | 32 +++++------ dev/api.html | 20 +++---- ..._VAX.js => UserGuide_cache.md.ClYVtu-M.js} | 2 +- ...js => UserGuide_cache.md.ClYVtu-M.lean.js} | 2 +- ...JboX.js => UserGuide_chunk.md.QsQQbTJH.js} | 2 +- ...js => UserGuide_chunk.md.QsQQbTJH.lean.js} | 2 +- ...rm.js => UserGuide_combine.md.DYPIjlvr.js} | 2 +- ... => UserGuide_combine.md.DYPIjlvr.lean.js} | 2 +- ...wl.js => UserGuide_compute.md.l32-sEL-.js} | 20 +++---- ... => UserGuide_compute.md.l32-sEL-.lean.js} | 20 +++---- ...eU.js => UserGuide_convert.md.CaREO6jR.js} | 36 ++++++------ ... => UserGuide_convert.md.CaREO6jR.lean.js} | 36 ++++++------ ...KiQ.js => UserGuide_create.md.r5QE-6jo.js} | 2 +- ...s => UserGuide_create.md.r5QE-6jo.lean.js} | 2 +- ...SYUGcl.js => UserGuide_faq.md.D4xbU8uL.js} | 32 +++++------ ...n.js => UserGuide_faq.md.D4xbU8uL.lean.js} | 32 +++++------ ...GMIM.js => UserGuide_group.md.DBOT3ZFU.js} | 6 +- ...js => UserGuide_group.md.DBOT3ZFU.lean.js} | 6 +- ...a00BO.js => UserGuide_read.md.B25a96ai.js} | 4 +- ....js => UserGuide_read.md.B25a96ai.lean.js} | 4 +- ...kad.js => UserGuide_select.md.DwHkhEFI.js} | 2 +- ...s => UserGuide_select.md.DwHkhEFI.lean.js} | 2 +- ...3BSH.js => UserGuide_types.md.R6FLmeYW.js} | 2 +- ...js => UserGuide_types.md.R6FLmeYW.lean.js} | 2 +- ...CNNM.js => UserGuide_write.md.CxpbTqhY.js} | 24 ++++---- ...js => UserGuide_write.md.CxpbTqhY.lean.js} | 24 ++++---- ...{api.md.CFKx0BAq.js => api.md.Czz2cpaE.js} | 10 ++-- ...Kx0BAq.lean.js => api.md.Czz2cpaE.lean.js} | 10 ++-- .../{app.Dd7V_cwz.js => app.By04Axg6.js} | 2 +- ...rh.96k_BqPR.jpeg => buxplhm.96k_BqPR.jpeg} | Bin dev/assets/bvbfegb.Bcoj2HvJ.jpeg | Bin 0 -> 38202 bytes .../chunks/@localSearchIndexroot.DyoBPTFo.js | 1 + .../chunks/@localSearchIndexroot.on7n0yqx.js | 1 - ...B2vwMq.js => VPLocalSearchBox.DxzvBZ9g.js} | 2 +- dev/assets/chunks/framework.BEF5B6Ex.js | 17 ------ dev/assets/chunks/framework.BgERvflD.js | 18 ++++++ .../{theme.CrY9T1lC.js => theme.Cr_eIWnh.js} | 4 +- ... => development_contribute.md.ClrIjhyO.js} | 2 +- ...evelopment_contribute.md.ClrIjhyO.lean.js} | 2 +- .../development_contributors.md.B5lFKVw2.js | 1 - ...velopment_contributors.md.B5lFKVw2.lean.js | 1 - .../development_contributors.md.CLIwhHUf.js | 1 + ...velopment_contributors.md.CLIwhHUf.lean.js | 1 + dev/assets/efsodgu.jxZi8ZiH.jpeg | Bin 38989 -> 0 bytes ...uTuJfEQI.js => get_started.md.QDrVCaRy.js} | 22 ++++---- ...ean.js => get_started.md.QDrVCaRy.lean.js} | 22 ++++---- ...jmwc.CBBZcGwj.png => gqwibql.CBBZcGwj.png} | Bin ...ex.md.uTPfWlYl.js => index.md.GdAm7ifr.js} | 2 +- ...WlYl.lean.js => index.md.GdAm7ifr.lean.js} | 2 +- dev/assets/lmtpexd.kQgSETCy.png | Bin 0 -> 80259 bytes dev/assets/lrwnyyz.DO8psrwy.png | Bin 0 -> 109221 bytes dev/assets/pdlvjuo.OibBte0v.png | Bin 109456 -> 0 bytes ...orials_mean_seasonal_cycle.md.gJhMR6dH.js} | 40 +++++++------- ...s_mean_seasonal_cycle.md.gJhMR6dH.lean.js} | 40 +++++++------- ... tutorials_other_tutorials.md.CO_GVBJJ.js} | 2 +- ...rials_other_tutorials.md.CO_GVBJJ.lean.js} | 2 +- ... => tutorials_plottingmaps.md.BxZGI0zc.js} | 2 +- ...utorials_plottingmaps.md.BxZGI0zc.lean.js} | 2 +- ...ch.xrZxBsPv.jpeg => uhhydvj.xrZxBsPv.jpeg} | Bin dev/assets/wxsstem.C5BSYN7j.png | Bin 82520 -> 0 bytes ...xd.B7KFIfDV.jpeg => zreiqqa.B7KFIfDV.jpeg} | Bin dev/development/contribute.html | 10 ++-- dev/development/contributors.html | 10 ++-- dev/get_started.html | 30 +++++----- dev/hashmap.json | 2 +- dev/index.html | 10 ++-- dev/tutorials/mean_seasonal_cycle.html | 52 +++++++++--------- dev/tutorials/other_tutorials.html | 10 ++-- dev/tutorials/plottingmaps.html | 16 +++--- 81 files changed, 437 insertions(+), 436 deletions(-) rename dev/assets/{UserGuide_cache.md.D4lc_VAX.js => UserGuide_cache.md.ClYVtu-M.js} (96%) rename dev/assets/{UserGuide_cache.md.D4lc_VAX.lean.js => UserGuide_cache.md.ClYVtu-M.lean.js} (96%) rename dev/assets/{UserGuide_chunk.md.BA5tJboX.js => UserGuide_chunk.md.QsQQbTJH.js} (99%) rename dev/assets/{UserGuide_chunk.md.BA5tJboX.lean.js => UserGuide_chunk.md.QsQQbTJH.lean.js} (99%) rename dev/assets/{UserGuide_combine.md.CAw7m9rm.js => UserGuide_combine.md.DYPIjlvr.js} (98%) rename dev/assets/{UserGuide_combine.md.CAw7m9rm.lean.js => UserGuide_combine.md.DYPIjlvr.lean.js} (98%) rename dev/assets/{UserGuide_compute.md.DTZ8X-wl.js => UserGuide_compute.md.l32-sEL-.js} (94%) rename dev/assets/{UserGuide_compute.md.DTZ8X-wl.lean.js => UserGuide_compute.md.l32-sEL-.lean.js} (94%) rename dev/assets/{UserGuide_convert.md.DYAQ-3eU.js => UserGuide_convert.md.CaREO6jR.js} (85%) rename dev/assets/{UserGuide_convert.md.DYAQ-3eU.lean.js => UserGuide_convert.md.CaREO6jR.lean.js} (85%) rename dev/assets/{UserGuide_create.md.BL_P2KiQ.js => UserGuide_create.md.r5QE-6jo.js} (99%) rename dev/assets/{UserGuide_create.md.BL_P2KiQ.lean.js => UserGuide_create.md.r5QE-6jo.lean.js} (99%) rename dev/assets/{UserGuide_faq.md.3ZSYUGcl.js => UserGuide_faq.md.D4xbU8uL.js} (97%) rename dev/assets/{UserGuide_faq.md.3ZSYUGcl.lean.js => UserGuide_faq.md.D4xbU8uL.lean.js} (97%) rename dev/assets/{UserGuide_group.md.CmN1GMIM.js => UserGuide_group.md.DBOT3ZFU.js} (97%) rename dev/assets/{UserGuide_group.md.CmN1GMIM.lean.js => UserGuide_group.md.DBOT3ZFU.lean.js} (97%) rename dev/assets/{UserGuide_read.md.3Sna00BO.js => UserGuide_read.md.B25a96ai.js} (96%) rename dev/assets/{UserGuide_read.md.3Sna00BO.lean.js => UserGuide_read.md.B25a96ai.lean.js} (96%) rename dev/assets/{UserGuide_select.md.CoUJUkad.js => UserGuide_select.md.DwHkhEFI.js} (99%) rename dev/assets/{UserGuide_select.md.CoUJUkad.lean.js => UserGuide_select.md.DwHkhEFI.lean.js} (99%) rename dev/assets/{UserGuide_types.md.on_E3BSH.js => UserGuide_types.md.R6FLmeYW.js} (97%) rename dev/assets/{UserGuide_types.md.on_E3BSH.lean.js => UserGuide_types.md.R6FLmeYW.lean.js} (97%) rename dev/assets/{UserGuide_write.md.D_CbCNNM.js => UserGuide_write.md.CxpbTqhY.js} (94%) rename dev/assets/{UserGuide_write.md.D_CbCNNM.lean.js => UserGuide_write.md.CxpbTqhY.lean.js} (94%) rename dev/assets/{api.md.CFKx0BAq.js => api.md.Czz2cpaE.js} (91%) rename dev/assets/{api.md.CFKx0BAq.lean.js => api.md.Czz2cpaE.lean.js} (91%) rename dev/assets/{app.Dd7V_cwz.js => app.By04Axg6.js} (90%) rename dev/assets/{jvfserh.96k_BqPR.jpeg => buxplhm.96k_BqPR.jpeg} (100%) create mode 100644 dev/assets/bvbfegb.Bcoj2HvJ.jpeg create mode 100644 dev/assets/chunks/@localSearchIndexroot.DyoBPTFo.js delete mode 100644 dev/assets/chunks/@localSearchIndexroot.on7n0yqx.js rename dev/assets/chunks/{VPLocalSearchBox.DfB2vwMq.js => VPLocalSearchBox.DxzvBZ9g.js} (99%) delete mode 100644 dev/assets/chunks/framework.BEF5B6Ex.js create mode 100644 dev/assets/chunks/framework.BgERvflD.js rename dev/assets/chunks/{theme.CrY9T1lC.js => theme.Cr_eIWnh.js} (99%) rename dev/assets/{development_contribute.md.D93SjwYJ.js => development_contribute.md.ClrIjhyO.js} (97%) rename dev/assets/{development_contribute.md.D93SjwYJ.lean.js => development_contribute.md.ClrIjhyO.lean.js} (97%) delete mode 100644 dev/assets/development_contributors.md.B5lFKVw2.js delete mode 100644 dev/assets/development_contributors.md.B5lFKVw2.lean.js create mode 100644 dev/assets/development_contributors.md.CLIwhHUf.js create mode 100644 dev/assets/development_contributors.md.CLIwhHUf.lean.js delete mode 100644 dev/assets/efsodgu.jxZi8ZiH.jpeg rename dev/assets/{get_started.md.uTuJfEQI.js => get_started.md.QDrVCaRy.js} (85%) rename dev/assets/{get_started.md.uTuJfEQI.lean.js => get_started.md.QDrVCaRy.lean.js} (85%) rename dev/assets/{qfkjmwc.CBBZcGwj.png => gqwibql.CBBZcGwj.png} (100%) rename dev/assets/{index.md.uTPfWlYl.js => index.md.GdAm7ifr.js} (96%) rename dev/assets/{index.md.uTPfWlYl.lean.js => index.md.GdAm7ifr.lean.js} (96%) create mode 100644 dev/assets/lmtpexd.kQgSETCy.png create mode 100644 dev/assets/lrwnyyz.DO8psrwy.png delete mode 100644 dev/assets/pdlvjuo.OibBte0v.png rename dev/assets/{tutorials_mean_seasonal_cycle.md.C-JLJykP.js => tutorials_mean_seasonal_cycle.md.gJhMR6dH.js} (95%) rename dev/assets/{tutorials_mean_seasonal_cycle.md.C-JLJykP.lean.js => tutorials_mean_seasonal_cycle.md.gJhMR6dH.lean.js} (95%) rename dev/assets/{tutorials_other_tutorials.md.By_HW9oi.js => tutorials_other_tutorials.md.CO_GVBJJ.js} (97%) rename dev/assets/{tutorials_other_tutorials.md.By_HW9oi.lean.js => tutorials_other_tutorials.md.CO_GVBJJ.lean.js} (97%) rename dev/assets/{tutorials_plottingmaps.md.DQHCoagw.js => tutorials_plottingmaps.md.BxZGI0zc.js} (99%) rename dev/assets/{tutorials_plottingmaps.md.DQHCoagw.lean.js => tutorials_plottingmaps.md.BxZGI0zc.lean.js} (99%) rename dev/assets/{repxpch.xrZxBsPv.jpeg => uhhydvj.xrZxBsPv.jpeg} (100%) delete mode 100644 dev/assets/wxsstem.C5BSYN7j.png rename dev/assets/{ubqzrxd.B7KFIfDV.jpeg => zreiqqa.B7KFIfDV.jpeg} (100%) diff --git a/dev/404.html b/dev/404.html index 3a09120d..93f75abc 100644 --- a/dev/404.html +++ b/dev/404.html @@ -8,7 +8,7 @@ - + @@ -16,7 +16,7 @@
- + \ No newline at end of file diff --git a/dev/UserGuide/cache.html b/dev/UserGuide/cache.html index 93aef40f..7201e009 100644 --- a/dev/UserGuide/cache.html +++ b/dev/UserGuide/cache.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -23,7 +23,7 @@ cachesize = 500 #MB cache(ds,maxsize = cachesize)

The above will wrap every array in the dataset into its own cache, where the 500MB are distributed equally across datasets. Alternatively individual caches can be applied to single YAXArrays

julia
yax = ds.avariable
 cache(yax,maxsize = 1000)
- + \ No newline at end of file diff --git a/dev/UserGuide/chunk.html b/dev/UserGuide/chunk.html index d90c31bb..66cd5603 100644 --- a/dev/UserGuide/chunk.html +++ b/dev/UserGuide/chunk.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -116,7 +116,7 @@ Variables: x, y, z

Suggestions on how to improve or add to these examples is welcome.

- + \ No newline at end of file diff --git a/dev/UserGuide/combine.html b/dev/UserGuide/combine.html index 96316ea7..1c0bc2ed 100644 --- a/dev/UserGuide/combine.html +++ b/dev/UserGuide/combine.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -46,7 +46,7 @@ ├───────────────────────────────────────────────────── file size ┤ file size: 96.0 bytes └────────────────────────────────────────────────────────────────┘ - + \ No newline at end of file diff --git a/dev/UserGuide/compute.html b/dev/UserGuide/compute.html index 039e418e..c70efd9a 100644 --- a/dev/UserGuide/compute.html +++ b/dev/UserGuide/compute.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -39,7 +39,7 @@ :origin => "user guide" ├─────────────────────────────────────────────────────────────────── file size ┤ file size: 35.16 KB -└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.34093180898718256
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
╭──────────────────────────────╮
+└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.8329685182217375
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
╭──────────────────────────────╮
 │ 30×10×15 YAXArray{Float64,3} │
 ├──────────────────────────────┴───────────────────────────────────────── dims ┐
   ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
@@ -222,14 +222,14 @@
 ├──────────────────────────────────────────────────────────────────── metadata ┤
   Dict{String, Any}()
 └──────────────────────────────────────────────────────────────────────────────┘
-  ↓ →  1.0       1.28571    1.57143   …  4.42857   4.71429   5.0
-  1.0  0.423959  0.495718   0.126617     0.16858   0.454909  0.338821
-  2.0  0.609098  0.140488   0.729186     0.984254  0.924728  0.837976
-  3.0  0.710902  0.214893   0.702405     0.953086  0.35839   0.796689
-  ⋮                                   ⋱                      ⋮
-  8.0  0.275995  0.0626282  0.180195     0.175184  0.449547  0.703896
-  9.0  0.902076  0.655641   0.964787     0.025293  0.104898  0.579358
- 10.0  0.285525  0.813113   0.104357  …  0.054352  0.222979  0.944919

Now we calculate the list of corresponding points for each region. This will be re-used for each point in time during the final mapCube. In addition, this avoids the allocation of unnecessary memory.

julia
regions = ["A", "B", "C", "D"]
+  ↓ →  1.0       1.28571     1.57143     …  4.42857    4.71429    5.0
+  1.0  0.910983  0.26493     0.60037        0.712525   0.219355   0.191605
+  2.0  0.809596  0.820355    0.00974435     0.904112   0.812749   0.0646667
+  3.0  0.990385  0.618667    0.416924       0.175702   0.831285   0.838209
+  ⋮                                      ⋱                        ⋮
+  8.0  0.855011  0.00146845  0.644835       0.0311724  0.885093   0.706774
+  9.0  0.327124  0.739298    0.14481        0.844681   0.0182801  0.604438
+ 10.0  0.401121  0.406059    0.637282    …  0.12146    0.356502   0.814431

Now we calculate the list of corresponding points for each region. This will be re-used for each point in time during the final mapCube. In addition, this avoids the allocation of unnecessary memory.

julia
regions = ["A", "B", "C", "D"]
 points_of_regions = map(enumerate(regions)) do (i,region)
     region => findall(isequal(region), regions_mat)
 end |> Dict |> sort
OrderedCollections.OrderedDict{String, Vector{CartesianIndex{2}}} with 4 entries:
@@ -283,7 +283,7 @@
 mapCube(mymean, a, indims=InDims("time"), outdims=OutDims())

In the last example, mapCube was used to map the mymean function. mapslices is a convenient function that can replace mapCube, where you can omit defining an extra function with the output argument as an input (e.g. mymean). It is possible to simply use mapslice

julia
mapslices(mean  skipmissing, a, dims="time")

It is also possible to distribute easily the workload on a cluster, with little modification to the code. To do so, we use the ClusterManagers package.

julia
using Distributed
 using ClusterManagers
 addprocs(SlurmManager(10))
- + \ No newline at end of file diff --git a/dev/UserGuide/convert.html b/dev/UserGuide/convert.html index e7839320..8b8c0449 100644 --- a/dev/UserGuide/convert.html +++ b/dev/UserGuide/convert.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -31,11 +31,11 @@ ├────────────────────────────────────────────────────────── file size ┤ file size: 400.0 bytes └─────────────────────────────────────────────────────────────────────┘

Convert YAXArray to Base.Array:

julia
m2 = collect(a.data)
5×10 Matrix{Float64}:
- 0.275953   0.908733  0.945473  0.89082   …  0.506143  0.646264   0.484504
- 0.931359   0.79898   0.492366  0.354019     0.380954  0.902789   0.775352
- 0.195112   0.149747  0.587823  0.299036     0.952645  0.0481227  0.372878
- 0.0126228  0.291247  0.417136  0.362148     0.834957  0.942395   0.855535
- 0.957847   0.505572  0.075497  0.812221     0.678015  0.209058   0.845177

Convert Raster

A Raster as defined in Rasters.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types:

julia
using Rasters
+ 0.719749   0.151377   0.981562  0.0519894  …  0.0591867  0.290459  0.770549
+ 0.606585   0.0871085  0.887682  0.763154      0.3112     0.460844  0.783917
+ 0.738476   0.821196   0.86214   0.706696      0.539204   0.942384  0.87077
+ 0.284879   0.427933   0.814206  0.837723      0.595169   0.56795   0.739883
+ 0.0115923  0.365387   0.761887  0.550946      0.94926    0.993443  0.520799

Convert Raster

A Raster as defined in Rasters.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types:

julia
using Rasters
 
 lon, lat = X(25:1:30), Y(25:1:30)
 time = Ti(2000:2024)
@@ -64,12 +64,12 @@
 └─────────────────────────────────────────────────────────────┘
 [:, :, 1]
   ↓ →  25          26         27          28         29          30
- 25     0.508968    0.201      0.228329    0.443921   0.0016043   0.744147
- 26     0.426614    0.457045   0.360031    0.854556   0.873199    0.202457
- 27     0.898824    0.295065   0.443947    0.689034   0.782729    0.236862
- 28     0.233642    0.598441   0.928433    0.821712   0.428044    0.00341717
- 29     0.249775    0.287776   0.0391094   0.998243   0.155019    0.835979
- 30     0.0270115   0.952619   0.356225    0.983686   0.0318083   0.337743

Convert DimArray

A DimArray as defined in DimensionalData.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types.

Convert DimArray to YAXArray:

julia
using DimensionalData
+ 25     0.3178      0.325229   0.422698    0.255545   0.0550086   0.274048
+ 26     0.0299239   0.355731   0.237918    0.433276   0.714768    0.219044
+ 27     0.706141    0.700227   0.330262    0.620018   0.690047    0.322318
+ 28     0.517699    0.127488   0.0768364   0.631014   0.292472    0.486169
+ 29     0.243928    0.486085   0.843537    0.200422   0.115995    0.794568
+ 30     0.42652     0.547011   0.718885    0.67165    0.226868    0.276756

Convert DimArray

A DimArray as defined in DimensionalData.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types.

Convert DimArray to YAXArray:

julia
using DimensionalData
 using YAXArrayBase
 
 dim_arr = rand(X(1:5), Y(10.0:15.0), metadata = Dict{String, Any}())
@@ -90,13 +90,13 @@
 ├──────────────────────────────────────────────────────── metadata ┤
   Dict{String, Any}()
 └──────────────────────────────────────────────────────────────────┘
- ↓ →  10.0        11.0        12.0        13.0        14.0       15.0
- 1     0.375071    0.10778     0.136866    0.801031    0.945303   0.322938
- 2     0.255362    0.475875    0.891795    0.146681    0.355027   0.747662
- 3     0.883687    0.909186    0.604756    0.943467    0.5221     0.623636
- 4     0.0809511   0.918395    0.0535527   0.908792    0.406759   0.345457
- 5     0.54991     0.0401898   0.790472    0.0259303   0.383191   0.171133

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

- + ↓ → 10.0 11.0 12.0 13.0 14.0 15.0 + 1 0.521161 0.0742493 0.111182 0.879808 0.369484 0.728395 + 2 0.12119 0.834542 0.952605 0.881662 0.825379 0.985806 + 3 0.883008 0.815705 0.726456 0.749105 0.0862858 0.114351 + 4 0.86782 0.70031 0.951969 0.931922 0.919482 0.0926064 + 5 0.939667 0.728204 0.883542 0.876702 0.374626 0.26991

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

+ \ No newline at end of file diff --git a/dev/UserGuide/create.html b/dev/UserGuide/create.html index ae8e4c0c..92b66a8c 100644 --- a/dev/UserGuide/create.html +++ b/dev/UserGuide/create.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -66,7 +66,7 @@ a2, a3 Properties: Dict(:origin => "user guide") - + \ No newline at end of file diff --git a/dev/UserGuide/faq.html b/dev/UserGuide/faq.html index c35e899f..f6814a47 100644 --- a/dev/UserGuide/faq.html +++ b/dev/UserGuide/faq.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -214,20 +214,20 @@ None Variables with additional axes: Additional Axes: - (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points) + (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points) Variables: longitudes Additional Axes: - (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points, - → Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points) + (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points) Variables: - temperature + latitudes Additional Axes: - (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points) + (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points, + → Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points) Variables: - latitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
+  temperature

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
 longitudes_yasxa = readcubedata(ds["longitudes"])
 ds_subset = ds[points = Where(p-> latitudes_yasxa[p]  >= 20 && latitudes_yasxa[p]  <= 80 &&
                              longitudes_yasxa[p] >= 0  && longitudes_yasxa[p] <= 180
@@ -237,20 +237,20 @@
 None
 Variables with additional axes:
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points,
-  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
-  temperature
+  longitudes
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
   Variables: 
-  latitudes
+  temperature
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
-  longitudes

How do I apply map algebra?

Our next step is map algebra computations. This can be done effectively using the 'map' function. For example:

Multiplying cubes with only spatio-temporal dimensions

julia
julia> map((x, y) -> x * y, ds1, ds2)
╭──────────────────────────────╮
+  latitudes

How do I apply map algebra?

Our next step is map algebra computations. This can be done effectively using the 'map' function. For example:

Multiplying cubes with only spatio-temporal dimensions

julia
julia> map((x, y) -> x * y, ds1, ds2)
╭──────────────────────────────╮
 20×10×15 YAXArray{Float64,3}
 ├──────────────────────────────┴───────────────────────────────────────── dims ┐
 time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
@@ -297,7 +297,7 @@
 fig, ax, obj = heatmap(classes;
     colormap=Makie.Categorical(cgrad([:grey15, :orangered, :snow3])))
 cbar = Colorbar(fig[1,2], obj)
-fig

Now we define the input cubes that will be considered for the iterable table

julia
t = CubeTable(values=ds1, classes=classes)
Datacube iterator with 1 subtables with fields: (:values, :classes, :time, :lon, :lat)
julia
using DataFrames
+fig

Now we define the input cubes that will be considered for the iterable table

julia
t = CubeTable(values=ds1, classes=classes)
Datacube iterator with 1 subtables with fields: (:values, :classes, :time, :lon, :lat)
julia
using DataFrames
 using OnlineStats
 ## visualization of the CubeTable
 c_tbl = DataFrame(t[1])
@@ -358,7 +358,7 @@
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 variable Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock1
+  Stock3
 
   Additional Axes: 
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
@@ -370,14 +370,14 @@
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 variable Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock3

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+  Stock1

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
 Shared Axes:
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 variable Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
 
 Variables: 
 Stock1, Stock2, Stock3

now they are printed together, showing that is exactly the same axis structure for all variables.

- + \ No newline at end of file diff --git a/dev/UserGuide/group.html b/dev/UserGuide/group.html index c926a394..35a0f3de 100644 --- a/dev/UserGuide/group.html +++ b/dev/UserGuide/group.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -22,7 +22,7 @@ using NetCDF using Downloads using Dates -using Statistics

Seasonal Averages from Time Series of Monthly Means

The following reproduces the example in xarray by Joe Hamman.

Where the goal is to calculate the seasonal average. And in order to do this properly, is necessary to calculate the weighted average considering that each month has a different number of days.

Download the data

julia
url_path = "https://github.com/pydata/xarray-data/raw/master/rasm.nc"
+using Statistics
[ Info: new driver key :netcdf, updating backendlist.

Seasonal Averages from Time Series of Monthly Means

The following reproduces the example in xarray by Joe Hamman.

Where the goal is to calculate the seasonal average. And in order to do this properly, is necessary to calculate the weighted average considering that each month has a different number of days.

Download the data

julia
url_path = "https://github.com/pydata/xarray-data/raw/master/rasm.nc"
 filename = Downloads.download(url_path, "rasm.nc")
 ds_o = Cube(filename)

WARNING

The following rebuild should not be necessary in the future, plus is unpractical to use for large data sets. Out of memory groupby currently is work in progress. Related to https://github.com/rafaqz/DimensionalData.jl/issues/642

julia
axs = dims(ds_o) # get the dimensions
 data = ds_o.data[:,:,:] # read the data
@@ -207,8 +207,8 @@
     colgap!(fig.layout, 5)
     rowgap!(fig.layout, 5)
     fig
-end

which shows a good agreement with the results first published by Joe Hamman.

- +end

which shows a good agreement with the results first published by Joe Hamman.

+ \ No newline at end of file diff --git a/dev/UserGuide/read.html b/dev/UserGuide/read.html index 49da3036..0d1ea97d 100644 --- a/dev/UserGuide/read.html +++ b/dev/UserGuide/read.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -96,8 +96,8 @@ path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif") # ds = open_dataset(path) # this is broken -nothing - +nothing
[ Info: new driver key :gdal, updating backendlist.
+ \ No newline at end of file diff --git a/dev/UserGuide/select.html b/dev/UserGuide/select.html index 991c5320..c39e7225 100644 --- a/dev/UserGuide/select.html +++ b/dev/UserGuide/select.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -312,7 +312,7 @@ 89.5

These values are defined as lookups in the package DimensionalData:

julia
lookup(tos, :lon)
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
 wrapping: 1.0:2.0:359.0

which is equivalent to:

julia
tos.lon.val
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
 wrapping: 1.0:2.0:359.0
- + \ No newline at end of file diff --git a/dev/UserGuide/types.html b/dev/UserGuide/types.html index fa183a03..0813644a 100644 --- a/dev/UserGuide/types.html +++ b/dev/UserGuide/types.html @@ -8,18 +8,18 @@ - + - - - + + +
Skip to content

Types

This section describes the data structures used to work with n-dimensional arrays in YAXArrays.

YAXArray

An Array stores a sequence of ordered elements of the same type usually across multiple dimensions or axes. For example, one can measure temperature across all time points of the time dimension or brightness values of a picture across X and Y dimensions. A one dimensional array is called Vector and a two dimensional array is called a Matrix. In many Machine Learning libraries, arrays are also called tensors. Arrays are designed to store dense spatial-temporal data stored in a grid, whereas a collection of sparse points is usually stored in data frames or relational databases.

A DimArray as defined by DimensionalData.jl adds names to the dimensions and their axes ticks for a given Array. These names can be used to access the data, e.g., by date instead of just by integer position.

A YAXArray is a subtype of a AbstractDimArray and adds functions to load and process the named arrays. For example, it can also handle very large arrays stored on disk that are too big to fit in memory. In addition, it provides functions for parallel computation.

Dataset

A Dataset is an ordered dictionary of YAXArrays that usually share dimensions. For example, it can bundle arrays storing temperature and precipitation that are measured at the same time points and the same locations. One also can store a picture in a Dataset with three arrays containing brightness values for red green and blue, respectively. Internally, those arrays are still separated allowing to chose different element types for each array. Analog to the (NetCDF Data Model)[https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_data_model.html], a Dataset usually represents variables belonging to the same group.

(Data) Cube

A (Data) Cube is just a YAXArray in which arrays from a dataset are combined together by introducing a new dimension containing labels of which array the corresponding element came from. Unlike a Dataset, all arrays must have the same element type to be converted into a cube. This data structure is useful when we want to use all variables at once. For example, the arrays temperature and precipitation which are measured at the same locations and dates can be combined into a single cube. A more formal definition of Data Cubes are given in Mahecha et al. 2020

Dimension

A Dimension or axis as defined by DimensionalData.jl adds tick labels, e.g., to each row or column of an array. It's name is used to access particular subsets of that array.

- + \ No newline at end of file diff --git a/dev/UserGuide/write.html b/dev/UserGuide/write.html index f9b5ad56..9fcbb4cd 100644 --- a/dev/UserGuide/write.html +++ b/dev/UserGuide/write.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -34,7 +34,7 @@ Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Write Zarr

Save a single YAXArray to a directory:

julia
using Zarr
 savecube(ds.tos, "tos.zarr", driver=:zarr)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.zarr", driver=:zarr)

Write NetCDF

Save a single YAXArray to a directory:

julia
using NetCDF
-savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

# YAXArrays.Datasets.savedatasetFunction.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
+savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

# YAXArrays.Datasets.savedatasetFunction.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
 savedataset(ds2, path="ds.zarr", backend=:zarr, append=true)
julia
julia> open_dataset("ds.zarr", driver=:zarr)
YAXArray Dataset
 Shared Axes:
 None
@@ -72,19 +72,19 @@
 Variables: 
 skeleton
julia
ds_s = savedataset(ds, path="skeleton.zarr", driver=:zarr, skeleton=true, overwrite=true)

Update values of dataset

Now, we show how to start updating the array values. In order to do it we need to open the dataset first with writing w rights as follows:

julia
ds_open = zopen("skeleton.zarr", "w")
 ds_array = ds_open["skeleton"]
ZArray{Float32} of size 5 x 4 x 5

and then we simply update values by indexing them where necessary

julia
ds_array[:,:,1] = rand(Float32, 5, 4) # this will update values directly into disk!
5×4 Matrix{Float32}:
- 0.945332   0.00105304  0.319603  0.102103
- 0.0325738  0.474451    0.427189  0.0370204
- 0.925434   0.449373    0.637887  0.743935
- 0.793632   0.256353    0.564111  0.349282
- 0.982386   0.602297    0.766762  0.0892158

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
+ 0.846743  0.0140747  0.97676    0.145289
+ 0.575242  0.52048    0.538205   0.859388
+ 0.26917   0.59869    0.921279   0.107742
+ 0.242777  0.064759   0.732488   0.754006
+ 0.204435  0.401787   0.0058406  0.674613

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
 ds_array = ds_open["skeleton"]
 ds_array.data[:,:,1]
5×4 Matrix{Union{Missing, Float32}}:
- 0.945332   0.00105304  0.319603  0.102103
- 0.0325738  0.474451    0.427189  0.0370204
- 0.925434   0.449373    0.637887  0.743935
- 0.793632   0.256353    0.564111  0.349282
- 0.982386   0.602297    0.766762  0.0892158

indeed, those entries had been updated.

- + 0.846743 0.0140747 0.97676 0.145289 + 0.575242 0.52048 0.538205 0.859388 + 0.26917 0.59869 0.921279 0.107742 + 0.242777 0.064759 0.732488 0.754006 + 0.204435 0.401787 0.0058406 0.674613

indeed, those entries had been updated.

+ \ No newline at end of file diff --git a/dev/api.html b/dev/api.html index 5d839bb3..ac0ad49e 100644 --- a/dev/api.html +++ b/dev/api.html @@ -8,30 +8,30 @@ - + - - - + + + -
Skip to content

API Reference

This section describes all available functions of this package.

Public API

# YAXArrays.getAxisMethod.
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.CubesModule.

The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that

source


# YAXArrays.Cubes.YAXArrayType.
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source


# YAXArrays.Cubes.caxesFunction.

Returns the axes of a Cube

source


# YAXArrays.Cubes.caxesMethod.
julia
caxes

Embeds Cube inside a new Cube

source


# YAXArrays.Cubes.concatenatecubesMethod.
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source


# YAXArrays.Cubes.readcubedataMethod.
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Cubes.subsetcubeFunction.

This function calculates a subset of a cube's data

source


# YAXArrays.DAT.InDimsType.
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source


# YAXArrays.DAT.MovingWindowType.
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source


# YAXArrays.DAT.OutDimsMethod.
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source


# YAXArrays.DAT.CubeTableMethod.
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source


# YAXArrays.DAT.cubefittableMethod.
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source


# YAXArrays.DAT.fittableMethod.
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)
+    
Skip to content

API Reference

This section describes all available functions of this package.

Public API

# YAXArrays.getAxisMethod.
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.CubesModule.

The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that

source


# YAXArrays.Cubes.YAXArrayType.
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source


# YAXArrays.Cubes.caxesFunction.

Returns the axes of a Cube

source


# YAXArrays.Cubes.caxesMethod.
julia
caxes

Embeds Cube inside a new Cube

source


# YAXArrays.Cubes.concatenatecubesMethod.
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source


# YAXArrays.Cubes.readcubedataMethod.
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Cubes.subsetcubeFunction.

This function calculates a subset of a cube's data

source


# YAXArrays.DAT.InDimsType.
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source


# YAXArrays.DAT.MovingWindowType.
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source


# YAXArrays.DAT.OutDimsMethod.
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source


# YAXArrays.DAT.CubeTableMethod.
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source


# YAXArrays.DAT.cubefittableMethod.
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source


# YAXArrays.DAT.fittableMethod.
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)
 
 Map a given function `fun` over slices of all cubes of the dataset `ds`. 
 Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.
 For Datasets, only one output cube can be specified.
 In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.
 
-For the specific keyword arguments see the docstring of the mapCube function for cubes.

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" ormax_cache=1GB``` defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source


# YAXArrays.Datasets.DatasetType.
julia
Dataset object which stores an `OrderedDict` of YAXArrays with Symbol keys.
+For the specific keyword arguments see the docstring of the mapCube function for cubes.

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" ormax_cache=1GB``` defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source


# YAXArrays.Datasets.DatasetType.
julia
Dataset object which stores an `OrderedDict` of YAXArrays with Symbol keys.
 a dictionary of CubeAxes and a Dictionary of general properties.
-A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.

source


# YAXArrays.Datasets.DatasetMethod.

Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source


# YAXArrays.Datasets.CubeMethod.
julia
Cube(ds::Dataset; joinname="Variable")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source


# YAXArrays.Datasets.open_datasetMethod.

open_dataset(g; driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

source


# YAXArrays.Datasets.savecubeMethod.
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source


# YAXArrays.Datasets.savedatasetMethod.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


# YAXArrays.Datasets.to_datasetMethod.

to_dataset(c;datasetaxis = "Variable", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a "DatasetAxis" i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername

source


Internal API

# YAXArrays.YAXDefaultsConstant.

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source


# YAXArrays.findAxisMethod.
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.getOutAxisMethod.
julia
getOutAxis

source


# YAXArrays.get_descriptorMethod.
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source


# YAXArrays.match_axisMethod.
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
+A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.

source


# YAXArrays.Datasets.DatasetMethod.

Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source


# YAXArrays.Datasets.CubeMethod.
julia
Cube(ds::Dataset; joinname="Variable")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source


# YAXArrays.Datasets.open_datasetMethod.

open_dataset(g; driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

source


# YAXArrays.Datasets.savecubeMethod.
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source


# YAXArrays.Datasets.savedatasetMethod.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


# YAXArrays.Datasets.to_datasetMethod.

to_dataset(c;datasetaxis = "Variable", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a "DatasetAxis" i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername

source


Internal API

# YAXArrays.YAXDefaultsConstant.

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source


# YAXArrays.findAxisMethod.
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.getOutAxisMethod.
julia
getOutAxis

source


# YAXArrays.get_descriptorMethod.
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source


# YAXArrays.match_axisMethod.
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
 This is used to find different axes and to make certain axis description the same.
-For example to disregard differences of captialisation.

source


# YAXArrays.Cubes.CleanMeType.
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source


# YAXArrays.Cubes.cleanMethod.
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source


# YAXArrays.Cubes.copydataMethod.
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source


# YAXArrays.Cubes.optifuncMethod.
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source


# YAXArrays.DAT.DATConfigType.

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::Tuple{Vararg{YAXArrays.DAT.InputCube, NIN}} where NIN: The input data cubes

  • outcubes::Tuple{Vararg{YAXArrays.DAT.OutputCube, NOUT}} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source


# YAXArrays.DAT.InputCubeType.

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source


# YAXArrays.DAT.OutputCubeType.

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source


# YAXArrays.DAT.YAXColumnType.
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source


# YAXArrays.DAT.cmpcachmissesMethod.

Function that compares two cache miss specifiers by their importance

source


# YAXArrays.DAT.getFrontPermMethod.

Calculate an axis permutation that brings the wanted dimensions to the front

source


# YAXArrays.DAT.getLoopCacheSizeMethod.

Calculate optimal Cache size to DAT operation

source


# YAXArrays.DAT.getOuttypeMethod.
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source


# YAXArrays.DAT.getloopchunksMethod.
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.
-This computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source


# YAXArrays.DAT.permuteloopaxesMethod.
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Datasets.collectfromhandleMethod.

Extracts a YAXArray from a dataset handle that was just created from a arrayinfo

source


# YAXArrays.Datasets.createdatasetMethod.

function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source


# YAXArrays.Datasets.getarrayinfoMethod.

Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair

source


# YAXArrays.Datasets.testrangeMethod.

Test if data in x can be approximated by a step range

source


- +For example to disregard differences of captialisation.

source


# YAXArrays.Cubes.CleanMeType.
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source


# YAXArrays.Cubes.cleanMethod.
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source


# YAXArrays.Cubes.copydataMethod.
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source


# YAXArrays.Cubes.optifuncMethod.
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source


# YAXArrays.DAT.DATConfigType.

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::Tuple{Vararg{YAXArrays.DAT.InputCube, NIN}} where NIN: The input data cubes

  • outcubes::Tuple{Vararg{YAXArrays.DAT.OutputCube, NOUT}} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source


# YAXArrays.DAT.InputCubeType.

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source


# YAXArrays.DAT.OutputCubeType.

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source


# YAXArrays.DAT.YAXColumnType.
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source


# YAXArrays.DAT.cmpcachmissesMethod.

Function that compares two cache miss specifiers by their importance

source


# YAXArrays.DAT.getFrontPermMethod.

Calculate an axis permutation that brings the wanted dimensions to the front

source


# YAXArrays.DAT.getLoopCacheSizeMethod.

Calculate optimal Cache size to DAT operation

source


# YAXArrays.DAT.getOuttypeMethod.
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source


# YAXArrays.DAT.getloopchunksMethod.
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.
+This computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source


# YAXArrays.DAT.permuteloopaxesMethod.
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Datasets.collectfromhandleMethod.

Extracts a YAXArray from a dataset handle that was just created from a arrayinfo

source


# YAXArrays.Datasets.createdatasetMethod.

function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source


# YAXArrays.Datasets.getarrayinfoMethod.

Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair

source


# YAXArrays.Datasets.testrangeMethod.

Test if data in x can be approximated by a step range

source


+ \ No newline at end of file diff --git a/dev/assets/UserGuide_cache.md.D4lc_VAX.js b/dev/assets/UserGuide_cache.md.ClYVtu-M.js similarity index 96% rename from dev/assets/UserGuide_cache.md.D4lc_VAX.js rename to dev/assets/UserGuide_cache.md.ClYVtu-M.js index 14ca1f42..2963718e 100644 --- a/dev/assets/UserGuide_cache.md.D4lc_VAX.js +++ b/dev/assets/UserGuide_cache.md.ClYVtu-M.js @@ -1,4 +1,4 @@ -import{_ as a,c as i,a2 as e,o as t}from"./chunks/framework.BEF5B6Ex.js";const o=JSON.parse('{"title":"Caching YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/cache.md","filePath":"UserGuide/cache.md","lastUpdated":null}'),n={name:"UserGuide/cache.md"};function h(l,s,p,r,c,d){return t(),i("div",null,s[0]||(s[0]=[e(`

Caching YAXArrays

For some applications like interactive plotting of large datasets it can not be avoided that the same data must be accessed several times. In these cases it can be useful to store recently accessed data in a cache. In YAXArrays this can be easily achieved using the cache function. For example, if we open a large dataset from a remote source and want to keep data in a cache of size 500MB one can use:

julia
using YAXArrays, Zarr
+import{_ as a,c as i,a2 as e,o as t}from"./chunks/framework.BgERvflD.js";const o=JSON.parse('{"title":"Caching YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/cache.md","filePath":"UserGuide/cache.md","lastUpdated":null}'),n={name:"UserGuide/cache.md"};function h(l,s,p,r,c,d){return t(),i("div",null,s[0]||(s[0]=[e(`

Caching YAXArrays

For some applications like interactive plotting of large datasets it can not be avoided that the same data must be accessed several times. In these cases it can be useful to store recently accessed data in a cache. In YAXArrays this can be easily achieved using the cache function. For example, if we open a large dataset from a remote source and want to keep data in a cache of size 500MB one can use:

julia
using YAXArrays, Zarr
 ds = open_dataset("path/to/source")
 cachesize = 500 #MB
 cache(ds,maxsize = cachesize)

The above will wrap every array in the dataset into its own cache, where the 500MB are distributed equally across datasets. Alternatively individual caches can be applied to single YAXArrays

julia
yax = ds.avariable
diff --git a/dev/assets/UserGuide_cache.md.D4lc_VAX.lean.js b/dev/assets/UserGuide_cache.md.ClYVtu-M.lean.js
similarity index 96%
rename from dev/assets/UserGuide_cache.md.D4lc_VAX.lean.js
rename to dev/assets/UserGuide_cache.md.ClYVtu-M.lean.js
index 14ca1f42..2963718e 100644
--- a/dev/assets/UserGuide_cache.md.D4lc_VAX.lean.js
+++ b/dev/assets/UserGuide_cache.md.ClYVtu-M.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,c as i,a2 as e,o as t}from"./chunks/framework.BEF5B6Ex.js";const o=JSON.parse('{"title":"Caching YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/cache.md","filePath":"UserGuide/cache.md","lastUpdated":null}'),n={name:"UserGuide/cache.md"};function h(l,s,p,r,c,d){return t(),i("div",null,s[0]||(s[0]=[e(`

Caching YAXArrays

For some applications like interactive plotting of large datasets it can not be avoided that the same data must be accessed several times. In these cases it can be useful to store recently accessed data in a cache. In YAXArrays this can be easily achieved using the cache function. For example, if we open a large dataset from a remote source and want to keep data in a cache of size 500MB one can use:

julia
using YAXArrays, Zarr
+import{_ as a,c as i,a2 as e,o as t}from"./chunks/framework.BgERvflD.js";const o=JSON.parse('{"title":"Caching YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/cache.md","filePath":"UserGuide/cache.md","lastUpdated":null}'),n={name:"UserGuide/cache.md"};function h(l,s,p,r,c,d){return t(),i("div",null,s[0]||(s[0]=[e(`

Caching YAXArrays

For some applications like interactive plotting of large datasets it can not be avoided that the same data must be accessed several times. In these cases it can be useful to store recently accessed data in a cache. In YAXArrays this can be easily achieved using the cache function. For example, if we open a large dataset from a remote source and want to keep data in a cache of size 500MB one can use:

julia
using YAXArrays, Zarr
 ds = open_dataset("path/to/source")
 cachesize = 500 #MB
 cache(ds,maxsize = cachesize)

The above will wrap every array in the dataset into its own cache, where the 500MB are distributed equally across datasets. Alternatively individual caches can be applied to single YAXArrays

julia
yax = ds.avariable
diff --git a/dev/assets/UserGuide_chunk.md.BA5tJboX.js b/dev/assets/UserGuide_chunk.md.QsQQbTJH.js
similarity index 99%
rename from dev/assets/UserGuide_chunk.md.BA5tJboX.js
rename to dev/assets/UserGuide_chunk.md.QsQQbTJH.js
index e7a6f54e..1589b974 100644
--- a/dev/assets/UserGuide_chunk.md.BA5tJboX.js
+++ b/dev/assets/UserGuide_chunk.md.QsQQbTJH.js
@@ -1,4 +1,4 @@
-import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Chunk YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/chunk.md","filePath":"UserGuide/chunk.md","lastUpdated":null}'),l={name:"UserGuide/chunk.md"};function h(e,s,t,k,r,d){return p(),i("div",null,s[0]||(s[0]=[n(`

Chunk YAXArrays

Thinking about chunking is important when it comes to analyzing your data, because in most situations this will not fit into memory, hence having the fastest read access to it is crucial for your workflows. For example, for geo-spatial data do you want fast access on time or space, or... think about it.

To determine the chunk size of the array representation on disk, call the setchunks function prior to saving.

Chunking YAXArrays

julia
using YAXArrays, Zarr
+import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Chunk YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/chunk.md","filePath":"UserGuide/chunk.md","lastUpdated":null}'),l={name:"UserGuide/chunk.md"};function h(e,s,t,k,r,d){return p(),i("div",null,s[0]||(s[0]=[n(`

Chunk YAXArrays

Thinking about chunking is important when it comes to analyzing your data, because in most situations this will not fit into memory, hence having the fastest read access to it is crucial for your workflows. For example, for geo-spatial data do you want fast access on time or space, or... think about it.

To determine the chunk size of the array representation on disk, call the setchunks function prior to saving.

Chunking YAXArrays

julia
using YAXArrays, Zarr
 a = YAXArray(rand(10,20))
 a_chunked = setchunks(a, (5,10))
 a_chunked.chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
diff --git a/dev/assets/UserGuide_chunk.md.BA5tJboX.lean.js b/dev/assets/UserGuide_chunk.md.QsQQbTJH.lean.js
similarity index 99%
rename from dev/assets/UserGuide_chunk.md.BA5tJboX.lean.js
rename to dev/assets/UserGuide_chunk.md.QsQQbTJH.lean.js
index e7a6f54e..1589b974 100644
--- a/dev/assets/UserGuide_chunk.md.BA5tJboX.lean.js
+++ b/dev/assets/UserGuide_chunk.md.QsQQbTJH.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Chunk YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/chunk.md","filePath":"UserGuide/chunk.md","lastUpdated":null}'),l={name:"UserGuide/chunk.md"};function h(e,s,t,k,r,d){return p(),i("div",null,s[0]||(s[0]=[n(`

Chunk YAXArrays

Thinking about chunking is important when it comes to analyzing your data, because in most situations this will not fit into memory, hence having the fastest read access to it is crucial for your workflows. For example, for geo-spatial data do you want fast access on time or space, or... think about it.

To determine the chunk size of the array representation on disk, call the setchunks function prior to saving.

Chunking YAXArrays

julia
using YAXArrays, Zarr
+import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Chunk YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/chunk.md","filePath":"UserGuide/chunk.md","lastUpdated":null}'),l={name:"UserGuide/chunk.md"};function h(e,s,t,k,r,d){return p(),i("div",null,s[0]||(s[0]=[n(`

Chunk YAXArrays

Thinking about chunking is important when it comes to analyzing your data, because in most situations this will not fit into memory, hence having the fastest read access to it is crucial for your workflows. For example, for geo-spatial data do you want fast access on time or space, or... think about it.

To determine the chunk size of the array representation on disk, call the setchunks function prior to saving.

Chunking YAXArrays

julia
using YAXArrays, Zarr
 a = YAXArray(rand(10,20))
 a_chunked = setchunks(a, (5,10))
 a_chunked.chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
diff --git a/dev/assets/UserGuide_combine.md.CAw7m9rm.js b/dev/assets/UserGuide_combine.md.DYPIjlvr.js
similarity index 98%
rename from dev/assets/UserGuide_combine.md.CAw7m9rm.js
rename to dev/assets/UserGuide_combine.md.DYPIjlvr.js
index 4e1b5149..eaf1338e 100644
--- a/dev/assets/UserGuide_combine.md.CAw7m9rm.js
+++ b/dev/assets/UserGuide_combine.md.DYPIjlvr.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const c=JSON.parse('{"title":"Combine YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/combine.md","filePath":"UserGuide/combine.md","lastUpdated":null}'),t={name:"UserGuide/combine.md"};function p(l,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Combine YAXArrays

Data is often scattered across multiple files and corresponding arrays, e.g. one file per time step. This section describes methods on how to combine them into a single YAXArray.

cat along an existing dimension

Here we use cat to combine two arrays consisting of data from the first and the second half of a year into one single array containing the whole year. We glue the arrays along the first dimension using dims = 1: The resulting array whole_year still has one dimension, i.e. time, but with 12 instead of 6 elements.

julia
using YAXArrays
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BgERvflD.js";const c=JSON.parse('{"title":"Combine YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/combine.md","filePath":"UserGuide/combine.md","lastUpdated":null}'),t={name:"UserGuide/combine.md"};function p(l,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Combine YAXArrays

Data is often scattered across multiple files and corresponding arrays, e.g. one file per time step. This section describes methods on how to combine them into a single YAXArray.

cat along an existing dimension

Here we use cat to combine two arrays consisting of data from the first and the second half of a year into one single array containing the whole year. We glue the arrays along the first dimension using dims = 1: The resulting array whole_year still has one dimension, i.e. time, but with 12 instead of 6 elements.

julia
using YAXArrays
 
 first_half = YAXArray((Dim{:time}(1:6),), rand(6))
 second_half = YAXArray((Dim{:time}(7:12),), rand(6))
diff --git a/dev/assets/UserGuide_combine.md.CAw7m9rm.lean.js b/dev/assets/UserGuide_combine.md.DYPIjlvr.lean.js
similarity index 98%
rename from dev/assets/UserGuide_combine.md.CAw7m9rm.lean.js
rename to dev/assets/UserGuide_combine.md.DYPIjlvr.lean.js
index 4e1b5149..eaf1338e 100644
--- a/dev/assets/UserGuide_combine.md.CAw7m9rm.lean.js
+++ b/dev/assets/UserGuide_combine.md.DYPIjlvr.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const c=JSON.parse('{"title":"Combine YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/combine.md","filePath":"UserGuide/combine.md","lastUpdated":null}'),t={name:"UserGuide/combine.md"};function p(l,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Combine YAXArrays

Data is often scattered across multiple files and corresponding arrays, e.g. one file per time step. This section describes methods on how to combine them into a single YAXArray.

cat along an existing dimension

Here we use cat to combine two arrays consisting of data from the first and the second half of a year into one single array containing the whole year. We glue the arrays along the first dimension using dims = 1: The resulting array whole_year still has one dimension, i.e. time, but with 12 instead of 6 elements.

julia
using YAXArrays
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BgERvflD.js";const c=JSON.parse('{"title":"Combine YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/combine.md","filePath":"UserGuide/combine.md","lastUpdated":null}'),t={name:"UserGuide/combine.md"};function p(l,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Combine YAXArrays

Data is often scattered across multiple files and corresponding arrays, e.g. one file per time step. This section describes methods on how to combine them into a single YAXArray.

cat along an existing dimension

Here we use cat to combine two arrays consisting of data from the first and the second half of a year into one single array containing the whole year. We glue the arrays along the first dimension using dims = 1: The resulting array whole_year still has one dimension, i.e. time, but with 12 instead of 6 elements.

julia
using YAXArrays
 
 first_half = YAXArray((Dim{:time}(1:6),), rand(6))
 second_half = YAXArray((Dim{:time}(7:12),), rand(6))
diff --git a/dev/assets/UserGuide_compute.md.DTZ8X-wl.js b/dev/assets/UserGuide_compute.md.l32-sEL-.js
similarity index 94%
rename from dev/assets/UserGuide_compute.md.DTZ8X-wl.js
rename to dev/assets/UserGuide_compute.md.l32-sEL-.js
index a1984eb1..4d50f5bb 100644
--- a/dev/assets/UserGuide_compute.md.DTZ8X-wl.js
+++ b/dev/assets/UserGuide_compute.md.l32-sEL-.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Compute YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/compute.md","filePath":"UserGuide/compute.md","lastUpdated":null}'),p={name:"UserGuide/compute.md"};function e(l,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Compute YAXArrays

This section describes how to create new YAXArrays by performing operations on them.

  • Use arithmetics to add or multiply numbers to each element of an array

  • Use map to apply a more complex functions to every element of an array

  • Use mapslices to reduce a dimension, e.g. to get the mean over all time steps

  • Use mapCube to apply complex functions on an array that may change any dimensions

Let's start by creating an example dataset:

julia
using YAXArrays
+import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Compute YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/compute.md","filePath":"UserGuide/compute.md","lastUpdated":null}'),p={name:"UserGuide/compute.md"};function e(l,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Compute YAXArrays

This section describes how to create new YAXArrays by performing operations on them.

  • Use arithmetics to add or multiply numbers to each element of an array

  • Use map to apply a more complex functions to every element of an array

  • Use mapslices to reduce a dimension, e.g. to get the mean over all time steps

  • Use mapCube to apply complex functions on an array that may change any dimensions

Let's start by creating an example dataset:

julia
using YAXArrays
 using Dates
 
 axlist = (
@@ -19,7 +19,7 @@ import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
   :origin => "user guide"
 ├─────────────────────────────────────────────────────────────────── file size ┤ 
   file size: 35.16 KB
-└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.34093180898718256
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
╭──────────────────────────────╮
+└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.8329685182217375
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
╭──────────────────────────────╮
 │ 30×10×15 YAXArray{Float64,3} │
 ├──────────────────────────────┴───────────────────────────────────────── dims ┐
   ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
@@ -202,14 +202,14 @@ import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
 ├──────────────────────────────────────────────────────────────────── metadata ┤
   Dict{String, Any}()
 └──────────────────────────────────────────────────────────────────────────────┘
-  ↓ →  1.0       1.28571    1.57143   …  4.42857   4.71429   5.0
-  1.0  0.423959  0.495718   0.126617     0.16858   0.454909  0.338821
-  2.0  0.609098  0.140488   0.729186     0.984254  0.924728  0.837976
-  3.0  0.710902  0.214893   0.702405     0.953086  0.35839   0.796689
-  ⋮                                   ⋱                      ⋮
-  8.0  0.275995  0.0626282  0.180195     0.175184  0.449547  0.703896
-  9.0  0.902076  0.655641   0.964787     0.025293  0.104898  0.579358
- 10.0  0.285525  0.813113   0.104357  …  0.054352  0.222979  0.944919

Now we calculate the list of corresponding points for each region. This will be re-used for each point in time during the final mapCube. In addition, this avoids the allocation of unnecessary memory.

julia
regions = ["A", "B", "C", "D"]
+  ↓ →  1.0       1.28571     1.57143     …  4.42857    4.71429    5.0
+  1.0  0.910983  0.26493     0.60037        0.712525   0.219355   0.191605
+  2.0  0.809596  0.820355    0.00974435     0.904112   0.812749   0.0646667
+  3.0  0.990385  0.618667    0.416924       0.175702   0.831285   0.838209
+  ⋮                                      ⋱                        ⋮
+  8.0  0.855011  0.00146845  0.644835       0.0311724  0.885093   0.706774
+  9.0  0.327124  0.739298    0.14481        0.844681   0.0182801  0.604438
+ 10.0  0.401121  0.406059    0.637282    …  0.12146    0.356502   0.814431

Now we calculate the list of corresponding points for each region. This will be re-used for each point in time during the final mapCube. In addition, this avoids the allocation of unnecessary memory.

julia
regions = ["A", "B", "C", "D"]
 points_of_regions = map(enumerate(regions)) do (i,region)
     region => findall(isequal(region), regions_mat)
 end |> Dict |> sort
OrderedCollections.OrderedDict{String, Vector{CartesianIndex{2}}} with 4 entries:
diff --git a/dev/assets/UserGuide_compute.md.DTZ8X-wl.lean.js b/dev/assets/UserGuide_compute.md.l32-sEL-.lean.js
similarity index 94%
rename from dev/assets/UserGuide_compute.md.DTZ8X-wl.lean.js
rename to dev/assets/UserGuide_compute.md.l32-sEL-.lean.js
index a1984eb1..4d50f5bb 100644
--- a/dev/assets/UserGuide_compute.md.DTZ8X-wl.lean.js
+++ b/dev/assets/UserGuide_compute.md.l32-sEL-.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Compute YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/compute.md","filePath":"UserGuide/compute.md","lastUpdated":null}'),p={name:"UserGuide/compute.md"};function e(l,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Compute YAXArrays

This section describes how to create new YAXArrays by performing operations on them.

  • Use arithmetics to add or multiply numbers to each element of an array

  • Use map to apply a more complex functions to every element of an array

  • Use mapslices to reduce a dimension, e.g. to get the mean over all time steps

  • Use mapCube to apply complex functions on an array that may change any dimensions

Let's start by creating an example dataset:

julia
using YAXArrays
+import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Compute YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/compute.md","filePath":"UserGuide/compute.md","lastUpdated":null}'),p={name:"UserGuide/compute.md"};function e(l,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Compute YAXArrays

This section describes how to create new YAXArrays by performing operations on them.

  • Use arithmetics to add or multiply numbers to each element of an array

  • Use map to apply a more complex functions to every element of an array

  • Use mapslices to reduce a dimension, e.g. to get the mean over all time steps

  • Use mapCube to apply complex functions on an array that may change any dimensions

Let's start by creating an example dataset:

julia
using YAXArrays
 using Dates
 
 axlist = (
@@ -19,7 +19,7 @@ import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
   :origin => "user guide"
 ├─────────────────────────────────────────────────────────────────── file size ┤ 
   file size: 35.16 KB
-└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.34093180898718256
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
╭──────────────────────────────╮
+└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.8329685182217375
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
╭──────────────────────────────╮
 │ 30×10×15 YAXArray{Float64,3} │
 ├──────────────────────────────┴───────────────────────────────────────── dims ┐
   ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
@@ -202,14 +202,14 @@ import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
 ├──────────────────────────────────────────────────────────────────── metadata ┤
   Dict{String, Any}()
 └──────────────────────────────────────────────────────────────────────────────┘
-  ↓ →  1.0       1.28571    1.57143   …  4.42857   4.71429   5.0
-  1.0  0.423959  0.495718   0.126617     0.16858   0.454909  0.338821
-  2.0  0.609098  0.140488   0.729186     0.984254  0.924728  0.837976
-  3.0  0.710902  0.214893   0.702405     0.953086  0.35839   0.796689
-  ⋮                                   ⋱                      ⋮
-  8.0  0.275995  0.0626282  0.180195     0.175184  0.449547  0.703896
-  9.0  0.902076  0.655641   0.964787     0.025293  0.104898  0.579358
- 10.0  0.285525  0.813113   0.104357  …  0.054352  0.222979  0.944919

Now we calculate the list of corresponding points for each region. This will be re-used for each point in time during the final mapCube. In addition, this avoids the allocation of unnecessary memory.

julia
regions = ["A", "B", "C", "D"]
+  ↓ →  1.0       1.28571     1.57143     …  4.42857    4.71429    5.0
+  1.0  0.910983  0.26493     0.60037        0.712525   0.219355   0.191605
+  2.0  0.809596  0.820355    0.00974435     0.904112   0.812749   0.0646667
+  3.0  0.990385  0.618667    0.416924       0.175702   0.831285   0.838209
+  ⋮                                      ⋱                        ⋮
+  8.0  0.855011  0.00146845  0.644835       0.0311724  0.885093   0.706774
+  9.0  0.327124  0.739298    0.14481        0.844681   0.0182801  0.604438
+ 10.0  0.401121  0.406059    0.637282    …  0.12146    0.356502   0.814431

Now we calculate the list of corresponding points for each region. This will be re-used for each point in time during the final mapCube. In addition, this avoids the allocation of unnecessary memory.

julia
regions = ["A", "B", "C", "D"]
 points_of_regions = map(enumerate(regions)) do (i,region)
     region => findall(isequal(region), regions_mat)
 end |> Dict |> sort
OrderedCollections.OrderedDict{String, Vector{CartesianIndex{2}}} with 4 entries:
diff --git a/dev/assets/UserGuide_convert.md.DYAQ-3eU.js b/dev/assets/UserGuide_convert.md.CaREO6jR.js
similarity index 85%
rename from dev/assets/UserGuide_convert.md.DYAQ-3eU.js
rename to dev/assets/UserGuide_convert.md.CaREO6jR.js
index d96ff746..63e4ca7c 100644
--- a/dev/assets/UserGuide_convert.md.DYAQ-3eU.js
+++ b/dev/assets/UserGuide_convert.md.CaREO6jR.js
@@ -1,4 +1,4 @@
-import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BEF5B6Ex.js";const c=JSON.parse('{"title":"Convert YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/convert.md","filePath":"UserGuide/convert.md","lastUpdated":null}'),e={name:"UserGuide/convert.md"};function l(t,s,r,h,d,k){return p(),n("div",null,s[0]||(s[0]=[i(`

Convert YAXArrays

This section describes how to convert variables from types of other Julia packages into YAXArrays and vice versa.

WARNING

YAXArrays is designed to work with large datasets that are way larger than the memory. However, most types are designed to work in memory. Those conversions are only possible if the entire dataset fits into memory. In addition, metadata might be lost during conversion.

Convert Base.Array

Convert Base.Array to YAXArray:

julia
using YAXArrays
+import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BgERvflD.js";const c=JSON.parse('{"title":"Convert YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/convert.md","filePath":"UserGuide/convert.md","lastUpdated":null}'),e={name:"UserGuide/convert.md"};function l(t,s,r,h,d,k){return p(),n("div",null,s[0]||(s[0]=[i(`

Convert YAXArrays

This section describes how to convert variables from types of other Julia packages into YAXArrays and vice versa.

WARNING

YAXArrays is designed to work with large datasets that are way larger than the memory. However, most types are designed to work in memory. Those conversions are only possible if the entire dataset fits into memory. In addition, metadata might be lost during conversion.

Convert Base.Array

Convert Base.Array to YAXArray:

julia
using YAXArrays
 
 m = rand(5,10)
 a = YAXArray(m)
╭──────────────────────────╮
@@ -11,11 +11,11 @@ import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BEF5B6Ex.js";const c
 ├────────────────────────────────────────────────────────── file size ┤ 
   file size: 400.0 bytes
 └─────────────────────────────────────────────────────────────────────┘

Convert YAXArray to Base.Array:

julia
m2 = collect(a.data)
5×10 Matrix{Float64}:
- 0.275953   0.908733  0.945473  0.89082   …  0.506143  0.646264   0.484504
- 0.931359   0.79898   0.492366  0.354019     0.380954  0.902789   0.775352
- 0.195112   0.149747  0.587823  0.299036     0.952645  0.0481227  0.372878
- 0.0126228  0.291247  0.417136  0.362148     0.834957  0.942395   0.855535
- 0.957847   0.505572  0.075497  0.812221     0.678015  0.209058   0.845177

Convert Raster

A Raster as defined in Rasters.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types:

julia
using Rasters
+ 0.719749   0.151377   0.981562  0.0519894  …  0.0591867  0.290459  0.770549
+ 0.606585   0.0871085  0.887682  0.763154      0.3112     0.460844  0.783917
+ 0.738476   0.821196   0.86214   0.706696      0.539204   0.942384  0.87077
+ 0.284879   0.427933   0.814206  0.837723      0.595169   0.56795   0.739883
+ 0.0115923  0.365387   0.761887  0.550946      0.94926    0.993443  0.520799

Convert Raster

A Raster as defined in Rasters.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types:

julia
using Rasters
 
 lon, lat = X(25:1:30), Y(25:1:30)
 time = Ti(2000:2024)
@@ -44,12 +44,12 @@ import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BEF5B6Ex.js";const c
 └─────────────────────────────────────────────────────────────┘
 [:, :, 1]
   ↓ →  25          26         27          28         29          30
- 25     0.508968    0.201      0.228329    0.443921   0.0016043   0.744147
- 26     0.426614    0.457045   0.360031    0.854556   0.873199    0.202457
- 27     0.898824    0.295065   0.443947    0.689034   0.782729    0.236862
- 28     0.233642    0.598441   0.928433    0.821712   0.428044    0.00341717
- 29     0.249775    0.287776   0.0391094   0.998243   0.155019    0.835979
- 30     0.0270115   0.952619   0.356225    0.983686   0.0318083   0.337743

Convert DimArray

A DimArray as defined in DimensionalData.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types.

Convert DimArray to YAXArray:

julia
using DimensionalData
+ 25     0.3178      0.325229   0.422698    0.255545   0.0550086   0.274048
+ 26     0.0299239   0.355731   0.237918    0.433276   0.714768    0.219044
+ 27     0.706141    0.700227   0.330262    0.620018   0.690047    0.322318
+ 28     0.517699    0.127488   0.0768364   0.631014   0.292472    0.486169
+ 29     0.243928    0.486085   0.843537    0.200422   0.115995    0.794568
+ 30     0.42652     0.547011   0.718885    0.67165    0.226868    0.276756

Convert DimArray

A DimArray as defined in DimensionalData.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types.

Convert DimArray to YAXArray:

julia
using DimensionalData
 using YAXArrayBase
 
 dim_arr = rand(X(1:5), Y(10.0:15.0), metadata = Dict{String, Any}())
@@ -70,9 +70,9 @@ import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BEF5B6Ex.js";const c
 ├──────────────────────────────────────────────────────── metadata ┤
   Dict{String, Any}()
 └──────────────────────────────────────────────────────────────────┘
- ↓ →  10.0        11.0        12.0        13.0        14.0       15.0
- 1     0.375071    0.10778     0.136866    0.801031    0.945303   0.322938
- 2     0.255362    0.475875    0.891795    0.146681    0.355027   0.747662
- 3     0.883687    0.909186    0.604756    0.943467    0.5221     0.623636
- 4     0.0809511   0.918395    0.0535527   0.908792    0.406759   0.345457
- 5     0.54991     0.0401898   0.790472    0.0259303   0.383191   0.171133

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

`,25)]))}const g=a(e,[["render",l]]);export{c as __pageData,g as default}; + ↓ → 10.0 11.0 12.0 13.0 14.0 15.0 + 1 0.521161 0.0742493 0.111182 0.879808 0.369484 0.728395 + 2 0.12119 0.834542 0.952605 0.881662 0.825379 0.985806 + 3 0.883008 0.815705 0.726456 0.749105 0.0862858 0.114351 + 4 0.86782 0.70031 0.951969 0.931922 0.919482 0.0926064 + 5 0.939667 0.728204 0.883542 0.876702 0.374626 0.26991

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

`,25)]))}const g=a(e,[["render",l]]);export{c as __pageData,g as default}; diff --git a/dev/assets/UserGuide_convert.md.DYAQ-3eU.lean.js b/dev/assets/UserGuide_convert.md.CaREO6jR.lean.js similarity index 85% rename from dev/assets/UserGuide_convert.md.DYAQ-3eU.lean.js rename to dev/assets/UserGuide_convert.md.CaREO6jR.lean.js index d96ff746..63e4ca7c 100644 --- a/dev/assets/UserGuide_convert.md.DYAQ-3eU.lean.js +++ b/dev/assets/UserGuide_convert.md.CaREO6jR.lean.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BEF5B6Ex.js";const c=JSON.parse('{"title":"Convert YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/convert.md","filePath":"UserGuide/convert.md","lastUpdated":null}'),e={name:"UserGuide/convert.md"};function l(t,s,r,h,d,k){return p(),n("div",null,s[0]||(s[0]=[i(`

Convert YAXArrays

This section describes how to convert variables from types of other Julia packages into YAXArrays and vice versa.

WARNING

YAXArrays is designed to work with large datasets that are way larger than the memory. However, most types are designed to work in memory. Those conversions are only possible if the entire dataset fits into memory. In addition, metadata might be lost during conversion.

Convert Base.Array

Convert Base.Array to YAXArray:

julia
using YAXArrays
+import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BgERvflD.js";const c=JSON.parse('{"title":"Convert YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/convert.md","filePath":"UserGuide/convert.md","lastUpdated":null}'),e={name:"UserGuide/convert.md"};function l(t,s,r,h,d,k){return p(),n("div",null,s[0]||(s[0]=[i(`

Convert YAXArrays

This section describes how to convert variables from types of other Julia packages into YAXArrays and vice versa.

WARNING

YAXArrays is designed to work with large datasets that are way larger than the memory. However, most types are designed to work in memory. Those conversions are only possible if the entire dataset fits into memory. In addition, metadata might be lost during conversion.

Convert Base.Array

Convert Base.Array to YAXArray:

julia
using YAXArrays
 
 m = rand(5,10)
 a = YAXArray(m)
╭──────────────────────────╮
@@ -11,11 +11,11 @@ import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BEF5B6Ex.js";const c
 ├────────────────────────────────────────────────────────── file size ┤ 
   file size: 400.0 bytes
 └─────────────────────────────────────────────────────────────────────┘

Convert YAXArray to Base.Array:

julia
m2 = collect(a.data)
5×10 Matrix{Float64}:
- 0.275953   0.908733  0.945473  0.89082   …  0.506143  0.646264   0.484504
- 0.931359   0.79898   0.492366  0.354019     0.380954  0.902789   0.775352
- 0.195112   0.149747  0.587823  0.299036     0.952645  0.0481227  0.372878
- 0.0126228  0.291247  0.417136  0.362148     0.834957  0.942395   0.855535
- 0.957847   0.505572  0.075497  0.812221     0.678015  0.209058   0.845177

Convert Raster

A Raster as defined in Rasters.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types:

julia
using Rasters
+ 0.719749   0.151377   0.981562  0.0519894  …  0.0591867  0.290459  0.770549
+ 0.606585   0.0871085  0.887682  0.763154      0.3112     0.460844  0.783917
+ 0.738476   0.821196   0.86214   0.706696      0.539204   0.942384  0.87077
+ 0.284879   0.427933   0.814206  0.837723      0.595169   0.56795   0.739883
+ 0.0115923  0.365387   0.761887  0.550946      0.94926    0.993443  0.520799

Convert Raster

A Raster as defined in Rasters.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types:

julia
using Rasters
 
 lon, lat = X(25:1:30), Y(25:1:30)
 time = Ti(2000:2024)
@@ -44,12 +44,12 @@ import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BEF5B6Ex.js";const c
 └─────────────────────────────────────────────────────────────┘
 [:, :, 1]
   ↓ →  25          26         27          28         29          30
- 25     0.508968    0.201      0.228329    0.443921   0.0016043   0.744147
- 26     0.426614    0.457045   0.360031    0.854556   0.873199    0.202457
- 27     0.898824    0.295065   0.443947    0.689034   0.782729    0.236862
- 28     0.233642    0.598441   0.928433    0.821712   0.428044    0.00341717
- 29     0.249775    0.287776   0.0391094   0.998243   0.155019    0.835979
- 30     0.0270115   0.952619   0.356225    0.983686   0.0318083   0.337743

Convert DimArray

A DimArray as defined in DimensionalData.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types.

Convert DimArray to YAXArray:

julia
using DimensionalData
+ 25     0.3178      0.325229   0.422698    0.255545   0.0550086   0.274048
+ 26     0.0299239   0.355731   0.237918    0.433276   0.714768    0.219044
+ 27     0.706141    0.700227   0.330262    0.620018   0.690047    0.322318
+ 28     0.517699    0.127488   0.0768364   0.631014   0.292472    0.486169
+ 29     0.243928    0.486085   0.843537    0.200422   0.115995    0.794568
+ 30     0.42652     0.547011   0.718885    0.67165    0.226868    0.276756

Convert DimArray

A DimArray as defined in DimensionalData.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types.

Convert DimArray to YAXArray:

julia
using DimensionalData
 using YAXArrayBase
 
 dim_arr = rand(X(1:5), Y(10.0:15.0), metadata = Dict{String, Any}())
@@ -70,9 +70,9 @@ import{_ as a,c as n,a2 as i,o as p}from"./chunks/framework.BEF5B6Ex.js";const c
 ├──────────────────────────────────────────────────────── metadata ┤
   Dict{String, Any}()
 └──────────────────────────────────────────────────────────────────┘
- ↓ →  10.0        11.0        12.0        13.0        14.0       15.0
- 1     0.375071    0.10778     0.136866    0.801031    0.945303   0.322938
- 2     0.255362    0.475875    0.891795    0.146681    0.355027   0.747662
- 3     0.883687    0.909186    0.604756    0.943467    0.5221     0.623636
- 4     0.0809511   0.918395    0.0535527   0.908792    0.406759   0.345457
- 5     0.54991     0.0401898   0.790472    0.0259303   0.383191   0.171133

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

`,25)]))}const g=a(e,[["render",l]]);export{c as __pageData,g as default}; + ↓ → 10.0 11.0 12.0 13.0 14.0 15.0 + 1 0.521161 0.0742493 0.111182 0.879808 0.369484 0.728395 + 2 0.12119 0.834542 0.952605 0.881662 0.825379 0.985806 + 3 0.883008 0.815705 0.726456 0.749105 0.0862858 0.114351 + 4 0.86782 0.70031 0.951969 0.931922 0.919482 0.0926064 + 5 0.939667 0.728204 0.883542 0.876702 0.374626 0.26991

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

`,25)]))}const g=a(e,[["render",l]]);export{c as __pageData,g as default}; diff --git a/dev/assets/UserGuide_create.md.BL_P2KiQ.js b/dev/assets/UserGuide_create.md.r5QE-6jo.js similarity index 99% rename from dev/assets/UserGuide_create.md.BL_P2KiQ.js rename to dev/assets/UserGuide_create.md.r5QE-6jo.js index 78009fca..9e5b723f 100644 --- a/dev/assets/UserGuide_create.md.BL_P2KiQ.js +++ b/dev/assets/UserGuide_create.md.r5QE-6jo.js @@ -1,4 +1,4 @@ -import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Create YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/create.md","filePath":"UserGuide/create.md","lastUpdated":null}'),e={name:"UserGuide/create.md"};function p(l,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Create YAXArrays and Datasets

This section describes how to create arrays and datasets by filling values directly.

Create a YAXArray

We can create a new YAXArray by filling the values directly:

julia
using YAXArrays
+import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Create YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/create.md","filePath":"UserGuide/create.md","lastUpdated":null}'),e={name:"UserGuide/create.md"};function p(l,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Create YAXArrays and Datasets

This section describes how to create arrays and datasets by filling values directly.

Create a YAXArray

We can create a new YAXArray by filling the values directly:

julia
using YAXArrays
 a1 = YAXArray(rand(10, 20, 5))
╭─────────────────────────────╮
 │ 10×20×5 YAXArray{Float64,3} │
 ├─────────────────────────────┴────────────────────────────────── dims ┐
diff --git a/dev/assets/UserGuide_create.md.BL_P2KiQ.lean.js b/dev/assets/UserGuide_create.md.r5QE-6jo.lean.js
similarity index 99%
rename from dev/assets/UserGuide_create.md.BL_P2KiQ.lean.js
rename to dev/assets/UserGuide_create.md.r5QE-6jo.lean.js
index 78009fca..9e5b723f 100644
--- a/dev/assets/UserGuide_create.md.BL_P2KiQ.lean.js
+++ b/dev/assets/UserGuide_create.md.r5QE-6jo.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Create YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/create.md","filePath":"UserGuide/create.md","lastUpdated":null}'),e={name:"UserGuide/create.md"};function p(l,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Create YAXArrays and Datasets

This section describes how to create arrays and datasets by filling values directly.

Create a YAXArray

We can create a new YAXArray by filling the values directly:

julia
using YAXArrays
+import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Create YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/create.md","filePath":"UserGuide/create.md","lastUpdated":null}'),e={name:"UserGuide/create.md"};function p(l,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Create YAXArrays and Datasets

This section describes how to create arrays and datasets by filling values directly.

Create a YAXArray

We can create a new YAXArray by filling the values directly:

julia
using YAXArrays
 a1 = YAXArray(rand(10, 20, 5))
╭─────────────────────────────╮
 │ 10×20×5 YAXArray{Float64,3} │
 ├─────────────────────────────┴────────────────────────────────── dims ┐
diff --git a/dev/assets/UserGuide_faq.md.3ZSYUGcl.js b/dev/assets/UserGuide_faq.md.D4xbU8uL.js
similarity index 97%
rename from dev/assets/UserGuide_faq.md.3ZSYUGcl.js
rename to dev/assets/UserGuide_faq.md.D4xbU8uL.js
index 861d1b6a..10f0017e 100644
--- a/dev/assets/UserGuide_faq.md.3ZSYUGcl.js
+++ b/dev/assets/UserGuide_faq.md.D4xbU8uL.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t="/YAXArrays.jl/dev/assets/efsodgu.jxZi8ZiH.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BgERvflD.js";const t="/YAXArrays.jl/dev/assets/bvbfegb.Bcoj2HvJ.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
 using DimensionalData
julia
julia> c = YAXArray(rand(10, 10, 5))
╭─────────────────────────────╮
 10×10×5 YAXArray{Float64,3}
 ├─────────────────────────────┴────────────────────────────────────────── dims ┐
@@ -194,20 +194,20 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t
 None
 Variables with additional axes:
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
   longitudes
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points,
-  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
-  temperature
+  latitudes
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
   Variables: 
-  latitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
+  temperature

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
 longitudes_yasxa = readcubedata(ds["longitudes"])
 ds_subset = ds[points = Where(p-> latitudes_yasxa[p]  >= 20 && latitudes_yasxa[p]  <= 80 &&
                              longitudes_yasxa[p] >= 0  && longitudes_yasxa[p] <= 180
@@ -217,20 +217,20 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t
 None
 Variables with additional axes:
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points,
-  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
-  temperature
+  longitudes
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
   Variables: 
-  latitudes
+  temperature
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
-  longitudes

How do I apply map algebra?

Our next step is map algebra computations. This can be done effectively using the 'map' function. For example:

Multiplying cubes with only spatio-temporal dimensions

julia
julia> map((x, y) -> x * y, ds1, ds2)
╭──────────────────────────────╮
+  latitudes

How do I apply map algebra?

Our next step is map algebra computations. This can be done effectively using the 'map' function. For example:

Multiplying cubes with only spatio-temporal dimensions

julia
julia> map((x, y) -> x * y, ds1, ds2)
╭──────────────────────────────╮
 20×10×15 YAXArray{Float64,3}
 ├──────────────────────────────┴───────────────────────────────────────── dims ┐
 time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
@@ -338,7 +338,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 variable Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock1
+  Stock3
 
   Additional Axes: 
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
@@ -350,7 +350,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 variable Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock3

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+  Stock1

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
 Shared Axes:
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 variable Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
diff --git a/dev/assets/UserGuide_faq.md.3ZSYUGcl.lean.js b/dev/assets/UserGuide_faq.md.D4xbU8uL.lean.js
similarity index 97%
rename from dev/assets/UserGuide_faq.md.3ZSYUGcl.lean.js
rename to dev/assets/UserGuide_faq.md.D4xbU8uL.lean.js
index 861d1b6a..10f0017e 100644
--- a/dev/assets/UserGuide_faq.md.3ZSYUGcl.lean.js
+++ b/dev/assets/UserGuide_faq.md.D4xbU8uL.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t="/YAXArrays.jl/dev/assets/efsodgu.jxZi8ZiH.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BgERvflD.js";const t="/YAXArrays.jl/dev/assets/bvbfegb.Bcoj2HvJ.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
 using DimensionalData
julia
julia> c = YAXArray(rand(10, 10, 5))
╭─────────────────────────────╮
 10×10×5 YAXArray{Float64,3}
 ├─────────────────────────────┴────────────────────────────────────────── dims ┐
@@ -194,20 +194,20 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t
 None
 Variables with additional axes:
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
   longitudes
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points,
-  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
-  temperature
+  latitudes
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
   Variables: 
-  latitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
+  temperature

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
 longitudes_yasxa = readcubedata(ds["longitudes"])
 ds_subset = ds[points = Where(p-> latitudes_yasxa[p]  >= 20 && latitudes_yasxa[p]  <= 80 &&
                              longitudes_yasxa[p] >= 0  && longitudes_yasxa[p] <= 180
@@ -217,20 +217,20 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t
 None
 Variables with additional axes:
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points,
-  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
-  temperature
+  longitudes
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
   Variables: 
-  latitudes
+  temperature
 
   Additional Axes: 
-  (↓ points Sampled{Int64} [2, 6, …, 93, 94] ForwardOrdered Irregular Points)
+  (↓ points Sampled{Int64} [8, 10, …, 94, 98] ForwardOrdered Irregular Points)
   Variables: 
-  longitudes

How do I apply map algebra?

Our next step is map algebra computations. This can be done effectively using the 'map' function. For example:

Multiplying cubes with only spatio-temporal dimensions

julia
julia> map((x, y) -> x * y, ds1, ds2)
╭──────────────────────────────╮
+  latitudes

How do I apply map algebra?

Our next step is map algebra computations. This can be done effectively using the 'map' function. For example:

Multiplying cubes with only spatio-temporal dimensions

julia
julia> map((x, y) -> x * y, ds1, ds2)
╭──────────────────────────────╮
 20×10×15 YAXArray{Float64,3}
 ├──────────────────────────────┴───────────────────────────────────────── dims ┐
 time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
@@ -338,7 +338,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 variable Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock1
+  Stock3
 
   Additional Axes: 
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
@@ -350,7 +350,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const t
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 variable Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock3

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+  Stock1

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
 Shared Axes:
   (time     Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 variable Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
diff --git a/dev/assets/UserGuide_group.md.CmN1GMIM.js b/dev/assets/UserGuide_group.md.DBOT3ZFU.js
similarity index 97%
rename from dev/assets/UserGuide_group.md.CmN1GMIM.js
rename to dev/assets/UserGuide_group.md.DBOT3ZFU.js
index ea6f6271..db3a3291 100644
--- a/dev/assets/UserGuide_group.md.CmN1GMIM.js
+++ b/dev/assets/UserGuide_group.md.DBOT3ZFU.js
@@ -1,8 +1,8 @@
-import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const h="/YAXArrays.jl/dev/assets/qfkjmwc.CBBZcGwj.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),t={name:"UserGuide/group.md"};function l(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BgERvflD.js";const t="/YAXArrays.jl/dev/assets/gqwibql.CBBZcGwj.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),l={name:"UserGuide/group.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
 using NetCDF
 using Downloads
 using Dates
-using Statistics

Seasonal Averages from Time Series of Monthly Means

The following reproduces the example in xarray by Joe Hamman.

Where the goal is to calculate the seasonal average. And in order to do this properly, is necessary to calculate the weighted average considering that each month has a different number of days.

Download the data

julia
url_path = "https://github.com/pydata/xarray-data/raw/master/rasm.nc"
+using Statistics
[ Info: new driver key :netcdf, updating backendlist.

Seasonal Averages from Time Series of Monthly Means

The following reproduces the example in xarray by Joe Hamman.

Where the goal is to calculate the seasonal average. And in order to do this properly, is necessary to calculate the weighted average considering that each month has a different number of days.

Download the data

julia
url_path = "https://github.com/pydata/xarray-data/raw/master/rasm.nc"
 filename = Downloads.download(url_path, "rasm.nc")
 ds_o = Cube(filename)

WARNING

The following rebuild should not be necessary in the future, plus is unpractical to use for large data sets. Out of memory groupby currently is work in progress. Related to https://github.com/rafaqz/DimensionalData.jl/issues/642

julia
axs = dims(ds_o) # get the dimensions
 data = ds_o.data[:,:,:] # read the data
@@ -187,4 +187,4 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const h
     colgap!(fig.layout, 5)
     rowgap!(fig.layout, 5)
     fig
-end

which shows a good agreement with the results first published by Joe Hamman.

',62)]))}const N=i(t,[["render",l]]);export{y as __pageData,N as default}; +end

which shows a good agreement with the results first published by Joe Hamman.

',63)]))}const N=i(l,[["render",h]]);export{y as __pageData,N as default}; diff --git a/dev/assets/UserGuide_group.md.CmN1GMIM.lean.js b/dev/assets/UserGuide_group.md.DBOT3ZFU.lean.js similarity index 97% rename from dev/assets/UserGuide_group.md.CmN1GMIM.lean.js rename to dev/assets/UserGuide_group.md.DBOT3ZFU.lean.js index ea6f6271..db3a3291 100644 --- a/dev/assets/UserGuide_group.md.CmN1GMIM.lean.js +++ b/dev/assets/UserGuide_group.md.DBOT3ZFU.lean.js @@ -1,8 +1,8 @@ -import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const h="/YAXArrays.jl/dev/assets/qfkjmwc.CBBZcGwj.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),t={name:"UserGuide/group.md"};function l(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BgERvflD.js";const t="/YAXArrays.jl/dev/assets/gqwibql.CBBZcGwj.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),l={name:"UserGuide/group.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
 using NetCDF
 using Downloads
 using Dates
-using Statistics

Seasonal Averages from Time Series of Monthly Means

The following reproduces the example in xarray by Joe Hamman.

Where the goal is to calculate the seasonal average. And in order to do this properly, is necessary to calculate the weighted average considering that each month has a different number of days.

Download the data

julia
url_path = "https://github.com/pydata/xarray-data/raw/master/rasm.nc"
+using Statistics
[ Info: new driver key :netcdf, updating backendlist.

Seasonal Averages from Time Series of Monthly Means

The following reproduces the example in xarray by Joe Hamman.

Where the goal is to calculate the seasonal average. And in order to do this properly, is necessary to calculate the weighted average considering that each month has a different number of days.

Download the data

julia
url_path = "https://github.com/pydata/xarray-data/raw/master/rasm.nc"
 filename = Downloads.download(url_path, "rasm.nc")
 ds_o = Cube(filename)

WARNING

The following rebuild should not be necessary in the future, plus is unpractical to use for large data sets. Out of memory groupby currently is work in progress. Related to https://github.com/rafaqz/DimensionalData.jl/issues/642

julia
axs = dims(ds_o) # get the dimensions
 data = ds_o.data[:,:,:] # read the data
@@ -187,4 +187,4 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BEF5B6Ex.js";const h
     colgap!(fig.layout, 5)
     rowgap!(fig.layout, 5)
     fig
-end

which shows a good agreement with the results first published by Joe Hamman.

',62)]))}const N=i(t,[["render",l]]);export{y as __pageData,N as default}; +end

which shows a good agreement with the results first published by Joe Hamman.

',63)]))}const N=i(l,[["render",h]]);export{y as __pageData,N as default}; diff --git a/dev/assets/UserGuide_read.md.3Sna00BO.js b/dev/assets/UserGuide_read.md.B25a96ai.js similarity index 96% rename from dev/assets/UserGuide_read.md.3Sna00BO.js rename to dev/assets/UserGuide_read.md.B25a96ai.js index b5d1eb45..bfb70f21 100644 --- a/dev/assets/UserGuide_read.md.3Sna00BO.js +++ b/dev/assets/UserGuide_read.md.B25a96ai.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,a2 as i,o as t}from"./chunks/framework.BEF5B6Ex.js";const c=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),e={name:"UserGuide/read.md"};function p(l,s,o,r,d,h){return t(),n("div",null,s[0]||(s[0]=[i(`

Read YAXArrays and Datasets

This section describes how to read files, URLs, and directories into YAXArrays and datasets.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
+import{_ as a,c as n,a2 as i,o as t}from"./chunks/framework.BgERvflD.js";const c=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),e={name:"UserGuide/read.md"};function p(l,s,o,r,d,h){return t(),n("div",null,s[0]||(s[0]=[i(`

Read YAXArrays and Datasets

This section describes how to read files, URLs, and directories into YAXArrays and datasets.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
 using Zarr
 path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
 store = zopen(path, consolidated=true)
@@ -76,4 +76,4 @@ import{_ as a,c as n,a2 as i,o as t}from"./chunks/framework.BEF5B6Ex.js";const c
 
 path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif")
 # ds = open_dataset(path) # this is broken
-nothing
`,20)]))}const k=a(e,[["render",p]]);export{c as __pageData,k as default}; +nothing
[ Info: new driver key :gdal, updating backendlist.
`,21)]))}const k=a(e,[["render",p]]);export{c as __pageData,k as default}; diff --git a/dev/assets/UserGuide_read.md.3Sna00BO.lean.js b/dev/assets/UserGuide_read.md.B25a96ai.lean.js similarity index 96% rename from dev/assets/UserGuide_read.md.3Sna00BO.lean.js rename to dev/assets/UserGuide_read.md.B25a96ai.lean.js index b5d1eb45..bfb70f21 100644 --- a/dev/assets/UserGuide_read.md.3Sna00BO.lean.js +++ b/dev/assets/UserGuide_read.md.B25a96ai.lean.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,a2 as i,o as t}from"./chunks/framework.BEF5B6Ex.js";const c=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),e={name:"UserGuide/read.md"};function p(l,s,o,r,d,h){return t(),n("div",null,s[0]||(s[0]=[i(`

Read YAXArrays and Datasets

This section describes how to read files, URLs, and directories into YAXArrays and datasets.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
+import{_ as a,c as n,a2 as i,o as t}from"./chunks/framework.BgERvflD.js";const c=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),e={name:"UserGuide/read.md"};function p(l,s,o,r,d,h){return t(),n("div",null,s[0]||(s[0]=[i(`

Read YAXArrays and Datasets

This section describes how to read files, URLs, and directories into YAXArrays and datasets.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
 using Zarr
 path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
 store = zopen(path, consolidated=true)
@@ -76,4 +76,4 @@ import{_ as a,c as n,a2 as i,o as t}from"./chunks/framework.BEF5B6Ex.js";const c
 
 path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif")
 # ds = open_dataset(path) # this is broken
-nothing
`,20)]))}const k=a(e,[["render",p]]);export{c as __pageData,k as default}; +nothing
[ Info: new driver key :gdal, updating backendlist.
`,21)]))}const k=a(e,[["render",p]]);export{c as __pageData,k as default}; diff --git a/dev/assets/UserGuide_select.md.CoUJUkad.js b/dev/assets/UserGuide_select.md.DwHkhEFI.js similarity index 99% rename from dev/assets/UserGuide_select.md.CoUJUkad.js rename to dev/assets/UserGuide_select.md.DwHkhEFI.js index 2a172ee2..461fa20b 100644 --- a/dev/assets/UserGuide_select.md.CoUJUkad.js +++ b/dev/assets/UserGuide_select.md.DwHkhEFI.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,a2 as i,o as e}from"./chunks/framework.BEF5B6Ex.js";const u=JSON.parse('{"title":"Select YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/select.md","filePath":"UserGuide/select.md","lastUpdated":null}'),t={name:"UserGuide/select.md"};function p(l,s,h,o,k,d){return e(),n("div",null,s[0]||(s[0]=[i(`

Select YAXArrays and Datasets

The dimensions or axes of an YAXArray are named making it easier to subset or query certain ranges of an array. Let's open an example Dataset used to select certain elements:

julia
using YAXArrays
+import{_ as a,c as n,a2 as i,o as e}from"./chunks/framework.BgERvflD.js";const u=JSON.parse('{"title":"Select YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/select.md","filePath":"UserGuide/select.md","lastUpdated":null}'),t={name:"UserGuide/select.md"};function p(l,s,h,o,k,d){return e(),n("div",null,s[0]||(s[0]=[i(`

Select YAXArrays and Datasets

The dimensions or axes of an YAXArray are named making it easier to subset or query certain ranges of an array. Let's open an example Dataset used to select certain elements:

julia
using YAXArrays
 using NetCDF
 using Downloads: download
 
diff --git a/dev/assets/UserGuide_select.md.CoUJUkad.lean.js b/dev/assets/UserGuide_select.md.DwHkhEFI.lean.js
similarity index 99%
rename from dev/assets/UserGuide_select.md.CoUJUkad.lean.js
rename to dev/assets/UserGuide_select.md.DwHkhEFI.lean.js
index 2a172ee2..461fa20b 100644
--- a/dev/assets/UserGuide_select.md.CoUJUkad.lean.js
+++ b/dev/assets/UserGuide_select.md.DwHkhEFI.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,c as n,a2 as i,o as e}from"./chunks/framework.BEF5B6Ex.js";const u=JSON.parse('{"title":"Select YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/select.md","filePath":"UserGuide/select.md","lastUpdated":null}'),t={name:"UserGuide/select.md"};function p(l,s,h,o,k,d){return e(),n("div",null,s[0]||(s[0]=[i(`

Select YAXArrays and Datasets

The dimensions or axes of an YAXArray are named making it easier to subset or query certain ranges of an array. Let's open an example Dataset used to select certain elements:

julia
using YAXArrays
+import{_ as a,c as n,a2 as i,o as e}from"./chunks/framework.BgERvflD.js";const u=JSON.parse('{"title":"Select YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/select.md","filePath":"UserGuide/select.md","lastUpdated":null}'),t={name:"UserGuide/select.md"};function p(l,s,h,o,k,d){return e(),n("div",null,s[0]||(s[0]=[i(`

Select YAXArrays and Datasets

The dimensions or axes of an YAXArray are named making it easier to subset or query certain ranges of an array. Let's open an example Dataset used to select certain elements:

julia
using YAXArrays
 using NetCDF
 using Downloads: download
 
diff --git a/dev/assets/UserGuide_types.md.on_E3BSH.js b/dev/assets/UserGuide_types.md.R6FLmeYW.js
similarity index 97%
rename from dev/assets/UserGuide_types.md.on_E3BSH.js
rename to dev/assets/UserGuide_types.md.R6FLmeYW.js
index 0c2d2194..a2cf68ec 100644
--- a/dev/assets/UserGuide_types.md.on_E3BSH.js
+++ b/dev/assets/UserGuide_types.md.R6FLmeYW.js
@@ -1 +1 @@
-import{_ as a,c as t,a2 as r,o as s}from"./chunks/framework.BEF5B6Ex.js";const u=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/types.md","filePath":"UserGuide/types.md","lastUpdated":null}'),o={name:"UserGuide/types.md"};function n(i,e,d,l,c,h){return s(),t("div",null,e[0]||(e[0]=[r('

Types

This section describes the data structures used to work with n-dimensional arrays in YAXArrays.

YAXArray

An Array stores a sequence of ordered elements of the same type usually across multiple dimensions or axes. For example, one can measure temperature across all time points of the time dimension or brightness values of a picture across X and Y dimensions. A one dimensional array is called Vector and a two dimensional array is called a Matrix. In many Machine Learning libraries, arrays are also called tensors. Arrays are designed to store dense spatial-temporal data stored in a grid, whereas a collection of sparse points is usually stored in data frames or relational databases.

A DimArray as defined by DimensionalData.jl adds names to the dimensions and their axes ticks for a given Array. These names can be used to access the data, e.g., by date instead of just by integer position.

A YAXArray is a subtype of a AbstractDimArray and adds functions to load and process the named arrays. For example, it can also handle very large arrays stored on disk that are too big to fit in memory. In addition, it provides functions for parallel computation.

Dataset

A Dataset is an ordered dictionary of YAXArrays that usually share dimensions. For example, it can bundle arrays storing temperature and precipitation that are measured at the same time points and the same locations. One also can store a picture in a Dataset with three arrays containing brightness values for red green and blue, respectively. Internally, those arrays are still separated allowing to chose different element types for each array. Analog to the (NetCDF Data Model)[https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_data_model.html], a Dataset usually represents variables belonging to the same group.

(Data) Cube

A (Data) Cube is just a YAXArray in which arrays from a dataset are combined together by introducing a new dimension containing labels of which array the corresponding element came from. Unlike a Dataset, all arrays must have the same element type to be converted into a cube. This data structure is useful when we want to use all variables at once. For example, the arrays temperature and precipitation which are measured at the same locations and dates can be combined into a single cube. A more formal definition of Data Cubes are given in Mahecha et al. 2020

Dimension

A Dimension or axis as defined by DimensionalData.jl adds tick labels, e.g., to each row or column of an array. It's name is used to access particular subsets of that array.

',12)]))}const p=a(o,[["render",n]]);export{u as __pageData,p as default}; +import{_ as a,c as t,a2 as r,o as s}from"./chunks/framework.BgERvflD.js";const u=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/types.md","filePath":"UserGuide/types.md","lastUpdated":null}'),o={name:"UserGuide/types.md"};function n(i,e,d,l,c,h){return s(),t("div",null,e[0]||(e[0]=[r('

Types

This section describes the data structures used to work with n-dimensional arrays in YAXArrays.

YAXArray

An Array stores a sequence of ordered elements of the same type usually across multiple dimensions or axes. For example, one can measure temperature across all time points of the time dimension or brightness values of a picture across X and Y dimensions. A one dimensional array is called Vector and a two dimensional array is called a Matrix. In many Machine Learning libraries, arrays are also called tensors. Arrays are designed to store dense spatial-temporal data stored in a grid, whereas a collection of sparse points is usually stored in data frames or relational databases.

A DimArray as defined by DimensionalData.jl adds names to the dimensions and their axes ticks for a given Array. These names can be used to access the data, e.g., by date instead of just by integer position.

A YAXArray is a subtype of a AbstractDimArray and adds functions to load and process the named arrays. For example, it can also handle very large arrays stored on disk that are too big to fit in memory. In addition, it provides functions for parallel computation.

Dataset

A Dataset is an ordered dictionary of YAXArrays that usually share dimensions. For example, it can bundle arrays storing temperature and precipitation that are measured at the same time points and the same locations. One also can store a picture in a Dataset with three arrays containing brightness values for red green and blue, respectively. Internally, those arrays are still separated allowing to chose different element types for each array. Analog to the (NetCDF Data Model)[https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_data_model.html], a Dataset usually represents variables belonging to the same group.

(Data) Cube

A (Data) Cube is just a YAXArray in which arrays from a dataset are combined together by introducing a new dimension containing labels of which array the corresponding element came from. Unlike a Dataset, all arrays must have the same element type to be converted into a cube. This data structure is useful when we want to use all variables at once. For example, the arrays temperature and precipitation which are measured at the same locations and dates can be combined into a single cube. A more formal definition of Data Cubes are given in Mahecha et al. 2020

Dimension

A Dimension or axis as defined by DimensionalData.jl adds tick labels, e.g., to each row or column of an array. It's name is used to access particular subsets of that array.

',12)]))}const p=a(o,[["render",n]]);export{u as __pageData,p as default}; diff --git a/dev/assets/UserGuide_types.md.on_E3BSH.lean.js b/dev/assets/UserGuide_types.md.R6FLmeYW.lean.js similarity index 97% rename from dev/assets/UserGuide_types.md.on_E3BSH.lean.js rename to dev/assets/UserGuide_types.md.R6FLmeYW.lean.js index 0c2d2194..a2cf68ec 100644 --- a/dev/assets/UserGuide_types.md.on_E3BSH.lean.js +++ b/dev/assets/UserGuide_types.md.R6FLmeYW.lean.js @@ -1 +1 @@ -import{_ as a,c as t,a2 as r,o as s}from"./chunks/framework.BEF5B6Ex.js";const u=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/types.md","filePath":"UserGuide/types.md","lastUpdated":null}'),o={name:"UserGuide/types.md"};function n(i,e,d,l,c,h){return s(),t("div",null,e[0]||(e[0]=[r('

Types

This section describes the data structures used to work with n-dimensional arrays in YAXArrays.

YAXArray

An Array stores a sequence of ordered elements of the same type usually across multiple dimensions or axes. For example, one can measure temperature across all time points of the time dimension or brightness values of a picture across X and Y dimensions. A one dimensional array is called Vector and a two dimensional array is called a Matrix. In many Machine Learning libraries, arrays are also called tensors. Arrays are designed to store dense spatial-temporal data stored in a grid, whereas a collection of sparse points is usually stored in data frames or relational databases.

A DimArray as defined by DimensionalData.jl adds names to the dimensions and their axes ticks for a given Array. These names can be used to access the data, e.g., by date instead of just by integer position.

A YAXArray is a subtype of a AbstractDimArray and adds functions to load and process the named arrays. For example, it can also handle very large arrays stored on disk that are too big to fit in memory. In addition, it provides functions for parallel computation.

Dataset

A Dataset is an ordered dictionary of YAXArrays that usually share dimensions. For example, it can bundle arrays storing temperature and precipitation that are measured at the same time points and the same locations. One also can store a picture in a Dataset with three arrays containing brightness values for red green and blue, respectively. Internally, those arrays are still separated allowing to chose different element types for each array. Analog to the (NetCDF Data Model)[https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_data_model.html], a Dataset usually represents variables belonging to the same group.

(Data) Cube

A (Data) Cube is just a YAXArray in which arrays from a dataset are combined together by introducing a new dimension containing labels of which array the corresponding element came from. Unlike a Dataset, all arrays must have the same element type to be converted into a cube. This data structure is useful when we want to use all variables at once. For example, the arrays temperature and precipitation which are measured at the same locations and dates can be combined into a single cube. A more formal definition of Data Cubes are given in Mahecha et al. 2020

Dimension

A Dimension or axis as defined by DimensionalData.jl adds tick labels, e.g., to each row or column of an array. It's name is used to access particular subsets of that array.

',12)]))}const p=a(o,[["render",n]]);export{u as __pageData,p as default}; +import{_ as a,c as t,a2 as r,o as s}from"./chunks/framework.BgERvflD.js";const u=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/types.md","filePath":"UserGuide/types.md","lastUpdated":null}'),o={name:"UserGuide/types.md"};function n(i,e,d,l,c,h){return s(),t("div",null,e[0]||(e[0]=[r('

Types

This section describes the data structures used to work with n-dimensional arrays in YAXArrays.

YAXArray

An Array stores a sequence of ordered elements of the same type usually across multiple dimensions or axes. For example, one can measure temperature across all time points of the time dimension or brightness values of a picture across X and Y dimensions. A one dimensional array is called Vector and a two dimensional array is called a Matrix. In many Machine Learning libraries, arrays are also called tensors. Arrays are designed to store dense spatial-temporal data stored in a grid, whereas a collection of sparse points is usually stored in data frames or relational databases.

A DimArray as defined by DimensionalData.jl adds names to the dimensions and their axes ticks for a given Array. These names can be used to access the data, e.g., by date instead of just by integer position.

A YAXArray is a subtype of a AbstractDimArray and adds functions to load and process the named arrays. For example, it can also handle very large arrays stored on disk that are too big to fit in memory. In addition, it provides functions for parallel computation.

Dataset

A Dataset is an ordered dictionary of YAXArrays that usually share dimensions. For example, it can bundle arrays storing temperature and precipitation that are measured at the same time points and the same locations. One also can store a picture in a Dataset with three arrays containing brightness values for red green and blue, respectively. Internally, those arrays are still separated allowing to chose different element types for each array. Analog to the (NetCDF Data Model)[https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_data_model.html], a Dataset usually represents variables belonging to the same group.

(Data) Cube

A (Data) Cube is just a YAXArray in which arrays from a dataset are combined together by introducing a new dimension containing labels of which array the corresponding element came from. Unlike a Dataset, all arrays must have the same element type to be converted into a cube. This data structure is useful when we want to use all variables at once. For example, the arrays temperature and precipitation which are measured at the same locations and dates can be combined into a single cube. A more formal definition of Data Cubes are given in Mahecha et al. 2020

Dimension

A Dimension or axis as defined by DimensionalData.jl adds tick labels, e.g., to each row or column of an array. It's name is used to access particular subsets of that array.

',12)]))}const p=a(o,[["render",n]]);export{u as __pageData,p as default}; diff --git a/dev/assets/UserGuide_write.md.D_CbCNNM.js b/dev/assets/UserGuide_write.md.CxpbTqhY.js similarity index 94% rename from dev/assets/UserGuide_write.md.D_CbCNNM.js rename to dev/assets/UserGuide_write.md.CxpbTqhY.js index e38f5e7a..bc8d0e93 100644 --- a/dev/assets/UserGuide_write.md.D_CbCNNM.js +++ b/dev/assets/UserGuide_write.md.CxpbTqhY.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a2 as e,o as t}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Write YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/write.md","filePath":"UserGuide/write.md","lastUpdated":null}'),n={name:"UserGuide/write.md"};function l(p,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[e(`

Write YAXArrays and Datasets

Create an example Dataset:

julia
using YAXArrays
+import{_ as i,c as a,a2 as e,o as t}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Write YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/write.md","filePath":"UserGuide/write.md","lastUpdated":null}'),n={name:"UserGuide/write.md"};function l(p,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[e(`

Write YAXArrays and Datasets

Create an example Dataset:

julia
using YAXArrays
 using NetCDF
 using Downloads: download
 
@@ -14,7 +14,7 @@ import{_ as i,c as a,a2 as e,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
 
 Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Write Zarr

Save a single YAXArray to a directory:

julia
using Zarr
 savecube(ds.tos, "tos.zarr", driver=:zarr)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.zarr", driver=:zarr)

Write NetCDF

Save a single YAXArray to a directory:

julia
using NetCDF
-savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

# YAXArrays.Datasets.savedatasetFunction.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
+savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

# YAXArrays.Datasets.savedatasetFunction.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
 savedataset(ds2, path="ds.zarr", backend=:zarr, append=true)
julia
julia> open_dataset("ds.zarr", driver=:zarr)
YAXArray Dataset
 Shared Axes:
 None
@@ -52,15 +52,15 @@ import{_ as i,c as a,a2 as e,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
 Variables: 
 skeleton
julia
ds_s = savedataset(ds, path="skeleton.zarr", driver=:zarr, skeleton=true, overwrite=true)

Update values of dataset

Now, we show how to start updating the array values. In order to do it we need to open the dataset first with writing w rights as follows:

julia
ds_open = zopen("skeleton.zarr", "w")
 ds_array = ds_open["skeleton"]
ZArray{Float32} of size 5 x 4 x 5

and then we simply update values by indexing them where necessary

julia
ds_array[:,:,1] = rand(Float32, 5, 4) # this will update values directly into disk!
5×4 Matrix{Float32}:
- 0.945332   0.00105304  0.319603  0.102103
- 0.0325738  0.474451    0.427189  0.0370204
- 0.925434   0.449373    0.637887  0.743935
- 0.793632   0.256353    0.564111  0.349282
- 0.982386   0.602297    0.766762  0.0892158

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
+ 0.846743  0.0140747  0.97676    0.145289
+ 0.575242  0.52048    0.538205   0.859388
+ 0.26917   0.59869    0.921279   0.107742
+ 0.242777  0.064759   0.732488   0.754006
+ 0.204435  0.401787   0.0058406  0.674613

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
 ds_array = ds_open["skeleton"]
 ds_array.data[:,:,1]
5×4 Matrix{Union{Missing, Float32}}:
- 0.945332   0.00105304  0.319603  0.102103
- 0.0325738  0.474451    0.427189  0.0370204
- 0.925434   0.449373    0.637887  0.743935
- 0.793632   0.256353    0.564111  0.349282
- 0.982386   0.602297    0.766762  0.0892158

indeed, those entries had been updated.

`,56)]))}const c=i(n,[["render",l]]);export{g as __pageData,c as default}; + 0.846743 0.0140747 0.97676 0.145289 + 0.575242 0.52048 0.538205 0.859388 + 0.26917 0.59869 0.921279 0.107742 + 0.242777 0.064759 0.732488 0.754006 + 0.204435 0.401787 0.0058406 0.674613

indeed, those entries had been updated.

`,56)]))}const c=i(n,[["render",l]]);export{g as __pageData,c as default}; diff --git a/dev/assets/UserGuide_write.md.D_CbCNNM.lean.js b/dev/assets/UserGuide_write.md.CxpbTqhY.lean.js similarity index 94% rename from dev/assets/UserGuide_write.md.D_CbCNNM.lean.js rename to dev/assets/UserGuide_write.md.CxpbTqhY.lean.js index e38f5e7a..bc8d0e93 100644 --- a/dev/assets/UserGuide_write.md.D_CbCNNM.lean.js +++ b/dev/assets/UserGuide_write.md.CxpbTqhY.lean.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a2 as e,o as t}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Write YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/write.md","filePath":"UserGuide/write.md","lastUpdated":null}'),n={name:"UserGuide/write.md"};function l(p,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[e(`

Write YAXArrays and Datasets

Create an example Dataset:

julia
using YAXArrays
+import{_ as i,c as a,a2 as e,o as t}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Write YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/write.md","filePath":"UserGuide/write.md","lastUpdated":null}'),n={name:"UserGuide/write.md"};function l(p,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[e(`

Write YAXArrays and Datasets

Create an example Dataset:

julia
using YAXArrays
 using NetCDF
 using Downloads: download
 
@@ -14,7 +14,7 @@ import{_ as i,c as a,a2 as e,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
 
 Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Write Zarr

Save a single YAXArray to a directory:

julia
using Zarr
 savecube(ds.tos, "tos.zarr", driver=:zarr)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.zarr", driver=:zarr)

Write NetCDF

Save a single YAXArray to a directory:

julia
using NetCDF
-savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

# YAXArrays.Datasets.savedatasetFunction.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
+savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

# YAXArrays.Datasets.savedatasetFunction.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
 savedataset(ds2, path="ds.zarr", backend=:zarr, append=true)
julia
julia> open_dataset("ds.zarr", driver=:zarr)
YAXArray Dataset
 Shared Axes:
 None
@@ -52,15 +52,15 @@ import{_ as i,c as a,a2 as e,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
 Variables: 
 skeleton
julia
ds_s = savedataset(ds, path="skeleton.zarr", driver=:zarr, skeleton=true, overwrite=true)

Update values of dataset

Now, we show how to start updating the array values. In order to do it we need to open the dataset first with writing w rights as follows:

julia
ds_open = zopen("skeleton.zarr", "w")
 ds_array = ds_open["skeleton"]
ZArray{Float32} of size 5 x 4 x 5

and then we simply update values by indexing them where necessary

julia
ds_array[:,:,1] = rand(Float32, 5, 4) # this will update values directly into disk!
5×4 Matrix{Float32}:
- 0.945332   0.00105304  0.319603  0.102103
- 0.0325738  0.474451    0.427189  0.0370204
- 0.925434   0.449373    0.637887  0.743935
- 0.793632   0.256353    0.564111  0.349282
- 0.982386   0.602297    0.766762  0.0892158

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
+ 0.846743  0.0140747  0.97676    0.145289
+ 0.575242  0.52048    0.538205   0.859388
+ 0.26917   0.59869    0.921279   0.107742
+ 0.242777  0.064759   0.732488   0.754006
+ 0.204435  0.401787   0.0058406  0.674613

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
 ds_array = ds_open["skeleton"]
 ds_array.data[:,:,1]
5×4 Matrix{Union{Missing, Float32}}:
- 0.945332   0.00105304  0.319603  0.102103
- 0.0325738  0.474451    0.427189  0.0370204
- 0.925434   0.449373    0.637887  0.743935
- 0.793632   0.256353    0.564111  0.349282
- 0.982386   0.602297    0.766762  0.0892158

indeed, those entries had been updated.

`,56)]))}const c=i(n,[["render",l]]);export{g as __pageData,c as default}; + 0.846743 0.0140747 0.97676 0.145289 + 0.575242 0.52048 0.538205 0.859388 + 0.26917 0.59869 0.921279 0.107742 + 0.242777 0.064759 0.732488 0.754006 + 0.204435 0.401787 0.0058406 0.674613

indeed, those entries had been updated.

`,56)]))}const c=i(n,[["render",l]]);export{g as __pageData,c as default}; diff --git a/dev/assets/api.md.CFKx0BAq.js b/dev/assets/api.md.Czz2cpaE.js similarity index 91% rename from dev/assets/api.md.CFKx0BAq.js rename to dev/assets/api.md.Czz2cpaE.js index 85afab8c..df42b8cf 100644 --- a/dev/assets/api.md.CFKx0BAq.js +++ b/dev/assets/api.md.Czz2cpaE.js @@ -1,13 +1,13 @@ -import{_ as a,c as s,a2 as i,o as t}from"./chunks/framework.BEF5B6Ex.js";const u=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),r={name:"api.md"};function o(l,e,n,d,p,c){return t(),s("div",null,e[0]||(e[0]=[i(`

API Reference

This section describes all available functions of this package.

Public API

# YAXArrays.getAxisMethod.
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.CubesModule.

The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that

source


# YAXArrays.Cubes.YAXArrayType.
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source


# YAXArrays.Cubes.caxesFunction.

Returns the axes of a Cube

source


# YAXArrays.Cubes.caxesMethod.
julia
caxes

Embeds Cube inside a new Cube

source


# YAXArrays.Cubes.concatenatecubesMethod.
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source


# YAXArrays.Cubes.readcubedataMethod.
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Cubes.subsetcubeFunction.

This function calculates a subset of a cube's data

source


# YAXArrays.DAT.InDimsType.
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source


# YAXArrays.DAT.MovingWindowType.
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source


# YAXArrays.DAT.OutDimsMethod.
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source


# YAXArrays.DAT.CubeTableMethod.
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source


# YAXArrays.DAT.cubefittableMethod.
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source


# YAXArrays.DAT.fittableMethod.
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)
+import{_ as a,c as s,a2 as i,o as t}from"./chunks/framework.BgERvflD.js";const u=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),r={name:"api.md"};function o(l,e,d,n,p,c){return t(),s("div",null,e[0]||(e[0]=[i(`

API Reference

This section describes all available functions of this package.

Public API

# YAXArrays.getAxisMethod.
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.CubesModule.

The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that

source


# YAXArrays.Cubes.YAXArrayType.
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source


# YAXArrays.Cubes.caxesFunction.

Returns the axes of a Cube

source


# YAXArrays.Cubes.caxesMethod.
julia
caxes

Embeds Cube inside a new Cube

source


# YAXArrays.Cubes.concatenatecubesMethod.
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source


# YAXArrays.Cubes.readcubedataMethod.
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Cubes.subsetcubeFunction.

This function calculates a subset of a cube's data

source


# YAXArrays.DAT.InDimsType.
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source


# YAXArrays.DAT.MovingWindowType.
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source


# YAXArrays.DAT.OutDimsMethod.
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source


# YAXArrays.DAT.CubeTableMethod.
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source


# YAXArrays.DAT.cubefittableMethod.
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source


# YAXArrays.DAT.fittableMethod.
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)
 
 Map a given function \`fun\` over slices of all cubes of the dataset \`ds\`. 
 Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.
 For Datasets, only one output cube can be specified.
 In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.
 
-For the specific keyword arguments see the docstring of the mapCube function for cubes.

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" ormax_cache=1GB\`\`\` defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source


# YAXArrays.Datasets.DatasetType.
julia
Dataset object which stores an \`OrderedDict\` of YAXArrays with Symbol keys.
+For the specific keyword arguments see the docstring of the mapCube function for cubes.

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" ormax_cache=1GB\`\`\` defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source


# YAXArrays.Datasets.DatasetType.
julia
Dataset object which stores an \`OrderedDict\` of YAXArrays with Symbol keys.
 a dictionary of CubeAxes and a Dictionary of general properties.
-A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.

source


# YAXArrays.Datasets.DatasetMethod.

Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source


# YAXArrays.Datasets.CubeMethod.
julia
Cube(ds::Dataset; joinname="Variable")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source


# YAXArrays.Datasets.open_datasetMethod.

open_dataset(g; driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

source


# YAXArrays.Datasets.savecubeMethod.
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source


# YAXArrays.Datasets.savedatasetMethod.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


# YAXArrays.Datasets.to_datasetMethod.

to_dataset(c;datasetaxis = "Variable", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a "DatasetAxis" i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername

source


Internal API

# YAXArrays.YAXDefaultsConstant.

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source


# YAXArrays.findAxisMethod.
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.getOutAxisMethod.
julia
getOutAxis

source


# YAXArrays.get_descriptorMethod.
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source


# YAXArrays.match_axisMethod.
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
+A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.

source


# YAXArrays.Datasets.DatasetMethod.

Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source


# YAXArrays.Datasets.CubeMethod.
julia
Cube(ds::Dataset; joinname="Variable")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source


# YAXArrays.Datasets.open_datasetMethod.

open_dataset(g; driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

source


# YAXArrays.Datasets.savecubeMethod.
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source


# YAXArrays.Datasets.savedatasetMethod.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


# YAXArrays.Datasets.to_datasetMethod.

to_dataset(c;datasetaxis = "Variable", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a "DatasetAxis" i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername

source


Internal API

# YAXArrays.YAXDefaultsConstant.

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source


# YAXArrays.findAxisMethod.
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.getOutAxisMethod.
julia
getOutAxis

source


# YAXArrays.get_descriptorMethod.
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source


# YAXArrays.match_axisMethod.
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
 This is used to find different axes and to make certain axis description the same.
-For example to disregard differences of captialisation.

source


# YAXArrays.Cubes.CleanMeType.
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source


# YAXArrays.Cubes.cleanMethod.
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source


# YAXArrays.Cubes.copydataMethod.
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source


# YAXArrays.Cubes.optifuncMethod.
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source


# YAXArrays.DAT.DATConfigType.

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::Tuple{Vararg{YAXArrays.DAT.InputCube, NIN}} where NIN: The input data cubes

  • outcubes::Tuple{Vararg{YAXArrays.DAT.OutputCube, NOUT}} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source


# YAXArrays.DAT.InputCubeType.

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source


# YAXArrays.DAT.OutputCubeType.

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source


# YAXArrays.DAT.YAXColumnType.
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source


# YAXArrays.DAT.cmpcachmissesMethod.

Function that compares two cache miss specifiers by their importance

source


# YAXArrays.DAT.getFrontPermMethod.

Calculate an axis permutation that brings the wanted dimensions to the front

source


# YAXArrays.DAT.getLoopCacheSizeMethod.

Calculate optimal Cache size to DAT operation

source


# YAXArrays.DAT.getOuttypeMethod.
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source


# YAXArrays.DAT.getloopchunksMethod.
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.
-This computation of the size of the chunks is handled by [\`DiskArrays.approx_chunksize\`](@ref)

source


# YAXArrays.DAT.permuteloopaxesMethod.
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Datasets.collectfromhandleMethod.

Extracts a YAXArray from a dataset handle that was just created from a arrayinfo

source


# YAXArrays.Datasets.createdatasetMethod.

function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source


# YAXArrays.Datasets.getarrayinfoMethod.

Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair

source


# YAXArrays.Datasets.testrangeMethod.

Test if data in x can be approximated by a step range

source


`,100)]))}const b=a(r,[["render",o]]);export{u as __pageData,b as default}; +For example to disregard differences of captialisation.

source


# YAXArrays.Cubes.CleanMeType.
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source


# YAXArrays.Cubes.cleanMethod.
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source


# YAXArrays.Cubes.copydataMethod.
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source


# YAXArrays.Cubes.optifuncMethod.
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source


# YAXArrays.DAT.DATConfigType.

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::Tuple{Vararg{YAXArrays.DAT.InputCube, NIN}} where NIN: The input data cubes

  • outcubes::Tuple{Vararg{YAXArrays.DAT.OutputCube, NOUT}} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source


# YAXArrays.DAT.InputCubeType.

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source


# YAXArrays.DAT.OutputCubeType.

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source


# YAXArrays.DAT.YAXColumnType.
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source


# YAXArrays.DAT.cmpcachmissesMethod.

Function that compares two cache miss specifiers by their importance

source


# YAXArrays.DAT.getFrontPermMethod.

Calculate an axis permutation that brings the wanted dimensions to the front

source


# YAXArrays.DAT.getLoopCacheSizeMethod.

Calculate optimal Cache size to DAT operation

source


# YAXArrays.DAT.getOuttypeMethod.
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source


# YAXArrays.DAT.getloopchunksMethod.
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.
+This computation of the size of the chunks is handled by [\`DiskArrays.approx_chunksize\`](@ref)

source


# YAXArrays.DAT.permuteloopaxesMethod.
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Datasets.collectfromhandleMethod.

Extracts a YAXArray from a dataset handle that was just created from a arrayinfo

source


# YAXArrays.Datasets.createdatasetMethod.

function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source


# YAXArrays.Datasets.getarrayinfoMethod.

Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair

source


# YAXArrays.Datasets.testrangeMethod.

Test if data in x can be approximated by a step range

source


`,100)]))}const b=a(r,[["render",o]]);export{u as __pageData,b as default}; diff --git a/dev/assets/api.md.CFKx0BAq.lean.js b/dev/assets/api.md.Czz2cpaE.lean.js similarity index 91% rename from dev/assets/api.md.CFKx0BAq.lean.js rename to dev/assets/api.md.Czz2cpaE.lean.js index 85afab8c..df42b8cf 100644 --- a/dev/assets/api.md.CFKx0BAq.lean.js +++ b/dev/assets/api.md.Czz2cpaE.lean.js @@ -1,13 +1,13 @@ -import{_ as a,c as s,a2 as i,o as t}from"./chunks/framework.BEF5B6Ex.js";const u=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),r={name:"api.md"};function o(l,e,n,d,p,c){return t(),s("div",null,e[0]||(e[0]=[i(`

API Reference

This section describes all available functions of this package.

Public API

# YAXArrays.getAxisMethod.
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.CubesModule.

The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that

source


# YAXArrays.Cubes.YAXArrayType.
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source


# YAXArrays.Cubes.caxesFunction.

Returns the axes of a Cube

source


# YAXArrays.Cubes.caxesMethod.
julia
caxes

Embeds Cube inside a new Cube

source


# YAXArrays.Cubes.concatenatecubesMethod.
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source


# YAXArrays.Cubes.readcubedataMethod.
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Cubes.subsetcubeFunction.

This function calculates a subset of a cube's data

source


# YAXArrays.DAT.InDimsType.
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source


# YAXArrays.DAT.MovingWindowType.
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source


# YAXArrays.DAT.OutDimsMethod.
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source


# YAXArrays.DAT.CubeTableMethod.
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source


# YAXArrays.DAT.cubefittableMethod.
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source


# YAXArrays.DAT.fittableMethod.
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)
+import{_ as a,c as s,a2 as i,o as t}from"./chunks/framework.BgERvflD.js";const u=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),r={name:"api.md"};function o(l,e,d,n,p,c){return t(),s("div",null,e[0]||(e[0]=[i(`

API Reference

This section describes all available functions of this package.

Public API

# YAXArrays.getAxisMethod.
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.CubesModule.

The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that

source


# YAXArrays.Cubes.YAXArrayType.
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source


# YAXArrays.Cubes.caxesFunction.

Returns the axes of a Cube

source


# YAXArrays.Cubes.caxesMethod.
julia
caxes

Embeds Cube inside a new Cube

source


# YAXArrays.Cubes.concatenatecubesMethod.
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source


# YAXArrays.Cubes.readcubedataMethod.
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Cubes.subsetcubeFunction.

This function calculates a subset of a cube's data

source


# YAXArrays.DAT.InDimsType.
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source


# YAXArrays.DAT.MovingWindowType.
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source


# YAXArrays.DAT.OutDimsMethod.
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source


# YAXArrays.DAT.CubeTableMethod.
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source


# YAXArrays.DAT.cubefittableMethod.
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source


# YAXArrays.DAT.fittableMethod.
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)
 
 Map a given function \`fun\` over slices of all cubes of the dataset \`ds\`. 
 Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.
 For Datasets, only one output cube can be specified.
 In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.
 
-For the specific keyword arguments see the docstring of the mapCube function for cubes.

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" ormax_cache=1GB\`\`\` defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source


# YAXArrays.Datasets.DatasetType.
julia
Dataset object which stores an \`OrderedDict\` of YAXArrays with Symbol keys.
+For the specific keyword arguments see the docstring of the mapCube function for cubes.

source


# YAXArrays.DAT.mapCubeMethod.
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" ormax_cache=1GB\`\`\` defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source


# YAXArrays.Datasets.DatasetType.
julia
Dataset object which stores an \`OrderedDict\` of YAXArrays with Symbol keys.
 a dictionary of CubeAxes and a Dictionary of general properties.
-A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.

source


# YAXArrays.Datasets.DatasetMethod.

Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source


# YAXArrays.Datasets.CubeMethod.
julia
Cube(ds::Dataset; joinname="Variable")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source


# YAXArrays.Datasets.open_datasetMethod.

open_dataset(g; driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

source


# YAXArrays.Datasets.savecubeMethod.
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source


# YAXArrays.Datasets.savedatasetMethod.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


# YAXArrays.Datasets.to_datasetMethod.

to_dataset(c;datasetaxis = "Variable", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a "DatasetAxis" i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername

source


Internal API

# YAXArrays.YAXDefaultsConstant.

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source


# YAXArrays.findAxisMethod.
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.getOutAxisMethod.
julia
getOutAxis

source


# YAXArrays.get_descriptorMethod.
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source


# YAXArrays.match_axisMethod.
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
+A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.

source


# YAXArrays.Datasets.DatasetMethod.

Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source


# YAXArrays.Datasets.CubeMethod.
julia
Cube(ds::Dataset; joinname="Variable")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source


# YAXArrays.Datasets.open_datasetMethod.

open_dataset(g; driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

source


# YAXArrays.Datasets.savecubeMethod.
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source


# YAXArrays.Datasets.savedatasetMethod.

savedataset(ds::Dataset; path = "", persist = nothing, overwrite = false, append = false, skeleton=false, backend = :all, driver = backend, max_cache = 5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite = true, deletes ALL your data and it will create a new file.

source


# YAXArrays.Datasets.to_datasetMethod.

to_dataset(c;datasetaxis = "Variable", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a "DatasetAxis" i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername

source


Internal API

# YAXArrays.YAXDefaultsConstant.

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source


# YAXArrays.findAxisMethod.
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source


# YAXArrays.getOutAxisMethod.
julia
getOutAxis

source


# YAXArrays.get_descriptorMethod.
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source


# YAXArrays.match_axisMethod.
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
 This is used to find different axes and to make certain axis description the same.
-For example to disregard differences of captialisation.

source


# YAXArrays.Cubes.CleanMeType.
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source


# YAXArrays.Cubes.cleanMethod.
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source


# YAXArrays.Cubes.copydataMethod.
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source


# YAXArrays.Cubes.optifuncMethod.
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source


# YAXArrays.DAT.DATConfigType.

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::Tuple{Vararg{YAXArrays.DAT.InputCube, NIN}} where NIN: The input data cubes

  • outcubes::Tuple{Vararg{YAXArrays.DAT.OutputCube, NOUT}} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source


# YAXArrays.DAT.InputCubeType.

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source


# YAXArrays.DAT.OutputCubeType.

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source


# YAXArrays.DAT.YAXColumnType.
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source


# YAXArrays.DAT.cmpcachmissesMethod.

Function that compares two cache miss specifiers by their importance

source


# YAXArrays.DAT.getFrontPermMethod.

Calculate an axis permutation that brings the wanted dimensions to the front

source


# YAXArrays.DAT.getLoopCacheSizeMethod.

Calculate optimal Cache size to DAT operation

source


# YAXArrays.DAT.getOuttypeMethod.
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source


# YAXArrays.DAT.getloopchunksMethod.
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.
-This computation of the size of the chunks is handled by [\`DiskArrays.approx_chunksize\`](@ref)

source


# YAXArrays.DAT.permuteloopaxesMethod.
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Datasets.collectfromhandleMethod.

Extracts a YAXArray from a dataset handle that was just created from a arrayinfo

source


# YAXArrays.Datasets.createdatasetMethod.

function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source


# YAXArrays.Datasets.getarrayinfoMethod.

Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair

source


# YAXArrays.Datasets.testrangeMethod.

Test if data in x can be approximated by a step range

source


`,100)]))}const b=a(r,[["render",o]]);export{u as __pageData,b as default}; +For example to disregard differences of captialisation.

source


# YAXArrays.Cubes.CleanMeType.
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source


# YAXArrays.Cubes.cleanMethod.
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source


# YAXArrays.Cubes.copydataMethod.
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source


# YAXArrays.Cubes.optifuncMethod.
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source


# YAXArrays.DAT.DATConfigType.

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::Tuple{Vararg{YAXArrays.DAT.InputCube, NIN}} where NIN: The input data cubes

  • outcubes::Tuple{Vararg{YAXArrays.DAT.OutputCube, NOUT}} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source


# YAXArrays.DAT.InputCubeType.

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source


# YAXArrays.DAT.OutputCubeType.

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source


# YAXArrays.DAT.YAXColumnType.
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source


# YAXArrays.DAT.cmpcachmissesMethod.

Function that compares two cache miss specifiers by their importance

source


# YAXArrays.DAT.getFrontPermMethod.

Calculate an axis permutation that brings the wanted dimensions to the front

source


# YAXArrays.DAT.getLoopCacheSizeMethod.

Calculate optimal Cache size to DAT operation

source


# YAXArrays.DAT.getOuttypeMethod.
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source


# YAXArrays.DAT.getloopchunksMethod.
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.
+This computation of the size of the chunks is handled by [\`DiskArrays.approx_chunksize\`](@ref)

source


# YAXArrays.DAT.permuteloopaxesMethod.
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source


# YAXArrays.Cubes.setchunksMethod.
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source


# YAXArrays.Datasets.collectfromhandleMethod.

Extracts a YAXArray from a dataset handle that was just created from a arrayinfo

source


# YAXArrays.Datasets.createdatasetMethod.

function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variable" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source


# YAXArrays.Datasets.getarrayinfoMethod.

Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair

source


# YAXArrays.Datasets.testrangeMethod.

Test if data in x can be approximated by a step range

source


`,100)]))}const b=a(r,[["render",o]]);export{u as __pageData,b as default}; diff --git a/dev/assets/app.Dd7V_cwz.js b/dev/assets/app.By04Axg6.js similarity index 90% rename from dev/assets/app.Dd7V_cwz.js rename to dev/assets/app.By04Axg6.js index 8b21ff0c..9c92d0fa 100644 --- a/dev/assets/app.Dd7V_cwz.js +++ b/dev/assets/app.By04Axg6.js @@ -1 +1 @@ -import{R as p}from"./chunks/theme.CrY9T1lC.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a5 as S}from"./chunks/framework.BEF5B6Ex.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; +import{R as p}from"./chunks/theme.Cr_eIWnh.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a5 as S}from"./chunks/framework.BgERvflD.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/dev/assets/jvfserh.96k_BqPR.jpeg b/dev/assets/buxplhm.96k_BqPR.jpeg similarity index 100% rename from dev/assets/jvfserh.96k_BqPR.jpeg rename to dev/assets/buxplhm.96k_BqPR.jpeg diff --git a/dev/assets/bvbfegb.Bcoj2HvJ.jpeg b/dev/assets/bvbfegb.Bcoj2HvJ.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ce6c9811fc34f64b099a8373336352d6b50ded9a GIT binary patch literal 38202 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 in a?Nt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Re=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{V as Ot,p as se,h as pe,aj as Xe,ak as Rt,al as Ct,q as je,am as Mt,d as At,D as ye,an as et,ao as Lt,ap as Dt,s as zt,aq as Pt,v as Ce,P as ue,O as we,ar as jt,as as Vt,W as $t,R as Bt,$ as Wt,o as q,b as Kt,j as S,a0 as Jt,k as D,at as Ut,au as qt,av as Gt,c as Y,n as tt,e as xe,C as st,F as nt,a as de,t as he,aw as Ht,ax as it,ay as Qt,a9 as Yt,af as Zt,az as Xt,_ as es}from"./framework.BEF5B6Ex.js";import{u as ts,d as ss}from"./theme.CrY9T1lC.js";const ns={root:()=>Ot(()=>import("./@localSearchIndexroot.on7n0yqx.js"),[])};/*! +var Nt=Object.defineProperty;var Ft=(a,e,t)=>e in a?Nt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Re=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{V as Ot,p as se,h as pe,aj as Xe,ak as Rt,al as Ct,q as je,am as Mt,d as At,D as ye,an as et,ao as Lt,ap as Dt,s as zt,aq as Pt,v as Ce,P as ue,O as we,ar as jt,as as Vt,W as $t,R as Bt,$ as Wt,o as q,b as Kt,j as S,a0 as Jt,k as D,at as Ut,au as qt,av as Gt,c as Y,n as tt,e as xe,C as st,F as nt,a as de,t as he,aw as Ht,ax as it,ay as Qt,a9 as Yt,af as Zt,az as Xt,_ as es}from"./framework.BgERvflD.js";import{u as ts,d as ss}from"./theme.Cr_eIWnh.js";const ns={root:()=>Ot(()=>import("./@localSearchIndexroot.DyoBPTFo.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var vt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ie=vt.join(","),mt=typeof Element>"u",ie=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,ke=!mt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Ne=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},is=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},gt=function(e,t,s){if(Ne(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ie));return t&&ie.call(e,Ie)&&n.unshift(e),n=n.filter(s),n},bt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Ne(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ie.call(i,Ie);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var v=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),p=!Ne(v,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(v&&p){var b=a(v===!0?i.children:v.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},yt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ne=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||is(e))&&!yt(e)?0:e.tabIndex},rs=function(e,t){var s=ne(e);return s<0&&t&&!yt(e)?0:s},as=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},os=function(e){return wt(e)&&e.type==="hidden"},ls=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},cs=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ie.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=ke(e);if(l&&!l.shadowRoot&&n(l)===!0)return rt(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(fs(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return rt(e);return!1},vs=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},gs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=rs(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(as).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},bs=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:Ve.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:ms}):s=gt(e,t.includeContainer,Ve.bind(null,t)),gs(s)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:Fe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=gt(e,t.includeContainer,Fe.bind(null,t)),s},re=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ie.call(e,Ie)===!1?!1:Ve(t,e)},ws=vt.concat("iframe").join(","),Me=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ie.call(e,ws)===!1?!1:Fe(t,e)};/*! diff --git a/dev/assets/chunks/framework.BEF5B6Ex.js b/dev/assets/chunks/framework.BEF5B6Ex.js deleted file mode 100644 index 5e61985e..00000000 --- a/dev/assets/chunks/framework.BEF5B6Ex.js +++ /dev/null @@ -1,17 +0,0 @@ -/** -* @vue/shared v3.5.4 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function $r(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Ct=[],Ue=()=>{},Xo=()=>!1,Qt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Dr=e=>e.startsWith("onUpdate:"),fe=Object.assign,jr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},zo=Object.prototype.hasOwnProperty,J=(e,t)=>zo.call(e,t),K=Array.isArray,Tt=e=>Fn(e)==="[object Map]",ui=e=>Fn(e)==="[object Set]",q=e=>typeof e=="function",se=e=>typeof e=="string",rt=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",di=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),hi=Object.prototype.toString,Fn=e=>hi.call(e),Jo=e=>Fn(e).slice(8,-1),pi=e=>Fn(e)==="[object Object]",Vr=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,At=$r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Hn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Qo=/-(\w)/g,Ne=Hn(e=>e.replace(Qo,(t,n)=>n?n.toUpperCase():"")),Zo=/\B([A-Z])/g,st=Hn(e=>e.replace(Zo,"-$1").toLowerCase()),$n=Hn(e=>e.charAt(0).toUpperCase()+e.slice(1)),bn=Hn(e=>e?`on${$n(e)}`:""),tt=(e,t)=>!Object.is(e,t),wn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Sr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},el=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let ps;const mi=()=>ps||(ps=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ur(e){if(K(e)){const t={};for(let n=0;n{if(n){const r=n.split(nl);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Br(e){let t="";if(se(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),ll=e=>se(e)?e:e==null?"":K(e)||ne(e)&&(e.toString===hi||!q(e.toString))?vi(e)?ll(e.value):JSON.stringify(e,_i,2):String(e),_i=(e,t)=>vi(t)?_i(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],i)=>(n[er(r,i)+" =>"]=s,n),{})}:ui(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>er(n))}:rt(t)?er(t):ne(t)&&!K(t)&&!pi(t)?String(t):t,er=(e,t="")=>{var n;return rt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.4 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let be;class cl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.nextEffect;if(t.nextEffect=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Ei(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function xi(e){let t,n=e.depsTail;for(let r=n;r;r=r.prevDep)r.version===-1?(r===n&&(n=r.prevDep),Kr(r),fl(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0;e.deps=t,e.depsTail=n}function Er(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&Ci(t.dep.computed)||t.dep.version!==t.version)return!0;return!!e._dirty}function Ci(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Wt))return;e.globalVersion=Wt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&!Er(e)){e.flags&=-3;return}const n=Z,r=Le;Z=e,Le=!0;try{Ei(e);const s=e.fn(e._value);(t.version===0||tt(s,e._value))&&(e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Z=n,Le=r,xi(e),e.flags&=-3}}function Kr(e){const{dep:t,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),t.subs===e&&(t.subs=n),!t.subs&&t.computed){t.computed.flags&=-5;for(let s=t.computed.deps;s;s=s.nextDep)Kr(s)}}function fl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Le=!0;const Ti=[];function it(){Ti.push(Le),Le=!1}function ot(){const e=Ti.pop();Le=e===void 0?!0:e}function gs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Z;Z=void 0;try{t()}finally{Z=n}}}let Wt=0;class Dn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0}track(t){if(!Z||!Le||Z===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Z)n=this.activeLink={dep:this,sub:Z,version:this.version,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0,prevActiveLink:void 0},Z.deps?(n.prevDep=Z.depsTail,Z.depsTail.nextDep=n,Z.depsTail=n):Z.deps=Z.depsTail=n,Z.flags&4&&Ai(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Z.depsTail,n.nextDep=void 0,Z.depsTail.nextDep=n,Z.depsTail=n,Z.deps===n&&(Z.deps=r)}return n}trigger(t){this.version++,Wt++,this.notify(t)}notify(t){kr();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()}finally{Wr()}}}function Ai(e){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Ai(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}const An=new WeakMap,ht=Symbol(""),xr=Symbol(""),Kt=Symbol("");function ve(e,t,n){if(Le&&Z){let r=An.get(e);r||An.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=new Dn),s.track()}}function Ge(e,t,n,r,s,i){const o=An.get(e);if(!o){Wt++;return}const l=c=>{c&&c.trigger()};if(kr(),t==="clear")o.forEach(l);else{const c=K(e),f=c&&Vr(n);if(c&&n==="length"){const a=Number(r);o.forEach((h,g)=>{(g==="length"||g===Kt||!rt(g)&&g>=a)&&l(h)})}else switch(n!==void 0&&l(o.get(n)),f&&l(o.get(Kt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(ht)),Tt(e)&&l(o.get(xr)));break;case"delete":c||(l(o.get(ht)),Tt(e)&&l(o.get(xr)));break;case"set":Tt(e)&&l(o.get(ht));break}}Wr()}function ul(e,t){var n;return(n=An.get(e))==null?void 0:n.get(t)}function bt(e){const t=z(e);return t===e?t:(ve(t,"iterate",Kt),Ie(e)?t:t.map(me))}function jn(e){return ve(e=z(e),"iterate",Kt),e}const dl={__proto__:null,[Symbol.iterator](){return nr(this,Symbol.iterator,me)},concat(...e){return bt(this).concat(...e.map(t=>K(t)?bt(t):t))},entries(){return nr(this,"entries",e=>(e[1]=me(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(me),arguments)},find(e,t){return We(this,"find",e,t,me,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,me,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return rr(this,"includes",e)},indexOf(...e){return rr(this,"indexOf",e)},join(e){return bt(this).join(e)},lastIndexOf(...e){return rr(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return ms(this,"reduce",e,t)},reduceRight(e,...t){return ms(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return bt(this).toReversed()},toSorted(e){return bt(this).toSorted(e)},toSpliced(...e){return bt(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return nr(this,"values",me)}};function nr(e,t,n){const r=jn(e),s=r[t]();return r!==e&&!Ie(e)&&(s._next=s.next,s.next=()=>{const i=s._next();return i.value&&(i.value=n(i.value)),i}),s}const hl=Array.prototype;function We(e,t,n,r,s,i){const o=jn(e),l=o!==e&&!Ie(e),c=o[t];if(c!==hl[t]){const h=c.apply(e,i);return l?me(h):h}let f=n;o!==e&&(l?f=function(h,g){return n.call(this,me(h),g,e)}:n.length>2&&(f=function(h,g){return n.call(this,h,g,e)}));const a=c.call(o,f,r);return l&&s?s(a):a}function ms(e,t,n,r){const s=jn(e);let i=n;return s!==e&&(Ie(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,me(l),c,e)}),s[t](i,...r)}function rr(e,t,n){const r=z(e);ve(r,"iterate",Kt);const s=r[t](...n);return(s===-1||s===!1)&&Xr(n[0])?(n[0]=z(n[0]),r[t](...n)):s}function Ft(e,t,n=[]){it(),kr();const r=z(e)[t].apply(e,n);return Wr(),ot(),r}const pl=$r("__proto__,__v_isRef,__isVue"),Ri=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(rt));function gl(e){rt(e)||(e=String(e));const t=z(this);return ve(t,"has",e),t.hasOwnProperty(e)}class Oi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(s?i?Rl:Li:i?Pi:Ii).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const o=K(t);if(!s){let c;if(o&&(c=dl[n]))return c;if(n==="hasOwnProperty")return gl}const l=Reflect.get(t,n,ae(t)?t:r);return(rt(n)?Ri.has(n):pl(n))||(s||ve(t,"get",n),i)?l:ae(l)?o&&Vr(n)?l:l.value:ne(l)?s?Bn(l):Un(l):l}}class Mi extends Oi{constructor(t=!1){super(!1,t)}set(t,n,r,s){let i=t[n];if(!this._isShallow){const c=vt(i);if(!Ie(r)&&!vt(r)&&(i=z(i),r=z(r)),!K(t)&&ae(i)&&!ae(r))return c?!1:(i.value=r,!0)}const o=K(t)&&Vr(n)?Number(n)e,Vn=e=>Reflect.getPrototypeOf(e);function ln(e,t,n=!1,r=!1){e=e.__v_raw;const s=z(e),i=z(t);n||(tt(t,i)&&ve(s,"get",t),ve(s,"get",i));const{has:o}=Vn(s),l=r?qr:n?zr:me;if(o.call(s,t))return l(e.get(t));if(o.call(s,i))return l(e.get(i));e!==s&&e.get(t)}function cn(e,t=!1){const n=this.__v_raw,r=z(n),s=z(e);return t||(tt(e,s)&&ve(r,"has",e),ve(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function an(e,t=!1){return e=e.__v_raw,!t&&ve(z(e),"iterate",ht),Reflect.get(e,"size",e)}function ys(e,t=!1){!t&&!Ie(e)&&!vt(e)&&(e=z(e));const n=z(this);return Vn(n).has.call(n,e)||(n.add(e),Ge(n,"add",e,e)),this}function vs(e,t,n=!1){!n&&!Ie(t)&&!vt(t)&&(t=z(t));const r=z(this),{has:s,get:i}=Vn(r);let o=s.call(r,e);o||(e=z(e),o=s.call(r,e));const l=i.call(r,e);return r.set(e,t),o?tt(t,l)&&Ge(r,"set",e,t):Ge(r,"add",e,t),this}function _s(e){const t=z(this),{has:n,get:r}=Vn(t);let s=n.call(t,e);s||(e=z(e),s=n.call(t,e)),r&&r.call(t,e);const i=t.delete(e);return s&&Ge(t,"delete",e,void 0),i}function bs(){const e=z(this),t=e.size!==0,n=e.clear();return t&&Ge(e,"clear",void 0,void 0),n}function fn(e,t){return function(r,s){const i=this,o=i.__v_raw,l=z(o),c=t?qr:e?zr:me;return!e&&ve(l,"iterate",ht),o.forEach((f,a)=>r.call(s,c(f),c(a),i))}}function un(e,t,n){return function(...r){const s=this.__v_raw,i=z(s),o=Tt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=s[e](...r),a=n?qr:t?zr:me;return!t&&ve(i,"iterate",c?xr:ht),{next(){const{value:h,done:g}=f.next();return g?{value:h,done:g}:{value:l?[a(h[0]),a(h[1])]:a(h),done:g}},[Symbol.iterator](){return this}}}}function Xe(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function bl(){const e={get(i){return ln(this,i)},get size(){return an(this)},has:cn,add:ys,set:vs,delete:_s,clear:bs,forEach:fn(!1,!1)},t={get(i){return ln(this,i,!1,!0)},get size(){return an(this)},has:cn,add(i){return ys.call(this,i,!0)},set(i,o){return vs.call(this,i,o,!0)},delete:_s,clear:bs,forEach:fn(!1,!0)},n={get(i){return ln(this,i,!0)},get size(){return an(this,!0)},has(i){return cn.call(this,i,!0)},add:Xe("add"),set:Xe("set"),delete:Xe("delete"),clear:Xe("clear"),forEach:fn(!0,!1)},r={get(i){return ln(this,i,!0,!0)},get size(){return an(this,!0)},has(i){return cn.call(this,i,!0)},add:Xe("add"),set:Xe("set"),delete:Xe("delete"),clear:Xe("clear"),forEach:fn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=un(i,!1,!1),n[i]=un(i,!0,!1),t[i]=un(i,!1,!0),r[i]=un(i,!0,!0)}),[e,n,t,r]}const[wl,Sl,El,xl]=bl();function Gr(e,t){const n=t?e?xl:El:e?Sl:wl;return(r,s,i)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(J(n,s)&&s in r?n:r,s,i)}const Cl={get:Gr(!1,!1)},Tl={get:Gr(!1,!0)},Al={get:Gr(!0,!1)};const Ii=new WeakMap,Pi=new WeakMap,Li=new WeakMap,Rl=new WeakMap;function Ol(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ml(e){return e.__v_skip||!Object.isExtensible(e)?0:Ol(Jo(e))}function Un(e){return vt(e)?e:Yr(e,!1,yl,Cl,Ii)}function Il(e){return Yr(e,!1,_l,Tl,Pi)}function Bn(e){return Yr(e,!0,vl,Al,Li)}function Yr(e,t,n,r,s){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=s.get(e);if(i)return i;const o=Ml(e);if(o===0)return e;const l=new Proxy(e,o===2?r:n);return s.set(e,l),l}function pt(e){return vt(e)?pt(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function Ie(e){return!!(e&&e.__v_isShallow)}function Xr(e){return e?!!e.__v_raw:!1}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function Sn(e){return!J(e,"__v_skip")&&Object.isExtensible(e)&&gi(e,"__v_skip",!0),e}const me=e=>ne(e)?Un(e):e,zr=e=>ne(e)?Bn(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function oe(e){return Ni(e,!1)}function Jr(e){return Ni(e,!0)}function Ni(e,t){return ae(e)?e:new Pl(e,t)}class Pl{constructor(t,n){this.dep=new Dn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:z(t),this._value=n?t:me(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Ie(t)||vt(t);t=r?t:z(t),tt(t,n)&&(this._rawValue=t,this._value=r?t:me(t),this.dep.trigger())}}function Fi(e){return ae(e)?e.value:e}const Ll={get:(e,t,n)=>t==="__v_raw"?e:Fi(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return ae(s)&&!ae(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Hi(e){return pt(e)?e:new Proxy(e,Ll)}class Nl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Dn,{get:r,set:s}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=s}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Fl(e){return new Nl(e)}class Hl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ul(z(this._object),this._key)}}class $l{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Dl(e,t,n){return ae(e)?e:q(e)?new $l(e):ne(e)&&arguments.length>1?jl(e,t,n):oe(e)}function jl(e,t,n){const r=e[t];return ae(r)?r:new Hl(e,t,n)}class Vl{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Dn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Wt-1,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){this.flags|=16,Z!==this&&this.dep.notify()}get value(){const t=this.dep.track();return Ci(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ul(e,t,n=!1){let r,s;return q(e)?r=e:(r=e.get,s=e.set),new Vl(r,s,n)}const dn={},Rn=new WeakMap;let ut;function Bl(e,t=!1,n=ut){if(n){let r=Rn.get(n);r||Rn.set(n,r=[]),r.push(e)}}function kl(e,t,n=ee){const{immediate:r,deep:s,once:i,scheduler:o,augmentJob:l,call:c}=n,f=m=>s?m:Ie(m)||s===!1||s===0?qe(m,1):qe(m);let a,h,g,_,b=!1,S=!1;if(ae(e)?(h=()=>e.value,b=Ie(e)):pt(e)?(h=()=>f(e),b=!0):K(e)?(S=!0,b=e.some(m=>pt(m)||Ie(m)),h=()=>e.map(m=>{if(ae(m))return m.value;if(pt(m))return f(m);if(q(m))return c?c(m,2):m()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(g){it();try{g()}finally{ot()}}const m=ut;ut=a;try{return c?c(e,3,[_]):e(_)}finally{ut=m}}:h=Ue,t&&s){const m=h,M=s===!0?1/0:s;h=()=>qe(m(),M)}const V=bi(),N=()=>{a.stop(),V&&jr(V.effects,a)};if(i)if(t){const m=t;t=(...M)=>{m(...M),N()}}else{const m=h;h=()=>{m(),N()}}let U=S?new Array(e.length).fill(dn):dn;const p=m=>{if(!(!(a.flags&1)||!a.dirty&&!m))if(t){const M=a.run();if(s||b||(S?M.some((F,$)=>tt(F,U[$])):tt(M,U))){g&&g();const F=ut;ut=a;try{const $=[M,U===dn?void 0:S&&U[0]===dn?[]:U,_];c?c(t,3,$):t(...$),U=M}finally{ut=F}}}else a.run()};return l&&l(p),a=new wi(h),a.scheduler=o?()=>o(p,!1):p,_=m=>Bl(m,!1,a),g=a.onStop=()=>{const m=Rn.get(a);if(m){if(c)c(m,4);else for(const M of m)M();Rn.delete(a)}},t?r?p(!0):U=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function qe(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ae(e))qe(e.value,t,n);else if(K(e))for(let r=0;r{qe(r,t,n)});else if(pi(e)){for(const r in e)qe(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&qe(e[r],t,n)}return e}/** -* @vue/runtime-core v3.5.4 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Zt(e,t,n,r){try{return r?e(...r):e()}catch(s){en(s,t,n)}}function Fe(e,t,n,r){if(q(e)){const s=Zt(e,t,n,r);return s&&di(s)&&s.catch(i=>{en(i,t,n)}),s}if(K(e)){const s=[];for(let i=0;i>>1,s=we[r],i=Gt(s);i=Gt(n)?we.push(e):we.splice(Kl(t),0,e),e.flags|=1,Di()}}function Di(){!qt&&!Cr&&(Cr=!0,Qr=$i.then(ji))}function ql(e){K(e)?Rt.push(...e):Qe&&e.id===-1?Qe.splice(St+1,0,e):e.flags&1||(Rt.push(e),e.flags|=1),Di()}function ws(e,t,n=qt?je+1:0){for(;nGt(n)-Gt(r));if(Rt.length=0,Qe){Qe.push(...t);return}for(Qe=t,St=0;Ste.id==null?e.flags&2?-1:1/0:e.id;function ji(e){Cr=!1,qt=!0;try{for(je=0;je{r._d&&Fs(-1);const i=Mn(t);let o;try{o=e(...s)}finally{Mn(i),r._d&&Fs(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function Mf(e,t){if(de===null)return e;const n=zn(de),r=e.dirs||(e.dirs=[]);for(let s=0;se.__isTeleport,jt=e=>e&&(e.disabled||e.disabled===""),Yl=e=>e&&(e.defer||e.defer===""),Ss=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Es=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Tr=(e,t)=>{const n=e&&e.to;return se(n)?t?t(n):null:n},Xl={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,i,o,l,c,f){const{mc:a,pc:h,pbc:g,o:{insert:_,querySelector:b,createText:S,createComment:V}}=f,N=jt(t.props);let{shapeFlag:U,children:p,dynamicChildren:m}=t;if(e==null){const M=t.el=S(""),F=t.anchor=S("");_(M,n,r),_(F,n,r);const $=(R,v)=>{U&16&&a(p,R,v,s,i,o,l,c)},D=()=>{const R=t.target=Tr(t.props,b),v=ki(R,t,S,_);R&&(o!=="svg"&&Ss(R)?o="svg":o!=="mathml"&&Es(R)&&(o="mathml"),N||($(R,v),En(t)))};N&&($(n,F),En(t)),Yl(t.props)?Ee(D,i):D()}else{t.el=e.el,t.targetStart=e.targetStart;const M=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,D=jt(e.props),R=D?n:F,v=D?M:$;if(o==="svg"||Ss(F)?o="svg":(o==="mathml"||Es(F))&&(o="mathml"),m?(g(e.dynamicChildren,m,R,s,i,o,l),ss(e,t,!0)):c||h(e,t,R,v,s,i,o,l,!1),N)D?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):hn(t,n,M,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const L=t.target=Tr(t.props,b);L&&hn(t,L,null,f,0)}else D&&hn(t,F,$,f,1);En(t)}},remove(e,t,n,{um:r,o:{remove:s}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:g}=e;if(h&&(s(f),s(a)),i&&s(c),o&16){const _=i||!jt(g);for(let b=0;b{e.isMounted=!0}),zi(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],Wi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Ki=e=>{const t=e.subTree;return t.component?Ki(t.component):t},Ql={name:"BaseTransition",props:Wi,setup(e,{slots:t}){const n=Xn(),r=Jl();return()=>{const s=t.default&&Yi(t.default(),!0);if(!s||!s.length)return;const i=qi(s),o=z(e),{mode:l}=o;if(r.isLeaving)return sr(i);const c=xs(i);if(!c)return sr(i);let f=Ar(c,o,r,n,g=>f=g);c.type!==ye&&Yt(c,f);const a=n.subTree,h=a&&xs(a);if(h&&h.type!==ye&&!dt(c,h)&&Ki(n).type!==ye){const g=Ar(h,o,r,n);if(Yt(h,g),l==="out-in"&&c.type!==ye)return r.isLeaving=!0,g.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete g.afterLeave},sr(i);l==="in-out"&&c.type!==ye&&(g.delayLeave=(_,b,S)=>{const V=Gi(r,h);V[String(h.key)]=h,_[Ze]=()=>{b(),_[Ze]=void 0,delete f.delayedLeave},f.delayedLeave=S})}return i}}};function qi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const Zl=Ql;function Gi(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Ar(e,t,n,r,s){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:g,onLeave:_,onAfterLeave:b,onLeaveCancelled:S,onBeforeAppear:V,onAppear:N,onAfterAppear:U,onAppearCancelled:p}=t,m=String(e.key),M=Gi(n,e),F=(R,v)=>{R&&Fe(R,r,9,v)},$=(R,v)=>{const L=v[1];F(R,v),K(R)?R.every(x=>x.length<=1)&&L():R.length<=1&&L()},D={mode:o,persisted:l,beforeEnter(R){let v=c;if(!n.isMounted)if(i)v=V||c;else return;R[Ze]&&R[Ze](!0);const L=M[m];L&&dt(e,L)&&L.el[Ze]&&L.el[Ze](),F(v,[R])},enter(R){let v=f,L=a,x=h;if(!n.isMounted)if(i)v=N||f,L=U||a,x=p||h;else return;let W=!1;const re=R[pn]=ce=>{W||(W=!0,ce?F(x,[R]):F(L,[R]),D.delayedLeave&&D.delayedLeave(),R[pn]=void 0)};v?$(v,[R,re]):re()},leave(R,v){const L=String(e.key);if(R[pn]&&R[pn](!0),n.isUnmounting)return v();F(g,[R]);let x=!1;const W=R[Ze]=re=>{x||(x=!0,v(),re?F(S,[R]):F(b,[R]),R[Ze]=void 0,M[L]===e&&delete M[L])};M[L]=e,_?$(_,[R,W]):W()},clone(R){const v=Ar(R,t,n,r,s);return s&&s(v),v}};return D}function sr(e){if(tn(e))return e=nt(e),e.children=null,e}function xs(e){if(!tn(e))return Bi(e.type)&&e.children?qi(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Yi(e,t=!1,n){let r=[],s=0;for(let i=0;i1)for(let i=0;iIn(b,t&&(K(t)?t[S]:t),n,r,s));return}if(gt(r)&&!s)return;const i=r.shapeFlag&4?zn(r.component):r.el,o=s?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===ee?l.refs={}:l.refs,h=l.setupState,g=z(h),_=h===ee?()=>!1:b=>J(g,b);if(f!=null&&f!==c&&(se(f)?(a[f]=null,_(f)&&(h[f]=null)):ae(f)&&(f.value=null)),q(c))Zt(c,l,12,[o,a]);else{const b=se(c),S=ae(c);if(b||S){const V=()=>{if(e.f){const N=b?_(c)?h[c]:a[c]:c.value;s?K(N)&&jr(N,i):K(N)?N.includes(i)||N.push(i):b?(a[c]=[i],_(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else b?(a[c]=o,_(c)&&(h[c]=o)):S&&(c.value=o,e.k&&(a[e.k]=o))};o?(V.id=-1,Ee(V,n)):V()}}}let Cs=!1;const wt=()=>{Cs||(console.error("Hydration completed but contains mismatches."),Cs=!0)},ec=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",tc=e=>e.namespaceURI.includes("MathML"),gn=e=>{if(e.nodeType===1){if(ec(e))return"svg";if(tc(e))return"mathml"}},xt=e=>e.nodeType===8;function nc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,m)=>{if(!m.hasChildNodes()){n(null,p,m),On(),m._vnode=p;return}h(m.firstChild,p,null,null,null),On(),m._vnode=p},h=(p,m,M,F,$,D=!1)=>{D=D||!!m.dynamicChildren;const R=xt(p)&&p.data==="[",v=()=>S(p,m,M,F,$,R),{type:L,ref:x,shapeFlag:W,patchFlag:re}=m;let ce=p.nodeType;m.el=p,re===-2&&(D=!1,m.dynamicChildren=null);let j=null;switch(L){case mt:ce!==3?m.children===""?(c(m.el=s(""),o(p),p),j=p):j=v():(p.data!==m.children&&(wt(),p.data=m.children),j=i(p));break;case ye:U(p)?(j=i(p),N(m.el=p.content.firstChild,p,M)):ce!==8||R?j=v():j=i(p);break;case Ut:if(R&&(p=i(p),ce=p.nodeType),ce===1||ce===3){j=p;const Y=!m.children.length;for(let B=0;B{D=D||!!m.dynamicChildren;const{type:R,props:v,patchFlag:L,shapeFlag:x,dirs:W,transition:re}=m,ce=R==="input"||R==="option";if(ce||L!==-1){W&&Ve(m,null,M,"created");let j=!1;if(U(p)){j=ho(F,re)&&M&&M.vnode.props&&M.vnode.props.appear;const B=p.content.firstChild;j&&re.beforeEnter(B),N(B,p,M),m.el=p=B}if(x&16&&!(v&&(v.innerHTML||v.textContent))){let B=_(p.firstChild,m,p,M,F,$,D);for(;B;){mn(p,1)||wt();const he=B;B=B.nextSibling,l(he)}}else x&8&&p.textContent!==m.children&&(mn(p,0)||wt(),p.textContent=m.children);if(v){if(ce||!D||L&48){const B=p.tagName.includes("-");for(const he in v)(ce&&(he.endsWith("value")||he==="indeterminate")||Qt(he)&&!At(he)||he[0]==="."||B)&&r(p,he,null,v[he],void 0,M)}else if(v.onClick)r(p,"onClick",null,v.onClick,void 0,M);else if(L&4&&pt(v.style))for(const B in v.style)v.style[B]}let Y;(Y=v&&v.onVnodeBeforeMount)&&Oe(Y,M,m),W&&Ve(m,null,M,"beforeMount"),((Y=v&&v.onVnodeMounted)||W||j)&&vo(()=>{Y&&Oe(Y,M,m),j&&re.enter(p),W&&Ve(m,null,M,"mounted")},F)}return p.nextSibling},_=(p,m,M,F,$,D,R)=>{R=R||!!m.dynamicChildren;const v=m.children,L=v.length;for(let x=0;x{const{slotScopeIds:R}=m;R&&($=$?$.concat(R):R);const v=o(p),L=_(i(p),m,v,M,F,$,D);return L&&xt(L)&&L.data==="]"?i(m.anchor=L):(wt(),c(m.anchor=f("]"),v,L),L)},S=(p,m,M,F,$,D)=>{if(mn(p.parentElement,1)||wt(),m.el=null,D){const L=V(p);for(;;){const x=i(p);if(x&&x!==L)l(x);else break}}const R=i(p),v=o(p);return l(p),n(null,m,v,R,M,F,gn(v),$),R},V=(p,m="[",M="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===m&&F++,p.data===M)){if(F===0)return i(p);F--}return p},N=(p,m,M)=>{const F=m.parentNode;F&&F.replaceChild(p,m);let $=M;for(;$;)$.vnode.el===m&&($.vnode.el=$.subTree.el=p),$=$.parent},U=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[a,h]}const Ts="data-allow-mismatch",rc={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function mn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Ts);)e=e.parentElement;const n=e&&e.getAttribute(Ts);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:n.split(",").includes(rc[t])}}function sc(e,t){if(xt(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1)t(r);else if(xt(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const gt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Pf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const g=()=>(h++,f=null,_()),_=()=>{let b;return f||(b=f=t().catch(S=>{if(S=S instanceof Error?S:new Error(String(S)),c)return new Promise((V,N)=>{c(S,()=>V(g()),()=>N(S),h+1)});throw S}).then(S=>b!==f&&f?f:(S&&(S.__esModule||S[Symbol.toStringTag]==="Module")&&(S=S.default),a=S,S)))};return Zr({name:"AsyncComponentWrapper",__asyncLoader:_,__asyncHydrate(b,S,V){const N=i?()=>{const U=i(V,p=>sc(b,p));U&&(S.bum||(S.bum=[])).push(U)}:V;a?N():_().then(()=>!S.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const b=ue;if(es(b),a)return()=>ir(a,b);const S=p=>{f=null,en(p,b,13,!r)};if(l&&b.suspense||rn)return _().then(p=>()=>ir(p,b)).catch(p=>(S(p),()=>r?le(r,{error:p}):null));const V=oe(!1),N=oe(),U=oe(!!s);return s&&setTimeout(()=>{U.value=!1},s),o!=null&&setTimeout(()=>{if(!V.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);S(p),N.value=p}},o),_().then(()=>{V.value=!0,b.parent&&tn(b.parent.vnode)&&Wn(b.parent.update)}).catch(p=>{S(p),N.value=p}),()=>{if(V.value&&a)return ir(a,b);if(N.value&&r)return le(r,{error:N.value});if(n&&!U.value)return le(n)}}})}function ir(e,t){const{ref:n,props:r,children:s,ce:i}=t.vnode,o=le(e,r,s);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const tn=e=>e.type.__isKeepAlive;function ic(e,t){Xi(e,"a",t)}function oc(e,t){Xi(e,"da",t)}function Xi(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Kn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)tn(s.parent.vnode)&&lc(r,t,n,s),s=s.parent}}function lc(e,t,n,r){const s=Kn(t,e,r,!0);qn(()=>{jr(r[t],s)},n)}function Kn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{it();const l=nn(n),c=Fe(t,n,e,o);return l(),ot(),c});return r?s.unshift(i):s.push(i),i}}const Ye=e=>(t,n=ue)=>{(!rn||e==="sp")&&Kn(e,(...r)=>t(...r),n)},cc=Ye("bm"),Pt=Ye("m"),ac=Ye("bu"),fc=Ye("u"),zi=Ye("bum"),qn=Ye("um"),uc=Ye("sp"),dc=Ye("rtg"),hc=Ye("rtc");function pc(e,t=ue){Kn("ec",e,t)}const ts="components";function Lf(e,t){return Qi(ts,e,!0,t)||e}const Ji=Symbol.for("v-ndc");function Nf(e){return se(e)?Qi(ts,e,!1)||e:e||Ji}function Qi(e,t,n=!0,r=!1){const s=de||ue;if(s){const i=s.type;if(e===ts){const l=Zc(i,!1);if(l&&(l===t||l===Ne(t)||l===$n(Ne(t))))return i}const o=As(s[e]||i[e],t)||As(s.appContext[e],t);return!o&&r?i:o}}function As(e,t){return e&&(e[t]||e[Ne(t)]||e[$n(Ne(t))])}function Ff(e,t,n,r){let s;const i=n,o=K(e);if(o||se(e)){const l=o&&pt(e);let c=!1;l&&(c=!Ie(e),e=jn(e)),s=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);s=new Array(l.length);for(let c=0,f=l.length;cLn(t)?!(t.type===ye||t.type===Se&&!Zi(t.children)):!0)?e:null}function $f(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:bn(r)]=e[r];return n}const Rr=e=>e?Eo(e)?zn(e):Rr(e.parent):null,Vt=fe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Rr(e.parent),$root:e=>Rr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ns(e),$forceUpdate:e=>e.f||(e.f=()=>{Wn(e.update)}),$nextTick:e=>e.n||(e.n=kn.bind(e.proxy)),$watch:e=>Hc.bind(e)}),or=(e,t)=>e!==ee&&!e.__isScriptSetup&&J(e,t),gc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const _=o[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return i[t]}else{if(or(r,t))return o[t]=1,r[t];if(s!==ee&&J(s,t))return o[t]=2,s[t];if((f=e.propsOptions[0])&&J(f,t))return o[t]=3,i[t];if(n!==ee&&J(n,t))return o[t]=4,n[t];Or&&(o[t]=0)}}const a=Vt[t];let h,g;if(a)return t==="$attrs"&&ve(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&J(n,t))return o[t]=4,n[t];if(g=c.config.globalProperties,J(g,t))return g[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:i}=e;return or(s,t)?(s[t]=n,!0):r!==ee&&J(r,t)?(r[t]=n,!0):J(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:i}},o){let l;return!!n[o]||e!==ee&&J(e,o)||or(t,o)||(l=i[0])&&J(l,o)||J(r,o)||J(Vt,o)||J(s.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:J(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Df(){return mc().slots}function mc(){const e=Xn();return e.setupContext||(e.setupContext=Co(e))}function Rs(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Or=!0;function yc(e){const t=ns(e),n=e.proxy,r=e.ctx;Or=!1,t.beforeCreate&&Os(t.beforeCreate,e,"bc");const{data:s,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:g,beforeUpdate:_,updated:b,activated:S,deactivated:V,beforeDestroy:N,beforeUnmount:U,destroyed:p,unmounted:m,render:M,renderTracked:F,renderTriggered:$,errorCaptured:D,serverPrefetch:R,expose:v,inheritAttrs:L,components:x,directives:W,filters:re}=t;if(f&&vc(f,r,null),o)for(const Y in o){const B=o[Y];q(B)&&(r[Y]=B.bind(n))}if(s){const Y=s.call(n,n);ne(Y)&&(e.data=Un(Y))}if(Or=!0,i)for(const Y in i){const B=i[Y],he=q(B)?B.bind(n,n):q(B.get)?B.get.bind(n,n):Ue,sn=!q(B)&&q(B.set)?B.set.bind(n):Ue,lt=ie({get:he,set:sn});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>lt.value,set:$e=>lt.value=$e})}if(l)for(const Y in l)eo(l[Y],r,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(B=>{xc(B,Y[B])})}a&&Os(a,e,"c");function j(Y,B){K(B)?B.forEach(he=>Y(he.bind(n))):B&&Y(B.bind(n))}if(j(cc,h),j(Pt,g),j(ac,_),j(fc,b),j(ic,S),j(oc,V),j(pc,D),j(hc,F),j(dc,$),j(zi,U),j(qn,m),j(uc,R),K(v))if(v.length){const Y=e.exposed||(e.exposed={});v.forEach(B=>{Object.defineProperty(Y,B,{get:()=>n[B],set:he=>n[B]=he})})}else e.exposed||(e.exposed={});M&&e.render===Ue&&(e.render=M),L!=null&&(e.inheritAttrs=L),x&&(e.components=x),W&&(e.directives=W),R&&es(e)}function vc(e,t,n=Ue){K(e)&&(e=Mr(e));for(const r in e){const s=e[r];let i;ne(s)?"default"in s?i=Mt(s.from||r,s.default,!0):i=Mt(s.from||r):i=Mt(s),ae(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[r]=i}}function Os(e,t,n){Fe(K(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function eo(e,t,n,r){let s=r.includes(".")?go(n,r):()=>n[r];if(se(e)){const i=t[e];q(i)&&Be(s,i)}else if(q(e))Be(s,e.bind(n));else if(ne(e))if(K(e))e.forEach(i=>eo(i,t,n,r));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Be(s,i,e)}}function ns(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(f=>Pn(c,f,o,!0)),Pn(c,t,o)),ne(t)&&i.set(t,c),c}function Pn(e,t,n,r=!1){const{mixins:s,extends:i}=t;i&&Pn(e,i,n,!0),s&&s.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(r&&o==="expose")){const l=_c[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const _c={data:Ms,props:Is,emits:Is,methods:$t,computed:$t,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:$t,directives:$t,watch:wc,provide:Ms,inject:bc};function Ms(e,t){return t?e?function(){return fe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function bc(e,t){return $t(Mr(e),Mr(t))}function Mr(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}const no={},ro=()=>Object.create(no),so=e=>Object.getPrototypeOf(e)===no;function Cc(e,t,n,r=!1){const s={},i=ro();e.propsDefaults=Object.create(null),io(e,t,s,i);for(const o in e.propsOptions[0])o in s||(s[o]=void 0);n?e.props=r?s:Il(s):e.type.props?e.props=s:e.props=i,e.attrs=i}function Tc(e,t,n,r){const{props:s,attrs:i,vnode:{patchFlag:o}}=e,l=z(s),[c]=e.propsOptions;let f=!1;if((r||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[g,_]=oo(h,t,!0);fe(o,g),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&r.set(e,Ct),Ct;if(K(i))for(let a=0;ae[0]==="_"||e==="$stable",rs=e=>K(e)?e.map(Me):[Me(e)],Rc=(e,t,n)=>{if(t._n)return t;const r=Gl((...s)=>rs(t(...s)),n);return r._c=!1,r},co=(e,t,n)=>{const r=e._ctx;for(const s in e){if(lo(s))continue;const i=e[s];if(q(i))t[s]=Rc(s,i,r);else if(i!=null){const o=rs(i);t[s]=()=>o}}},ao=(e,t)=>{const n=rs(t);e.slots.default=()=>n},fo=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},Oc=(e,t,n)=>{const r=e.slots=ro();if(e.vnode.shapeFlag&32){const s=t._;s?(fo(r,t,n),n&&gi(r,"_",s,!0)):co(t,r)}else t&&ao(e,t)},Mc=(e,t,n)=>{const{vnode:r,slots:s}=e;let i=!0,o=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:fo(s,t,n):(i=!t.$stable,co(t,s)),o=t}else t&&(ao(e,t),o={default:1});if(i)for(const l in s)!lo(l)&&o[l]==null&&delete s[l]},Ee=vo;function Ic(e){return uo(e)}function Pc(e){return uo(e,nc)}function uo(e,t){const n=mi();n.__VUE__=!0;const{insert:r,remove:s,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:g,setScopeId:_=Ue,insertStaticContent:b}=e,S=(u,d,y,C=null,w=null,E=null,I=void 0,O=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!dt(u,d)&&(C=on(u),$e(u,w,E,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:T,ref:k,shapeFlag:P}=d;switch(T){case mt:V(u,d,y,C);break;case ye:N(u,d,y,C);break;case Ut:u==null&&U(d,y,C,I);break;case Se:x(u,d,y,C,w,E,I,O,A);break;default:P&1?M(u,d,y,C,w,E,I,O,A):P&6?W(u,d,y,C,w,E,I,O,A):(P&64||P&128)&&T.process(u,d,y,C,w,E,I,O,A,_t)}k!=null&&w&&In(k,u&&u.ref,E,d||u,!d)},V=(u,d,y,C)=>{if(u==null)r(d.el=l(d.children),y,C);else{const w=d.el=u.el;d.children!==u.children&&f(w,d.children)}},N=(u,d,y,C)=>{u==null?r(d.el=c(d.children||""),y,C):d.el=u.el},U=(u,d,y,C)=>{[u.el,u.anchor]=b(u.children,d,y,C,u.el,u.anchor)},p=({el:u,anchor:d},y,C)=>{let w;for(;u&&u!==d;)w=g(u),r(u,y,C),u=w;r(d,y,C)},m=({el:u,anchor:d})=>{let y;for(;u&&u!==d;)y=g(u),s(u),u=y;s(d)},M=(u,d,y,C,w,E,I,O,A)=>{d.type==="svg"?I="svg":d.type==="math"&&(I="mathml"),u==null?F(d,y,C,w,E,I,O,A):R(u,d,w,E,I,O,A)},F=(u,d,y,C,w,E,I,O)=>{let A,T;const{props:k,shapeFlag:P,transition:H,dirs:G}=u;if(A=u.el=o(u.type,E,k&&k.is,k),P&8?a(A,u.children):P&16&&D(u.children,A,null,C,w,lr(u,E),I,O),G&&Ve(u,null,C,"created"),$(A,u,u.scopeId,I,C),k){for(const te in k)te!=="value"&&!At(te)&&i(A,te,null,k[te],E,C);"value"in k&&i(A,"value",null,k.value,E),(T=k.onVnodeBeforeMount)&&Oe(T,C,u)}G&&Ve(u,null,C,"beforeMount");const X=ho(w,H);X&&H.beforeEnter(A),r(A,d,y),((T=k&&k.onVnodeMounted)||X||G)&&Ee(()=>{T&&Oe(T,C,u),X&&H.enter(A),G&&Ve(u,null,C,"mounted")},w)},$=(u,d,y,C,w)=>{if(y&&_(u,y),C)for(let E=0;E{for(let T=A;T{const O=d.el=u.el;let{patchFlag:A,dynamicChildren:T,dirs:k}=d;A|=u.patchFlag&16;const P=u.props||ee,H=d.props||ee;let G;if(y&&ct(y,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,y,d,u),k&&Ve(d,u,y,"beforeUpdate"),y&&ct(y,!0),(P.innerHTML&&H.innerHTML==null||P.textContent&&H.textContent==null)&&a(O,""),T?v(u.dynamicChildren,T,O,y,C,lr(d,w),E):I||B(u,d,O,null,y,C,lr(d,w),E,!1),A>0){if(A&16)L(O,P,H,y,w);else if(A&2&&P.class!==H.class&&i(O,"class",null,H.class,w),A&4&&i(O,"style",P.style,H.style,w),A&8){const X=d.dynamicProps;for(let te=0;te{G&&Oe(G,y,d,u),k&&Ve(d,u,y,"updated")},C)},v=(u,d,y,C,w,E,I)=>{for(let O=0;O{if(d!==y){if(d!==ee)for(const E in d)!At(E)&&!(E in y)&&i(u,E,d[E],null,w,C);for(const E in y){if(At(E))continue;const I=y[E],O=d[E];I!==O&&E!=="value"&&i(u,E,O,I,w,C)}"value"in y&&i(u,"value",d.value,y.value,w)}},x=(u,d,y,C,w,E,I,O,A)=>{const T=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:P,dynamicChildren:H,slotScopeIds:G}=d;G&&(O=O?O.concat(G):G),u==null?(r(T,y,C),r(k,y,C),D(d.children||[],y,k,w,E,I,O,A)):P>0&&P&64&&H&&u.dynamicChildren?(v(u.dynamicChildren,H,y,w,E,I,O),(d.key!=null||w&&d===w.subTree)&&ss(u,d,!0)):B(u,d,y,k,w,E,I,O,A)},W=(u,d,y,C,w,E,I,O,A)=>{d.slotScopeIds=O,u==null?d.shapeFlag&512?w.ctx.activate(d,y,C,I,A):re(d,y,C,w,E,I,A):ce(u,d,A)},re=(u,d,y,C,w,E,I)=>{const O=u.component=Xc(u,C,w);if(tn(u)&&(O.ctx.renderer=_t),zc(O,!1,I),O.asyncDep){if(w&&w.registerDep(O,j,I),!u.el){const A=O.subTree=le(ye);N(null,A,d,y)}}else j(O,u,d,y,w,E,I)},ce=(u,d,y)=>{const C=d.component=u.component;if(Uc(u,d,y))if(C.asyncDep&&!C.asyncResolved){Y(C,d,y);return}else C.next=d,C.update();else d.el=u.el,C.vnode=d},j=(u,d,y,C,w,E,I)=>{const O=()=>{if(u.isMounted){let{next:P,bu:H,u:G,parent:X,vnode:te}=u;{const Ce=po(u);if(Ce){P&&(P.el=te.el,Y(u,P,I)),Ce.asyncDep.then(()=>{u.isUnmounted||O()});return}}let Q=P,xe;ct(u,!1),P?(P.el=te.el,Y(u,P,I)):P=te,H&&wn(H),(xe=P.props&&P.props.onVnodeBeforeUpdate)&&Oe(xe,X,P,te),ct(u,!0);const pe=cr(u),Pe=u.subTree;u.subTree=pe,S(Pe,pe,h(Pe.el),on(Pe),u,w,E),P.el=pe.el,Q===null&&Bc(u,pe.el),G&&Ee(G,w),(xe=P.props&&P.props.onVnodeUpdated)&&Ee(()=>Oe(xe,X,P,te),w)}else{let P;const{el:H,props:G}=d,{bm:X,m:te,parent:Q,root:xe,type:pe}=u,Pe=gt(d);if(ct(u,!1),X&&wn(X),!Pe&&(P=G&&G.onVnodeBeforeMount)&&Oe(P,Q,d),ct(u,!0),H&&Zn){const Ce=()=>{u.subTree=cr(u),Zn(H,u.subTree,u,w,null)};Pe&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Ce):Ce()}else{xe.ce&&xe.ce._injectChildStyle(pe);const Ce=u.subTree=cr(u);S(null,Ce,y,C,u,w,E),d.el=Ce.el}if(te&&Ee(te,w),!Pe&&(P=G&&G.onVnodeMounted)){const Ce=d;Ee(()=>Oe(P,Q,Ce),w)}(d.shapeFlag&256||Q&>(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&Ee(u.a,w),u.isMounted=!0,d=y=C=null}};u.scope.on();const A=u.effect=new wi(O);u.scope.off();const T=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Wn(k),ct(u,!0),T()},Y=(u,d,y)=>{d.component=u;const C=u.vnode.props;u.vnode=d,u.next=null,Tc(u,d.props,C,y),Mc(u,d.children,y),it(),ws(u),ot()},B=(u,d,y,C,w,E,I,O,A=!1)=>{const T=u&&u.children,k=u?u.shapeFlag:0,P=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){sn(T,P,y,C,w,E,I,O,A);return}else if(H&256){he(T,P,y,C,w,E,I,O,A);return}}G&8?(k&16&&Lt(T,w,E),P!==T&&a(y,P)):k&16?G&16?sn(T,P,y,C,w,E,I,O,A):Lt(T,w,E,!0):(k&8&&a(y,""),G&16&&D(P,y,C,w,E,I,O,A))},he=(u,d,y,C,w,E,I,O,A)=>{u=u||Ct,d=d||Ct;const T=u.length,k=d.length,P=Math.min(T,k);let H;for(H=0;Hk?Lt(u,w,E,!0,!1,P):D(d,y,C,w,E,I,O,A,P)},sn=(u,d,y,C,w,E,I,O,A)=>{let T=0;const k=d.length;let P=u.length-1,H=k-1;for(;T<=P&&T<=H;){const G=u[T],X=d[T]=A?et(d[T]):Me(d[T]);if(dt(G,X))S(G,X,y,null,w,E,I,O,A);else break;T++}for(;T<=P&&T<=H;){const G=u[P],X=d[H]=A?et(d[H]):Me(d[H]);if(dt(G,X))S(G,X,y,null,w,E,I,O,A);else break;P--,H--}if(T>P){if(T<=H){const G=H+1,X=GH)for(;T<=P;)$e(u[T],w,E,!0),T++;else{const G=T,X=T,te=new Map;for(T=X;T<=H;T++){const Te=d[T]=A?et(d[T]):Me(d[T]);Te.key!=null&&te.set(Te.key,T)}let Q,xe=0;const pe=H-X+1;let Pe=!1,Ce=0;const Nt=new Array(pe);for(T=0;T=pe){$e(Te,w,E,!0);continue}let De;if(Te.key!=null)De=te.get(Te.key);else for(Q=X;Q<=H;Q++)if(Nt[Q-X]===0&&dt(Te,d[Q])){De=Q;break}De===void 0?$e(Te,w,E,!0):(Nt[De-X]=T+1,De>=Ce?Ce=De:Pe=!0,S(Te,d[De],y,null,w,E,I,O,A),xe++)}const ds=Pe?Lc(Nt):Ct;for(Q=ds.length-1,T=pe-1;T>=0;T--){const Te=X+T,De=d[Te],hs=Te+1{const{el:E,type:I,transition:O,children:A,shapeFlag:T}=u;if(T&6){lt(u.component.subTree,d,y,C);return}if(T&128){u.suspense.move(d,y,C);return}if(T&64){I.move(u,d,y,_t);return}if(I===Se){r(E,d,y);for(let P=0;PO.enter(E),w);else{const{leave:P,delayLeave:H,afterLeave:G}=O,X=()=>r(E,d,y),te=()=>{P(E,()=>{X(),G&&G()})};H?H(E,X,te):te()}else r(E,d,y)},$e=(u,d,y,C=!1,w=!1)=>{const{type:E,props:I,ref:O,children:A,dynamicChildren:T,shapeFlag:k,patchFlag:P,dirs:H,cacheIndex:G}=u;if(P===-2&&(w=!1),O!=null&&In(O,null,y,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&H,te=!gt(u);let Q;if(te&&(Q=I&&I.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Yo(u.component,y,C);else{if(k&128){u.suspense.unmount(y,C);return}X&&Ve(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,y,_t,C):T&&!T.hasOnce&&(E!==Se||P>0&&P&64)?Lt(T,d,y,!1,!0):(E===Se&&P&384||!w&&k&16)&&Lt(A,d,y),C&&fs(u)}(te&&(Q=I&&I.onVnodeUnmounted)||X)&&Ee(()=>{Q&&Oe(Q,d,u),X&&Ve(u,null,d,"unmounted")},y)},fs=u=>{const{type:d,el:y,anchor:C,transition:w}=u;if(d===Se){Go(y,C);return}if(d===Ut){m(u);return}const E=()=>{s(y),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:I,delayLeave:O}=w,A=()=>I(y,E);O?O(u.el,E,A):A()}else E()},Go=(u,d)=>{let y;for(;u!==d;)y=g(u),s(u),u=y;s(d)},Yo=(u,d,y)=>{const{bum:C,scope:w,job:E,subTree:I,um:O,m:A,a:T}=u;Ls(A),Ls(T),C&&wn(C),w.stop(),E&&(E.flags|=8,$e(I,u,d,y)),O&&Ee(O,d),Ee(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},Lt=(u,d,y,C=!1,w=!1,E=0)=>{for(let I=E;I{if(u.shapeFlag&6)return on(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=g(u.anchor||u.el),y=d&&d[Ui];return y?g(y):d};let Jn=!1;const us=(u,d,y)=>{u==null?d._vnode&&$e(d._vnode,null,null,!0):S(d._vnode||null,u,d,null,null,null,y),d._vnode=u,Jn||(Jn=!0,ws(),On(),Jn=!1)},_t={p:S,um:$e,m:lt,r:fs,mt:re,mc:D,pc:B,pbc:v,n:on,o:e};let Qn,Zn;return t&&([Qn,Zn]=t(_t)),{render:us,hydrate:Qn,createApp:Ec(us,Qn)}}function lr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function ct({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ho(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ss(e,t,n=!1){const r=e.children,s=t.children;if(K(r)&&K(s))for(let i=0;i>1,e[n[l]]0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function po(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:po(t)}function Ls(e){if(e)for(let t=0;tMt(Nc);function is(e,t){return Gn(e,null,t)}function jf(e,t){return Gn(e,null,{flush:"post"})}function Be(e,t,n){return Gn(e,t,n)}function Gn(e,t,n=ee){const{immediate:r,deep:s,flush:i,once:o}=n,l=fe({},n);let c;if(rn)if(i==="sync"){const g=Fc();c=g.__watcherHandles||(g.__watcherHandles=[])}else if(!t||r)l.once=!0;else return{stop:Ue,resume:Ue,pause:Ue};const f=ue;l.call=(g,_,b)=>Fe(g,f,_,b);let a=!1;i==="post"?l.scheduler=g=>{Ee(g,f&&f.suspense)}:i!=="sync"&&(a=!0,l.scheduler=(g,_)=>{_?g():Wn(g)}),l.augmentJob=g=>{t&&(g.flags|=4),a&&(g.flags|=2,f&&(g.id=f.uid,g.i=f))};const h=kl(e,t,l);return c&&c.push(h),h}function Hc(e,t,n){const r=this.proxy,s=se(e)?e.includes(".")?go(r,e):()=>r[e]:e.bind(r,r);let i;q(t)?i=t:(i=t.handler,n=t);const o=nn(this),l=Gn(s,i.bind(r),n);return o(),l}function go(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ne(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Dc(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ee;let s=n;const i=t.startsWith("update:"),o=i&&$c(r,t.slice(7));o&&(o.trim&&(s=n.map(a=>se(a)?a.trim():a)),o.number&&(s=n.map(Sr)));let l,c=r[l=bn(t)]||r[l=bn(Ne(t))];!c&&i&&(c=r[l=bn(st(t))]),c&&Fe(c,e,6,s);const f=r[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Fe(f,e,6,s)}}function mo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=mo(f,t,!0);a&&(l=!0,fe(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&r.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):fe(o,i),ne(e)&&r.set(e,o),o)}function Yn(e,t){return!e||!Qt(t)?!1:(t=t.slice(2).replace(/Once$/,""),J(e,t[0].toLowerCase()+t.slice(1))||J(e,st(t))||J(e,t))}function cr(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:g,setupState:_,ctx:b,inheritAttrs:S}=e,V=Mn(e);let N,U;try{if(n.shapeFlag&4){const m=s||r,M=m;N=Me(f.call(M,m,a,h,_,g,b)),U=l}else{const m=t;N=Me(m.length>1?m(h,{attrs:l,slots:o,emit:c}):m(h,null)),U=t.props?l:jc(l)}}catch(m){Bt.length=0,en(m,e,1),N=le(ye)}let p=N;if(U&&S!==!1){const m=Object.keys(U),{shapeFlag:M}=p;m.length&&M&7&&(i&&m.some(Dr)&&(U=Vc(U,i)),p=nt(p,U,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(V),N}const jc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Qt(n))&&((t||(t={}))[n]=e[n]);return t},Vc=(e,t)=>{const n={};for(const r in e)(!Dr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Uc(e,t,n){const{props:r,children:s,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?Ns(r,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function vo(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):ql(e)}const Se=Symbol.for("v-fgt"),mt=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Ut=Symbol.for("v-stc"),Bt=[];let Ae=null;function Pr(e=!1){Bt.push(Ae=e?null:[])}function kc(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Xt=1;function Fs(e){Xt+=e,e<0&&Ae&&(Ae.hasOnce=!0)}function _o(e){return e.dynamicChildren=Xt>0?Ae||Ct:null,kc(),Xt>0&&Ae&&Ae.push(e),e}function Vf(e,t,n,r,s,i){return _o(wo(e,t,n,r,s,i,!0))}function Lr(e,t,n,r,s){return _o(le(e,t,n,r,s,!0))}function Ln(e){return e?e.__v_isVNode===!0:!1}function dt(e,t){return e.type===t.type&&e.key===t.key}const bo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||ae(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function wo(e,t=null,n=null,r=0,s=null,i=e===Se?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&bo(t),ref:t&&xn(t),scopeId:Vi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:de};return l?(os(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Xt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const le=Wc;function Wc(e,t=null,n=null,r=0,s=null,i=!1){if((!e||e===Ji)&&(e=ye),Ln(e)){const l=nt(e,t,!0);return n&&os(l,n),Xt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(ea(e)&&(e=e.__vccOpts),t){t=Kc(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=Br(l)),ne(c)&&(Xr(c)&&!K(c)&&(c=fe({},c)),t.style=Ur(c))}const o=se(e)?1:yo(e)?128:Bi(e)?64:ne(e)?4:q(e)?2:0;return wo(e,t,n,r,s,o,i,!0)}function Kc(e){return e?Xr(e)||so(e)?fe({},e):e:null}function nt(e,t,n=!1,r=!1){const{props:s,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?qc(s||{},t):s,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&bo(f),ref:t&&t.ref?n&&i?K(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Se?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&Yt(a,c.clone(a)),a}function So(e=" ",t=0){return le(mt,null,e,t)}function Uf(e,t){const n=le(Ut,null,e);return n.staticCount=t,n}function Bf(e="",t=!1){return t?(Pr(),Lr(ye,null,e)):le(ye,null,e)}function Me(e){return e==null||typeof e=="boolean"?le(ye):K(e)?le(Se,null,e.slice()):typeof e=="object"?et(e):le(mt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function os(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),os(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!so(t)?t._ctx=de:s===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),r&64?(n=16,t=[So(t)]):n=8);e.children=t,e.shapeFlag|=n}function qc(...e){const t={};for(let n=0;nue||de;let Nn,Nr;{const e=mi(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),i=>{s.length>1?s.forEach(o=>o(i)):s[0](i)}};Nn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Nr=t("__VUE_SSR_SETTERS__",n=>rn=n)}const nn=e=>{const t=ue;return Nn(e),e.scope.on(),()=>{e.scope.off(),Nn(t)}},Hs=()=>{ue&&ue.scope.off(),Nn(null)};function Eo(e){return e.vnode.shapeFlag&4}let rn=!1;function zc(e,t=!1,n=!1){t&&Nr(t);const{props:r,children:s}=e.vnode,i=Eo(e);Cc(e,r,i,t),Oc(e,s,n);const o=i?Jc(e,t):void 0;return t&&Nr(!1),o}function Jc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,gc);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Co(e):null,i=nn(e);it();const o=Zt(r,e,0,[e.props,s]);if(ot(),i(),di(o)){if(gt(e)||es(e),o.then(Hs,Hs),t)return o.then(l=>{$s(e,l,t)}).catch(l=>{en(l,e,0)});e.asyncDep=o}else $s(e,o,t)}else xo(e,t)}function $s(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Hi(t)),xo(e,n)}let Ds;function xo(e,t,n){const r=e.type;if(!e.render){if(!t&&Ds&&!r.render){const s=r.template||ns(e).template;if(s){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,f=fe(fe({isCustomElement:i,delimiters:l},o),c);r.render=Ds(s,f)}}e.render=r.render||Ue}{const s=nn(e);it();try{yc(e)}finally{ot(),s()}}}const Qc={get(e,t){return ve(e,"get",""),e[t]}};function Co(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Qc),slots:e.slots,emit:e.emit,expose:t}}function zn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Hi(Sn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Vt)return Vt[n](e)},has(t,n){return n in t||n in Vt}})):e.proxy}function Zc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function ea(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Ul(e,t,rn);function Fr(e,t,n){const r=arguments.length;return r===2?ne(t)&&!K(t)?Ln(t)?le(e,null,[t]):le(e,t):le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Ln(n)&&(n=[n]),le(e,t,n))}const ta="3.5.4";/** -* @vue/runtime-dom v3.5.4 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Hr;const js=typeof window<"u"&&window.trustedTypes;if(js)try{Hr=js.createPolicy("vue",{createHTML:e=>e})}catch{}const To=Hr?e=>Hr.createHTML(e):e=>e,na="http://www.w3.org/2000/svg",ra="http://www.w3.org/1998/Math/MathML",Ke=typeof document<"u"?document:null,Vs=Ke&&Ke.createElement("template"),sa={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ke.createElementNS(na,e):t==="mathml"?Ke.createElementNS(ra,e):n?Ke.createElement(e,{is:n}):Ke.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ke.createTextNode(e),createComment:e=>Ke.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ke.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,i){const o=n?n.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===i||!(s=s.nextSibling)););else{Vs.innerHTML=To(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const l=Vs.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ze="transition",Ht="animation",zt=Symbol("_vtc"),Ao={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ia=fe({},Wi,Ao),oa=e=>(e.displayName="Transition",e.props=ia,e),kf=oa((e,{slots:t})=>Fr(Zl,la(e),t)),at=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},Us=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function la(e){const t={};for(const x in e)x in Ao||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,b=ca(s),S=b&&b[0],V=b&&b[1],{onBeforeEnter:N,onEnter:U,onEnterCancelled:p,onLeave:m,onLeaveCancelled:M,onBeforeAppear:F=N,onAppear:$=U,onAppearCancelled:D=p}=t,R=(x,W,re)=>{ft(x,W?a:l),ft(x,W?f:o),re&&re()},v=(x,W)=>{x._isLeaving=!1,ft(x,h),ft(x,_),ft(x,g),W&&W()},L=x=>(W,re)=>{const ce=x?$:U,j=()=>R(W,x,re);at(ce,[W,j]),Bs(()=>{ft(W,x?c:i),Je(W,x?a:l),Us(ce)||ks(W,r,S,j)})};return fe(t,{onBeforeEnter(x){at(N,[x]),Je(x,i),Je(x,o)},onBeforeAppear(x){at(F,[x]),Je(x,c),Je(x,f)},onEnter:L(!1),onAppear:L(!0),onLeave(x,W){x._isLeaving=!0;const re=()=>v(x,W);Je(x,h),Je(x,g),ua(),Bs(()=>{x._isLeaving&&(ft(x,h),Je(x,_),Us(m)||ks(x,r,V,re))}),at(m,[x,re])},onEnterCancelled(x){R(x,!1),at(p,[x])},onAppearCancelled(x){R(x,!0),at(D,[x])},onLeaveCancelled(x){v(x),at(M,[x])}})}function ca(e){if(e==null)return null;if(ne(e))return[ar(e.enter),ar(e.leave)];{const t=ar(e);return[t,t]}}function ar(e){return el(e)}function Je(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[zt]||(e[zt]=new Set)).add(t)}function ft(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[zt];n&&(n.delete(t),n.size||(e[zt]=void 0))}function Bs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let aa=0;function ks(e,t,n,r){const s=e._endId=++aa,i=()=>{s===e._endId&&r()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=fa(e,t);if(!o)return r();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,g),i()},g=_=>{_.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[b]||"").split(", "),s=r(`${ze}Delay`),i=r(`${ze}Duration`),o=Ws(s,i),l=r(`${Ht}Delay`),c=r(`${Ht}Duration`),f=Ws(l,c);let a=null,h=0,g=0;t===ze?o>0&&(a=ze,h=o,g=i.length):t===Ht?f>0&&(a=Ht,h=f,g=c.length):(h=Math.max(o,f),a=h>0?o>f?ze:Ht:null,g=a?a===ze?i.length:c.length:0);const _=a===ze&&/\b(transform|all)(,|$)/.test(r(`${ze}Property`).toString());return{type:a,timeout:h,propCount:g,hasTransform:_}}function Ws(e,t){for(;e.lengthKs(n)+Ks(e[r])))}function Ks(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ua(){return document.body.offsetHeight}function da(e,t,n){const r=e[zt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const qs=Symbol("_vod"),ha=Symbol("_vsh"),pa=Symbol(""),ga=/(^|;)\s*display\s*:/;function ma(e,t,n){const r=e.style,s=se(n);let i=!1;if(n&&!s){if(t)if(se(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Cn(r,l,"")}else for(const o in t)n[o]==null&&Cn(r,o,"");for(const o in n)o==="display"&&(i=!0),Cn(r,o,n[o])}else if(s){if(t!==n){const o=r[pa];o&&(n+=";"+o),r.cssText=n,i=ga.test(n)}}else t&&e.removeAttribute("style");qs in e&&(e[qs]=i?r.display:"",e[ha]&&(r.display="none"))}const Gs=/\s*!important$/;function Cn(e,t,n){if(K(n))n.forEach(r=>Cn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=ya(e,t);Gs.test(n)?e.setProperty(st(r),n.replace(Gs,""),"important"):e[r]=n}}const Ys=["Webkit","Moz","ms"],fr={};function ya(e,t){const n=fr[t];if(n)return n;let r=Ne(t);if(r!=="filter"&&r in e)return fr[t]=r;r=$n(r);for(let s=0;sur||(Sa.then(()=>ur=0),ur=Date.now());function xa(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Fe(Ca(r,n.value),t,5,[r])};return n.value=e,n.attached=Ea(),n}function Ca(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Zs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ta=(e,t,n,r,s,i)=>{const o=s==="svg";t==="class"?da(e,r,o):t==="style"?ma(e,n,r):Qt(t)?Dr(t)||ba(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Aa(e,t,r,o))?(va(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&zs(e,t,r,o,i,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),zs(e,t,r,o))};function Aa(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Zs(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Zs(t)&&se(n)?!1:!!(t in e||e._isVueCE&&(/[A-Z]/.test(t)||!se(n)))}const ei=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>wn(t,n):t};function Ra(e){e.target.composing=!0}function ti(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const dr=Symbol("_assign"),Wf={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[dr]=ei(s);const i=r||s.props&&s.props.type==="number";Et(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=Sr(l)),e[dr](l)}),n&&Et(e,"change",()=>{e.value=e.value.trim()}),t||(Et(e,"compositionstart",Ra),Et(e,"compositionend",ti),Et(e,"change",ti))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:i}},o){if(e[dr]=ei(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Sr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},Oa=["ctrl","shift","alt","meta"],Ma={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Oa.some(n=>e[`${n}Key`]&&!t.includes(n))},Kf=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const i=st(s.key);if(t.some(o=>o===i||Ia[o]===i))return e(s)})},Ro=fe({patchProp:Ta},sa);let kt,ni=!1;function Pa(){return kt||(kt=Ic(Ro))}function La(){return kt=ni?kt:Pc(Ro),ni=!0,kt}const Gf=(...e)=>{const t=Pa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Mo(r);if(!s)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const o=n(s,!1,Oo(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},t},Yf=(...e)=>{const t=La().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Mo(r);if(s)return n(s,!0,Oo(s))},t};function Oo(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Mo(e){return se(e)?document.querySelector(e):e}const Xf=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Na=window.__VP_SITE_DATA__;function ls(e){return bi()?(al(e),!0):!1}function ke(e){return typeof e=="function"?e():Fi(e)}const Io=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const zf=e=>e!=null,Fa=Object.prototype.toString,Ha=e=>Fa.call(e)==="[object Object]",Jt=()=>{},ri=$a();function $a(){var e,t;return Io&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Da(e,t){function n(...r){return new Promise((s,i)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(i)})}return n}const Po=e=>e();function ja(e,t={}){let n,r,s=Jt;const i=l=>{clearTimeout(l),s(),s=Jt};return l=>{const c=ke(e),f=ke(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(r&&(i(r),r=null),Promise.resolve(l())):new Promise((a,h)=>{s=t.rejectOnCancel?h:a,f&&!r&&(r=setTimeout(()=>{n&&i(n),r=null,a(l())},f)),n=setTimeout(()=>{r&&i(r),r=null,a(l())},c)})}}function Va(e=Po){const t=oe(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...i)=>{t.value&&e(...i)};return{isActive:Bn(t),pause:n,resume:r,eventFilter:s}}function Ua(e){return Xn()}function Lo(...e){if(e.length!==1)return Dl(...e);const t=e[0];return typeof t=="function"?Bn(Fl(()=>({get:t,set:Jt}))):oe(t)}function No(e,t,n={}){const{eventFilter:r=Po,...s}=n;return Be(e,Da(r,t),s)}function Ba(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Va(r);return{stop:No(e,t,{...s,eventFilter:i}),pause:o,resume:l,isActive:c}}function cs(e,t=!0,n){Ua()?Pt(e,n):t?e():kn(e)}function Jf(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...i}=n;return No(e,t,{...i,eventFilter:ja(r,{maxWait:s})})}function Qf(e,t,n){let r;ae(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Jt}=r,c=oe(!s),f=o?Jr(t):oe(t);let a=0;return is(async h=>{if(!c.value)return;a++;const g=a;let _=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const b=await e(S=>{h(()=>{i&&(i.value=!1),_||S()})});g===a&&(f.value=b)}catch(b){l(b)}finally{i&&g===a&&(i.value=!1),_=!0}}),s?ie(()=>(c.value=!0,f.value)):f}function Fo(e){var t;const n=ke(e);return(t=n==null?void 0:n.$el)!=null?t:n}const He=Io?window:void 0;function It(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=He):[t,n,r,s]=e,!t)return Jt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,g,_)=>(a.addEventListener(h,g,_),()=>a.removeEventListener(h,g,_)),c=Be(()=>[Fo(t),ke(s)],([a,h])=>{if(o(),!a)return;const g=Ha(h)?{...h}:h;i.push(...n.flatMap(_=>r.map(b=>l(a,_,b,g))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return ls(f),f}function ka(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Zf(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=He,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=r,c=ka(t);return It(s,i,a=>{a.repeat&&ke(l)||c(a)&&n(a)},o)}function Wa(){const e=oe(!1),t=Xn();return t&&Pt(()=>{e.value=!0},t),e}function Ka(e){const t=Wa();return ie(()=>(t.value,!!e()))}function Ho(e,t={}){const{window:n=He}=t,r=Ka(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",o):s.removeListener(o))},c=is(()=>{r.value&&(l(),s=n.matchMedia(ke(e)),"addEventListener"in s?s.addEventListener("change",o):s.addListener(o),i.value=s.matches)});return ls(()=>{c(),l(),s=void 0}),i}const yn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},vn="__vueuse_ssr_handlers__",qa=Ga();function Ga(){return vn in yn||(yn[vn]=yn[vn]||{}),yn[vn]}function $o(e,t){return qa[e]||t}function Ya(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Xa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},si="vueuse-storage";function as(e,t,n,r={}){var s;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=He,eventFilter:g,onError:_=v=>{console.error(v)},initOnMounted:b}=r,S=(a?Jr:oe)(typeof t=="function"?t():t);if(!n)try{n=$o("getDefaultStorage",()=>{var v;return(v=He)==null?void 0:v.localStorage})()}catch(v){_(v)}if(!n)return S;const V=ke(t),N=Ya(V),U=(s=r.serializer)!=null?s:Xa[N],{pause:p,resume:m}=Ba(S,()=>F(S.value),{flush:i,deep:o,eventFilter:g});h&&l&&cs(()=>{n instanceof Storage?It(h,"storage",D):It(h,si,R),b&&D()}),b||D();function M(v,L){if(h){const x={key:e,oldValue:v,newValue:L,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(si,{detail:x}))}}function F(v){try{const L=n.getItem(e);if(v==null)M(L,null),n.removeItem(e);else{const x=U.write(v);L!==x&&(n.setItem(e,x),M(L,x))}}catch(L){_(L)}}function $(v){const L=v?v.newValue:n.getItem(e);if(L==null)return c&&V!=null&&n.setItem(e,U.write(V)),V;if(!v&&f){const x=U.read(L);return typeof f=="function"?f(x,V):N==="object"&&!Array.isArray(x)?{...V,...x}:x}else return typeof L!="string"?L:U.read(L)}function D(v){if(!(v&&v.storageArea!==n)){if(v&&v.key==null){S.value=V;return}if(!(v&&v.key!==e)){p();try{(v==null?void 0:v.newValue)!==U.write(S.value)&&(S.value=$(v))}catch(L){_(L)}finally{v?kn(m):m()}}}}function R(v){D(v.detail)}return S}function Do(e){return Ho("(prefers-color-scheme: dark)",e)}const za="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Ja(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=He,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},g=Do({window:s}),_=ie(()=>g.value?"dark":"light"),b=c||(o==null?Lo(r):as(o,r,i,{window:s,listenToStorageChanges:l})),S=ie(()=>b.value==="auto"?_.value:b.value),V=$o("updateHTMLAttrs",(m,M,F)=>{const $=typeof m=="string"?s==null?void 0:s.document.querySelector(m):Fo(m);if(!$)return;const D=new Set,R=new Set;let v=null;if(M==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(W=>(W||"").split(/\s/g)).filter(Boolean).forEach(W=>{x.includes(W)?D.add(W):R.add(W)})}else v={key:M,value:F};if(D.size===0&&R.size===0&&v===null)return;let L;a&&(L=s.document.createElement("style"),L.appendChild(document.createTextNode(za)),s.document.head.appendChild(L));for(const x of D)$.classList.add(x);for(const x of R)$.classList.remove(x);v&&$.setAttribute(v.key,v.value),a&&(s.getComputedStyle(L).opacity,document.head.removeChild(L))});function N(m){var M;V(t,n,(M=h[m])!=null?M:m)}function U(m){e.onChanged?e.onChanged(m,N):N(m)}Be(S,U,{flush:"post",immediate:!0}),cs(()=>U(S.value));const p=ie({get(){return f?b.value:S.value},set(m){b.value=m}});try{return Object.assign(p,{store:b,system:_,state:S})}catch{return p}}function Qa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=He}=e,s=Ja({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>s.system?s.system.value:Do({window:r}).value?"dark":"light");return ie({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?s.value="auto":s.value=c}})}function hr(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function eu(e,t,n={}){const{window:r=He}=n;return as(e,t,r==null?void 0:r.localStorage,n)}function jo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const pr=new WeakMap;function tu(e,t=!1){const n=oe(t);let r=null,s="";Be(Lo(e),l=>{const c=hr(ke(l));if(c){const f=c;if(pr.get(f)||pr.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(s=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=hr(ke(e));!l||n.value||(ri&&(r=It(l,"touchmove",c=>{Za(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=hr(ke(e));!l||!n.value||(ri&&(r==null||r()),l.style.overflow=s,pr.delete(l),n.value=!1)};return ls(o),ie({get(){return n.value},set(l){l?i():o()}})}function nu(e,t,n={}){const{window:r=He}=n;return as(e,t,r==null?void 0:r.sessionStorage,n)}function ru(e={}){const{window:t=He,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const r=oe(t.scrollX),s=oe(t.scrollY),i=ie({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return It(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function su(e={}){const{window:t=He,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(r),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),cs(f),It("resize",f,{passive:!0}),s){const a=Ho("(orientation: portrait)");Be(a,()=>f())}return{width:l,height:c}}const gr={BASE_URL:"/YAXArrays.jl/dev/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var mr={};const Vo=/^(?:[a-z]+:|\/\/)/i,ef="vitepress-theme-appearance",tf=/#.*$/,nf=/[?#].*$/,rf=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Uo={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function sf(e,t,n=!1){if(t===void 0)return!1;if(e=ii(`/${e}`),n)return new RegExp(t).test(e);if(ii(t)!==e)return!1;const r=t.match(tf);return r?(ge?location.hash:"")===r[0]:!0}function ii(e){return decodeURI(e).replace(nf,"").replace(rf,"$1")}function of(e){return Vo.test(e)}function lf(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!of(n)&&sf(t,`/${n}/`,!0))||"root"}function cf(e,t){var r,s,i,o,l,c,f;const n=lf(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:ko(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function Bo(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=af(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function af(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function ff(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([i,o])=>i===n&&o[s[0]]===s[1])}function ko(e,t){return[...e.filter(n=>!ff(t,n)),...t]}const uf=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,df=/^[a-z]:/i;function oi(e){const t=df.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(uf,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const yr=new Set;function hf(e){if(yr.size===0){const n=typeof process=="object"&&(mr==null?void 0:mr.VITE_EXTRA_EXTENSIONS)||(gr==null?void 0:gr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>yr.add(r))}const t=e.split(".").pop();return t==null||!yr.has(t.toLowerCase())}function iu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const pf=Symbol(),yt=Jr(Na);function ou(e){const t=ie(()=>cf(yt.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?oe(!0):n?Qa({storageKey:ef,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),s=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Be(()=>e.data,()=>{s.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>Bo(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:r,hash:ie(()=>s.value)}}function gf(){const e=Mt(pf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function mf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function li(e){return Vo.test(e)||!e.startsWith("/")?e:mf(yt.value.base,e)}function yf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/YAXArrays.jl/dev/";t=oi(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${oi(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Tn=[];function lu(e){Tn.push(e),qn(()=>{Tn=Tn.filter(t=>t!==e)})}function vf(){let e=yt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ci(e,n);else if(Array.isArray(e))for(const r of e){const s=ci(r,n);if(s){t=s;break}}return t}function ci(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const _f=Symbol(),Wo="http://a.com",bf=()=>({path:"/",component:null,data:Uo});function cu(e,t){const n=Un(bf()),r={route:n,go:s};async function s(l=ge?location.href:"/"){var c,f;l=vr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(ge&&l!==vr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=r.onAfterRouteChanged)==null?void 0:f.call(r,l)))}let i=null;async function o(l,c=0,f=!1){var g;if(await((g=r.onBeforePageLoad)==null?void 0:g.call(r,l))===!1)return;const a=new URL(l,Wo),h=i=a.pathname;try{let _=await e(h);if(!_)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:b,__pageData:S}=_;if(!b)throw new Error(`Invalid route component: ${b}`);n.path=ge?h:li(h),n.component=Sn(b),n.data=Sn(S),ge&&kn(()=>{let V=yt.value.base+S.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!yt.value.cleanUrls&&!V.endsWith("/")&&(V+=".html"),V!==a.pathname&&(a.pathname=V,l=V+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let N=null;try{N=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(U){console.warn(U)}if(N){ai(N,a.hash);return}}window.scrollTo(0,c)})}}catch(_){if(!/fetch|Page not found/.test(_.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(_),!f)try{const b=await fetch(yt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await b.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:li(h),n.component=t?Sn(t):null;const b=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Uo,relativePath:b}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:g,hash:_,search:b}=new URL(f,c.baseURI),S=new URL(location.href);h===S.origin&&hf(g)&&(l.preventDefault(),g===S.pathname&&b===S.search?(_!==S.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:S.href,newURL:a}))),_?ai(c,_,c.classList.contains("header-anchor")):window.scrollTo(0,0)):s(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(vr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function wf(){const e=Mt(_f);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ko(){return wf().route}function ai(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(r).paddingTop,10),o=window.scrollY+r.getBoundingClientRect().top-vf()+i;requestAnimationFrame(s)}}function vr(e){const t=new URL(e,Wo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),yt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const _r=()=>Tn.forEach(e=>e()),au=Zr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ko(),{site:n}=gf();return()=>Fr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Fr(t.component,{onVnodeMounted:_r,onVnodeUpdated:_r,onVnodeUnmounted:_r}):"404 Page Not Found"])}}),Sf="modulepreload",Ef=function(e){return"/YAXArrays.jl/dev/"+e},fi={},fu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.allSettled(n.map(l=>{if(l=Ef(l),l in fi)return;fi[l]=!0;const c=l.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${f}`))return;const a=document.createElement("link");if(a.rel=c?"stylesheet":Sf,c||(a.as="script"),a.crossOrigin="",a.href=l,o&&a.setAttribute("nonce",o),document.head.appendChild(a),c)return new Promise((h,g)=>{a.addEventListener("load",h),a.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(i=>{for(const o of i||[]){if(o.status!=="rejected")continue;const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o.reason,window.dispatchEvent(l),!l.defaultPrevented)throw o.reason}return t()})},uu=Zr({setup(e,{slots:t}){const n=oe(!1);return Pt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function du(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const i=r.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[s];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function hu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,i=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),xf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function xf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function pu(e,t){let n=!0,r=[];const s=i=>{if(n){n=!1,i.forEach(l=>{const c=br(l);for(const f of document.head.children)if(f.isEqualNode(c)){r.push(f);return}});return}const o=i.map(br);r.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete r[c])}),o.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...o].filter(Boolean)};is(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=Bo(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):br(["meta",{name:"description",content:a}]),s(ko(o.head,Tf(c)))})}function br([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function Cf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Tf(e){return e.filter(t=>!Cf(t))}const wr=new Set,qo=()=>document.createElement("link"),Af=e=>{const t=qo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Rf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let _n;const Of=ge&&(_n=qo())&&_n.relList&&_n.relList.supports&&_n.relList.supports("prefetch")?Af:Rf;function gu(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!wr.has(c)){wr.add(c);const f=yf(c);f&&Of(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):wr.add(l))})})};Pt(r);const s=Ko();Be(()=>s.path,r),qn(()=>{n&&n.disconnect()})}export{zi as $,vf as A,Lf as B,Ff as C,Jr as D,lu as E,Se as F,le as G,Nf as H,Vo as I,Ko as J,qc as K,Mt as L,su as M,Ur as N,Zf as O,kn as P,ru as Q,ge as R,Bn as S,kf as T,Pf as U,fu as V,tu as W,xc as X,$f as Y,qf as Z,Xf as _,So as a,Kf as a0,Df as a1,Uf as a2,Un as a3,Dl as a4,Fr as a5,pu as a6,_f as a7,ou as a8,pf as a9,au as aa,uu as ab,yt as ac,Yf as ad,cu as ae,yf as af,gu as ag,hu as ah,du as ai,ke as aj,Fo as ak,zf as al,ls as am,Qf as an,nu as ao,eu as ap,Jf as aq,wf as ar,It as as,Mf as at,Wf as au,ae as av,If as aw,Sn as ax,Gf as ay,iu as az,Lr as b,Vf as c,Zr as d,Bf as e,hf as f,li as g,ie as h,of as i,wo as j,Fi as k,sf as l,Ho as m,Br as n,Pr as o,oe as p,Be as q,Hf as r,is as s,ll as t,gf as u,Pt as v,Gl as w,qn as x,jf as y,fc as z}; diff --git a/dev/assets/chunks/framework.BgERvflD.js b/dev/assets/chunks/framework.BgERvflD.js new file mode 100644 index 00000000..83f911d6 --- /dev/null +++ b/dev/assets/chunks/framework.BgERvflD.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.6 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Hr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Tt=[],Ue=()=>{},zo=()=>!1,Qt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),$r=e=>e.startsWith("onUpdate:"),fe=Object.assign,Dr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Jo=Object.prototype.hasOwnProperty,J=(e,t)=>Jo.call(e,t),K=Array.isArray,Ct=e=>Fn(e)==="[object Map]",fi=e=>Fn(e)==="[object Set]",q=e=>typeof e=="function",se=e=>typeof e=="string",rt=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",ui=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),di=Object.prototype.toString,Fn=e=>di.call(e),Qo=e=>Fn(e).slice(8,-1),hi=e=>Fn(e)==="[object Object]",jr=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,At=Hr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Hn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Zo=/-(\w)/g,Ne=Hn(e=>e.replace(Zo,(t,n)=>n?n.toUpperCase():"")),el=/\B([A-Z])/g,st=Hn(e=>e.replace(el,"-$1").toLowerCase()),$n=Hn(e=>e.charAt(0).toUpperCase()+e.slice(1)),_n=Hn(e=>e?`on${$n(e)}`:""),tt=(e,t)=>!Object.is(e,t),wn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},wr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},tl=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let hs;const gi=()=>hs||(hs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Vr(e){if(K(e)){const t={};for(let n=0;n{if(n){const r=n.split(rl);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Ur(e){let t="";if(se(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),cl=e=>se(e)?e:e==null?"":K(e)||ne(e)&&(e.toString===di||!q(e.toString))?yi(e)?cl(e.value):JSON.stringify(e,vi,2):String(e),vi=(e,t)=>yi(t)?vi(e,t.value):Ct(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],i)=>(n[Zn(r,i)+" =>"]=s,n),{})}:fi(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Zn(n))}:rt(t)?Zn(t):ne(t)&&!K(t)&&!hi(t)?String(t):t,Zn=(e,t="")=>{var n;return rt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.6 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let _e;class al{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Ei(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function xi(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),Wr(r),ul(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Sr(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ti(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ti(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Wt))return;e.globalVersion=Wt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Sr(e)){e.flags&=-3;return}const n=Z,r=Le;Z=e,Le=!0;try{Ei(e);const s=e.fn(e._value);(t.version===0||tt(s,e._value))&&(e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Z=n,Le=r,xi(e),e.flags&=-3}}function Wr(e){const{dep:t,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),t.subs===e&&(t.subs=n),!t.subs&&t.computed){t.computed.flags&=-5;for(let s=t.computed.deps;s;s=s.nextDep)Wr(s)}}function ul(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Le=!0;const Ci=[];function it(){Ci.push(Le),Le=!1}function ot(){const e=Ci.pop();Le=e===void 0?!0:e}function ps(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Z;Z=void 0;try{t()}finally{Z=n}}}let Wt=0;class dl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Dn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0}track(t){if(!Z||!Le||Z===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Z)n=this.activeLink=new dl(Z,this),Z.deps?(n.prevDep=Z.depsTail,Z.depsTail.nextDep=n,Z.depsTail=n):Z.deps=Z.depsTail=n,Z.flags&4&&Ai(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Z.depsTail,n.nextDep=void 0,Z.depsTail.nextDep=n,Z.depsTail=n,Z.deps===n&&(Z.deps=r)}return n}trigger(t){this.version++,Wt++,this.notify(t)}notify(t){Br();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{kr()}}}function Ai(e){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Ai(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}const An=new WeakMap,ht=Symbol(""),Er=Symbol(""),Kt=Symbol("");function ve(e,t,n){if(Le&&Z){let r=An.get(e);r||An.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=new Dn),s.track()}}function Ge(e,t,n,r,s,i){const o=An.get(e);if(!o){Wt++;return}const l=c=>{c&&c.trigger()};if(Br(),t==="clear")o.forEach(l);else{const c=K(e),f=c&&jr(n);if(c&&n==="length"){const a=Number(r);o.forEach((h,g)=>{(g==="length"||g===Kt||!rt(g)&&g>=a)&&l(h)})}else switch(n!==void 0&&l(o.get(n)),f&&l(o.get(Kt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(ht)),Ct(e)&&l(o.get(Er)));break;case"delete":c||(l(o.get(ht)),Ct(e)&&l(o.get(Er)));break;case"set":Ct(e)&&l(o.get(ht));break}}kr()}function hl(e,t){var n;return(n=An.get(e))==null?void 0:n.get(t)}function _t(e){const t=z(e);return t===e?t:(ve(t,"iterate",Kt),Pe(e)?t:t.map(me))}function jn(e){return ve(e=z(e),"iterate",Kt),e}const pl={__proto__:null,[Symbol.iterator](){return tr(this,Symbol.iterator,me)},concat(...e){return _t(this).concat(...e.map(t=>K(t)?_t(t):t))},entries(){return tr(this,"entries",e=>(e[1]=me(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(me),arguments)},find(e,t){return We(this,"find",e,t,me,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,me,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return nr(this,"includes",e)},indexOf(...e){return nr(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return nr(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return gs(this,"reduce",e,t)},reduceRight(e,...t){return gs(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return tr(this,"values",me)}};function tr(e,t,n){const r=jn(e),s=r[t]();return r!==e&&!Pe(e)&&(s._next=s.next,s.next=()=>{const i=s._next();return i.value&&(i.value=n(i.value)),i}),s}const gl=Array.prototype;function We(e,t,n,r,s,i){const o=jn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==gl[t]){const h=c.apply(e,i);return l?me(h):h}let f=n;o!==e&&(l?f=function(h,g){return n.call(this,me(h),g,e)}:n.length>2&&(f=function(h,g){return n.call(this,h,g,e)}));const a=c.call(o,f,r);return l&&s?s(a):a}function gs(e,t,n,r){const s=jn(e);let i=n;return s!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,me(l),c,e)}),s[t](i,...r)}function nr(e,t,n){const r=z(e);ve(r,"iterate",Kt);const s=r[t](...n);return(s===-1||s===!1)&&Yr(n[0])?(n[0]=z(n[0]),r[t](...n)):s}function Ft(e,t,n=[]){it(),Br();const r=z(e)[t].apply(e,n);return kr(),ot(),r}const ml=Hr("__proto__,__v_isRef,__isVue"),Ri=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(rt));function yl(e){rt(e)||(e=String(e));const t=z(this);return ve(t,"has",e),t.hasOwnProperty(e)}class Oi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(s?i?Ml:Li:i?Ii:Pi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const o=K(t);if(!s){let c;if(o&&(c=pl[n]))return c;if(n==="hasOwnProperty")return yl}const l=Reflect.get(t,n,ae(t)?t:r);return(rt(n)?Ri.has(n):ml(n))||(s||ve(t,"get",n),i)?l:ae(l)?o&&jr(n)?l:l.value:ne(l)?s?Bn(l):Un(l):l}}class Mi extends Oi{constructor(t=!1){super(!1,t)}set(t,n,r,s){let i=t[n];if(!this._isShallow){const c=vt(i);if(!Pe(r)&&!vt(r)&&(i=z(i),r=z(r)),!K(t)&&ae(i)&&!ae(r))return c?!1:(i.value=r,!0)}const o=K(t)&&jr(n)?Number(n)e,Vn=e=>Reflect.getPrototypeOf(e);function ln(e,t,n=!1,r=!1){e=e.__v_raw;const s=z(e),i=z(t);n||(tt(t,i)&&ve(s,"get",t),ve(s,"get",i));const{has:o}=Vn(s),l=r?Kr:n?Xr:me;if(o.call(s,t))return l(e.get(t));if(o.call(s,i))return l(e.get(i));e!==s&&e.get(t)}function cn(e,t=!1){const n=this.__v_raw,r=z(n),s=z(e);return t||(tt(e,s)&&ve(r,"has",e),ve(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function an(e,t=!1){return e=e.__v_raw,!t&&ve(z(e),"iterate",ht),Reflect.get(e,"size",e)}function ms(e,t=!1){!t&&!Pe(e)&&!vt(e)&&(e=z(e));const n=z(this);return Vn(n).has.call(n,e)||(n.add(e),Ge(n,"add",e,e)),this}function ys(e,t,n=!1){!n&&!Pe(t)&&!vt(t)&&(t=z(t));const r=z(this),{has:s,get:i}=Vn(r);let o=s.call(r,e);o||(e=z(e),o=s.call(r,e));const l=i.call(r,e);return r.set(e,t),o?tt(t,l)&&Ge(r,"set",e,t):Ge(r,"add",e,t),this}function vs(e){const t=z(this),{has:n,get:r}=Vn(t);let s=n.call(t,e);s||(e=z(e),s=n.call(t,e)),r&&r.call(t,e);const i=t.delete(e);return s&&Ge(t,"delete",e,void 0),i}function bs(){const e=z(this),t=e.size!==0,n=e.clear();return t&&Ge(e,"clear",void 0,void 0),n}function fn(e,t){return function(r,s){const i=this,o=i.__v_raw,l=z(o),c=t?Kr:e?Xr:me;return!e&&ve(l,"iterate",ht),o.forEach((f,a)=>r.call(s,c(f),c(a),i))}}function un(e,t,n){return function(...r){const s=this.__v_raw,i=z(s),o=Ct(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=s[e](...r),a=n?Kr:t?Xr:me;return!t&&ve(i,"iterate",c?Er:ht),{next(){const{value:h,done:g}=f.next();return g?{value:h,done:g}:{value:l?[a(h[0]),a(h[1])]:a(h),done:g}},[Symbol.iterator](){return this}}}}function Xe(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Sl(){const e={get(i){return ln(this,i)},get size(){return an(this)},has:cn,add:ms,set:ys,delete:vs,clear:bs,forEach:fn(!1,!1)},t={get(i){return ln(this,i,!1,!0)},get size(){return an(this)},has:cn,add(i){return ms.call(this,i,!0)},set(i,o){return ys.call(this,i,o,!0)},delete:vs,clear:bs,forEach:fn(!1,!0)},n={get(i){return ln(this,i,!0)},get size(){return an(this,!0)},has(i){return cn.call(this,i,!0)},add:Xe("add"),set:Xe("set"),delete:Xe("delete"),clear:Xe("clear"),forEach:fn(!0,!1)},r={get(i){return ln(this,i,!0,!0)},get size(){return an(this,!0)},has(i){return cn.call(this,i,!0)},add:Xe("add"),set:Xe("set"),delete:Xe("delete"),clear:Xe("clear"),forEach:fn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=un(i,!1,!1),n[i]=un(i,!0,!1),t[i]=un(i,!1,!0),r[i]=un(i,!0,!0)}),[e,n,t,r]}const[El,xl,Tl,Cl]=Sl();function qr(e,t){const n=t?e?Cl:Tl:e?xl:El;return(r,s,i)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(J(n,s)&&s in r?n:r,s,i)}const Al={get:qr(!1,!1)},Rl={get:qr(!1,!0)},Ol={get:qr(!0,!1)};const Pi=new WeakMap,Ii=new WeakMap,Li=new WeakMap,Ml=new WeakMap;function Pl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Il(e){return e.__v_skip||!Object.isExtensible(e)?0:Pl(Qo(e))}function Un(e){return vt(e)?e:Gr(e,!1,bl,Al,Pi)}function Ll(e){return Gr(e,!1,wl,Rl,Ii)}function Bn(e){return Gr(e,!0,_l,Ol,Li)}function Gr(e,t,n,r,s){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=s.get(e);if(i)return i;const o=Il(e);if(o===0)return e;const l=new Proxy(e,o===2?r:n);return s.set(e,l),l}function pt(e){return vt(e)?pt(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Yr(e){return e?!!e.__v_raw:!1}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function Sn(e){return!J(e,"__v_skip")&&Object.isExtensible(e)&&pi(e,"__v_skip",!0),e}const me=e=>ne(e)?Un(e):e,Xr=e=>ne(e)?Bn(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function oe(e){return Ni(e,!1)}function zr(e){return Ni(e,!0)}function Ni(e,t){return ae(e)?e:new Nl(e,t)}class Nl{constructor(t,n){this.dep=new Dn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:z(t),this._value=n?t:me(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Pe(t)||vt(t);t=r?t:z(t),tt(t,n)&&(this._rawValue=t,this._value=r?t:me(t),this.dep.trigger())}}function Fi(e){return ae(e)?e.value:e}const Fl={get:(e,t,n)=>t==="__v_raw"?e:Fi(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return ae(s)&&!ae(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Hi(e){return pt(e)?e:new Proxy(e,Fl)}class Hl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Dn,{get:r,set:s}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=s}get value(){return this._value=this._get()}set value(t){this._set(t)}}function $l(e){return new Hl(e)}class Dl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return hl(z(this._object),this._key)}}class jl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Vl(e,t,n){return ae(e)?e:q(e)?new jl(e):ne(e)&&arguments.length>1?Ul(e,t,n):oe(e)}function Ul(e,t,n){const r=e[t];return ae(r)?r:new Dl(e,t,n)}class Bl{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Dn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Wt-1,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Z!==this)return Si(this),!0}get value(){const t=this.dep.track();return Ti(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function kl(e,t,n=!1){let r,s;return q(e)?r=e:(r=e.get,s=e.set),new Bl(r,s,n)}const dn={},Rn=new WeakMap;let ut;function Wl(e,t=!1,n=ut){if(n){let r=Rn.get(n);r||Rn.set(n,r=[]),r.push(e)}}function Kl(e,t,n=ee){const{immediate:r,deep:s,once:i,scheduler:o,augmentJob:l,call:c}=n,f=m=>s?m:Pe(m)||s===!1||s===0?qe(m,1):qe(m);let a,h,g,v,_=!1,S=!1;if(ae(e)?(h=()=>e.value,_=Pe(e)):pt(e)?(h=()=>f(e),_=!0):K(e)?(S=!0,_=e.some(m=>pt(m)||Pe(m)),h=()=>e.map(m=>{if(ae(m))return m.value;if(pt(m))return f(m);if(q(m))return c?c(m,2):m()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(g){it();try{g()}finally{ot()}}const m=ut;ut=a;try{return c?c(e,3,[v]):e(v)}finally{ut=m}}:h=Ue,t&&s){const m=h,M=s===!0?1/0:s;h=()=>qe(m(),M)}const U=bi(),N=()=>{a.stop(),U&&Dr(U.effects,a)};if(i&&t){const m=t;t=(...M)=>{m(...M),N()}}let B=S?new Array(e.length).fill(dn):dn;const p=m=>{if(!(!(a.flags&1)||!a.dirty&&!m))if(t){const M=a.run();if(s||_||(S?M.some((F,$)=>tt(F,B[$])):tt(M,B))){g&&g();const F=ut;ut=a;try{const $=[M,B===dn?void 0:S&&B[0]===dn?[]:B,v];c?c(t,3,$):t(...$),B=M}finally{ut=F}}}else a.run()};return l&&l(p),a=new _i(h),a.scheduler=o?()=>o(p,!1):p,v=m=>Wl(m,!1,a),g=a.onStop=()=>{const m=Rn.get(a);if(m){if(c)c(m,4);else for(const M of m)M();Rn.delete(a)}},t?r?p(!0):B=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function qe(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ae(e))qe(e.value,t,n);else if(K(e))for(let r=0;r{qe(r,t,n)});else if(hi(e)){for(const r in e)qe(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&qe(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.6 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Zt(e,t,n,r){try{return r?e(...r):e()}catch(s){en(s,t,n)}}function Fe(e,t,n,r){if(q(e)){const s=Zt(e,t,n,r);return s&&ui(s)&&s.catch(i=>{en(i,t,n)}),s}if(K(e)){const s=[];for(let i=0;i>>1,s=we[r],i=Gt(s);i=Gt(n)?we.push(e):we.splice(Gl(t),0,e),e.flags|=1,Di()}}function Di(){!qt&&!xr&&(xr=!0,Jr=$i.then(ji))}function Yl(e){K(e)?Rt.push(...e):Qe&&e.id===-1?Qe.splice(St+1,0,e):e.flags&1||(Rt.push(e),e.flags|=1),Di()}function _s(e,t,n=qt?je+1:0){for(;nGt(n)-Gt(r));if(Rt.length=0,Qe){Qe.push(...t);return}for(Qe=t,St=0;Ste.id==null?e.flags&2?-1:1/0:e.id;function ji(e){xr=!1,qt=!0;try{for(je=0;je{r._d&&Ns(-1);const i=Mn(t);let o;try{o=e(...s)}finally{Mn(i),r._d&&Ns(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function If(e,t){if(de===null)return e;const n=Xn(de),r=e.dirs||(e.dirs=[]);for(let s=0;se.__isTeleport,jt=e=>e&&(e.disabled||e.disabled===""),zl=e=>e&&(e.defer||e.defer===""),ws=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Ss=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Tr=(e,t)=>{const n=e&&e.to;return se(n)?t?t(n):null:n},Jl={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,i,o,l,c,f){const{mc:a,pc:h,pbc:g,o:{insert:v,querySelector:_,createText:S,createComment:U}}=f,N=jt(t.props);let{shapeFlag:B,children:p,dynamicChildren:m}=t;if(e==null){const M=t.el=S(""),F=t.anchor=S("");v(M,n,r),v(F,n,r);const $=(R,b)=>{B&16&&(s&&s.isCE&&(s.ce._teleportTarget=R),a(p,R,b,s,i,o,l,c))},j=()=>{const R=t.target=Tr(t.props,_),b=ki(R,t,S,v);R&&(o!=="svg"&&ws(R)?o="svg":o!=="mathml"&&Ss(R)&&(o="mathml"),N||($(R,b),En(t)))};N&&($(n,F),En(t)),zl(t.props)?Ee(j,i):j()}else{t.el=e.el,t.targetStart=e.targetStart;const M=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,j=jt(e.props),R=j?n:F,b=j?M:$;if(o==="svg"||ws(F)?o="svg":(o==="mathml"||Ss(F))&&(o="mathml"),m?(g(e.dynamicChildren,m,R,s,i,o,l),rs(e,t,!0)):c||h(e,t,R,b,s,i,o,l,!1),N)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):hn(t,n,M,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const L=t.target=Tr(t.props,_);L&&hn(t,L,null,f,0)}else j&&hn(t,F,$,f,1);En(t)}},remove(e,t,n,{um:r,o:{remove:s}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:g}=e;if(h&&(s(f),s(a)),i&&s(c),o&16){const v=i||!jt(g);for(let _=0;_{e.isMounted=!0}),zi(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],Wi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Ki=e=>{const t=e.subTree;return t.component?Ki(t.component):t},ec={name:"BaseTransition",props:Wi,setup(e,{slots:t}){const n=Yn(),r=Zl();return()=>{const s=t.default&&Yi(t.default(),!0);if(!s||!s.length)return;const i=qi(s),o=z(e),{mode:l}=o;if(r.isLeaving)return rr(i);const c=Es(i);if(!c)return rr(i);let f=Cr(c,o,r,n,g=>f=g);c.type!==ye&&Yt(c,f);const a=n.subTree,h=a&&Es(a);if(h&&h.type!==ye&&!dt(c,h)&&Ki(n).type!==ye){const g=Cr(h,o,r,n);if(Yt(h,g),l==="out-in"&&c.type!==ye)return r.isLeaving=!0,g.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete g.afterLeave},rr(i);l==="in-out"&&c.type!==ye&&(g.delayLeave=(v,_,S)=>{const U=Gi(r,h);U[String(h.key)]=h,v[Ze]=()=>{_(),v[Ze]=void 0,delete f.delayedLeave},f.delayedLeave=S})}return i}}};function qi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const tc=ec;function Gi(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Cr(e,t,n,r,s){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:g,onLeave:v,onAfterLeave:_,onLeaveCancelled:S,onBeforeAppear:U,onAppear:N,onAfterAppear:B,onAppearCancelled:p}=t,m=String(e.key),M=Gi(n,e),F=(R,b)=>{R&&Fe(R,r,9,b)},$=(R,b)=>{const L=b[1];F(R,b),K(R)?R.every(x=>x.length<=1)&&L():R.length<=1&&L()},j={mode:o,persisted:l,beforeEnter(R){let b=c;if(!n.isMounted)if(i)b=U||c;else return;R[Ze]&&R[Ze](!0);const L=M[m];L&&dt(e,L)&&L.el[Ze]&&L.el[Ze](),F(b,[R])},enter(R){let b=f,L=a,x=h;if(!n.isMounted)if(i)b=N||f,L=B||a,x=p||h;else return;let W=!1;const re=R[pn]=ce=>{W||(W=!0,ce?F(x,[R]):F(L,[R]),j.delayedLeave&&j.delayedLeave(),R[pn]=void 0)};b?$(b,[R,re]):re()},leave(R,b){const L=String(e.key);if(R[pn]&&R[pn](!0),n.isUnmounting)return b();F(g,[R]);let x=!1;const W=R[Ze]=re=>{x||(x=!0,b(),re?F(S,[R]):F(_,[R]),R[Ze]=void 0,M[L]===e&&delete M[L])};M[L]=e,v?$(v,[R,W]):W()},clone(R){const b=Cr(R,t,n,r,s);return s&&s(b),b}};return j}function rr(e){if(tn(e))return e=nt(e),e.children=null,e}function Es(e){if(!tn(e))return Bi(e.type)&&e.children?qi(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Yi(e,t=!1,n){let r=[],s=0;for(let i=0;i1)for(let i=0;iPn(_,t&&(K(t)?t[S]:t),n,r,s));return}if(gt(r)&&!s)return;const i=r.shapeFlag&4?Xn(r.component):r.el,o=s?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===ee?l.refs={}:l.refs,h=l.setupState,g=z(h),v=h===ee?()=>!1:_=>J(g,_);if(f!=null&&f!==c&&(se(f)?(a[f]=null,v(f)&&(h[f]=null)):ae(f)&&(f.value=null)),q(c))Zt(c,l,12,[o,a]);else{const _=se(c),S=ae(c);if(_||S){const U=()=>{if(e.f){const N=_?v(c)?h[c]:a[c]:c.value;s?K(N)&&Dr(N,i):K(N)?N.includes(i)||N.push(i):_?(a[c]=[i],v(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else _?(a[c]=o,v(c)&&(h[c]=o)):S&&(c.value=o,e.k&&(a[e.k]=o))};o?(U.id=-1,Ee(U,n)):U()}}}let xs=!1;const wt=()=>{xs||(console.error("Hydration completed but contains mismatches."),xs=!0)},nc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",rc=e=>e.namespaceURI.includes("MathML"),gn=e=>{if(e.nodeType===1){if(nc(e))return"svg";if(rc(e))return"mathml"}},xt=e=>e.nodeType===8;function sc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,m)=>{if(!m.hasChildNodes()){n(null,p,m),On(),m._vnode=p;return}h(m.firstChild,p,null,null,null),On(),m._vnode=p},h=(p,m,M,F,$,j=!1)=>{j=j||!!m.dynamicChildren;const R=xt(p)&&p.data==="[",b=()=>S(p,m,M,F,$,R),{type:L,ref:x,shapeFlag:W,patchFlag:re}=m;let ce=p.nodeType;m.el=p,re===-2&&(j=!1,m.dynamicChildren=null);let V=null;switch(L){case mt:ce!==3?m.children===""?(c(m.el=s(""),o(p),p),V=p):V=b():(p.data!==m.children&&(wt(),p.data=m.children),V=i(p));break;case ye:B(p)?(V=i(p),N(m.el=p.content.firstChild,p,M)):ce!==8||R?V=b():V=i(p);break;case Ut:if(R&&(p=i(p),ce=p.nodeType),ce===1||ce===3){V=p;const Y=!m.children.length;for(let D=0;D{j=j||!!m.dynamicChildren;const{type:R,props:b,patchFlag:L,shapeFlag:x,dirs:W,transition:re}=m,ce=R==="input"||R==="option";if(ce||L!==-1){W&&Ve(m,null,M,"created");let V=!1;if(B(p)){V=po(F,re)&&M&&M.vnode.props&&M.vnode.props.appear;const D=p.content.firstChild;V&&re.beforeEnter(D),N(D,p,M),m.el=p=D}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let D=v(p.firstChild,m,p,M,F,$,j);for(;D;){mn(p,1)||wt();const he=D;D=D.nextSibling,l(he)}}else if(x&8){let D=m.children;D[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1)),p.textContent!==D&&(mn(p,0)||wt(),p.textContent=m.children)}if(b){if(ce||!j||L&48){const D=p.tagName.includes("-");for(const he in b)(ce&&(he.endsWith("value")||he==="indeterminate")||Qt(he)&&!At(he)||he[0]==="."||D)&&r(p,he,null,b[he],void 0,M)}else if(b.onClick)r(p,"onClick",null,b.onClick,void 0,M);else if(L&4&&pt(b.style))for(const D in b.style)b.style[D]}let Y;(Y=b&&b.onVnodeBeforeMount)&&Oe(Y,M,m),W&&Ve(m,null,M,"beforeMount"),((Y=b&&b.onVnodeMounted)||W||V)&&bo(()=>{Y&&Oe(Y,M,m),V&&re.enter(p),W&&Ve(m,null,M,"mounted")},F)}return p.nextSibling},v=(p,m,M,F,$,j,R)=>{R=R||!!m.dynamicChildren;const b=m.children,L=b.length;for(let x=0;x{const{slotScopeIds:R}=m;R&&($=$?$.concat(R):R);const b=o(p),L=v(i(p),m,b,M,F,$,j);return L&&xt(L)&&L.data==="]"?i(m.anchor=L):(wt(),c(m.anchor=f("]"),b,L),L)},S=(p,m,M,F,$,j)=>{if(mn(p.parentElement,1)||wt(),m.el=null,j){const L=U(p);for(;;){const x=i(p);if(x&&x!==L)l(x);else break}}const R=i(p),b=o(p);return l(p),n(null,m,b,R,M,F,gn(b),$),R},U=(p,m="[",M="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===m&&F++,p.data===M)){if(F===0)return i(p);F--}return p},N=(p,m,M)=>{const F=m.parentNode;F&&F.replaceChild(p,m);let $=M;for(;$;)$.vnode.el===m&&($.vnode.el=$.subTree.el=p),$=$.parent},B=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const Ts="data-allow-mismatch",ic={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function mn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Ts);)e=e.parentElement;const n=e&&e.getAttribute(Ts);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:n.split(",").includes(ic[t])}}function oc(e,t){if(xt(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1)t(r);else if(xt(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const gt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Nf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const g=()=>(h++,f=null,v()),v=()=>{let _;return f||(_=f=t().catch(S=>{if(S=S instanceof Error?S:new Error(String(S)),c)return new Promise((U,N)=>{c(S,()=>U(g()),()=>N(S),h+1)});throw S}).then(S=>_!==f&&f?f:(S&&(S.__esModule||S[Symbol.toStringTag]==="Module")&&(S=S.default),a=S,S)))};return Zr({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(_,S,U){const N=i?()=>{const B=i(U,p=>oc(_,p));B&&(S.bum||(S.bum=[])).push(B)}:U;a?N():v().then(()=>!S.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const _=ue;if(es(_),a)return()=>sr(a,_);const S=p=>{f=null,en(p,_,13,!r)};if(l&&_.suspense||rn)return v().then(p=>()=>sr(p,_)).catch(p=>(S(p),()=>r?le(r,{error:p}):null));const U=oe(!1),N=oe(),B=oe(!!s);return s&&setTimeout(()=>{B.value=!1},s),o!=null&&setTimeout(()=>{if(!U.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);S(p),N.value=p}},o),v().then(()=>{U.value=!0,_.parent&&tn(_.parent.vnode)&&_.parent.update()}).catch(p=>{S(p),N.value=p}),()=>{if(U.value&&a)return sr(a,_);if(N.value&&r)return le(r,{error:N.value});if(n&&!B.value)return le(n)}}})}function sr(e,t){const{ref:n,props:r,children:s,ce:i}=t.vnode,o=le(e,r,s);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const tn=e=>e.type.__isKeepAlive;function lc(e,t){Xi(e,"a",t)}function cc(e,t){Xi(e,"da",t)}function Xi(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Wn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)tn(s.parent.vnode)&&ac(r,t,n,s),s=s.parent}}function ac(e,t,n,r){const s=Wn(t,e,r,!0);Kn(()=>{Dr(r[t],s)},n)}function Wn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{it();const l=nn(n),c=Fe(t,n,e,o);return l(),ot(),c});return r?s.unshift(i):s.push(i),i}}const Ye=e=>(t,n=ue)=>{(!rn||e==="sp")&&Wn(e,(...r)=>t(...r),n)},fc=Ye("bm"),It=Ye("m"),uc=Ye("bu"),dc=Ye("u"),zi=Ye("bum"),Kn=Ye("um"),hc=Ye("sp"),pc=Ye("rtg"),gc=Ye("rtc");function mc(e,t=ue){Wn("ec",e,t)}const Ji="components";function Ff(e,t){return Zi(Ji,e,!0,t)||e}const Qi=Symbol.for("v-ndc");function Hf(e){return se(e)?Zi(Ji,e,!1)||e:e||Qi}function Zi(e,t,n=!0,r=!1){const s=de||ue;if(s){const i=s.type;{const l=ta(i,!1);if(l&&(l===t||l===Ne(t)||l===$n(Ne(t))))return i}const o=Cs(s[e]||i[e],t)||Cs(s.appContext[e],t);return!o&&r?i:o}}function Cs(e,t){return e&&(e[t]||e[Ne(t)]||e[$n(Ne(t))])}function $f(e,t,n,r){let s;const i=n,o=K(e);if(o||se(e)){const l=o&&pt(e);let c=!1;l&&(c=!Pe(e),e=jn(e)),s=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);s=new Array(l.length);for(let c=0,f=l.length;cLn(t)?!(t.type===ye||t.type===Se&&!eo(t.children)):!0)?e:null}function jf(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:_n(r)]=e[r];return n}const Ar=e=>e?xo(e)?Xn(e):Ar(e.parent):null,Vt=fe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ar(e.parent),$root:e=>Ar(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ts(e),$forceUpdate:e=>e.f||(e.f=()=>{Qr(e.update)}),$nextTick:e=>e.n||(e.n=kn.bind(e.proxy)),$watch:e=>Dc.bind(e)}),ir=(e,t)=>e!==ee&&!e.__isScriptSetup&&J(e,t),yc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return i[t]}else{if(ir(r,t))return o[t]=1,r[t];if(s!==ee&&J(s,t))return o[t]=2,s[t];if((f=e.propsOptions[0])&&J(f,t))return o[t]=3,i[t];if(n!==ee&&J(n,t))return o[t]=4,n[t];Rr&&(o[t]=0)}}const a=Vt[t];let h,g;if(a)return t==="$attrs"&&ve(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&J(n,t))return o[t]=4,n[t];if(g=c.config.globalProperties,J(g,t))return g[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:i}=e;return ir(s,t)?(s[t]=n,!0):r!==ee&&J(r,t)?(r[t]=n,!0):J(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:i}},o){let l;return!!n[o]||e!==ee&&J(e,o)||ir(t,o)||(l=i[0])&&J(l,o)||J(r,o)||J(Vt,o)||J(s.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:J(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Vf(){return vc().slots}function vc(){const e=Yn();return e.setupContext||(e.setupContext=Co(e))}function As(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Rr=!0;function bc(e){const t=ts(e),n=e.proxy,r=e.ctx;Rr=!1,t.beforeCreate&&Rs(t.beforeCreate,e,"bc");const{data:s,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:g,beforeUpdate:v,updated:_,activated:S,deactivated:U,beforeDestroy:N,beforeUnmount:B,destroyed:p,unmounted:m,render:M,renderTracked:F,renderTriggered:$,errorCaptured:j,serverPrefetch:R,expose:b,inheritAttrs:L,components:x,directives:W,filters:re}=t;if(f&&_c(f,r,null),o)for(const Y in o){const D=o[Y];q(D)&&(r[Y]=D.bind(n))}if(s){const Y=s.call(n,n);ne(Y)&&(e.data=Un(Y))}if(Rr=!0,i)for(const Y in i){const D=i[Y],he=q(D)?D.bind(n,n):q(D.get)?D.get.bind(n,n):Ue,sn=!q(D)&&q(D.set)?D.set.bind(n):Ue,lt=ie({get:he,set:sn});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>lt.value,set:$e=>lt.value=$e})}if(l)for(const Y in l)to(l[Y],r,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{Cc(D,Y[D])})}a&&Rs(a,e,"c");function V(Y,D){K(D)?D.forEach(he=>Y(he.bind(n))):D&&Y(D.bind(n))}if(V(fc,h),V(It,g),V(uc,v),V(dc,_),V(lc,S),V(cc,U),V(mc,j),V(gc,F),V(pc,$),V(zi,B),V(Kn,m),V(hc,R),K(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:he=>n[D]=he})})}else e.exposed||(e.exposed={});M&&e.render===Ue&&(e.render=M),L!=null&&(e.inheritAttrs=L),x&&(e.components=x),W&&(e.directives=W),R&&es(e)}function _c(e,t,n=Ue){K(e)&&(e=Or(e));for(const r in e){const s=e[r];let i;ne(s)?"default"in s?i=Mt(s.from||r,s.default,!0):i=Mt(s.from||r):i=Mt(s),ae(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[r]=i}}function Rs(e,t,n){Fe(K(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function to(e,t,n,r){let s=r.includes(".")?mo(n,r):()=>n[r];if(se(e)){const i=t[e];q(i)&&Be(s,i)}else if(q(e))Be(s,e.bind(n));else if(ne(e))if(K(e))e.forEach(i=>to(i,t,n,r));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Be(s,i,e)}}function ts(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(f=>In(c,f,o,!0)),In(c,t,o)),ne(t)&&i.set(t,c),c}function In(e,t,n,r=!1){const{mixins:s,extends:i}=t;i&&In(e,i,n,!0),s&&s.forEach(o=>In(e,o,n,!0));for(const o in t)if(!(r&&o==="expose")){const l=wc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const wc={data:Os,props:Ms,emits:Ms,methods:$t,computed:$t,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:$t,directives:$t,watch:Ec,provide:Os,inject:Sc};function Os(e,t){return t?e?function(){return fe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Sc(e,t){return $t(Or(e),Or(t))}function Or(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}const ro={},so=()=>Object.create(ro),io=e=>Object.getPrototypeOf(e)===ro;function Ac(e,t,n,r=!1){const s={},i=so();e.propsDefaults=Object.create(null),oo(e,t,s,i);for(const o in e.propsOptions[0])o in s||(s[o]=void 0);n?e.props=r?s:Ll(s):e.type.props?e.props=s:e.props=i,e.attrs=i}function Rc(e,t,n,r){const{props:s,attrs:i,vnode:{patchFlag:o}}=e,l=z(s),[c]=e.propsOptions;let f=!1;if((r||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[g,v]=lo(h,t,!0);fe(o,g),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&r.set(e,Tt),Tt;if(K(i))for(let a=0;ae[0]==="_"||e==="$stable",ns=e=>K(e)?e.map(Me):[Me(e)],Mc=(e,t,n)=>{if(t._n)return t;const r=Xl((...s)=>ns(t(...s)),n);return r._c=!1,r},ao=(e,t,n)=>{const r=e._ctx;for(const s in e){if(co(s))continue;const i=e[s];if(q(i))t[s]=Mc(s,i,r);else if(i!=null){const o=ns(i);t[s]=()=>o}}},fo=(e,t)=>{const n=ns(t);e.slots.default=()=>n},uo=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},Pc=(e,t,n)=>{const r=e.slots=so();if(e.vnode.shapeFlag&32){const s=t._;s?(uo(r,t,n),n&&pi(r,"_",s,!0)):ao(t,r)}else t&&fo(e,t)},Ic=(e,t,n)=>{const{vnode:r,slots:s}=e;let i=!0,o=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:uo(s,t,n):(i=!t.$stable,ao(t,s)),o=t}else t&&(fo(e,t),o={default:1});if(i)for(const l in s)!co(l)&&o[l]==null&&delete s[l]},Ee=bo;function Lc(e){return ho(e)}function Nc(e){return ho(e,sc)}function ho(e,t){const n=gi();n.__VUE__=!0;const{insert:r,remove:s,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:g,setScopeId:v=Ue,insertStaticContent:_}=e,S=(u,d,y,T=null,w=null,E=null,P=void 0,O=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!dt(u,d)&&(T=on(u),$e(u,w,E,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:C,ref:k,shapeFlag:I}=d;switch(C){case mt:U(u,d,y,T);break;case ye:N(u,d,y,T);break;case Ut:u==null&&B(d,y,T,P);break;case Se:x(u,d,y,T,w,E,P,O,A);break;default:I&1?M(u,d,y,T,w,E,P,O,A):I&6?W(u,d,y,T,w,E,P,O,A):(I&64||I&128)&&C.process(u,d,y,T,w,E,P,O,A,bt)}k!=null&&w&&Pn(k,u&&u.ref,E,d||u,!d)},U=(u,d,y,T)=>{if(u==null)r(d.el=l(d.children),y,T);else{const w=d.el=u.el;d.children!==u.children&&f(w,d.children)}},N=(u,d,y,T)=>{u==null?r(d.el=c(d.children||""),y,T):d.el=u.el},B=(u,d,y,T)=>{[u.el,u.anchor]=_(u.children,d,y,T,u.el,u.anchor)},p=({el:u,anchor:d},y,T)=>{let w;for(;u&&u!==d;)w=g(u),r(u,y,T),u=w;r(d,y,T)},m=({el:u,anchor:d})=>{let y;for(;u&&u!==d;)y=g(u),s(u),u=y;s(d)},M=(u,d,y,T,w,E,P,O,A)=>{d.type==="svg"?P="svg":d.type==="math"&&(P="mathml"),u==null?F(d,y,T,w,E,P,O,A):R(u,d,w,E,P,O,A)},F=(u,d,y,T,w,E,P,O)=>{let A,C;const{props:k,shapeFlag:I,transition:H,dirs:G}=u;if(A=u.el=o(u.type,E,k&&k.is,k),I&8?a(A,u.children):I&16&&j(u.children,A,null,T,w,or(u,E),P,O),G&&Ve(u,null,T,"created"),$(A,u,u.scopeId,P,T),k){for(const te in k)te!=="value"&&!At(te)&&i(A,te,null,k[te],E,T);"value"in k&&i(A,"value",null,k.value,E),(C=k.onVnodeBeforeMount)&&Oe(C,T,u)}G&&Ve(u,null,T,"beforeMount");const X=po(w,H);X&&H.beforeEnter(A),r(A,d,y),((C=k&&k.onVnodeMounted)||X||G)&&Ee(()=>{C&&Oe(C,T,u),X&&H.enter(A),G&&Ve(u,null,T,"mounted")},w)},$=(u,d,y,T,w)=>{if(y&&v(u,y),T)for(let E=0;E{for(let C=A;C{const O=d.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:k}=d;A|=u.patchFlag&16;const I=u.props||ee,H=d.props||ee;let G;if(y&&ct(y,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,y,d,u),k&&Ve(d,u,y,"beforeUpdate"),y&&ct(y,!0),(I.innerHTML&&H.innerHTML==null||I.textContent&&H.textContent==null)&&a(O,""),C?b(u.dynamicChildren,C,O,y,T,or(d,w),E):P||D(u,d,O,null,y,T,or(d,w),E,!1),A>0){if(A&16)L(O,I,H,y,w);else if(A&2&&I.class!==H.class&&i(O,"class",null,H.class,w),A&4&&i(O,"style",I.style,H.style,w),A&8){const X=d.dynamicProps;for(let te=0;te{G&&Oe(G,y,d,u),k&&Ve(d,u,y,"updated")},T)},b=(u,d,y,T,w,E,P)=>{for(let O=0;O{if(d!==y){if(d!==ee)for(const E in d)!At(E)&&!(E in y)&&i(u,E,d[E],null,w,T);for(const E in y){if(At(E))continue;const P=y[E],O=d[E];P!==O&&E!=="value"&&i(u,E,O,P,w,T)}"value"in y&&i(u,"value",d.value,y.value,w)}},x=(u,d,y,T,w,E,P,O,A)=>{const C=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:I,dynamicChildren:H,slotScopeIds:G}=d;G&&(O=O?O.concat(G):G),u==null?(r(C,y,T),r(k,y,T),j(d.children||[],y,k,w,E,P,O,A)):I>0&&I&64&&H&&u.dynamicChildren?(b(u.dynamicChildren,H,y,w,E,P,O),(d.key!=null||w&&d===w.subTree)&&rs(u,d,!0)):D(u,d,y,k,w,E,P,O,A)},W=(u,d,y,T,w,E,P,O,A)=>{d.slotScopeIds=O,u==null?d.shapeFlag&512?w.ctx.activate(d,y,T,P,A):re(d,y,T,w,E,P,A):ce(u,d,A)},re=(u,d,y,T,w,E,P)=>{const O=u.component=Jc(u,T,w);if(tn(u)&&(O.ctx.renderer=bt),Qc(O,!1,P),O.asyncDep){if(w&&w.registerDep(O,V,P),!u.el){const A=O.subTree=le(ye);N(null,A,d,y)}}else V(O,u,d,y,w,E,P)},ce=(u,d,y)=>{const T=d.component=u.component;if(kc(u,d,y))if(T.asyncDep&&!T.asyncResolved){Y(T,d,y);return}else T.next=d,T.update();else d.el=u.el,T.vnode=d},V=(u,d,y,T,w,E,P)=>{const O=()=>{if(u.isMounted){let{next:I,bu:H,u:G,parent:X,vnode:te}=u;{const Te=go(u);if(Te){I&&(I.el=te.el,Y(u,I,P)),Te.asyncDep.then(()=>{u.isUnmounted||O()});return}}let Q=I,xe;ct(u,!1),I?(I.el=te.el,Y(u,I,P)):I=te,H&&wn(H),(xe=I.props&&I.props.onVnodeBeforeUpdate)&&Oe(xe,X,I,te),ct(u,!0);const pe=lr(u),Ie=u.subTree;u.subTree=pe,S(Ie,pe,h(Ie.el),on(Ie),u,w,E),I.el=pe.el,Q===null&&Wc(u,pe.el),G&&Ee(G,w),(xe=I.props&&I.props.onVnodeUpdated)&&Ee(()=>Oe(xe,X,I,te),w)}else{let I;const{el:H,props:G}=d,{bm:X,m:te,parent:Q,root:xe,type:pe}=u,Ie=gt(d);if(ct(u,!1),X&&wn(X),!Ie&&(I=G&&G.onVnodeBeforeMount)&&Oe(I,Q,d),ct(u,!0),H&&Qn){const Te=()=>{u.subTree=lr(u),Qn(H,u.subTree,u,w,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Te):Te()}else{xe.ce&&xe.ce._injectChildStyle(pe);const Te=u.subTree=lr(u);S(null,Te,y,T,u,w,E),d.el=Te.el}if(te&&Ee(te,w),!Ie&&(I=G&&G.onVnodeMounted)){const Te=d;Ee(()=>Oe(I,Q,Te),w)}(d.shapeFlag&256||Q&>(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&Ee(u.a,w),u.isMounted=!0,d=y=T=null}};u.scope.on();const A=u.effect=new _i(O);u.scope.off();const C=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Qr(k),ct(u,!0),C()},Y=(u,d,y)=>{d.component=u;const T=u.vnode.props;u.vnode=d,u.next=null,Rc(u,d.props,T,y),Ic(u,d.children,y),it(),_s(u),ot()},D=(u,d,y,T,w,E,P,O,A=!1)=>{const C=u&&u.children,k=u?u.shapeFlag:0,I=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){sn(C,I,y,T,w,E,P,O,A);return}else if(H&256){he(C,I,y,T,w,E,P,O,A);return}}G&8?(k&16&&Lt(C,w,E),I!==C&&a(y,I)):k&16?G&16?sn(C,I,y,T,w,E,P,O,A):Lt(C,w,E,!0):(k&8&&a(y,""),G&16&&j(I,y,T,w,E,P,O,A))},he=(u,d,y,T,w,E,P,O,A)=>{u=u||Tt,d=d||Tt;const C=u.length,k=d.length,I=Math.min(C,k);let H;for(H=0;Hk?Lt(u,w,E,!0,!1,I):j(d,y,T,w,E,P,O,A,I)},sn=(u,d,y,T,w,E,P,O,A)=>{let C=0;const k=d.length;let I=u.length-1,H=k-1;for(;C<=I&&C<=H;){const G=u[C],X=d[C]=A?et(d[C]):Me(d[C]);if(dt(G,X))S(G,X,y,null,w,E,P,O,A);else break;C++}for(;C<=I&&C<=H;){const G=u[I],X=d[H]=A?et(d[H]):Me(d[H]);if(dt(G,X))S(G,X,y,null,w,E,P,O,A);else break;I--,H--}if(C>I){if(C<=H){const G=H+1,X=GH)for(;C<=I;)$e(u[C],w,E,!0),C++;else{const G=C,X=C,te=new Map;for(C=X;C<=H;C++){const Ce=d[C]=A?et(d[C]):Me(d[C]);Ce.key!=null&&te.set(Ce.key,C)}let Q,xe=0;const pe=H-X+1;let Ie=!1,Te=0;const Nt=new Array(pe);for(C=0;C=pe){$e(Ce,w,E,!0);continue}let De;if(Ce.key!=null)De=te.get(Ce.key);else for(Q=X;Q<=H;Q++)if(Nt[Q-X]===0&&dt(Ce,d[Q])){De=Q;break}De===void 0?$e(Ce,w,E,!0):(Nt[De-X]=C+1,De>=Te?Te=De:Ie=!0,S(Ce,d[De],y,null,w,E,P,O,A),xe++)}const us=Ie?Fc(Nt):Tt;for(Q=us.length-1,C=pe-1;C>=0;C--){const Ce=X+C,De=d[Ce],ds=Ce+1{const{el:E,type:P,transition:O,children:A,shapeFlag:C}=u;if(C&6){lt(u.component.subTree,d,y,T);return}if(C&128){u.suspense.move(d,y,T);return}if(C&64){P.move(u,d,y,bt);return}if(P===Se){r(E,d,y);for(let I=0;IO.enter(E),w);else{const{leave:I,delayLeave:H,afterLeave:G}=O,X=()=>r(E,d,y),te=()=>{I(E,()=>{X(),G&&G()})};H?H(E,X,te):te()}else r(E,d,y)},$e=(u,d,y,T=!1,w=!1)=>{const{type:E,props:P,ref:O,children:A,dynamicChildren:C,shapeFlag:k,patchFlag:I,dirs:H,cacheIndex:G}=u;if(I===-2&&(w=!1),O!=null&&Pn(O,null,y,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&H,te=!gt(u);let Q;if(te&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Xo(u.component,y,T);else{if(k&128){u.suspense.unmount(y,T);return}X&&Ve(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,y,bt,T):C&&!C.hasOnce&&(E!==Se||I>0&&I&64)?Lt(C,d,y,!1,!0):(E===Se&&I&384||!w&&k&16)&&Lt(A,d,y),T&&as(u)}(te&&(Q=P&&P.onVnodeUnmounted)||X)&&Ee(()=>{Q&&Oe(Q,d,u),X&&Ve(u,null,d,"unmounted")},y)},as=u=>{const{type:d,el:y,anchor:T,transition:w}=u;if(d===Se){Yo(y,T);return}if(d===Ut){m(u);return}const E=()=>{s(y),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:P,delayLeave:O}=w,A=()=>P(y,E);O?O(u.el,E,A):A()}else E()},Yo=(u,d)=>{let y;for(;u!==d;)y=g(u),s(u),u=y;s(d)},Xo=(u,d,y)=>{const{bum:T,scope:w,job:E,subTree:P,um:O,m:A,a:C}=u;Is(A),Is(C),T&&wn(T),w.stop(),E&&(E.flags|=8,$e(P,u,d,y)),O&&Ee(O,d),Ee(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},Lt=(u,d,y,T=!1,w=!1,E=0)=>{for(let P=E;P{if(u.shapeFlag&6)return on(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=g(u.anchor||u.el),y=d&&d[Ui];return y?g(y):d};let zn=!1;const fs=(u,d,y)=>{u==null?d._vnode&&$e(d._vnode,null,null,!0):S(d._vnode||null,u,d,null,null,null,y),d._vnode=u,zn||(zn=!0,_s(),On(),zn=!1)},bt={p:S,um:$e,m:lt,r:as,mt:re,mc:j,pc:D,pbc:b,n:on,o:e};let Jn,Qn;return t&&([Jn,Qn]=t(bt)),{render:fs,hydrate:Jn,createApp:Tc(fs,Jn)}}function or({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function ct({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function po(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function rs(e,t,n=!1){const r=e.children,s=t.children;if(K(r)&&K(s))for(let i=0;i>1,e[n[l]]0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function go(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:go(t)}function Is(e){if(e)for(let t=0;tMt(Hc);function ss(e,t){return qn(e,null,t)}function Uf(e,t){return qn(e,null,{flush:"post"})}function Be(e,t,n){return qn(e,t,n)}function qn(e,t,n=ee){const{immediate:r,deep:s,flush:i,once:o}=n,l=fe({},n);let c;if(rn)if(i==="sync"){const g=$c();c=g.__watcherHandles||(g.__watcherHandles=[])}else if(!t||r)l.once=!0;else{const g=()=>{};return g.stop=Ue,g.resume=Ue,g.pause=Ue,g}const f=ue;l.call=(g,v,_)=>Fe(g,f,v,_);let a=!1;i==="post"?l.scheduler=g=>{Ee(g,f&&f.suspense)}:i!=="sync"&&(a=!0,l.scheduler=(g,v)=>{v?g():Qr(g)}),l.augmentJob=g=>{t&&(g.flags|=4),a&&(g.flags|=2,f&&(g.id=f.uid,g.i=f))};const h=Kl(e,t,l);return c&&c.push(h),h}function Dc(e,t,n){const r=this.proxy,s=se(e)?e.includes(".")?mo(r,e):()=>r[e]:e.bind(r,r);let i;q(t)?i=t:(i=t.handler,n=t);const o=nn(this),l=qn(s,i.bind(r),n);return o(),l}function mo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ne(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Vc(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ee;let s=n;const i=t.startsWith("update:"),o=i&&jc(r,t.slice(7));o&&(o.trim&&(s=n.map(a=>se(a)?a.trim():a)),o.number&&(s=n.map(wr)));let l,c=r[l=_n(t)]||r[l=_n(Ne(t))];!c&&i&&(c=r[l=_n(st(t))]),c&&Fe(c,e,6,s);const f=r[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Fe(f,e,6,s)}}function yo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=yo(f,t,!0);a&&(l=!0,fe(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&r.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):fe(o,i),ne(e)&&r.set(e,o),o)}function Gn(e,t){return!e||!Qt(t)?!1:(t=t.slice(2).replace(/Once$/,""),J(e,t[0].toLowerCase()+t.slice(1))||J(e,st(t))||J(e,t))}function lr(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:g,setupState:v,ctx:_,inheritAttrs:S}=e,U=Mn(e);let N,B;try{if(n.shapeFlag&4){const m=s||r,M=m;N=Me(f.call(M,m,a,h,v,g,_)),B=l}else{const m=t;N=Me(m.length>1?m(h,{attrs:l,slots:o,emit:c}):m(h,null)),B=t.props?l:Uc(l)}}catch(m){Bt.length=0,en(m,e,1),N=le(ye)}let p=N;if(B&&S!==!1){const m=Object.keys(B),{shapeFlag:M}=p;m.length&&M&7&&(i&&m.some($r)&&(B=Bc(B,i)),p=nt(p,B,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(U),N}const Uc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Qt(n))&&((t||(t={}))[n]=e[n]);return t},Bc=(e,t)=>{const n={};for(const r in e)(!$r(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function kc(e,t,n){const{props:r,children:s,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?Ls(r,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function bo(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):Yl(e)}const Se=Symbol.for("v-fgt"),mt=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Ut=Symbol.for("v-stc"),Bt=[];let Ae=null;function Pr(e=!1){Bt.push(Ae=e?null:[])}function Kc(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Xt=1;function Ns(e){Xt+=e,e<0&&Ae&&(Ae.hasOnce=!0)}function _o(e){return e.dynamicChildren=Xt>0?Ae||Tt:null,Kc(),Xt>0&&Ae&&Ae.push(e),e}function Bf(e,t,n,r,s,i){return _o(So(e,t,n,r,s,i,!0))}function Ir(e,t,n,r,s){return _o(le(e,t,n,r,s,!0))}function Ln(e){return e?e.__v_isVNode===!0:!1}function dt(e,t){return e.type===t.type&&e.key===t.key}const wo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||ae(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function So(e,t=null,n=null,r=0,s=null,i=e===Se?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&wo(t),ref:t&&xn(t),scopeId:Vi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:de};return l?(is(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Xt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const le=qc;function qc(e,t=null,n=null,r=0,s=null,i=!1){if((!e||e===Qi)&&(e=ye),Ln(e)){const l=nt(e,t,!0);return n&&is(l,n),Xt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(na(e)&&(e=e.__vccOpts),t){t=Gc(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=Ur(l)),ne(c)&&(Yr(c)&&!K(c)&&(c=fe({},c)),t.style=Vr(c))}const o=se(e)?1:vo(e)?128:Bi(e)?64:ne(e)?4:q(e)?2:0;return So(e,t,n,r,s,o,i,!0)}function Gc(e){return e?Yr(e)||io(e)?fe({},e):e:null}function nt(e,t,n=!1,r=!1){const{props:s,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?Yc(s||{},t):s,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&wo(f),ref:t&&t.ref?n&&i?K(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Se?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&Yt(a,c.clone(a)),a}function Eo(e=" ",t=0){return le(mt,null,e,t)}function kf(e,t){const n=le(Ut,null,e);return n.staticCount=t,n}function Wf(e="",t=!1){return t?(Pr(),Ir(ye,null,e)):le(ye,null,e)}function Me(e){return e==null||typeof e=="boolean"?le(ye):K(e)?le(Se,null,e.slice()):typeof e=="object"?et(e):le(mt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function is(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),is(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!io(t)?t._ctx=de:s===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),r&64?(n=16,t=[Eo(t)]):n=8);e.children=t,e.shapeFlag|=n}function Yc(...e){const t={};for(let n=0;nue||de;let Nn,Lr;{const e=gi(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),i=>{s.length>1?s.forEach(o=>o(i)):s[0](i)}};Nn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Lr=t("__VUE_SSR_SETTERS__",n=>rn=n)}const nn=e=>{const t=ue;return Nn(e),e.scope.on(),()=>{e.scope.off(),Nn(t)}},Fs=()=>{ue&&ue.scope.off(),Nn(null)};function xo(e){return e.vnode.shapeFlag&4}let rn=!1;function Qc(e,t=!1,n=!1){t&&Lr(t);const{props:r,children:s}=e.vnode,i=xo(e);Ac(e,r,i,t),Pc(e,s,n);const o=i?Zc(e,t):void 0;return t&&Lr(!1),o}function Zc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,yc);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Co(e):null,i=nn(e);it();const o=Zt(r,e,0,[e.props,s]);if(ot(),i(),ui(o)){if(gt(e)||es(e),o.then(Fs,Fs),t)return o.then(l=>{Hs(e,l,t)}).catch(l=>{en(l,e,0)});e.asyncDep=o}else Hs(e,o,t)}else To(e,t)}function Hs(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Hi(t)),To(e,n)}let $s;function To(e,t,n){const r=e.type;if(!e.render){if(!t&&$s&&!r.render){const s=r.template||ts(e).template;if(s){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,f=fe(fe({isCustomElement:i,delimiters:l},o),c);r.render=$s(s,f)}}e.render=r.render||Ue}{const s=nn(e);it();try{bc(e)}finally{ot(),s()}}}const ea={get(e,t){return ve(e,"get",""),e[t]}};function Co(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,ea),slots:e.slots,emit:e.emit,expose:t}}function Xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Hi(Sn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Vt)return Vt[n](e)},has(t,n){return n in t||n in Vt}})):e.proxy}function ta(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function na(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>kl(e,t,rn);function Nr(e,t,n){const r=arguments.length;return r===2?ne(t)&&!K(t)?Ln(t)?le(e,null,[t]):le(e,t):le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Ln(n)&&(n=[n]),le(e,t,n))}const ra="3.5.6";/** +* @vue/runtime-dom v3.5.6 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Fr;const Ds=typeof window<"u"&&window.trustedTypes;if(Ds)try{Fr=Ds.createPolicy("vue",{createHTML:e=>e})}catch{}const Ao=Fr?e=>Fr.createHTML(e):e=>e,sa="http://www.w3.org/2000/svg",ia="http://www.w3.org/1998/Math/MathML",Ke=typeof document<"u"?document:null,js=Ke&&Ke.createElement("template"),oa={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ke.createElementNS(sa,e):t==="mathml"?Ke.createElementNS(ia,e):n?Ke.createElement(e,{is:n}):Ke.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ke.createTextNode(e),createComment:e=>Ke.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ke.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,i){const o=n?n.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===i||!(s=s.nextSibling)););else{js.innerHTML=Ao(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const l=js.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ze="transition",Ht="animation",zt=Symbol("_vtc"),Ro={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},la=fe({},Wi,Ro),ca=e=>(e.displayName="Transition",e.props=la,e),Kf=ca((e,{slots:t})=>Nr(tc,aa(e),t)),at=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},Vs=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function aa(e){const t={};for(const x in e)x in Ro||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,_=fa(s),S=_&&_[0],U=_&&_[1],{onBeforeEnter:N,onEnter:B,onEnterCancelled:p,onLeave:m,onLeaveCancelled:M,onBeforeAppear:F=N,onAppear:$=B,onAppearCancelled:j=p}=t,R=(x,W,re)=>{ft(x,W?a:l),ft(x,W?f:o),re&&re()},b=(x,W)=>{x._isLeaving=!1,ft(x,h),ft(x,v),ft(x,g),W&&W()},L=x=>(W,re)=>{const ce=x?$:B,V=()=>R(W,x,re);at(ce,[W,V]),Us(()=>{ft(W,x?c:i),Je(W,x?a:l),Vs(ce)||Bs(W,r,S,V)})};return fe(t,{onBeforeEnter(x){at(N,[x]),Je(x,i),Je(x,o)},onBeforeAppear(x){at(F,[x]),Je(x,c),Je(x,f)},onEnter:L(!1),onAppear:L(!0),onLeave(x,W){x._isLeaving=!0;const re=()=>b(x,W);Je(x,h),Je(x,g),ha(),Us(()=>{x._isLeaving&&(ft(x,h),Je(x,v),Vs(m)||Bs(x,r,U,re))}),at(m,[x,re])},onEnterCancelled(x){R(x,!1),at(p,[x])},onAppearCancelled(x){R(x,!0),at(j,[x])},onLeaveCancelled(x){b(x),at(M,[x])}})}function fa(e){if(e==null)return null;if(ne(e))return[cr(e.enter),cr(e.leave)];{const t=cr(e);return[t,t]}}function cr(e){return tl(e)}function Je(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[zt]||(e[zt]=new Set)).add(t)}function ft(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[zt];n&&(n.delete(t),n.size||(e[zt]=void 0))}function Us(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ua=0;function Bs(e,t,n,r){const s=e._endId=++ua,i=()=>{s===e._endId&&r()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=da(e,t);if(!o)return r();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,g),i()},g=v=>{v.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[_]||"").split(", "),s=r(`${ze}Delay`),i=r(`${ze}Duration`),o=ks(s,i),l=r(`${Ht}Delay`),c=r(`${Ht}Duration`),f=ks(l,c);let a=null,h=0,g=0;t===ze?o>0&&(a=ze,h=o,g=i.length):t===Ht?f>0&&(a=Ht,h=f,g=c.length):(h=Math.max(o,f),a=h>0?o>f?ze:Ht:null,g=a?a===ze?i.length:c.length:0);const v=a===ze&&/\b(transform|all)(,|$)/.test(r(`${ze}Property`).toString());return{type:a,timeout:h,propCount:g,hasTransform:v}}function ks(e,t){for(;e.lengthWs(n)+Ws(e[r])))}function Ws(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ha(){return document.body.offsetHeight}function pa(e,t,n){const r=e[zt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ks=Symbol("_vod"),ga=Symbol("_vsh"),ma=Symbol(""),ya=/(^|;)\s*display\s*:/;function va(e,t,n){const r=e.style,s=se(n);let i=!1;if(n&&!s){if(t)if(se(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Tn(r,l,"")}else for(const o in t)n[o]==null&&Tn(r,o,"");for(const o in n)o==="display"&&(i=!0),Tn(r,o,n[o])}else if(s){if(t!==n){const o=r[ma];o&&(n+=";"+o),r.cssText=n,i=ya.test(n)}}else t&&e.removeAttribute("style");Ks in e&&(e[Ks]=i?r.display:"",e[ga]&&(r.display="none"))}const qs=/\s*!important$/;function Tn(e,t,n){if(K(n))n.forEach(r=>Tn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=ba(e,t);qs.test(n)?e.setProperty(st(r),n.replace(qs,""),"important"):e[r]=n}}const Gs=["Webkit","Moz","ms"],ar={};function ba(e,t){const n=ar[t];if(n)return n;let r=Ne(t);if(r!=="filter"&&r in e)return ar[t]=r;r=$n(r);for(let s=0;sfr||(xa.then(()=>fr=0),fr=Date.now());function Ca(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Fe(Aa(r,n.value),t,5,[r])};return n.value=e,n.attached=Ta(),n}function Aa(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Qs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ra=(e,t,n,r,s,i)=>{const o=s==="svg";t==="class"?pa(e,r,o):t==="style"?va(e,n,r):Qt(t)?$r(t)||Sa(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Oa(e,t,r,o))?(_a(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Xs(e,t,r,o,i,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Xs(e,t,r,o))};function Oa(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Qs(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Qs(t)&&se(n)?!1:!!(t in e||e._isVueCE&&(/[A-Z]/.test(t)||!se(n)))}const Zs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>wn(t,n):t};function Ma(e){e.target.composing=!0}function ei(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ur=Symbol("_assign"),qf={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[ur]=Zs(s);const i=r||s.props&&s.props.type==="number";Et(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=wr(l)),e[ur](l)}),n&&Et(e,"change",()=>{e.value=e.value.trim()}),t||(Et(e,"compositionstart",Ma),Et(e,"compositionend",ei),Et(e,"change",ei))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:i}},o){if(e[ur]=Zs(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?wr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},Pa=["ctrl","shift","alt","meta"],Ia={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Pa.some(n=>e[`${n}Key`]&&!t.includes(n))},Gf=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const i=st(s.key);if(t.some(o=>o===i||La[o]===i))return e(s)})},Oo=fe({patchProp:Ra},oa);let kt,ti=!1;function Na(){return kt||(kt=Lc(Oo))}function Fa(){return kt=ti?kt:Nc(Oo),ti=!0,kt}const Xf=(...e)=>{const t=Na().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Po(r);if(!s)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const o=n(s,!1,Mo(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},t},zf=(...e)=>{const t=Fa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Po(r);if(s)return n(s,!0,Mo(s))},t};function Mo(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Po(e){return se(e)?document.querySelector(e):e}const Jf=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Ha=window.__VP_SITE_DATA__;function os(e){return bi()?(fl(e),!0):!1}function ke(e){return typeof e=="function"?e():Fi(e)}const Io=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Qf=e=>e!=null,$a=Object.prototype.toString,Da=e=>$a.call(e)==="[object Object]",Jt=()=>{},ni=ja();function ja(){var e,t;return Io&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Va(e,t){function n(...r){return new Promise((s,i)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(i)})}return n}const Lo=e=>e();function Ua(e,t={}){let n,r,s=Jt;const i=l=>{clearTimeout(l),s(),s=Jt};return l=>{const c=ke(e),f=ke(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(r&&(i(r),r=null),Promise.resolve(l())):new Promise((a,h)=>{s=t.rejectOnCancel?h:a,f&&!r&&(r=setTimeout(()=>{n&&i(n),r=null,a(l())},f)),n=setTimeout(()=>{r&&i(r),r=null,a(l())},c)})}}function Ba(e=Lo){const t=oe(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...i)=>{t.value&&e(...i)};return{isActive:Bn(t),pause:n,resume:r,eventFilter:s}}function ka(e){return Yn()}function No(...e){if(e.length!==1)return Vl(...e);const t=e[0];return typeof t=="function"?Bn($l(()=>({get:t,set:Jt}))):oe(t)}function Fo(e,t,n={}){const{eventFilter:r=Lo,...s}=n;return Be(e,Va(r,t),s)}function Wa(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Ba(r);return{stop:Fo(e,t,{...s,eventFilter:i}),pause:o,resume:l,isActive:c}}function ls(e,t=!0,n){ka()?It(e,n):t?e():kn(e)}function Zf(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...i}=n;return Fo(e,t,{...i,eventFilter:Ua(r,{maxWait:s})})}function eu(e,t,n){let r;ae(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Jt}=r,c=oe(!s),f=o?zr(t):oe(t);let a=0;return ss(async h=>{if(!c.value)return;a++;const g=a;let v=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const _=await e(S=>{h(()=>{i&&(i.value=!1),v||S()})});g===a&&(f.value=_)}catch(_){l(_)}finally{i&&g===a&&(i.value=!1),v=!0}}),s?ie(()=>(c.value=!0,f.value)):f}const He=Io?window:void 0;function Ho(e){var t;const n=ke(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=He):[t,n,r,s]=e,!t)return Jt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,g,v)=>(a.addEventListener(h,g,v),()=>a.removeEventListener(h,g,v)),c=Be(()=>[Ho(t),ke(s)],([a,h])=>{if(o(),!a)return;const g=Da(h)?{...h}:h;i.push(...n.flatMap(v=>r.map(_=>l(a,v,_,g))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return os(f),f}function Ka(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function tu(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=He,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=r,c=Ka(t);return Pt(s,i,a=>{a.repeat&&ke(l)||c(a)&&n(a)},o)}function qa(){const e=oe(!1),t=Yn();return t&&It(()=>{e.value=!0},t),e}function Ga(e){const t=qa();return ie(()=>(t.value,!!e()))}function $o(e,t={}){const{window:n=He}=t,r=Ga(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",o):s.removeListener(o))},c=ss(()=>{r.value&&(l(),s=n.matchMedia(ke(e)),"addEventListener"in s?s.addEventListener("change",o):s.addListener(o),i.value=s.matches)});return os(()=>{c(),l(),s=void 0}),i}const yn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},vn="__vueuse_ssr_handlers__",Ya=Xa();function Xa(){return vn in yn||(yn[vn]=yn[vn]||{}),yn[vn]}function Do(e,t){return Ya[e]||t}function jo(e){return $o("(prefers-color-scheme: dark)",e)}function za(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Ja={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},ri="vueuse-storage";function cs(e,t,n,r={}){var s;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=He,eventFilter:g,onError:v=b=>{console.error(b)},initOnMounted:_}=r,S=(a?zr:oe)(typeof t=="function"?t():t);if(!n)try{n=Do("getDefaultStorage",()=>{var b;return(b=He)==null?void 0:b.localStorage})()}catch(b){v(b)}if(!n)return S;const U=ke(t),N=za(U),B=(s=r.serializer)!=null?s:Ja[N],{pause:p,resume:m}=Wa(S,()=>F(S.value),{flush:i,deep:o,eventFilter:g});h&&l&&ls(()=>{n instanceof Storage?Pt(h,"storage",j):Pt(h,ri,R),_&&j()}),_||j();function M(b,L){if(h){const x={key:e,oldValue:b,newValue:L,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(ri,{detail:x}))}}function F(b){try{const L=n.getItem(e);if(b==null)M(L,null),n.removeItem(e);else{const x=B.write(b);L!==x&&(n.setItem(e,x),M(L,x))}}catch(L){v(L)}}function $(b){const L=b?b.newValue:n.getItem(e);if(L==null)return c&&U!=null&&n.setItem(e,B.write(U)),U;if(!b&&f){const x=B.read(L);return typeof f=="function"?f(x,U):N==="object"&&!Array.isArray(x)?{...U,...x}:x}else return typeof L!="string"?L:B.read(L)}function j(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){S.value=U;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==B.write(S.value)&&(S.value=$(b))}catch(L){v(L)}finally{b?kn(m):m()}}}}function R(b){j(b.detail)}return S}const Qa="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Za(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=He,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},g=jo({window:s}),v=ie(()=>g.value?"dark":"light"),_=c||(o==null?No(r):cs(o,r,i,{window:s,listenToStorageChanges:l})),S=ie(()=>_.value==="auto"?v.value:_.value),U=Do("updateHTMLAttrs",(m,M,F)=>{const $=typeof m=="string"?s==null?void 0:s.document.querySelector(m):Ho(m);if(!$)return;const j=new Set,R=new Set;let b=null;if(M==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(W=>(W||"").split(/\s/g)).filter(Boolean).forEach(W=>{x.includes(W)?j.add(W):R.add(W)})}else b={key:M,value:F};if(j.size===0&&R.size===0&&b===null)return;let L;a&&(L=s.document.createElement("style"),L.appendChild(document.createTextNode(Qa)),s.document.head.appendChild(L));for(const x of j)$.classList.add(x);for(const x of R)$.classList.remove(x);b&&$.setAttribute(b.key,b.value),a&&(s.getComputedStyle(L).opacity,document.head.removeChild(L))});function N(m){var M;U(t,n,(M=h[m])!=null?M:m)}function B(m){e.onChanged?e.onChanged(m,N):N(m)}Be(S,B,{flush:"post",immediate:!0}),ls(()=>B(S.value));const p=ie({get(){return f?_.value:S.value},set(m){_.value=m}});try{return Object.assign(p,{store:_,system:v,state:S})}catch{return p}}function ef(e={}){const{valueDark:t="dark",valueLight:n="",window:r=He}=e,s=Za({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>s.system?s.system.value:jo({window:r}).value?"dark":"light");return ie({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?s.value="auto":s.value=c}})}function dr(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function nu(e,t,n={}){const{window:r=He}=n;return cs(e,t,r==null?void 0:r.localStorage,n)}function Vo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const hr=new WeakMap;function ru(e,t=!1){const n=oe(t);let r=null,s="";Be(No(e),l=>{const c=dr(ke(l));if(c){const f=c;if(hr.get(f)||hr.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(s=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=dr(ke(e));!l||n.value||(ni&&(r=Pt(l,"touchmove",c=>{tf(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=dr(ke(e));!l||!n.value||(ni&&(r==null||r()),l.style.overflow=s,hr.delete(l),n.value=!1)};return os(o),ie({get(){return n.value},set(l){l?i():o()}})}function su(e,t,n={}){const{window:r=He}=n;return cs(e,t,r==null?void 0:r.sessionStorage,n)}function iu(e={}){const{window:t=He,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const r=oe(t.scrollX),s=oe(t.scrollY),i=ie({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function ou(e={}){const{window:t=He,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(r),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),ls(f),Pt("resize",f,{passive:!0}),s){const a=$o("(orientation: portrait)");Be(a,()=>f())}return{width:l,height:c}}const pr={BASE_URL:"/YAXArrays.jl/dev/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var gr={};const Uo=/^(?:[a-z]+:|\/\/)/i,nf="vitepress-theme-appearance",rf=/#.*$/,sf=/[?#].*$/,of=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Bo={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function lf(e,t,n=!1){if(t===void 0)return!1;if(e=si(`/${e}`),n)return new RegExp(t).test(e);if(si(t)!==e)return!1;const r=t.match(rf);return r?(ge?location.hash:"")===r[0]:!0}function si(e){return decodeURI(e).replace(sf,"").replace(of,"$1")}function cf(e){return Uo.test(e)}function af(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!cf(n)&&lf(t,`/${n}/`,!0))||"root"}function ff(e,t){var r,s,i,o,l,c,f;const n=af(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Wo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function ko(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=uf(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function uf(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function df(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([i,o])=>i===n&&o[s[0]]===s[1])}function Wo(e,t){return[...e.filter(n=>!df(t,n)),...t]}const hf=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,pf=/^[a-z]:/i;function ii(e){const t=pf.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(hf,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const mr=new Set;function gf(e){if(mr.size===0){const n=typeof process=="object"&&(gr==null?void 0:gr.VITE_EXTRA_EXTENSIONS)||(pr==null?void 0:pr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>mr.add(r))}const t=e.split(".").pop();return t==null||!mr.has(t.toLowerCase())}function lu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const mf=Symbol(),yt=zr(Ha);function cu(e){const t=ie(()=>ff(yt.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?oe(!0):n?ef({storageKey:nf,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),s=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Be(()=>e.data,()=>{s.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>ko(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:r,hash:ie(()=>s.value)}}function yf(){const e=Mt(mf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function vf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function oi(e){return Uo.test(e)||!e.startsWith("/")?e:vf(yt.value.base,e)}function bf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/YAXArrays.jl/dev/";t=ii(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${ii(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Cn=[];function au(e){Cn.push(e),Kn(()=>{Cn=Cn.filter(t=>t!==e)})}function _f(){let e=yt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=li(e,n);else if(Array.isArray(e))for(const r of e){const s=li(r,n);if(s){t=s;break}}return t}function li(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const wf=Symbol(),Ko="http://a.com",Sf=()=>({path:"/",component:null,data:Bo});function fu(e,t){const n=Un(Sf()),r={route:n,go:s};async function s(l=ge?location.href:"/"){var c,f;l=yr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(ge&&l!==yr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=r.onAfterRouteChanged)==null?void 0:f.call(r,l)))}let i=null;async function o(l,c=0,f=!1){var g;if(await((g=r.onBeforePageLoad)==null?void 0:g.call(r,l))===!1)return;const a=new URL(l,Ko),h=i=a.pathname;try{let v=await e(h);if(!v)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:_,__pageData:S}=v;if(!_)throw new Error(`Invalid route component: ${_}`);n.path=ge?h:oi(h),n.component=Sn(_),n.data=Sn(S),ge&&kn(()=>{let U=yt.value.base+S.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!yt.value.cleanUrls&&!U.endsWith("/")&&(U+=".html"),U!==a.pathname&&(a.pathname=U,l=U+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let N=null;try{N=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(B){console.warn(B)}if(N){ci(N,a.hash);return}}window.scrollTo(0,c)})}}catch(v){if(!/fetch|Page not found/.test(v.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(v),!f)try{const _=await fetch(yt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:oi(h),n.component=t?Sn(t):null;const _=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Bo,relativePath:_}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:g,hash:v,search:_}=new URL(f,c.baseURI),S=new URL(location.href);h===S.origin&&gf(g)&&(l.preventDefault(),g===S.pathname&&_===S.search?(v!==S.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:S.href,newURL:a}))),v?ci(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):s(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(yr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Ef(){const e=Mt(wf);if(!e)throw new Error("useRouter() is called without provider.");return e}function qo(){return Ef().route}function ci(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(r).paddingTop,10),o=window.scrollY+r.getBoundingClientRect().top-_f()+i;requestAnimationFrame(s)}}function yr(e){const t=new URL(e,Ko);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),yt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const vr=()=>Cn.forEach(e=>e()),uu=Zr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=qo(),{site:n}=yf();return()=>Nr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Nr(t.component,{onVnodeMounted:vr,onVnodeUpdated:vr,onVnodeUnmounted:vr}):"404 Page Not Found"])}}),xf="modulepreload",Tf=function(e){return"/YAXArrays.jl/dev/"+e},ai={},du=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.allSettled(n.map(c=>{if(c=Tf(c),c in ai)return;ai[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":xf,f||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),f)return new Promise((g,v)=>{h.addEventListener("load",g),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return s.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},hu=Zr({setup(e,{slots:t}){const n=oe(!1);return It(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function pu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const i=r.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[s];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function gu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,i=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),Cf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function Cf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function mu(e,t){let n=!0,r=[];const s=i=>{if(n){n=!1,i.forEach(l=>{const c=br(l);for(const f of document.head.children)if(f.isEqualNode(c)){r.push(f);return}});return}const o=i.map(br);r.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete r[c])}),o.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...o].filter(Boolean)};ss(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=ko(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):br(["meta",{name:"description",content:a}]),s(Wo(o.head,Rf(c)))})}function br([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function Af(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Rf(e){return e.filter(t=>!Af(t))}const _r=new Set,Go=()=>document.createElement("link"),Of=e=>{const t=Go();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Mf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let bn;const Pf=ge&&(bn=Go())&&bn.relList&&bn.relList.supports&&bn.relList.supports("prefetch")?Of:Mf;function yu(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!_r.has(c)){_r.add(c);const f=bf(c);f&&Pf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):_r.add(l))})})};It(r);const s=qo();Be(()=>s.path,r),Kn(()=>{n&&n.disconnect()})}export{zi as $,_f as A,Ff as B,$f as C,zr as D,au as E,Se as F,le as G,Hf as H,Uo as I,qo as J,Yc as K,Mt as L,ou as M,Vr as N,tu as O,kn as P,iu as Q,ge as R,Bn as S,Kf as T,Nf as U,du as V,ru as W,Cc as X,jf as Y,Yf as Z,Jf as _,Eo as a,Gf as a0,Vf as a1,kf as a2,Un as a3,Vl as a4,Nr as a5,mu as a6,wf as a7,cu as a8,mf as a9,uu as aa,hu as ab,yt as ac,zf as ad,fu as ae,bf as af,yu as ag,gu as ah,pu as ai,ke as aj,Ho as ak,Qf as al,os as am,eu as an,su as ao,nu as ap,Zf as aq,Ef as ar,Pt as as,If as at,qf as au,ae as av,Lf as aw,Sn as ax,Xf as ay,lu as az,Ir as b,Bf as c,Zr as d,Wf as e,gf as f,oi as g,ie as h,cf as i,So as j,Fi as k,lf as l,$o as m,Ur as n,Pr as o,oe as p,Be as q,Df as r,ss as s,cl as t,yf as u,It as v,Xl as w,Kn as x,Uf as y,dc as z}; diff --git a/dev/assets/chunks/theme.CrY9T1lC.js b/dev/assets/chunks/theme.Cr_eIWnh.js similarity index 99% rename from dev/assets/chunks/theme.CrY9T1lC.js rename to dev/assets/chunks/theme.Cr_eIWnh.js index f98c2b79..dee7c21e 100644 --- a/dev/assets/chunks/theme.CrY9T1lC.js +++ b/dev/assets/chunks/theme.Cr_eIWnh.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DfB2vwMq.js","assets/chunks/framework.BEF5B6Ex.js"])))=>i.map(i=>d[i]); -import{d as h,o,c as l,r as u,n as T,a as F,t as V,b as $,w as f,e as m,T as pe,_ as k,u as Ue,i as Ge,f as Je,g as ve,h as y,j as d,k as i,l as K,m as ie,p as I,q as W,s as q,v as G,x as fe,y as me,z as Ke,A as je,B as J,F as C,C as w,D as Se,E as x,G as b,H,I as Ve,J as ee,K as U,L as z,M as ze,N as Ie,O as le,P as Ne,Q as Te,R as te,S as Re,U as Ze,V as Ye,W as Ce,X as he,Y as Xe,Z as qe,$ as xe,a0 as et,a1 as Me,a2 as tt,a3 as st,a4 as nt,a5 as ye}from"./framework.BEF5B6Ex.js";const at=h({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(a){return(e,t)=>(o(),l("span",{class:T(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[F(V(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},rt=h({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(a){return(e,t)=>(o(),$(pe,{name:"fade"},{default:f(()=>[e.show?(o(),l("div",ot)):m("",!0)]),_:1}))}}),it=k(rt,[["__scopeId","data-v-b06cdb19"]]),S=Ue;function lt(a,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(a,e):(a(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ce(a){return/^\//.test(a)?a:`/${a}`}function _e(a){const{pathname:e,search:t,hash:n,protocol:s}=new URL(a,"http://a.com");if(Ge(a)||a.startsWith("#")||!s.startsWith("http")||!Je(e))return a;const{site:r}=S(),c=e.endsWith("/")||e.endsWith(".html")?a:a.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${n}`);return ve(c)}function Z({correspondingLink:a=!1}={}){const{site:e,localeIndex:t,page:n,theme:s,hash:r}=S(),c=y(()=>{var p,_;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((_=e.value.locales[t.value])==null?void 0:_.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,_])=>c.value.label===_.label?[]:{text:_.label,link:ct(_.link||(p==="root"?"/":`/${p}/`),s.value.i18nRouting!==!1&&a,n.value.relativePath.slice(c.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:c}}function ct(a,e,t,n){return e?a.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):a}const ut={class:"NotFound"},dt={class:"code"},pt={class:"title"},vt={class:"quote"},ft={class:"action"},mt=["href","aria-label"],ht=h({__name:"NotFound",setup(a){const{theme:e}=S(),{currentLang:t}=Z();return(n,s)=>{var r,c,v,p,_;return o(),l("div",ut,[d("p",dt,V(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),d("h1",pt,V(((c=i(e).notFound)==null?void 0:c.title)??"PAGE NOT FOUND"),1),s[0]||(s[0]=d("div",{class:"divider"},null,-1)),d("blockquote",vt,V(((v=i(e).notFound)==null?void 0:v.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ft,[d("a",{class:"link",href:i(ve)(i(t).link),"aria-label":((p=i(e).notFound)==null?void 0:p.linkLabel)??"go to home"},V(((_=i(e).notFound)==null?void 0:_.linkText)??"Take me home"),9,mt)])])}}}),_t=k(ht,[["__scopeId","data-v-951cab6c"]]);function Be(a,e){if(Array.isArray(a))return Y(a);if(a==null)return[];e=ce(e);const t=Object.keys(a).sort((s,r)=>r.split("/").length-s.split("/").length).find(s=>e.startsWith(ce(s))),n=t?a[t]:[];return Array.isArray(n)?Y(n):Y(n.items,n.base)}function bt(a){const e=[];let t=0;for(const n in a){const s=a[n];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function gt(a){const e=[];function t(n){for(const s of n)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(a),e}function ue(a,e){return Array.isArray(e)?e.some(t=>ue(a,t)):K(a,e.link)?!0:e.items?ue(a,e.items):!1}function Y(a,e){return[...a].map(t=>{const n={...t},s=n.base||e;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Y(n.items,s)),n})}function D(){const{frontmatter:a,page:e,theme:t}=S(),n=ie("(min-width: 960px)"),s=I(!1),r=y(()=>{const B=t.value.sidebar,N=e.value.relativePath;return B?Be(B,N):[]}),c=I(r.value);W(r,(B,N)=>{JSON.stringify(B)!==JSON.stringify(N)&&(c.value=r.value)});const v=y(()=>a.value.sidebar!==!1&&c.value.length>0&&a.value.layout!=="home"),p=y(()=>_?a.value.aside==null?t.value.aside==="left":a.value.aside==="left":!1),_=y(()=>a.value.layout==="home"?!1:a.value.aside!=null?!!a.value.aside:t.value.aside!==!1),L=y(()=>v.value&&n.value),g=y(()=>v.value?bt(c.value):[]);function A(){s.value=!0}function P(){s.value=!1}function M(){s.value?P():A()}return{isOpen:s,sidebar:c,sidebarGroups:g,hasSidebar:v,hasAside:_,leftAside:p,isSidebarEnabled:L,open:A,close:P,toggle:M}}function kt(a,e){let t;q(()=>{t=a.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",n)}),fe(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&a.value&&(e(),t==null||t.focus())}}function $t(a){const{page:e,hash:t}=S(),n=I(!1),s=y(()=>a.value.collapsed!=null),r=y(()=>!!a.value.link),c=I(!1),v=()=>{c.value=K(e.value.relativePath,a.value.link)};W([e,a,t],v),G(v);const p=y(()=>c.value?!0:a.value.items?ue(e.value.relativePath,a.value.items):!1),_=y(()=>!!(a.value.items&&a.value.items.length));q(()=>{n.value=!!(s.value&&a.value.collapsed)}),me(()=>{(c.value||p.value)&&(n.value=!1)});function L(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:r,isActiveLink:c,hasActiveLink:p,hasChildren:_,toggle:L}}function yt(){const{hasSidebar:a}=D(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:a.value?t.value:e.value)}}const de=[];function we(a){return typeof a.outline=="object"&&!Array.isArray(a.outline)&&a.outline.label||a.outlineTitle||"On this page"}function be(a){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:At(t),link:"#"+t.id,level:n}});return Pt(e,a)}function At(a){let e="";for(const t of a.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(a,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;a=a.filter(c=>c.level>=n&&c.level<=s),de.length=0;for(const{element:c,link:v}of a)de.push({element:c,link:v});const r=[];e:for(let c=0;c=0;p--){const _=a[p];if(_.level{requestAnimationFrame(r),window.addEventListener("scroll",n)}),Ke(()=>{c(location.hash)}),fe(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const v=window.scrollY,p=window.innerHeight,_=document.body.offsetHeight,L=Math.abs(v+p-_)<1,g=de.map(({element:P,link:M})=>({link:M,top:St(P)})).filter(({top:P})=>!Number.isNaN(P)).sort((P,M)=>P.top-M.top);if(!g.length){c(null);return}if(v<1){c(null);return}if(L){c(g[g.length-1].link);return}let A=null;for(const{link:P,top:M}of g){if(M>v+je()+4)break;A=P}c(A)}function c(v){s&&s.classList.remove("active"),v==null?s=null:s=a.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const p=s;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function St(a){let e=0;for(;a!==document.body;){if(a===null)return NaN;e+=a.offsetTop,a=a.offsetParent}return e}const Vt=["href","title"],It=h({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(a){function e({target:t}){const n=t.href.split("#")[1],s=document.getElementById(decodeURIComponent(n));s==null||s.focus({preventScroll:!0})}return(t,n)=>{const s=J("VPDocOutlineItem",!0);return o(),l("ul",{class:T(["VPDocOutlineItem",t.root?"root":"nested"])},[(o(!0),l(C,null,w(t.headers,({children:r,link:c,title:v})=>(o(),l("li",null,[d("a",{class:"outline-link",href:c,onClick:e,title:v},V(v),9,Vt),r!=null&&r.length?(o(),$(s,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),Ee=k(It,[["__scopeId","data-v-3f927ebe"]]),Nt={class:"content"},Tt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ct=h({__name:"VPDocAsideOutline",setup(a){const{frontmatter:e,theme:t}=S(),n=Se([]);x(()=>{n.value=be(e.value.outline??t.value.outline)});const s=I(),r=I();return Lt(s,r),(c,v)=>(o(),l("nav",{"aria-labelledby":"doc-outline-aria-label",class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[d("div",Nt,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",Tt,V(i(we)(i(t))),1),b(Ee,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),Mt=k(Ct,[["__scopeId","data-v-b38bf2ff"]]),Bt={class:"VPDocAsideCarbonAds"},wt=h({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(a){const e=()=>null;return(t,n)=>(o(),l("div",Bt,[b(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Et={class:"VPDocAside"},Qt=h({__name:"VPDocAside",setup(a){const{theme:e}=S();return(t,n)=>(o(),l("div",Et,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),b(Mt),u(t.$slots,"aside-outline-after",{},void 0,!0),n[0]||(n[0]=d("div",{class:"spacer"},null,-1)),u(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(o(),$(wt,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):m("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ft=k(Qt,[["__scopeId","data-v-6d7b3c46"]]);function Ht(){const{theme:a,page:e}=S();return y(()=>{const{text:t="Edit this page",pattern:n=""}=a.value.editLink||{};let s;return typeof n=="function"?s=n(e.value):s=n.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function Wt(){const{page:a,theme:e,frontmatter:t}=S();return y(()=>{var _,L,g,A,P,M,B,N;const n=Be(e.value.sidebar,a.value.relativePath),s=gt(n),r=Dt(s,E=>E.link.replace(/[?#].*$/,"")),c=r.findIndex(E=>K(a.value.relativePath,E.link)),v=((_=e.value.docFooter)==null?void 0:_.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:v?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((g=r[c-1])==null?void 0:g.docFooterText)??((A=r[c-1])==null?void 0:A.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((P=r[c-1])==null?void 0:P.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((M=r[c+1])==null?void 0:M.docFooterText)??((B=r[c+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=r[c+1])==null?void 0:N.link)}}})}function Dt(a,e){const t=new Set;return a.filter(n=>{const s=e(n);return t.has(s)?!1:t.add(s)})}const Q=h({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.tag??(e.href?"a":"span")),n=y(()=>e.href&&Ve.test(e.href)||e.target==="_blank");return(s,r)=>(o(),$(H(t.value),{class:T(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?i(_e)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:f(()=>[u(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ot={class:"VPLastUpdated"},Ut=["datetime"],Gt=h({__name:"VPDocFooterLastUpdated",setup(a){const{theme:e,page:t,lang:n}=S(),s=y(()=>new Date(t.value.lastUpdated)),r=y(()=>s.value.toISOString()),c=I("");return G(()=>{q(()=>{var v,p,_;c.value=new Intl.DateTimeFormat((p=(v=e.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&p.forceLocale?n.value:void 0,((_=e.value.lastUpdated)==null?void 0:_.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(s.value)})}),(v,p)=>{var _;return o(),l("p",Ot,[F(V(((_=i(e).lastUpdated)==null?void 0:_.text)||i(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:r.value},V(c.value),9,Ut)])}}}),Jt=k(Gt,[["__scopeId","data-v-475f71b8"]]),Kt={key:0,class:"VPDocFooter"},jt={key:0,class:"edit-info"},zt={key:0,class:"edit-link"},Rt={key:1,class:"last-updated"},Zt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Yt={class:"pager"},Xt=["innerHTML"],qt=["innerHTML"],xt={class:"pager"},es=["innerHTML"],ts=["innerHTML"],ss=h({__name:"VPDocFooter",setup(a){const{theme:e,page:t,frontmatter:n}=S(),s=Ht(),r=Wt(),c=y(()=>e.value.editLink&&n.value.editLink!==!1),v=y(()=>t.value.lastUpdated),p=y(()=>c.value||v.value||r.value.prev||r.value.next);return(_,L)=>{var g,A,P,M;return p.value?(o(),l("footer",Kt,[u(_.$slots,"doc-footer-before",{},void 0,!0),c.value||v.value?(o(),l("div",jt,[c.value?(o(),l("div",zt,[b(Q,{class:"edit-link-button",href:i(s).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),F(" "+V(i(s).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(o(),l("div",Rt,[b(Jt)])):m("",!0)])):m("",!0),(g=i(r).prev)!=null&&g.link||(A=i(r).next)!=null&&A.link?(o(),l("nav",Zt,[L[1]||(L[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Yt,[(P=i(r).prev)!=null&&P.link?(o(),$(Q,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var B;return[d("span",{class:"desc",innerHTML:((B=i(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,Xt),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,qt)]}),_:1},8,["href"])):m("",!0)]),d("div",xt,[(M=i(r).next)!=null&&M.link?(o(),$(Q,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var B;return[d("span",{class:"desc",innerHTML:((B=i(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,es),d("span",{class:"title",innerHTML:i(r).next.text},null,8,ts)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),ns=k(ss,[["__scopeId","data-v-4f9813fa"]]),as={class:"container"},os={class:"aside-container"},rs={class:"aside-content"},is={class:"content"},ls={class:"content-container"},cs={class:"main"},us=h({__name:"VPDoc",setup(a){const{theme:e}=S(),t=ee(),{hasSidebar:n,hasAside:s,leftAside:r}=D(),c=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,p)=>{const _=J("Content");return o(),l("div",{class:T(["VPDoc",{"has-sidebar":i(n),"has-aside":i(s)}])},[u(v.$slots,"doc-top",{},void 0,!0),d("div",as,[i(s)?(o(),l("div",{key:0,class:T(["aside",{"left-aside":i(r)}])},[p[0]||(p[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",os,[d("div",rs,[b(Ft,null,{"aside-top":f(()=>[u(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[u(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[u(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),d("div",is,[d("div",ls,[u(v.$slots,"doc-before",{},void 0,!0),d("main",cs,[b(_,{class:T(["vp-doc",[c.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),b(ns,null,{"doc-footer-before":f(()=>[u(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(v.$slots,"doc-after",{},void 0,!0)])])]),u(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),ds=k(us,[["__scopeId","data-v-83890dd9"]]),ps=h({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.href&&Ve.test(e.href)),n=y(()=>e.tag||e.href?"a":"button");return(s,r)=>(o(),$(H(n.value),{class:T(["VPButton",[s.size,s.theme]]),href:s.href?i(_e)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[F(V(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),vs=k(ps,[["__scopeId","data-v-14206e74"]]),fs=["src","alt"],ms=h({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(a){return(e,t)=>{const n=J("VPImage",!0);return e.image?(o(),l(C,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),l("img",U({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,fs)):(o(),l(C,{key:1},[b(n,U({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),b(n,U({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),X=k(ms,[["__scopeId","data-v-35a7d0b8"]]),hs={class:"container"},_s={class:"main"},bs={key:0,class:"name"},gs=["innerHTML"],ks=["innerHTML"],$s=["innerHTML"],ys={key:0,class:"actions"},As={key:0,class:"image"},Ps={class:"image-container"},Ls=h({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(a){const e=z("hero-image-slot-exists");return(t,n)=>(o(),l("div",{class:T(["VPHero",{"has-image":t.image||i(e)}])},[d("div",hs,[d("div",_s,[u(t.$slots,"home-hero-info-before",{},void 0,!0),u(t.$slots,"home-hero-info",{},()=>[t.name?(o(),l("h1",bs,[d("span",{innerHTML:t.name,class:"clip"},null,8,gs)])):m("",!0),t.text?(o(),l("p",{key:1,innerHTML:t.text,class:"text"},null,8,ks)):m("",!0),t.tagline?(o(),l("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,$s)):m("",!0)],!0),u(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(o(),l("div",ys,[(o(!0),l(C,null,w(t.actions,s=>(o(),l("div",{key:s.link,class:"action"},[b(vs,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(o(),l("div",As,[d("div",Ps,[n[0]||(n[0]=d("div",{class:"image-bg"},null,-1)),u(t.$slots,"home-hero-image",{},()=>[t.image?(o(),$(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),Ss=k(Ls,[["__scopeId","data-v-955009fc"]]),Vs=h({__name:"VPHomeHero",setup(a){const{frontmatter:e}=S();return(t,n)=>i(e).hero?(o(),$(Ss,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":f(()=>[u(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[u(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[u(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[u(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),Is={class:"box"},Ns={key:0,class:"icon"},Ts=["innerHTML"],Cs=["innerHTML"],Ms=["innerHTML"],Bs={key:4,class:"link-text"},ws={class:"link-text-value"},Es=h({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(a){return(e,t)=>(o(),$(Q,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[d("article",Is,[typeof e.icon=="object"&&e.icon.wrap?(o(),l("div",Ns,[b(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),$(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),l("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Ts)):m("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Cs),e.details?(o(),l("p",{key:3,class:"details",innerHTML:e.details},null,8,Ms)):m("",!0),e.linkText?(o(),l("div",Bs,[d("p",ws,[F(V(e.linkText)+" ",1),t[0]||(t[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Qs=k(Es,[["__scopeId","data-v-f5e9645b"]]),Fs={key:0,class:"VPFeatures"},Hs={class:"container"},Ws={class:"items"},Ds=h({__name:"VPFeatures",props:{features:{}},setup(a){const e=a,t=y(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(o(),l("div",Fs,[d("div",Hs,[d("div",Ws,[(o(!0),l(C,null,w(n.features,r=>(o(),l("div",{key:r.title,class:T(["item",[t.value]])},[b(Qs,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):m("",!0)}}),Os=k(Ds,[["__scopeId","data-v-d0a190d7"]]),Us=h({__name:"VPHomeFeatures",setup(a){const{frontmatter:e}=S();return(t,n)=>i(e).features?(o(),$(Os,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):m("",!0)}}),Gs=h({__name:"VPHomeContent",setup(a){const{width:e}=ze({initialWidth:0,includeScrollbar:!1});return(t,n)=>(o(),l("div",{class:"vp-doc container",style:Ie(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[u(t.$slots,"default",{},void 0,!0)],4))}}),Js=k(Gs,[["__scopeId","data-v-7a48a447"]]),Ks={class:"VPHome"},js=h({__name:"VPHome",setup(a){const{frontmatter:e}=S();return(t,n)=>{const s=J("Content");return o(),l("div",Ks,[u(t.$slots,"home-hero-before",{},void 0,!0),b(Vs,null,{"home-hero-info-before":f(()=>[u(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(t.$slots,"home-hero-after",{},void 0,!0),u(t.$slots,"home-features-before",{},void 0,!0),b(Us),u(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(o(),$(Js,{key:0},{default:f(()=>[b(s)]),_:1})):(o(),$(s,{key:1}))])}}}),zs=k(js,[["__scopeId","data-v-cbb6ec48"]]),Rs={},Zs={class:"VPPage"};function Ys(a,e){const t=J("Content");return o(),l("div",Zs,[u(a.$slots,"page-top"),b(t),u(a.$slots,"page-bottom")])}const Xs=k(Rs,[["render",Ys]]),qs=h({__name:"VPContent",setup(a){const{page:e,frontmatter:t}=S(),{hasSidebar:n}=D();return(s,r)=>(o(),l("div",{class:T(["VPContent",{"has-sidebar":i(n),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?u(s.$slots,"not-found",{key:0},()=>[b(_t)],!0):i(t).layout==="page"?(o(),$(Xs,{key:1},{"page-top":f(()=>[u(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(o(),$(zs,{key:2},{"home-hero-before":f(()=>[u(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(o(),$(H(i(t).layout),{key:3})):(o(),$(ds,{key:4},{"doc-top":f(()=>[u(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[u(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[u(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[u(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[u(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),xs=k(qs,[["__scopeId","data-v-91765379"]]),en={class:"container"},tn=["innerHTML"],sn=["innerHTML"],nn=h({__name:"VPFooter",setup(a){const{theme:e,frontmatter:t}=S(),{hasSidebar:n}=D();return(s,r)=>i(e).footer&&i(t).footer!==!1?(o(),l("footer",{key:0,class:T(["VPFooter",{"has-sidebar":i(n)}])},[d("div",en,[i(e).footer.message?(o(),l("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,tn)):m("",!0),i(e).footer.copyright?(o(),l("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,sn)):m("",!0)])],2)):m("",!0)}}),an=k(nn,[["__scopeId","data-v-c970a860"]]);function on(){const{theme:a,frontmatter:e}=S(),t=Se([]),n=y(()=>t.value.length>0);return x(()=>{t.value=be(e.value.outline??a.value.outline)}),{headers:t,hasLocalNav:n}}const rn={class:"menu-text"},ln={class:"header"},cn={class:"outline"},un=h({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(a){const e=a,{theme:t}=S(),n=I(!1),s=I(0),r=I(),c=I();function v(g){var A;(A=r.value)!=null&&A.contains(g.target)||(n.value=!1)}W(n,g=>{if(g){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),le("Escape",()=>{n.value=!1}),x(()=>{n.value=!1});function p(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function _(g){g.target.classList.contains("outline-link")&&(c.value&&(c.value.style.transition="none"),Ne(()=>{n.value=!1}))}function L(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(g,A)=>(o(),l("div",{class:"VPLocalNavOutlineDropdown",style:Ie({"--vp-vh":s.value+"px"}),ref_key:"main",ref:r},[g.headers.length>0?(o(),l("button",{key:0,onClick:p,class:T({open:n.value})},[d("span",rn,V(i(we)(i(t))),1),A[0]||(A[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),l("button",{key:1,onClick:L},V(i(t).returnToTopLabel||"Return to top"),1)),b(pe,{name:"flyout"},{default:f(()=>[n.value?(o(),l("div",{key:0,ref_key:"items",ref:c,class:"items",onClick:_},[d("div",ln,[d("a",{class:"top-link",href:"#",onClick:L},V(i(t).returnToTopLabel||"Return to top"),1)]),d("div",cn,[b(Ee,{headers:g.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),dn=k(un,[["__scopeId","data-v-bc9dc845"]]),pn={class:"container"},vn=["aria-expanded"],fn={class:"menu-text"},mn=h({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(a){const{theme:e,frontmatter:t}=S(),{hasSidebar:n}=D(),{headers:s}=on(),{y:r}=Te(),c=I(0);G(()=>{c.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{s.value=be(t.value.outline??e.value.outline)});const v=y(()=>s.value.length===0),p=y(()=>v.value&&!n.value),_=y(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:v.value,fixed:p.value}));return(L,g)=>i(t).layout!=="home"&&(!p.value||i(r)>=c.value)?(o(),l("div",{key:0,class:T(_.value)},[d("div",pn,[i(n)?(o(),l("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:g[0]||(g[0]=A=>L.$emit("open-menu"))},[g[1]||(g[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",fn,V(i(e).sidebarMenuLabel||"Menu"),1)],8,vn)):m("",!0),b(dn,{headers:i(s),navHeight:c.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),hn=k(mn,[["__scopeId","data-v-070ab83d"]]);function _n(){const a=I(!1);function e(){a.value=!0,window.addEventListener("resize",s)}function t(){a.value=!1,window.removeEventListener("resize",s)}function n(){a.value?t():e()}function s(){window.outerWidth>=768&&t()}const r=ee();return W(()=>r.path,t),{isScreenOpen:a,openScreen:e,closeScreen:t,toggleScreen:n}}const bn={},gn={class:"VPSwitch",type:"button",role:"switch"},kn={class:"check"},$n={key:0,class:"icon"};function yn(a,e){return o(),l("button",gn,[d("span",kn,[a.$slots.default?(o(),l("span",$n,[u(a.$slots,"default",{},void 0,!0)])):m("",!0)])])}const An=k(bn,[["render",yn],["__scopeId","data-v-4a1c76db"]]),Pn=h({__name:"VPSwitchAppearance",setup(a){const{isDark:e,theme:t}=S(),n=z("toggle-appearance",()=>{e.value=!e.value}),s=I("");return me(()=>{s.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,c)=>(o(),$(An,{title:s.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(n)},{default:f(()=>c[0]||(c[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ge=k(Pn,[["__scopeId","data-v-e40a8bb6"]]),Ln={key:0,class:"VPNavBarAppearance"},Sn=h({__name:"VPNavBarAppearance",setup(a){const{site:e}=S();return(t,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",Ln,[b(ge)])):m("",!0)}}),Vn=k(Sn,[["__scopeId","data-v-af096f4a"]]),ke=I();let Qe=!1,re=0;function In(a){const e=I(!1);if(te){!Qe&&Nn(),re++;const t=W(ke,n=>{var s,r,c;n===a.el.value||(s=a.el.value)!=null&&s.contains(n)?(e.value=!0,(r=a.onFocus)==null||r.call(a)):(e.value=!1,(c=a.onBlur)==null||c.call(a))});fe(()=>{t(),re--,re||Tn()})}return Re(e)}function Nn(){document.addEventListener("focusin",Fe),Qe=!0,ke.value=document.activeElement}function Tn(){document.removeEventListener("focusin",Fe)}function Fe(){ke.value=document.activeElement}const Cn={class:"VPMenuLink"},Mn=h({__name:"VPMenuLink",props:{item:{}},setup(a){const{page:e}=S();return(t,n)=>(o(),l("div",Cn,[b(Q,{class:T({active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:f(()=>[F(V(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=k(Mn,[["__scopeId","data-v-8b74d055"]]),Bn={class:"VPMenuGroup"},wn={key:0,class:"title"},En=h({__name:"VPMenuGroup",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),l("div",Bn,[e.text?(o(),l("p",wn,V(e.text),1)):m("",!0),(o(!0),l(C,null,w(e.items,n=>(o(),l(C,null,["link"in n?(o(),$(se,{key:0,item:n},null,8,["item"])):m("",!0)],64))),256))]))}}),Qn=k(En,[["__scopeId","data-v-48c802d0"]]),Fn={class:"VPMenu"},Hn={key:0,class:"items"},Wn=h({__name:"VPMenu",props:{items:{}},setup(a){return(e,t)=>(o(),l("div",Fn,[e.items?(o(),l("div",Hn,[(o(!0),l(C,null,w(e.items,n=>(o(),l(C,{key:JSON.stringify(n)},["link"in n?(o(),$(se,{key:0,item:n},null,8,["item"])):"component"in n?(o(),$(H(n.component),U({key:1,ref_for:!0},n.props),null,16)):(o(),$(Qn,{key:2,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):m("",!0),u(e.$slots,"default",{},void 0,!0)]))}}),Dn=k(Wn,[["__scopeId","data-v-7dd3104a"]]),On=["aria-expanded","aria-label"],Un={key:0,class:"text"},Gn=["innerHTML"],Jn={key:1,class:"vpi-more-horizontal icon"},Kn={class:"menu"},jn=h({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(a){const e=I(!1),t=I();In({el:t,onBlur:n});function n(){e.value=!1}return(s,r)=>(o(),l("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=c=>e.value=!0),onMouseleave:r[2]||(r[2]=c=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:r[0]||(r[0]=c=>e.value=!e.value)},[s.button||s.icon?(o(),l("span",Un,[s.icon?(o(),l("span",{key:0,class:T([s.icon,"option-icon"])},null,2)):m("",!0),s.button?(o(),l("span",{key:1,innerHTML:s.button},null,8,Gn)):m("",!0),r[3]||(r[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),l("span",Jn))],8,On),d("div",Kn,[b(Dn,{items:s.items},{default:f(()=>[u(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=k(jn,[["__scopeId","data-v-e5380155"]]),zn=["href","aria-label","innerHTML"],Rn=h({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(a){const e=a,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,s)=>(o(),l("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,zn))}}),Zn=k(Rn,[["__scopeId","data-v-717b8b75"]]),Yn={class:"VPSocialLinks"},Xn=h({__name:"VPSocialLinks",props:{links:{}},setup(a){return(e,t)=>(o(),l("div",Yn,[(o(!0),l(C,null,w(e.links,({link:n,icon:s,ariaLabel:r})=>(o(),$(Zn,{key:n,icon:s,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ne=k(Xn,[["__scopeId","data-v-ee7a9424"]]),qn={key:0,class:"group translations"},xn={class:"trans-title"},ea={key:1,class:"group"},ta={class:"item appearance"},sa={class:"label"},na={class:"appearance-action"},aa={key:2,class:"group"},oa={class:"item social-links"},ra=h({__name:"VPNavBarExtra",setup(a){const{site:e,theme:t}=S(),{localeLinks:n,currentLang:s}=Z({correspondingLink:!0}),r=y(()=>n.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(c,v)=>r.value?(o(),$($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(n).length&&i(s).label?(o(),l("div",qn,[d("p",xn,V(i(s).label),1),(o(!0),l(C,null,w(i(n),p=>(o(),$(se,{key:p.link,item:p},null,8,["item"]))),128))])):m("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",ea,[d("div",ta,[d("p",sa,V(i(t).darkModeSwitchLabel||"Appearance"),1),d("div",na,[b(ge)])])])):m("",!0),i(t).socialLinks?(o(),l("div",aa,[d("div",oa,[b(ne,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),ia=k(ra,[["__scopeId","data-v-925effce"]]),la=["aria-expanded"],ca=h({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(a){return(e,t)=>(o(),l("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},t[1]||(t[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)]),10,la))}}),ua=k(ca,[["__scopeId","data-v-5dea55bf"]]),da=["innerHTML"],pa=h({__name:"VPNavBarMenuLink",props:{item:{}},setup(a){const{page:e}=S();return(t,n)=>(o(),$(Q,{class:T({VPNavBarMenuLink:!0,active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,da)]),_:1},8,["class","href","noIcon","target","rel"]))}}),va=k(pa,[["__scopeId","data-v-ed5ac1f6"]]),fa=h({__name:"VPNavBarMenuGroup",props:{item:{}},setup(a){const e=a,{page:t}=S(),n=r=>"component"in r?!1:"link"in r?K(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),s=y(()=>n(e.item));return(r,c)=>(o(),$($e,{class:T({VPNavBarMenuGroup:!0,active:i(K)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||s.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ma={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ha=h({__name:"VPNavBarMenu",setup(a){const{theme:e}=S();return(t,n)=>i(e).nav?(o(),l("nav",ma,[n[0]||(n[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),l(C,null,w(i(e).nav,s=>(o(),l(C,{key:JSON.stringify(s)},["link"in s?(o(),$(va,{key:0,item:s},null,8,["item"])):"component"in s?(o(),$(H(s.component),U({key:1,ref_for:!0},s.props),null,16)):(o(),$(fa,{key:2,item:s},null,8,["item"]))],64))),128))])):m("",!0)}}),_a=k(ha,[["__scopeId","data-v-e6d46098"]]);function ba(a){const{localeIndex:e,theme:t}=S();function n(s){var M,B,N;const r=s.split("."),c=(M=t.value.search)==null?void 0:M.options,v=c&&typeof c=="object",p=v&&((N=(B=c.locales)==null?void 0:B[e.value])==null?void 0:N.translations)||null,_=v&&c.translations||null;let L=p,g=_,A=a;const P=r.pop();for(const E of r){let O=null;const j=A==null?void 0:A[E];j&&(O=A=j);const ae=g==null?void 0:g[E];ae&&(O=g=ae);const oe=L==null?void 0:L[E];oe&&(O=L=oe),j||(A=O),ae||(g=O),oe||(L=O)}return(L==null?void 0:L[P])??(g==null?void 0:g[P])??(A==null?void 0:A[P])??""}return n}const ga=["aria-label"],ka={class:"DocSearch-Button-Container"},$a={class:"DocSearch-Button-Placeholder"},Ae=h({__name:"VPNavBarSearchButton",setup(a){const t=ba({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(o(),l("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[d("span",ka,[s[0]||(s[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",$a,V(i(t)("button.buttonText")),1)]),s[1]||(s[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ga))}}),ya={class:"VPNavBarSearch"},Aa={id:"local-search"},Pa={key:1,id:"docsearch"},La=h({__name:"VPNavBarSearch",setup(a){const e=Ze(()=>Ye(()=>import("./VPLocalSearchBox.DfB2vwMq.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=S(),s=I(!1),r=I(!1);G(()=>{});function c(){s.value||(s.value=!0,setTimeout(v,16))}function v(){const g=new Event("keydown");g.key="k",g.metaKey=!0,window.dispatchEvent(g),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function p(g){const A=g.target,P=A.tagName;return A.isContentEditable||P==="INPUT"||P==="SELECT"||P==="TEXTAREA"}const _=I(!1);le("k",g=>{(g.ctrlKey||g.metaKey)&&(g.preventDefault(),_.value=!0)}),le("/",g=>{p(g)||(g.preventDefault(),_.value=!0)});const L="local";return(g,A)=>{var P;return o(),l("div",ya,[i(L)==="local"?(o(),l(C,{key:0},[_.value?(o(),$(i(e),{key:0,onClose:A[0]||(A[0]=M=>_.value=!1)})):m("",!0),d("div",Aa,[b(Ae,{onClick:A[1]||(A[1]=M=>_.value=!0)})])],64)):i(L)==="algolia"?(o(),l(C,{key:1},[s.value?(o(),$(i(t),{key:0,algolia:((P=i(n).search)==null?void 0:P.options)??i(n).algolia,onVnodeBeforeMount:A[2]||(A[2]=M=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(o(),l("div",Pa,[b(Ae,{onClick:c})]))],64)):m("",!0)])}}}),Sa=h({__name:"VPNavBarSocialLinks",setup(a){const{theme:e}=S();return(t,n)=>i(e).socialLinks?(o(),$(ne,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):m("",!0)}}),Va=k(Sa,[["__scopeId","data-v-164c457f"]]),Ia=["href","rel","target"],Na={key:1},Ta={key:2},Ca=h({__name:"VPNavBarTitle",setup(a){const{site:e,theme:t}=S(),{hasSidebar:n}=D(),{currentLang:s}=Z(),r=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),c=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),v=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,_)=>(o(),l("div",{class:T(["VPNavBarTitle",{"has-sidebar":i(n)}])},[d("a",{class:"title",href:r.value??i(_e)(i(s).link),rel:c.value,target:v.value},[u(p.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(o(),$(X,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):m("",!0),i(t).siteTitle?(o(),l("span",Na,V(i(t).siteTitle),1)):i(t).siteTitle===void 0?(o(),l("span",Ta,V(i(e).title),1)):m("",!0),u(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ia)],2))}}),Ma=k(Ca,[["__scopeId","data-v-28a961f9"]]),Ba={class:"items"},wa={class:"title"},Ea=h({__name:"VPNavBarTranslations",setup(a){const{theme:e}=S(),{localeLinks:t,currentLang:n}=Z({correspondingLink:!0});return(s,r)=>i(t).length&&i(n).label?(o(),$($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[d("div",Ba,[d("p",wa,V(i(n).label),1),(o(!0),l(C,null,w(i(t),c=>(o(),$(se,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Qa=k(Ea,[["__scopeId","data-v-c80d9ad0"]]),Fa={class:"wrapper"},Ha={class:"container"},Wa={class:"title"},Da={class:"content"},Oa={class:"content-body"},Ua=h({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(a){const e=a,{y:t}=Te(),{hasSidebar:n}=D(),{frontmatter:s}=S(),r=I({});return me(()=>{r.value={"has-sidebar":n.value,home:s.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(c,v)=>(o(),l("div",{class:T(["VPNavBar",r.value])},[d("div",Fa,[d("div",Ha,[d("div",Wa,[b(Ma,null,{"nav-bar-title-before":f(()=>[u(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(c.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Da,[d("div",Oa,[u(c.$slots,"nav-bar-content-before",{},void 0,!0),b(La,{class:"search"}),b(_a,{class:"menu"}),b(Qa,{class:"translations"}),b(Vn,{class:"appearance"}),b(Va,{class:"social-links"}),b(ia,{class:"extra"}),u(c.$slots,"nav-bar-content-after",{},void 0,!0),b(ua,{class:"hamburger",active:c.isScreenOpen,onClick:v[0]||(v[0]=p=>c.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),Ga=k(Ua,[["__scopeId","data-v-822684d1"]]),Ja={key:0,class:"VPNavScreenAppearance"},Ka={class:"text"},ja=h({__name:"VPNavScreenAppearance",setup(a){const{site:e,theme:t}=S();return(n,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",Ja,[d("p",Ka,V(i(t).darkModeSwitchLabel||"Appearance"),1),b(ge)])):m("",!0)}}),za=k(ja,[["__scopeId","data-v-ffb44008"]]),Ra=h({__name:"VPNavScreenMenuLink",props:{item:{}},setup(a){const e=z("close-screen");return(t,n)=>(o(),$(Q,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Za=k(Ra,[["__scopeId","data-v-27d04aeb"]]),Ya=h({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(a){const e=z("close-screen");return(t,n)=>(o(),$(Q,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:f(()=>[F(V(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),He=k(Ya,[["__scopeId","data-v-7179dbb7"]]),Xa={class:"VPNavScreenMenuGroupSection"},qa={key:0,class:"title"},xa=h({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),l("div",Xa,[e.text?(o(),l("p",qa,V(e.text),1)):m("",!0),(o(!0),l(C,null,w(e.items,n=>(o(),$(He,{key:n.text,item:n},null,8,["item"]))),128))]))}}),eo=k(xa,[["__scopeId","data-v-4b8941ac"]]),to=["aria-controls","aria-expanded"],so=["innerHTML"],no=["id"],ao={key:0,class:"item"},oo={key:1,class:"item"},ro={key:2,class:"group"},io=h({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(a){const e=a,t=I(!1),n=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(r,c)=>(o(),l("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:s},[d("span",{class:"button-text",innerHTML:r.text},null,8,so),c[0]||(c[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,to),d("div",{id:n.value,class:"items"},[(o(!0),l(C,null,w(r.items,v=>(o(),l(C,{key:JSON.stringify(v)},["link"in v?(o(),l("div",ao,[b(He,{item:v},null,8,["item"])])):"component"in v?(o(),l("div",oo,[(o(),$(H(v.component),U({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(o(),l("div",ro,[b(eo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,no)],2))}}),lo=k(io,[["__scopeId","data-v-875057a5"]]),co={key:0,class:"VPNavScreenMenu"},uo=h({__name:"VPNavScreenMenu",setup(a){const{theme:e}=S();return(t,n)=>i(e).nav?(o(),l("nav",co,[(o(!0),l(C,null,w(i(e).nav,s=>(o(),l(C,{key:JSON.stringify(s)},["link"in s?(o(),$(Za,{key:0,item:s},null,8,["item"])):"component"in s?(o(),$(H(s.component),U({key:1,ref_for:!0},s.props,{"screen-menu":""}),null,16)):(o(),$(lo,{key:2,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),po=h({__name:"VPNavScreenSocialLinks",setup(a){const{theme:e}=S();return(t,n)=>i(e).socialLinks?(o(),$(ne,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):m("",!0)}}),vo={class:"list"},fo=h({__name:"VPNavScreenTranslations",setup(a){const{localeLinks:e,currentLang:t}=Z({correspondingLink:!0}),n=I(!1);function s(){n.value=!n.value}return(r,c)=>i(e).length&&i(t).label?(o(),l("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[d("button",{class:"title",onClick:s},[c[0]||(c[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),F(" "+V(i(t).label)+" ",1),c[1]||(c[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",vo,[(o(!0),l(C,null,w(i(e),v=>(o(),l("li",{key:v.link,class:"item"},[b(Q,{class:"link",href:v.link},{default:f(()=>[F(V(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),mo=k(fo,[["__scopeId","data-v-362991c2"]]),ho={class:"container"},_o=h({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(a){const e=I(null),t=Ce(te?document.body:null);return(n,s)=>(o(),$(pe,{name:"fade",onEnter:s[0]||(s[0]=r=>t.value=!0),onAfterLeave:s[1]||(s[1]=r=>t.value=!1)},{default:f(()=>[n.open?(o(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",ho,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),b(uo,{class:"menu"}),b(mo,{class:"translations"}),b(za,{class:"appearance"}),b(po,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),bo=k(_o,[["__scopeId","data-v-833aabba"]]),go={key:0,class:"VPNav"},ko=h({__name:"VPNav",setup(a){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=_n(),{frontmatter:s}=S(),r=y(()=>s.value.navbar!==!1);return he("close-screen",t),q(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(c,v)=>r.value?(o(),l("header",go,[b(Ga,{"is-screen-open":i(e),onToggleScreen:i(n)},{"nav-bar-title-before":f(()=>[u(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(c.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[u(c.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[u(c.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),b(bo,{open:i(e)},{"nav-screen-content-before":f(()=>[u(c.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[u(c.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):m("",!0)}}),$o=k(ko,[["__scopeId","data-v-f1e365da"]]),yo=["role","tabindex"],Ao={key:1,class:"items"},Po=h({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(a){const e=a,{collapsed:t,collapsible:n,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:p}=$t(y(()=>e.item)),_=y(()=>v.value?"section":"div"),L=y(()=>s.value?"a":"div"),g=y(()=>v.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),A=y(()=>s.value?void 0:"button"),P=y(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":s.value},{"is-active":r.value},{"has-active":c.value}]);function M(N){"key"in N&&N.key!=="Enter"||!e.item.link&&p()}function B(){e.item.link&&p()}return(N,E)=>{const O=J("VPSidebarItem",!0);return o(),$(H(_.value),{class:T(["VPSidebarItem",P.value])},{default:f(()=>[N.item.text?(o(),l("div",U({key:0,class:"item",role:A.value},Xe(N.item.items?{click:M,keydown:M}:{},!0),{tabindex:N.item.items&&0}),[E[1]||(E[1]=d("div",{class:"indicator"},null,-1)),N.item.link?(o(),$(Q,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(o(),$(H(g.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),$(H(g.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(o(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:qe(B,["enter"]),tabindex:"0"},E[0]||(E[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):m("",!0)],16,yo)):m("",!0),N.item.items&&N.item.items.length?(o(),l("div",Ao,[N.depth<5?(o(!0),l(C,{key:0},w(N.item.items,j=>(o(),$(O,{key:j.text,item:j,depth:N.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),Lo=k(Po,[["__scopeId","data-v-196b2e5f"]]),So=h({__name:"VPSidebarGroup",props:{items:{}},setup(a){const e=I(!0);let t=null;return G(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),xe(()=>{t!=null&&(clearTimeout(t),t=null)}),(n,s)=>(o(!0),l(C,null,w(n.items,r=>(o(),l("div",{key:r.text,class:T(["group",{"no-transition":e.value}])},[b(Lo,{item:r,depth:0},null,8,["item"])],2))),128))}}),Vo=k(So,[["__scopeId","data-v-9e426adc"]]),Io={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},No=h({__name:"VPSidebar",props:{open:{type:Boolean}},setup(a){const{sidebarGroups:e,hasSidebar:t}=D(),n=a,s=I(null),r=Ce(te?document.body:null);W([n,s],()=>{var v;n.open?(r.value=!0,(v=s.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const c=I(0);return W(e,()=>{c.value+=1},{deep:!0}),(v,p)=>i(t)?(o(),l("aside",{key:0,class:T(["VPSidebar",{open:v.open}]),ref_key:"navEl",ref:s,onClick:p[0]||(p[0]=et(()=>{},["stop"]))},[p[2]||(p[2]=d("div",{class:"curtain"},null,-1)),d("nav",Io,[p[1]||(p[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),u(v.$slots,"sidebar-nav-before",{},void 0,!0),(o(),$(Vo,{items:i(e),key:c.value},null,8,["items"])),u(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),To=k(No,[["__scopeId","data-v-18756405"]]),Co=h({__name:"VPSkipLink",setup(a){const e=ee(),t=I();W(()=>e.path,()=>t.value.focus());function n({target:s}){const r=document.getElementById(decodeURIComponent(s.hash).slice(1));if(r){const c=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",c)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",c),r.focus(),window.scrollTo(0,0)}}return(s,r)=>(o(),l(C,null,[d("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),Mo=k(Co,[["__scopeId","data-v-c3508ec8"]]),Bo=h({__name:"Layout",setup(a){const{isOpen:e,open:t,close:n}=D(),s=ee();W(()=>s.path,n),kt(e,n);const{frontmatter:r}=S(),c=Me(),v=y(()=>!!c["home-hero-image"]);return he("hero-image-slot-exists",v),(p,_)=>{const L=J("Content");return i(r).layout!==!1?(o(),l("div",{key:0,class:T(["Layout",i(r).pageClass])},[u(p.$slots,"layout-top",{},void 0,!0),b(Mo),b(it,{class:"backdrop",show:i(e),onClick:i(n)},null,8,["show","onClick"]),b($o,null,{"nav-bar-title-before":f(()=>[u(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[u(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[u(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[u(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[u(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),b(hn,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),b(To,{open:i(e)},{"sidebar-nav-before":f(()=>[u(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[u(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),b(xs,null,{"page-top":f(()=>[u(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[u(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[u(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[u(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),b(an),u(p.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),$(L,{key:1}))}}}),wo=k(Bo,[["__scopeId","data-v-a9a9e638"]]),Eo={},Qo={class:"VPTeamPage"};function Fo(a,e){return o(),l("div",Qo,[u(a.$slots,"default")])}const Mr=k(Eo,[["render",Fo],["__scopeId","data-v-c2f8e101"]]),Ho={},Wo={class:"VPTeamPageTitle"},Do={key:0,class:"title"},Oo={key:1,class:"lead"};function Uo(a,e){return o(),l("div",Wo,[a.$slots.title?(o(),l("h1",Do,[u(a.$slots,"title",{},void 0,!0)])):m("",!0),a.$slots.lead?(o(),l("p",Oo,[u(a.$slots,"lead",{},void 0,!0)])):m("",!0)])}const Br=k(Ho,[["render",Uo],["__scopeId","data-v-e277e15c"]]),Go={},Jo={class:"VPTeamPageSection"},Ko={class:"title"},jo={key:0,class:"title-text"},zo={key:0,class:"lead"},Ro={key:1,class:"members"};function Zo(a,e){return o(),l("section",Jo,[d("div",Ko,[e[0]||(e[0]=d("div",{class:"title-line"},null,-1)),a.$slots.title?(o(),l("h2",jo,[u(a.$slots,"title",{},void 0,!0)])):m("",!0)]),a.$slots.lead?(o(),l("p",zo,[u(a.$slots,"lead",{},void 0,!0)])):m("",!0),a.$slots.members?(o(),l("div",Ro,[u(a.$slots,"members",{},void 0,!0)])):m("",!0)])}const wr=k(Go,[["render",Zo],["__scopeId","data-v-d43bc49d"]]),Yo={class:"profile"},Xo={class:"avatar"},qo=["src","alt"],xo={class:"data"},er={class:"name"},tr={key:0,class:"affiliation"},sr={key:0,class:"title"},nr={key:1,class:"at"},ar=["innerHTML"],or={key:2,class:"links"},rr={key:0,class:"sp"},ir=h({__name:"VPTeamMembersItem",props:{size:{default:"medium"},member:{}},setup(a){return(e,t)=>(o(),l("article",{class:T(["VPTeamMembersItem",[e.size]])},[d("div",Yo,[d("figure",Xo,[d("img",{class:"avatar-img",src:e.member.avatar,alt:e.member.name},null,8,qo)]),d("div",xo,[d("h1",er,V(e.member.name),1),e.member.title||e.member.org?(o(),l("p",tr,[e.member.title?(o(),l("span",sr,V(e.member.title),1)):m("",!0),e.member.title&&e.member.org?(o(),l("span",nr," @ ")):m("",!0),e.member.org?(o(),$(Q,{key:2,class:T(["org",{link:e.member.orgLink}]),href:e.member.orgLink,"no-icon":""},{default:f(()=>[F(V(e.member.org),1)]),_:1},8,["class","href"])):m("",!0)])):m("",!0),e.member.desc?(o(),l("p",{key:1,class:"desc",innerHTML:e.member.desc},null,8,ar)):m("",!0),e.member.links?(o(),l("div",or,[b(ne,{links:e.member.links},null,8,["links"])])):m("",!0)])]),e.member.sponsor?(o(),l("div",rr,[b(Q,{class:"sp-link",href:e.member.sponsor,"no-icon":""},{default:f(()=>[t[0]||(t[0]=d("span",{class:"vpi-heart sp-icon"},null,-1)),F(" "+V(e.member.actionText||"Sponsor"),1)]),_:1},8,["href"])])):m("",!0)],2))}}),lr=k(ir,[["__scopeId","data-v-f9987cb6"]]),cr={class:"container"},ur=h({__name:"VPTeamMembers",props:{size:{default:"medium"},members:{}},setup(a){const e=a,t=y(()=>[e.size,`count-${e.members.length}`]);return(n,s)=>(o(),l("div",{class:T(["VPTeamMembers",t.value])},[d("div",cr,[(o(!0),l(C,null,w(n.members,r=>(o(),l("div",{key:r.name,class:"item"},[b(lr,{size:n.size,member:r},null,8,["size","member"])]))),128))])],2))}}),Er=k(ur,[["__scopeId","data-v-fba19bad"]]),Pe={Layout:wo,enhanceApp:({app:a})=>{a.component("Badge",at)}},dr={},pr={style:{"text-align":"center"}};function vr(a,e){const t=J("font");return o(),l(C,null,[e[1]||(e[1]=d("br",null,null,-1)),d("h1",pr,[d("strong",null,[b(t,{color:"orange"},{default:f(()=>e[0]||(e[0]=[F(" Package Ecosystem")])),_:1})])]),e[2]||(e[2]=tt('

Read n-d array like-data

DiskArrays.jl

Get your chunks!

Named Dimensions

DimensionalData.jl

Select & Index!

Out of memory data

Zarr.jl

Chunkerd, compressed !

Rasterized spatial data

Rasters.jl

Read and manipulate !

Array-oriented data

NetCDF.jl

Scientific binary data.

Raster and vector data

ArchGDAL.jl

GDAL in Julia.

An interface for

GeoInterface.jl

geospatial data in Julia.

A higher level interface

GRIBDatasets.jl

for reading GRIB files.

Array-oriented data

NCDatasets.jl

Scientific binary data.

',9))],64)}const fr=k(dr,[["render",vr]]),mr=a=>{if(typeof document>"u")return{stabilizeScrollPosition:s=>async(...r)=>s(...r)};const e=document.documentElement;return{stabilizeScrollPosition:n=>async(...s)=>{const r=n(...s),c=a.value;if(!c)return r;const v=c.offsetTop-e.scrollTop;return await Ne(),e.scrollTop=c.offsetTop-v,r}}},We="vitepress:tabSharedState",R=typeof localStorage<"u"?localStorage:null,De="vitepress:tabsSharedState",hr=()=>{const a=R==null?void 0:R.getItem(De);if(a)try{return JSON.parse(a)}catch{}return{}},_r=a=>{R&&R.setItem(De,JSON.stringify(a))},br=a=>{const e=st({});W(()=>e.content,(t,n)=>{t&&n&&_r(t)},{deep:!0}),a.provide(We,e)},gr=(a,e)=>{const t=z(We);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");G(()=>{t.content||(t.content=hr())});const n=I(),s=y({get(){var p;const c=e.value,v=a.value;if(c){const _=(p=t.content)==null?void 0:p[c];if(_&&v.includes(_))return _}else{const _=n.value;if(_)return _}return v[0]},set(c){const v=e.value;v?t.content&&(t.content[v]=c):n.value=c}});return{selected:s,select:c=>{s.value=c}}};let Le=0;const kr=()=>(Le++,""+Le);function $r(){const a=Me();return y(()=>{var n;const t=(n=a.default)==null?void 0:n.call(a);return t?t.filter(s=>typeof s.type=="object"&&"__name"in s.type&&s.type.__name==="PluginTabsTab"&&s.props).map(s=>{var r;return(r=s.props)==null?void 0:r.label}):[]})}const Oe="vitepress:tabSingleState",yr=a=>{he(Oe,a)},Ar=()=>{const a=z(Oe);if(!a)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return a},Pr={class:"plugin-tabs"},Lr=["id","aria-selected","aria-controls","tabindex","onClick"],Sr=h({__name:"PluginTabs",props:{sharedStateKey:{}},setup(a){const e=a,t=$r(),{selected:n,select:s}=gr(t,nt(e,"sharedStateKey")),r=I(),{stabilizeScrollPosition:c}=mr(r),v=c(s),p=I([]),_=g=>{var M;const A=t.value.indexOf(n.value);let P;g.key==="ArrowLeft"?P=A>=1?A-1:t.value.length-1:g.key==="ArrowRight"&&(P=A(o(),l("div",Pr,[d("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:_},[(o(!0),l(C,null,w(i(t),P=>(o(),l("button",{id:`tab-${P}-${i(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:p,key:P,role:"tab",class:"plugin-tabs--tab","aria-selected":P===i(n),"aria-controls":`panel-${P}-${i(L)}`,tabindex:P===i(n)?0:-1,onClick:()=>i(v)(P)},V(P),9,Lr))),128))],544),u(g.$slots,"default")]))}}),Vr=["id","aria-labelledby"],Ir=h({__name:"PluginTabsTab",props:{label:{}},setup(a){const{uid:e,selected:t}=Ar();return(n,s)=>i(t)===n.label?(o(),l("div",{key:0,id:`panel-${n.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${n.label}-${i(e)}`},[u(n.$slots,"default",{},void 0,!0)],8,Vr)):m("",!0)}}),Nr=k(Ir,[["__scopeId","data-v-9b0d03d2"]]),Tr=a=>{br(a),a.component("PluginTabs",Sr),a.component("PluginTabsTab",Nr)},Qr={extends:Pe,Layout(){return ye(Pe.Layout,null,{"aside-ads-before":()=>ye(fr)})},enhanceApp({app:a,router:e,siteData:t}){Tr(a)}};export{Qr as R,Br as V,Er as a,wr as b,Mr as c,ba as d,S as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DxzvBZ9g.js","assets/chunks/framework.BgERvflD.js"])))=>i.map(i=>d[i]); +import{d as h,o,c as l,r as u,n as T,a as F,t as V,b as $,w as f,e as m,T as pe,_ as k,u as Ue,i as Ge,f as Je,g as ve,h as y,j as d,k as i,l as K,m as ie,p as I,q as W,s as q,v as G,x as fe,y as me,z as Ke,A as je,B as J,F as C,C as w,D as Se,E as x,G as b,H,I as Ve,J as ee,K as U,L as z,M as ze,N as Ie,O as le,P as Ne,Q as Te,R as te,S as Re,U as Ze,V as Ye,W as Ce,X as he,Y as Xe,Z as qe,$ as xe,a0 as et,a1 as Me,a2 as tt,a3 as st,a4 as nt,a5 as ye}from"./framework.BgERvflD.js";const at=h({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(a){return(e,t)=>(o(),l("span",{class:T(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[F(V(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},rt=h({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(a){return(e,t)=>(o(),$(pe,{name:"fade"},{default:f(()=>[e.show?(o(),l("div",ot)):m("",!0)]),_:1}))}}),it=k(rt,[["__scopeId","data-v-b06cdb19"]]),S=Ue;function lt(a,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(a,e):(a(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ce(a){return/^\//.test(a)?a:`/${a}`}function _e(a){const{pathname:e,search:t,hash:n,protocol:s}=new URL(a,"http://a.com");if(Ge(a)||a.startsWith("#")||!s.startsWith("http")||!Je(e))return a;const{site:r}=S(),c=e.endsWith("/")||e.endsWith(".html")?a:a.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${n}`);return ve(c)}function Z({correspondingLink:a=!1}={}){const{site:e,localeIndex:t,page:n,theme:s,hash:r}=S(),c=y(()=>{var p,_;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((_=e.value.locales[t.value])==null?void 0:_.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,_])=>c.value.label===_.label?[]:{text:_.label,link:ct(_.link||(p==="root"?"/":`/${p}/`),s.value.i18nRouting!==!1&&a,n.value.relativePath.slice(c.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:c}}function ct(a,e,t,n){return e?a.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):a}const ut={class:"NotFound"},dt={class:"code"},pt={class:"title"},vt={class:"quote"},ft={class:"action"},mt=["href","aria-label"],ht=h({__name:"NotFound",setup(a){const{theme:e}=S(),{currentLang:t}=Z();return(n,s)=>{var r,c,v,p,_;return o(),l("div",ut,[d("p",dt,V(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),d("h1",pt,V(((c=i(e).notFound)==null?void 0:c.title)??"PAGE NOT FOUND"),1),s[0]||(s[0]=d("div",{class:"divider"},null,-1)),d("blockquote",vt,V(((v=i(e).notFound)==null?void 0:v.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ft,[d("a",{class:"link",href:i(ve)(i(t).link),"aria-label":((p=i(e).notFound)==null?void 0:p.linkLabel)??"go to home"},V(((_=i(e).notFound)==null?void 0:_.linkText)??"Take me home"),9,mt)])])}}}),_t=k(ht,[["__scopeId","data-v-951cab6c"]]);function Be(a,e){if(Array.isArray(a))return Y(a);if(a==null)return[];e=ce(e);const t=Object.keys(a).sort((s,r)=>r.split("/").length-s.split("/").length).find(s=>e.startsWith(ce(s))),n=t?a[t]:[];return Array.isArray(n)?Y(n):Y(n.items,n.base)}function bt(a){const e=[];let t=0;for(const n in a){const s=a[n];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function gt(a){const e=[];function t(n){for(const s of n)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(a),e}function ue(a,e){return Array.isArray(e)?e.some(t=>ue(a,t)):K(a,e.link)?!0:e.items?ue(a,e.items):!1}function Y(a,e){return[...a].map(t=>{const n={...t},s=n.base||e;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Y(n.items,s)),n})}function D(){const{frontmatter:a,page:e,theme:t}=S(),n=ie("(min-width: 960px)"),s=I(!1),r=y(()=>{const B=t.value.sidebar,N=e.value.relativePath;return B?Be(B,N):[]}),c=I(r.value);W(r,(B,N)=>{JSON.stringify(B)!==JSON.stringify(N)&&(c.value=r.value)});const v=y(()=>a.value.sidebar!==!1&&c.value.length>0&&a.value.layout!=="home"),p=y(()=>_?a.value.aside==null?t.value.aside==="left":a.value.aside==="left":!1),_=y(()=>a.value.layout==="home"?!1:a.value.aside!=null?!!a.value.aside:t.value.aside!==!1),L=y(()=>v.value&&n.value),g=y(()=>v.value?bt(c.value):[]);function A(){s.value=!0}function P(){s.value=!1}function M(){s.value?P():A()}return{isOpen:s,sidebar:c,sidebarGroups:g,hasSidebar:v,hasAside:_,leftAside:p,isSidebarEnabled:L,open:A,close:P,toggle:M}}function kt(a,e){let t;q(()=>{t=a.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",n)}),fe(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&a.value&&(e(),t==null||t.focus())}}function $t(a){const{page:e,hash:t}=S(),n=I(!1),s=y(()=>a.value.collapsed!=null),r=y(()=>!!a.value.link),c=I(!1),v=()=>{c.value=K(e.value.relativePath,a.value.link)};W([e,a,t],v),G(v);const p=y(()=>c.value?!0:a.value.items?ue(e.value.relativePath,a.value.items):!1),_=y(()=>!!(a.value.items&&a.value.items.length));q(()=>{n.value=!!(s.value&&a.value.collapsed)}),me(()=>{(c.value||p.value)&&(n.value=!1)});function L(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:r,isActiveLink:c,hasActiveLink:p,hasChildren:_,toggle:L}}function yt(){const{hasSidebar:a}=D(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:a.value?t.value:e.value)}}const de=[];function we(a){return typeof a.outline=="object"&&!Array.isArray(a.outline)&&a.outline.label||a.outlineTitle||"On this page"}function be(a){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:At(t),link:"#"+t.id,level:n}});return Pt(e,a)}function At(a){let e="";for(const t of a.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(a,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;a=a.filter(c=>c.level>=n&&c.level<=s),de.length=0;for(const{element:c,link:v}of a)de.push({element:c,link:v});const r=[];e:for(let c=0;c=0;p--){const _=a[p];if(_.level{requestAnimationFrame(r),window.addEventListener("scroll",n)}),Ke(()=>{c(location.hash)}),fe(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const v=window.scrollY,p=window.innerHeight,_=document.body.offsetHeight,L=Math.abs(v+p-_)<1,g=de.map(({element:P,link:M})=>({link:M,top:St(P)})).filter(({top:P})=>!Number.isNaN(P)).sort((P,M)=>P.top-M.top);if(!g.length){c(null);return}if(v<1){c(null);return}if(L){c(g[g.length-1].link);return}let A=null;for(const{link:P,top:M}of g){if(M>v+je()+4)break;A=P}c(A)}function c(v){s&&s.classList.remove("active"),v==null?s=null:s=a.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const p=s;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function St(a){let e=0;for(;a!==document.body;){if(a===null)return NaN;e+=a.offsetTop,a=a.offsetParent}return e}const Vt=["href","title"],It=h({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(a){function e({target:t}){const n=t.href.split("#")[1],s=document.getElementById(decodeURIComponent(n));s==null||s.focus({preventScroll:!0})}return(t,n)=>{const s=J("VPDocOutlineItem",!0);return o(),l("ul",{class:T(["VPDocOutlineItem",t.root?"root":"nested"])},[(o(!0),l(C,null,w(t.headers,({children:r,link:c,title:v})=>(o(),l("li",null,[d("a",{class:"outline-link",href:c,onClick:e,title:v},V(v),9,Vt),r!=null&&r.length?(o(),$(s,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),Ee=k(It,[["__scopeId","data-v-3f927ebe"]]),Nt={class:"content"},Tt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ct=h({__name:"VPDocAsideOutline",setup(a){const{frontmatter:e,theme:t}=S(),n=Se([]);x(()=>{n.value=be(e.value.outline??t.value.outline)});const s=I(),r=I();return Lt(s,r),(c,v)=>(o(),l("nav",{"aria-labelledby":"doc-outline-aria-label",class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[d("div",Nt,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",Tt,V(i(we)(i(t))),1),b(Ee,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),Mt=k(Ct,[["__scopeId","data-v-b38bf2ff"]]),Bt={class:"VPDocAsideCarbonAds"},wt=h({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(a){const e=()=>null;return(t,n)=>(o(),l("div",Bt,[b(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Et={class:"VPDocAside"},Qt=h({__name:"VPDocAside",setup(a){const{theme:e}=S();return(t,n)=>(o(),l("div",Et,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),b(Mt),u(t.$slots,"aside-outline-after",{},void 0,!0),n[0]||(n[0]=d("div",{class:"spacer"},null,-1)),u(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(o(),$(wt,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):m("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ft=k(Qt,[["__scopeId","data-v-6d7b3c46"]]);function Ht(){const{theme:a,page:e}=S();return y(()=>{const{text:t="Edit this page",pattern:n=""}=a.value.editLink||{};let s;return typeof n=="function"?s=n(e.value):s=n.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function Wt(){const{page:a,theme:e,frontmatter:t}=S();return y(()=>{var _,L,g,A,P,M,B,N;const n=Be(e.value.sidebar,a.value.relativePath),s=gt(n),r=Dt(s,E=>E.link.replace(/[?#].*$/,"")),c=r.findIndex(E=>K(a.value.relativePath,E.link)),v=((_=e.value.docFooter)==null?void 0:_.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:v?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((g=r[c-1])==null?void 0:g.docFooterText)??((A=r[c-1])==null?void 0:A.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((P=r[c-1])==null?void 0:P.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((M=r[c+1])==null?void 0:M.docFooterText)??((B=r[c+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=r[c+1])==null?void 0:N.link)}}})}function Dt(a,e){const t=new Set;return a.filter(n=>{const s=e(n);return t.has(s)?!1:t.add(s)})}const Q=h({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.tag??(e.href?"a":"span")),n=y(()=>e.href&&Ve.test(e.href)||e.target==="_blank");return(s,r)=>(o(),$(H(t.value),{class:T(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?i(_e)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:f(()=>[u(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ot={class:"VPLastUpdated"},Ut=["datetime"],Gt=h({__name:"VPDocFooterLastUpdated",setup(a){const{theme:e,page:t,lang:n}=S(),s=y(()=>new Date(t.value.lastUpdated)),r=y(()=>s.value.toISOString()),c=I("");return G(()=>{q(()=>{var v,p,_;c.value=new Intl.DateTimeFormat((p=(v=e.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&p.forceLocale?n.value:void 0,((_=e.value.lastUpdated)==null?void 0:_.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(s.value)})}),(v,p)=>{var _;return o(),l("p",Ot,[F(V(((_=i(e).lastUpdated)==null?void 0:_.text)||i(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:r.value},V(c.value),9,Ut)])}}}),Jt=k(Gt,[["__scopeId","data-v-475f71b8"]]),Kt={key:0,class:"VPDocFooter"},jt={key:0,class:"edit-info"},zt={key:0,class:"edit-link"},Rt={key:1,class:"last-updated"},Zt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Yt={class:"pager"},Xt=["innerHTML"],qt=["innerHTML"],xt={class:"pager"},es=["innerHTML"],ts=["innerHTML"],ss=h({__name:"VPDocFooter",setup(a){const{theme:e,page:t,frontmatter:n}=S(),s=Ht(),r=Wt(),c=y(()=>e.value.editLink&&n.value.editLink!==!1),v=y(()=>t.value.lastUpdated),p=y(()=>c.value||v.value||r.value.prev||r.value.next);return(_,L)=>{var g,A,P,M;return p.value?(o(),l("footer",Kt,[u(_.$slots,"doc-footer-before",{},void 0,!0),c.value||v.value?(o(),l("div",jt,[c.value?(o(),l("div",zt,[b(Q,{class:"edit-link-button",href:i(s).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),F(" "+V(i(s).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(o(),l("div",Rt,[b(Jt)])):m("",!0)])):m("",!0),(g=i(r).prev)!=null&&g.link||(A=i(r).next)!=null&&A.link?(o(),l("nav",Zt,[L[1]||(L[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Yt,[(P=i(r).prev)!=null&&P.link?(o(),$(Q,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var B;return[d("span",{class:"desc",innerHTML:((B=i(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,Xt),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,qt)]}),_:1},8,["href"])):m("",!0)]),d("div",xt,[(M=i(r).next)!=null&&M.link?(o(),$(Q,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var B;return[d("span",{class:"desc",innerHTML:((B=i(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,es),d("span",{class:"title",innerHTML:i(r).next.text},null,8,ts)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),ns=k(ss,[["__scopeId","data-v-4f9813fa"]]),as={class:"container"},os={class:"aside-container"},rs={class:"aside-content"},is={class:"content"},ls={class:"content-container"},cs={class:"main"},us=h({__name:"VPDoc",setup(a){const{theme:e}=S(),t=ee(),{hasSidebar:n,hasAside:s,leftAside:r}=D(),c=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,p)=>{const _=J("Content");return o(),l("div",{class:T(["VPDoc",{"has-sidebar":i(n),"has-aside":i(s)}])},[u(v.$slots,"doc-top",{},void 0,!0),d("div",as,[i(s)?(o(),l("div",{key:0,class:T(["aside",{"left-aside":i(r)}])},[p[0]||(p[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",os,[d("div",rs,[b(Ft,null,{"aside-top":f(()=>[u(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[u(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[u(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),d("div",is,[d("div",ls,[u(v.$slots,"doc-before",{},void 0,!0),d("main",cs,[b(_,{class:T(["vp-doc",[c.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),b(ns,null,{"doc-footer-before":f(()=>[u(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(v.$slots,"doc-after",{},void 0,!0)])])]),u(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),ds=k(us,[["__scopeId","data-v-83890dd9"]]),ps=h({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.href&&Ve.test(e.href)),n=y(()=>e.tag||e.href?"a":"button");return(s,r)=>(o(),$(H(n.value),{class:T(["VPButton",[s.size,s.theme]]),href:s.href?i(_e)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[F(V(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),vs=k(ps,[["__scopeId","data-v-14206e74"]]),fs=["src","alt"],ms=h({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(a){return(e,t)=>{const n=J("VPImage",!0);return e.image?(o(),l(C,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),l("img",U({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,fs)):(o(),l(C,{key:1},[b(n,U({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),b(n,U({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),X=k(ms,[["__scopeId","data-v-35a7d0b8"]]),hs={class:"container"},_s={class:"main"},bs={key:0,class:"name"},gs=["innerHTML"],ks=["innerHTML"],$s=["innerHTML"],ys={key:0,class:"actions"},As={key:0,class:"image"},Ps={class:"image-container"},Ls=h({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(a){const e=z("hero-image-slot-exists");return(t,n)=>(o(),l("div",{class:T(["VPHero",{"has-image":t.image||i(e)}])},[d("div",hs,[d("div",_s,[u(t.$slots,"home-hero-info-before",{},void 0,!0),u(t.$slots,"home-hero-info",{},()=>[t.name?(o(),l("h1",bs,[d("span",{innerHTML:t.name,class:"clip"},null,8,gs)])):m("",!0),t.text?(o(),l("p",{key:1,innerHTML:t.text,class:"text"},null,8,ks)):m("",!0),t.tagline?(o(),l("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,$s)):m("",!0)],!0),u(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(o(),l("div",ys,[(o(!0),l(C,null,w(t.actions,s=>(o(),l("div",{key:s.link,class:"action"},[b(vs,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(o(),l("div",As,[d("div",Ps,[n[0]||(n[0]=d("div",{class:"image-bg"},null,-1)),u(t.$slots,"home-hero-image",{},()=>[t.image?(o(),$(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),Ss=k(Ls,[["__scopeId","data-v-955009fc"]]),Vs=h({__name:"VPHomeHero",setup(a){const{frontmatter:e}=S();return(t,n)=>i(e).hero?(o(),$(Ss,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":f(()=>[u(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[u(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[u(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[u(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),Is={class:"box"},Ns={key:0,class:"icon"},Ts=["innerHTML"],Cs=["innerHTML"],Ms=["innerHTML"],Bs={key:4,class:"link-text"},ws={class:"link-text-value"},Es=h({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(a){return(e,t)=>(o(),$(Q,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[d("article",Is,[typeof e.icon=="object"&&e.icon.wrap?(o(),l("div",Ns,[b(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),$(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),l("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Ts)):m("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Cs),e.details?(o(),l("p",{key:3,class:"details",innerHTML:e.details},null,8,Ms)):m("",!0),e.linkText?(o(),l("div",Bs,[d("p",ws,[F(V(e.linkText)+" ",1),t[0]||(t[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Qs=k(Es,[["__scopeId","data-v-f5e9645b"]]),Fs={key:0,class:"VPFeatures"},Hs={class:"container"},Ws={class:"items"},Ds=h({__name:"VPFeatures",props:{features:{}},setup(a){const e=a,t=y(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(o(),l("div",Fs,[d("div",Hs,[d("div",Ws,[(o(!0),l(C,null,w(n.features,r=>(o(),l("div",{key:r.title,class:T(["item",[t.value]])},[b(Qs,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):m("",!0)}}),Os=k(Ds,[["__scopeId","data-v-d0a190d7"]]),Us=h({__name:"VPHomeFeatures",setup(a){const{frontmatter:e}=S();return(t,n)=>i(e).features?(o(),$(Os,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):m("",!0)}}),Gs=h({__name:"VPHomeContent",setup(a){const{width:e}=ze({initialWidth:0,includeScrollbar:!1});return(t,n)=>(o(),l("div",{class:"vp-doc container",style:Ie(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[u(t.$slots,"default",{},void 0,!0)],4))}}),Js=k(Gs,[["__scopeId","data-v-7a48a447"]]),Ks={class:"VPHome"},js=h({__name:"VPHome",setup(a){const{frontmatter:e}=S();return(t,n)=>{const s=J("Content");return o(),l("div",Ks,[u(t.$slots,"home-hero-before",{},void 0,!0),b(Vs,null,{"home-hero-info-before":f(()=>[u(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(t.$slots,"home-hero-after",{},void 0,!0),u(t.$slots,"home-features-before",{},void 0,!0),b(Us),u(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(o(),$(Js,{key:0},{default:f(()=>[b(s)]),_:1})):(o(),$(s,{key:1}))])}}}),zs=k(js,[["__scopeId","data-v-cbb6ec48"]]),Rs={},Zs={class:"VPPage"};function Ys(a,e){const t=J("Content");return o(),l("div",Zs,[u(a.$slots,"page-top"),b(t),u(a.$slots,"page-bottom")])}const Xs=k(Rs,[["render",Ys]]),qs=h({__name:"VPContent",setup(a){const{page:e,frontmatter:t}=S(),{hasSidebar:n}=D();return(s,r)=>(o(),l("div",{class:T(["VPContent",{"has-sidebar":i(n),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?u(s.$slots,"not-found",{key:0},()=>[b(_t)],!0):i(t).layout==="page"?(o(),$(Xs,{key:1},{"page-top":f(()=>[u(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(o(),$(zs,{key:2},{"home-hero-before":f(()=>[u(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(o(),$(H(i(t).layout),{key:3})):(o(),$(ds,{key:4},{"doc-top":f(()=>[u(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[u(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[u(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[u(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[u(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),xs=k(qs,[["__scopeId","data-v-91765379"]]),en={class:"container"},tn=["innerHTML"],sn=["innerHTML"],nn=h({__name:"VPFooter",setup(a){const{theme:e,frontmatter:t}=S(),{hasSidebar:n}=D();return(s,r)=>i(e).footer&&i(t).footer!==!1?(o(),l("footer",{key:0,class:T(["VPFooter",{"has-sidebar":i(n)}])},[d("div",en,[i(e).footer.message?(o(),l("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,tn)):m("",!0),i(e).footer.copyright?(o(),l("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,sn)):m("",!0)])],2)):m("",!0)}}),an=k(nn,[["__scopeId","data-v-c970a860"]]);function on(){const{theme:a,frontmatter:e}=S(),t=Se([]),n=y(()=>t.value.length>0);return x(()=>{t.value=be(e.value.outline??a.value.outline)}),{headers:t,hasLocalNav:n}}const rn={class:"menu-text"},ln={class:"header"},cn={class:"outline"},un=h({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(a){const e=a,{theme:t}=S(),n=I(!1),s=I(0),r=I(),c=I();function v(g){var A;(A=r.value)!=null&&A.contains(g.target)||(n.value=!1)}W(n,g=>{if(g){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),le("Escape",()=>{n.value=!1}),x(()=>{n.value=!1});function p(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function _(g){g.target.classList.contains("outline-link")&&(c.value&&(c.value.style.transition="none"),Ne(()=>{n.value=!1}))}function L(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(g,A)=>(o(),l("div",{class:"VPLocalNavOutlineDropdown",style:Ie({"--vp-vh":s.value+"px"}),ref_key:"main",ref:r},[g.headers.length>0?(o(),l("button",{key:0,onClick:p,class:T({open:n.value})},[d("span",rn,V(i(we)(i(t))),1),A[0]||(A[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),l("button",{key:1,onClick:L},V(i(t).returnToTopLabel||"Return to top"),1)),b(pe,{name:"flyout"},{default:f(()=>[n.value?(o(),l("div",{key:0,ref_key:"items",ref:c,class:"items",onClick:_},[d("div",ln,[d("a",{class:"top-link",href:"#",onClick:L},V(i(t).returnToTopLabel||"Return to top"),1)]),d("div",cn,[b(Ee,{headers:g.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),dn=k(un,[["__scopeId","data-v-bc9dc845"]]),pn={class:"container"},vn=["aria-expanded"],fn={class:"menu-text"},mn=h({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(a){const{theme:e,frontmatter:t}=S(),{hasSidebar:n}=D(),{headers:s}=on(),{y:r}=Te(),c=I(0);G(()=>{c.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{s.value=be(t.value.outline??e.value.outline)});const v=y(()=>s.value.length===0),p=y(()=>v.value&&!n.value),_=y(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:v.value,fixed:p.value}));return(L,g)=>i(t).layout!=="home"&&(!p.value||i(r)>=c.value)?(o(),l("div",{key:0,class:T(_.value)},[d("div",pn,[i(n)?(o(),l("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:g[0]||(g[0]=A=>L.$emit("open-menu"))},[g[1]||(g[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",fn,V(i(e).sidebarMenuLabel||"Menu"),1)],8,vn)):m("",!0),b(dn,{headers:i(s),navHeight:c.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),hn=k(mn,[["__scopeId","data-v-070ab83d"]]);function _n(){const a=I(!1);function e(){a.value=!0,window.addEventListener("resize",s)}function t(){a.value=!1,window.removeEventListener("resize",s)}function n(){a.value?t():e()}function s(){window.outerWidth>=768&&t()}const r=ee();return W(()=>r.path,t),{isScreenOpen:a,openScreen:e,closeScreen:t,toggleScreen:n}}const bn={},gn={class:"VPSwitch",type:"button",role:"switch"},kn={class:"check"},$n={key:0,class:"icon"};function yn(a,e){return o(),l("button",gn,[d("span",kn,[a.$slots.default?(o(),l("span",$n,[u(a.$slots,"default",{},void 0,!0)])):m("",!0)])])}const An=k(bn,[["render",yn],["__scopeId","data-v-4a1c76db"]]),Pn=h({__name:"VPSwitchAppearance",setup(a){const{isDark:e,theme:t}=S(),n=z("toggle-appearance",()=>{e.value=!e.value}),s=I("");return me(()=>{s.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,c)=>(o(),$(An,{title:s.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(n)},{default:f(()=>c[0]||(c[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ge=k(Pn,[["__scopeId","data-v-e40a8bb6"]]),Ln={key:0,class:"VPNavBarAppearance"},Sn=h({__name:"VPNavBarAppearance",setup(a){const{site:e}=S();return(t,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",Ln,[b(ge)])):m("",!0)}}),Vn=k(Sn,[["__scopeId","data-v-af096f4a"]]),ke=I();let Qe=!1,re=0;function In(a){const e=I(!1);if(te){!Qe&&Nn(),re++;const t=W(ke,n=>{var s,r,c;n===a.el.value||(s=a.el.value)!=null&&s.contains(n)?(e.value=!0,(r=a.onFocus)==null||r.call(a)):(e.value=!1,(c=a.onBlur)==null||c.call(a))});fe(()=>{t(),re--,re||Tn()})}return Re(e)}function Nn(){document.addEventListener("focusin",Fe),Qe=!0,ke.value=document.activeElement}function Tn(){document.removeEventListener("focusin",Fe)}function Fe(){ke.value=document.activeElement}const Cn={class:"VPMenuLink"},Mn=h({__name:"VPMenuLink",props:{item:{}},setup(a){const{page:e}=S();return(t,n)=>(o(),l("div",Cn,[b(Q,{class:T({active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:f(()=>[F(V(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=k(Mn,[["__scopeId","data-v-8b74d055"]]),Bn={class:"VPMenuGroup"},wn={key:0,class:"title"},En=h({__name:"VPMenuGroup",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),l("div",Bn,[e.text?(o(),l("p",wn,V(e.text),1)):m("",!0),(o(!0),l(C,null,w(e.items,n=>(o(),l(C,null,["link"in n?(o(),$(se,{key:0,item:n},null,8,["item"])):m("",!0)],64))),256))]))}}),Qn=k(En,[["__scopeId","data-v-48c802d0"]]),Fn={class:"VPMenu"},Hn={key:0,class:"items"},Wn=h({__name:"VPMenu",props:{items:{}},setup(a){return(e,t)=>(o(),l("div",Fn,[e.items?(o(),l("div",Hn,[(o(!0),l(C,null,w(e.items,n=>(o(),l(C,{key:JSON.stringify(n)},["link"in n?(o(),$(se,{key:0,item:n},null,8,["item"])):"component"in n?(o(),$(H(n.component),U({key:1,ref_for:!0},n.props),null,16)):(o(),$(Qn,{key:2,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):m("",!0),u(e.$slots,"default",{},void 0,!0)]))}}),Dn=k(Wn,[["__scopeId","data-v-7dd3104a"]]),On=["aria-expanded","aria-label"],Un={key:0,class:"text"},Gn=["innerHTML"],Jn={key:1,class:"vpi-more-horizontal icon"},Kn={class:"menu"},jn=h({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(a){const e=I(!1),t=I();In({el:t,onBlur:n});function n(){e.value=!1}return(s,r)=>(o(),l("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=c=>e.value=!0),onMouseleave:r[2]||(r[2]=c=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:r[0]||(r[0]=c=>e.value=!e.value)},[s.button||s.icon?(o(),l("span",Un,[s.icon?(o(),l("span",{key:0,class:T([s.icon,"option-icon"])},null,2)):m("",!0),s.button?(o(),l("span",{key:1,innerHTML:s.button},null,8,Gn)):m("",!0),r[3]||(r[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),l("span",Jn))],8,On),d("div",Kn,[b(Dn,{items:s.items},{default:f(()=>[u(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=k(jn,[["__scopeId","data-v-e5380155"]]),zn=["href","aria-label","innerHTML"],Rn=h({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(a){const e=a,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,s)=>(o(),l("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,zn))}}),Zn=k(Rn,[["__scopeId","data-v-717b8b75"]]),Yn={class:"VPSocialLinks"},Xn=h({__name:"VPSocialLinks",props:{links:{}},setup(a){return(e,t)=>(o(),l("div",Yn,[(o(!0),l(C,null,w(e.links,({link:n,icon:s,ariaLabel:r})=>(o(),$(Zn,{key:n,icon:s,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ne=k(Xn,[["__scopeId","data-v-ee7a9424"]]),qn={key:0,class:"group translations"},xn={class:"trans-title"},ea={key:1,class:"group"},ta={class:"item appearance"},sa={class:"label"},na={class:"appearance-action"},aa={key:2,class:"group"},oa={class:"item social-links"},ra=h({__name:"VPNavBarExtra",setup(a){const{site:e,theme:t}=S(),{localeLinks:n,currentLang:s}=Z({correspondingLink:!0}),r=y(()=>n.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(c,v)=>r.value?(o(),$($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(n).length&&i(s).label?(o(),l("div",qn,[d("p",xn,V(i(s).label),1),(o(!0),l(C,null,w(i(n),p=>(o(),$(se,{key:p.link,item:p},null,8,["item"]))),128))])):m("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",ea,[d("div",ta,[d("p",sa,V(i(t).darkModeSwitchLabel||"Appearance"),1),d("div",na,[b(ge)])])])):m("",!0),i(t).socialLinks?(o(),l("div",aa,[d("div",oa,[b(ne,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),ia=k(ra,[["__scopeId","data-v-925effce"]]),la=["aria-expanded"],ca=h({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(a){return(e,t)=>(o(),l("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},t[1]||(t[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)]),10,la))}}),ua=k(ca,[["__scopeId","data-v-5dea55bf"]]),da=["innerHTML"],pa=h({__name:"VPNavBarMenuLink",props:{item:{}},setup(a){const{page:e}=S();return(t,n)=>(o(),$(Q,{class:T({VPNavBarMenuLink:!0,active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,da)]),_:1},8,["class","href","noIcon","target","rel"]))}}),va=k(pa,[["__scopeId","data-v-ed5ac1f6"]]),fa=h({__name:"VPNavBarMenuGroup",props:{item:{}},setup(a){const e=a,{page:t}=S(),n=r=>"component"in r?!1:"link"in r?K(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),s=y(()=>n(e.item));return(r,c)=>(o(),$($e,{class:T({VPNavBarMenuGroup:!0,active:i(K)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||s.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ma={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ha=h({__name:"VPNavBarMenu",setup(a){const{theme:e}=S();return(t,n)=>i(e).nav?(o(),l("nav",ma,[n[0]||(n[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),l(C,null,w(i(e).nav,s=>(o(),l(C,{key:JSON.stringify(s)},["link"in s?(o(),$(va,{key:0,item:s},null,8,["item"])):"component"in s?(o(),$(H(s.component),U({key:1,ref_for:!0},s.props),null,16)):(o(),$(fa,{key:2,item:s},null,8,["item"]))],64))),128))])):m("",!0)}}),_a=k(ha,[["__scopeId","data-v-e6d46098"]]);function ba(a){const{localeIndex:e,theme:t}=S();function n(s){var M,B,N;const r=s.split("."),c=(M=t.value.search)==null?void 0:M.options,v=c&&typeof c=="object",p=v&&((N=(B=c.locales)==null?void 0:B[e.value])==null?void 0:N.translations)||null,_=v&&c.translations||null;let L=p,g=_,A=a;const P=r.pop();for(const E of r){let O=null;const j=A==null?void 0:A[E];j&&(O=A=j);const ae=g==null?void 0:g[E];ae&&(O=g=ae);const oe=L==null?void 0:L[E];oe&&(O=L=oe),j||(A=O),ae||(g=O),oe||(L=O)}return(L==null?void 0:L[P])??(g==null?void 0:g[P])??(A==null?void 0:A[P])??""}return n}const ga=["aria-label"],ka={class:"DocSearch-Button-Container"},$a={class:"DocSearch-Button-Placeholder"},Ae=h({__name:"VPNavBarSearchButton",setup(a){const t=ba({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(o(),l("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[d("span",ka,[s[0]||(s[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",$a,V(i(t)("button.buttonText")),1)]),s[1]||(s[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ga))}}),ya={class:"VPNavBarSearch"},Aa={id:"local-search"},Pa={key:1,id:"docsearch"},La=h({__name:"VPNavBarSearch",setup(a){const e=Ze(()=>Ye(()=>import("./VPLocalSearchBox.DxzvBZ9g.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=S(),s=I(!1),r=I(!1);G(()=>{});function c(){s.value||(s.value=!0,setTimeout(v,16))}function v(){const g=new Event("keydown");g.key="k",g.metaKey=!0,window.dispatchEvent(g),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function p(g){const A=g.target,P=A.tagName;return A.isContentEditable||P==="INPUT"||P==="SELECT"||P==="TEXTAREA"}const _=I(!1);le("k",g=>{(g.ctrlKey||g.metaKey)&&(g.preventDefault(),_.value=!0)}),le("/",g=>{p(g)||(g.preventDefault(),_.value=!0)});const L="local";return(g,A)=>{var P;return o(),l("div",ya,[i(L)==="local"?(o(),l(C,{key:0},[_.value?(o(),$(i(e),{key:0,onClose:A[0]||(A[0]=M=>_.value=!1)})):m("",!0),d("div",Aa,[b(Ae,{onClick:A[1]||(A[1]=M=>_.value=!0)})])],64)):i(L)==="algolia"?(o(),l(C,{key:1},[s.value?(o(),$(i(t),{key:0,algolia:((P=i(n).search)==null?void 0:P.options)??i(n).algolia,onVnodeBeforeMount:A[2]||(A[2]=M=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(o(),l("div",Pa,[b(Ae,{onClick:c})]))],64)):m("",!0)])}}}),Sa=h({__name:"VPNavBarSocialLinks",setup(a){const{theme:e}=S();return(t,n)=>i(e).socialLinks?(o(),$(ne,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):m("",!0)}}),Va=k(Sa,[["__scopeId","data-v-164c457f"]]),Ia=["href","rel","target"],Na={key:1},Ta={key:2},Ca=h({__name:"VPNavBarTitle",setup(a){const{site:e,theme:t}=S(),{hasSidebar:n}=D(),{currentLang:s}=Z(),r=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),c=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),v=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,_)=>(o(),l("div",{class:T(["VPNavBarTitle",{"has-sidebar":i(n)}])},[d("a",{class:"title",href:r.value??i(_e)(i(s).link),rel:c.value,target:v.value},[u(p.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(o(),$(X,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):m("",!0),i(t).siteTitle?(o(),l("span",Na,V(i(t).siteTitle),1)):i(t).siteTitle===void 0?(o(),l("span",Ta,V(i(e).title),1)):m("",!0),u(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ia)],2))}}),Ma=k(Ca,[["__scopeId","data-v-28a961f9"]]),Ba={class:"items"},wa={class:"title"},Ea=h({__name:"VPNavBarTranslations",setup(a){const{theme:e}=S(),{localeLinks:t,currentLang:n}=Z({correspondingLink:!0});return(s,r)=>i(t).length&&i(n).label?(o(),$($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[d("div",Ba,[d("p",wa,V(i(n).label),1),(o(!0),l(C,null,w(i(t),c=>(o(),$(se,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Qa=k(Ea,[["__scopeId","data-v-c80d9ad0"]]),Fa={class:"wrapper"},Ha={class:"container"},Wa={class:"title"},Da={class:"content"},Oa={class:"content-body"},Ua=h({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(a){const e=a,{y:t}=Te(),{hasSidebar:n}=D(),{frontmatter:s}=S(),r=I({});return me(()=>{r.value={"has-sidebar":n.value,home:s.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(c,v)=>(o(),l("div",{class:T(["VPNavBar",r.value])},[d("div",Fa,[d("div",Ha,[d("div",Wa,[b(Ma,null,{"nav-bar-title-before":f(()=>[u(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(c.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Da,[d("div",Oa,[u(c.$slots,"nav-bar-content-before",{},void 0,!0),b(La,{class:"search"}),b(_a,{class:"menu"}),b(Qa,{class:"translations"}),b(Vn,{class:"appearance"}),b(Va,{class:"social-links"}),b(ia,{class:"extra"}),u(c.$slots,"nav-bar-content-after",{},void 0,!0),b(ua,{class:"hamburger",active:c.isScreenOpen,onClick:v[0]||(v[0]=p=>c.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),Ga=k(Ua,[["__scopeId","data-v-822684d1"]]),Ja={key:0,class:"VPNavScreenAppearance"},Ka={class:"text"},ja=h({__name:"VPNavScreenAppearance",setup(a){const{site:e,theme:t}=S();return(n,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",Ja,[d("p",Ka,V(i(t).darkModeSwitchLabel||"Appearance"),1),b(ge)])):m("",!0)}}),za=k(ja,[["__scopeId","data-v-ffb44008"]]),Ra=h({__name:"VPNavScreenMenuLink",props:{item:{}},setup(a){const e=z("close-screen");return(t,n)=>(o(),$(Q,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Za=k(Ra,[["__scopeId","data-v-27d04aeb"]]),Ya=h({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(a){const e=z("close-screen");return(t,n)=>(o(),$(Q,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:f(()=>[F(V(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),He=k(Ya,[["__scopeId","data-v-7179dbb7"]]),Xa={class:"VPNavScreenMenuGroupSection"},qa={key:0,class:"title"},xa=h({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),l("div",Xa,[e.text?(o(),l("p",qa,V(e.text),1)):m("",!0),(o(!0),l(C,null,w(e.items,n=>(o(),$(He,{key:n.text,item:n},null,8,["item"]))),128))]))}}),eo=k(xa,[["__scopeId","data-v-4b8941ac"]]),to=["aria-controls","aria-expanded"],so=["innerHTML"],no=["id"],ao={key:0,class:"item"},oo={key:1,class:"item"},ro={key:2,class:"group"},io=h({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(a){const e=a,t=I(!1),n=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(r,c)=>(o(),l("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:s},[d("span",{class:"button-text",innerHTML:r.text},null,8,so),c[0]||(c[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,to),d("div",{id:n.value,class:"items"},[(o(!0),l(C,null,w(r.items,v=>(o(),l(C,{key:JSON.stringify(v)},["link"in v?(o(),l("div",ao,[b(He,{item:v},null,8,["item"])])):"component"in v?(o(),l("div",oo,[(o(),$(H(v.component),U({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(o(),l("div",ro,[b(eo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,no)],2))}}),lo=k(io,[["__scopeId","data-v-875057a5"]]),co={key:0,class:"VPNavScreenMenu"},uo=h({__name:"VPNavScreenMenu",setup(a){const{theme:e}=S();return(t,n)=>i(e).nav?(o(),l("nav",co,[(o(!0),l(C,null,w(i(e).nav,s=>(o(),l(C,{key:JSON.stringify(s)},["link"in s?(o(),$(Za,{key:0,item:s},null,8,["item"])):"component"in s?(o(),$(H(s.component),U({key:1,ref_for:!0},s.props,{"screen-menu":""}),null,16)):(o(),$(lo,{key:2,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),po=h({__name:"VPNavScreenSocialLinks",setup(a){const{theme:e}=S();return(t,n)=>i(e).socialLinks?(o(),$(ne,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):m("",!0)}}),vo={class:"list"},fo=h({__name:"VPNavScreenTranslations",setup(a){const{localeLinks:e,currentLang:t}=Z({correspondingLink:!0}),n=I(!1);function s(){n.value=!n.value}return(r,c)=>i(e).length&&i(t).label?(o(),l("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[d("button",{class:"title",onClick:s},[c[0]||(c[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),F(" "+V(i(t).label)+" ",1),c[1]||(c[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",vo,[(o(!0),l(C,null,w(i(e),v=>(o(),l("li",{key:v.link,class:"item"},[b(Q,{class:"link",href:v.link},{default:f(()=>[F(V(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),mo=k(fo,[["__scopeId","data-v-362991c2"]]),ho={class:"container"},_o=h({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(a){const e=I(null),t=Ce(te?document.body:null);return(n,s)=>(o(),$(pe,{name:"fade",onEnter:s[0]||(s[0]=r=>t.value=!0),onAfterLeave:s[1]||(s[1]=r=>t.value=!1)},{default:f(()=>[n.open?(o(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",ho,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),b(uo,{class:"menu"}),b(mo,{class:"translations"}),b(za,{class:"appearance"}),b(po,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),bo=k(_o,[["__scopeId","data-v-833aabba"]]),go={key:0,class:"VPNav"},ko=h({__name:"VPNav",setup(a){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=_n(),{frontmatter:s}=S(),r=y(()=>s.value.navbar!==!1);return he("close-screen",t),q(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(c,v)=>r.value?(o(),l("header",go,[b(Ga,{"is-screen-open":i(e),onToggleScreen:i(n)},{"nav-bar-title-before":f(()=>[u(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(c.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[u(c.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[u(c.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),b(bo,{open:i(e)},{"nav-screen-content-before":f(()=>[u(c.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[u(c.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):m("",!0)}}),$o=k(ko,[["__scopeId","data-v-f1e365da"]]),yo=["role","tabindex"],Ao={key:1,class:"items"},Po=h({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(a){const e=a,{collapsed:t,collapsible:n,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:p}=$t(y(()=>e.item)),_=y(()=>v.value?"section":"div"),L=y(()=>s.value?"a":"div"),g=y(()=>v.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),A=y(()=>s.value?void 0:"button"),P=y(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":s.value},{"is-active":r.value},{"has-active":c.value}]);function M(N){"key"in N&&N.key!=="Enter"||!e.item.link&&p()}function B(){e.item.link&&p()}return(N,E)=>{const O=J("VPSidebarItem",!0);return o(),$(H(_.value),{class:T(["VPSidebarItem",P.value])},{default:f(()=>[N.item.text?(o(),l("div",U({key:0,class:"item",role:A.value},Xe(N.item.items?{click:M,keydown:M}:{},!0),{tabindex:N.item.items&&0}),[E[1]||(E[1]=d("div",{class:"indicator"},null,-1)),N.item.link?(o(),$(Q,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(o(),$(H(g.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),$(H(g.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(o(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:qe(B,["enter"]),tabindex:"0"},E[0]||(E[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):m("",!0)],16,yo)):m("",!0),N.item.items&&N.item.items.length?(o(),l("div",Ao,[N.depth<5?(o(!0),l(C,{key:0},w(N.item.items,j=>(o(),$(O,{key:j.text,item:j,depth:N.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),Lo=k(Po,[["__scopeId","data-v-196b2e5f"]]),So=h({__name:"VPSidebarGroup",props:{items:{}},setup(a){const e=I(!0);let t=null;return G(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),xe(()=>{t!=null&&(clearTimeout(t),t=null)}),(n,s)=>(o(!0),l(C,null,w(n.items,r=>(o(),l("div",{key:r.text,class:T(["group",{"no-transition":e.value}])},[b(Lo,{item:r,depth:0},null,8,["item"])],2))),128))}}),Vo=k(So,[["__scopeId","data-v-9e426adc"]]),Io={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},No=h({__name:"VPSidebar",props:{open:{type:Boolean}},setup(a){const{sidebarGroups:e,hasSidebar:t}=D(),n=a,s=I(null),r=Ce(te?document.body:null);W([n,s],()=>{var v;n.open?(r.value=!0,(v=s.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const c=I(0);return W(e,()=>{c.value+=1},{deep:!0}),(v,p)=>i(t)?(o(),l("aside",{key:0,class:T(["VPSidebar",{open:v.open}]),ref_key:"navEl",ref:s,onClick:p[0]||(p[0]=et(()=>{},["stop"]))},[p[2]||(p[2]=d("div",{class:"curtain"},null,-1)),d("nav",Io,[p[1]||(p[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),u(v.$slots,"sidebar-nav-before",{},void 0,!0),(o(),$(Vo,{items:i(e),key:c.value},null,8,["items"])),u(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),To=k(No,[["__scopeId","data-v-18756405"]]),Co=h({__name:"VPSkipLink",setup(a){const e=ee(),t=I();W(()=>e.path,()=>t.value.focus());function n({target:s}){const r=document.getElementById(decodeURIComponent(s.hash).slice(1));if(r){const c=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",c)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",c),r.focus(),window.scrollTo(0,0)}}return(s,r)=>(o(),l(C,null,[d("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),Mo=k(Co,[["__scopeId","data-v-c3508ec8"]]),Bo=h({__name:"Layout",setup(a){const{isOpen:e,open:t,close:n}=D(),s=ee();W(()=>s.path,n),kt(e,n);const{frontmatter:r}=S(),c=Me(),v=y(()=>!!c["home-hero-image"]);return he("hero-image-slot-exists",v),(p,_)=>{const L=J("Content");return i(r).layout!==!1?(o(),l("div",{key:0,class:T(["Layout",i(r).pageClass])},[u(p.$slots,"layout-top",{},void 0,!0),b(Mo),b(it,{class:"backdrop",show:i(e),onClick:i(n)},null,8,["show","onClick"]),b($o,null,{"nav-bar-title-before":f(()=>[u(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[u(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[u(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[u(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[u(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),b(hn,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),b(To,{open:i(e)},{"sidebar-nav-before":f(()=>[u(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[u(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),b(xs,null,{"page-top":f(()=>[u(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[u(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[u(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[u(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),b(an),u(p.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),$(L,{key:1}))}}}),wo=k(Bo,[["__scopeId","data-v-a9a9e638"]]),Eo={},Qo={class:"VPTeamPage"};function Fo(a,e){return o(),l("div",Qo,[u(a.$slots,"default")])}const Mr=k(Eo,[["render",Fo],["__scopeId","data-v-c2f8e101"]]),Ho={},Wo={class:"VPTeamPageTitle"},Do={key:0,class:"title"},Oo={key:1,class:"lead"};function Uo(a,e){return o(),l("div",Wo,[a.$slots.title?(o(),l("h1",Do,[u(a.$slots,"title",{},void 0,!0)])):m("",!0),a.$slots.lead?(o(),l("p",Oo,[u(a.$slots,"lead",{},void 0,!0)])):m("",!0)])}const Br=k(Ho,[["render",Uo],["__scopeId","data-v-e277e15c"]]),Go={},Jo={class:"VPTeamPageSection"},Ko={class:"title"},jo={key:0,class:"title-text"},zo={key:0,class:"lead"},Ro={key:1,class:"members"};function Zo(a,e){return o(),l("section",Jo,[d("div",Ko,[e[0]||(e[0]=d("div",{class:"title-line"},null,-1)),a.$slots.title?(o(),l("h2",jo,[u(a.$slots,"title",{},void 0,!0)])):m("",!0)]),a.$slots.lead?(o(),l("p",zo,[u(a.$slots,"lead",{},void 0,!0)])):m("",!0),a.$slots.members?(o(),l("div",Ro,[u(a.$slots,"members",{},void 0,!0)])):m("",!0)])}const wr=k(Go,[["render",Zo],["__scopeId","data-v-d43bc49d"]]),Yo={class:"profile"},Xo={class:"avatar"},qo=["src","alt"],xo={class:"data"},er={class:"name"},tr={key:0,class:"affiliation"},sr={key:0,class:"title"},nr={key:1,class:"at"},ar=["innerHTML"],or={key:2,class:"links"},rr={key:0,class:"sp"},ir=h({__name:"VPTeamMembersItem",props:{size:{default:"medium"},member:{}},setup(a){return(e,t)=>(o(),l("article",{class:T(["VPTeamMembersItem",[e.size]])},[d("div",Yo,[d("figure",Xo,[d("img",{class:"avatar-img",src:e.member.avatar,alt:e.member.name},null,8,qo)]),d("div",xo,[d("h1",er,V(e.member.name),1),e.member.title||e.member.org?(o(),l("p",tr,[e.member.title?(o(),l("span",sr,V(e.member.title),1)):m("",!0),e.member.title&&e.member.org?(o(),l("span",nr," @ ")):m("",!0),e.member.org?(o(),$(Q,{key:2,class:T(["org",{link:e.member.orgLink}]),href:e.member.orgLink,"no-icon":""},{default:f(()=>[F(V(e.member.org),1)]),_:1},8,["class","href"])):m("",!0)])):m("",!0),e.member.desc?(o(),l("p",{key:1,class:"desc",innerHTML:e.member.desc},null,8,ar)):m("",!0),e.member.links?(o(),l("div",or,[b(ne,{links:e.member.links},null,8,["links"])])):m("",!0)])]),e.member.sponsor?(o(),l("div",rr,[b(Q,{class:"sp-link",href:e.member.sponsor,"no-icon":""},{default:f(()=>[t[0]||(t[0]=d("span",{class:"vpi-heart sp-icon"},null,-1)),F(" "+V(e.member.actionText||"Sponsor"),1)]),_:1},8,["href"])])):m("",!0)],2))}}),lr=k(ir,[["__scopeId","data-v-f9987cb6"]]),cr={class:"container"},ur=h({__name:"VPTeamMembers",props:{size:{default:"medium"},members:{}},setup(a){const e=a,t=y(()=>[e.size,`count-${e.members.length}`]);return(n,s)=>(o(),l("div",{class:T(["VPTeamMembers",t.value])},[d("div",cr,[(o(!0),l(C,null,w(n.members,r=>(o(),l("div",{key:r.name,class:"item"},[b(lr,{size:n.size,member:r},null,8,["size","member"])]))),128))])],2))}}),Er=k(ur,[["__scopeId","data-v-fba19bad"]]),Pe={Layout:wo,enhanceApp:({app:a})=>{a.component("Badge",at)}},dr={},pr={style:{"text-align":"center"}};function vr(a,e){const t=J("font");return o(),l(C,null,[e[1]||(e[1]=d("br",null,null,-1)),d("h1",pr,[d("strong",null,[b(t,{color:"orange"},{default:f(()=>e[0]||(e[0]=[F(" Package Ecosystem")])),_:1})])]),e[2]||(e[2]=tt('

Read n-d array like-data

DiskArrays.jl

Get your chunks!

Named Dimensions

DimensionalData.jl

Select & Index!

Out of memory data

Zarr.jl

Chunkerd, compressed !

Rasterized spatial data

Rasters.jl

Read and manipulate !

Array-oriented data

NetCDF.jl

Scientific binary data.

Raster and vector data

ArchGDAL.jl

GDAL in Julia.

An interface for

GeoInterface.jl

geospatial data in Julia.

A higher level interface

GRIBDatasets.jl

for reading GRIB files.

Array-oriented data

NCDatasets.jl

Scientific binary data.

',9))],64)}const fr=k(dr,[["render",vr]]),mr=a=>{if(typeof document>"u")return{stabilizeScrollPosition:s=>async(...r)=>s(...r)};const e=document.documentElement;return{stabilizeScrollPosition:n=>async(...s)=>{const r=n(...s),c=a.value;if(!c)return r;const v=c.offsetTop-e.scrollTop;return await Ne(),e.scrollTop=c.offsetTop-v,r}}},We="vitepress:tabSharedState",R=typeof localStorage<"u"?localStorage:null,De="vitepress:tabsSharedState",hr=()=>{const a=R==null?void 0:R.getItem(De);if(a)try{return JSON.parse(a)}catch{}return{}},_r=a=>{R&&R.setItem(De,JSON.stringify(a))},br=a=>{const e=st({});W(()=>e.content,(t,n)=>{t&&n&&_r(t)},{deep:!0}),a.provide(We,e)},gr=(a,e)=>{const t=z(We);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");G(()=>{t.content||(t.content=hr())});const n=I(),s=y({get(){var p;const c=e.value,v=a.value;if(c){const _=(p=t.content)==null?void 0:p[c];if(_&&v.includes(_))return _}else{const _=n.value;if(_)return _}return v[0]},set(c){const v=e.value;v?t.content&&(t.content[v]=c):n.value=c}});return{selected:s,select:c=>{s.value=c}}};let Le=0;const kr=()=>(Le++,""+Le);function $r(){const a=Me();return y(()=>{var n;const t=(n=a.default)==null?void 0:n.call(a);return t?t.filter(s=>typeof s.type=="object"&&"__name"in s.type&&s.type.__name==="PluginTabsTab"&&s.props).map(s=>{var r;return(r=s.props)==null?void 0:r.label}):[]})}const Oe="vitepress:tabSingleState",yr=a=>{he(Oe,a)},Ar=()=>{const a=z(Oe);if(!a)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return a},Pr={class:"plugin-tabs"},Lr=["id","aria-selected","aria-controls","tabindex","onClick"],Sr=h({__name:"PluginTabs",props:{sharedStateKey:{}},setup(a){const e=a,t=$r(),{selected:n,select:s}=gr(t,nt(e,"sharedStateKey")),r=I(),{stabilizeScrollPosition:c}=mr(r),v=c(s),p=I([]),_=g=>{var M;const A=t.value.indexOf(n.value);let P;g.key==="ArrowLeft"?P=A>=1?A-1:t.value.length-1:g.key==="ArrowRight"&&(P=A(o(),l("div",Pr,[d("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:_},[(o(!0),l(C,null,w(i(t),P=>(o(),l("button",{id:`tab-${P}-${i(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:p,key:P,role:"tab",class:"plugin-tabs--tab","aria-selected":P===i(n),"aria-controls":`panel-${P}-${i(L)}`,tabindex:P===i(n)?0:-1,onClick:()=>i(v)(P)},V(P),9,Lr))),128))],544),u(g.$slots,"default")]))}}),Vr=["id","aria-labelledby"],Ir=h({__name:"PluginTabsTab",props:{label:{}},setup(a){const{uid:e,selected:t}=Ar();return(n,s)=>i(t)===n.label?(o(),l("div",{key:0,id:`panel-${n.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${n.label}-${i(e)}`},[u(n.$slots,"default",{},void 0,!0)],8,Vr)):m("",!0)}}),Nr=k(Ir,[["__scopeId","data-v-9b0d03d2"]]),Tr=a=>{br(a),a.component("PluginTabs",Sr),a.component("PluginTabsTab",Nr)},Qr={extends:Pe,Layout(){return ye(Pe.Layout,null,{"aside-ads-before":()=>ye(fr)})},enhanceApp({app:a,router:e,siteData:t}){Tr(a)}};export{Qr as R,Br as V,Er as a,wr as b,Mr as c,ba as d,S as u}; diff --git a/dev/assets/development_contribute.md.D93SjwYJ.js b/dev/assets/development_contribute.md.ClrIjhyO.js similarity index 97% rename from dev/assets/development_contribute.md.D93SjwYJ.js rename to dev/assets/development_contribute.md.ClrIjhyO.js index d2b1ecbd..eaa7f34c 100644 --- a/dev/assets/development_contribute.md.D93SjwYJ.js +++ b/dev/assets/development_contribute.md.ClrIjhyO.js @@ -1,3 +1,3 @@ -import{_ as s,c as t,a2 as a,o as i}from"./chunks/framework.BEF5B6Ex.js";const u=JSON.parse('{"title":"Contribute to YAXArrays.jl","description":"","frontmatter":{},"headers":[],"relativePath":"development/contribute.md","filePath":"development/contribute.md","lastUpdated":null}'),l={name:"development/contribute.md"};function o(n,e,r,p,d,h){return i(),t("div",null,e[0]||(e[0]=[a(`

Contribute to YAXArrays.jl

Pull requests and bug reports are always welcome at the YAXArrays.jl GitHub repository.

Contribute to Documentation

Contributing with examples can be done by first creating a new file example here

new file

  • your_new_file.md at docs/src/UserGuide/

Once this is done you need to add a new entry here at the appropriate level.

add entry to docs

Your new entry should look like:

  • { text: 'Your title example', link: '/UserGuide/your_new_file.md' }

Build docs locally

If you want to take a look at the docs locally before doing a PR follow the next steps:

Install the dependencies in your system, locate yourself at the docs level folder, then do

sh
npm i

Then simply go to your docs env and activate it, i.e.

sh
docs> julia
+import{_ as s,c as t,a2 as a,o as i}from"./chunks/framework.BgERvflD.js";const u=JSON.parse('{"title":"Contribute to YAXArrays.jl","description":"","frontmatter":{},"headers":[],"relativePath":"development/contribute.md","filePath":"development/contribute.md","lastUpdated":null}'),l={name:"development/contribute.md"};function o(n,e,r,p,d,h){return i(),t("div",null,e[0]||(e[0]=[a(`

Contribute to YAXArrays.jl

Pull requests and bug reports are always welcome at the YAXArrays.jl GitHub repository.

Contribute to Documentation

Contributing with examples can be done by first creating a new file example here

new file

  • your_new_file.md at docs/src/UserGuide/

Once this is done you need to add a new entry here at the appropriate level.

add entry to docs

Your new entry should look like:

  • { text: 'Your title example', link: '/UserGuide/your_new_file.md' }

Build docs locally

If you want to take a look at the docs locally before doing a PR follow the next steps:

Install the dependencies in your system, locate yourself at the docs level folder, then do

sh
npm i

Then simply go to your docs env and activate it, i.e.

sh
docs> julia
 julia> ]
 pkg> activate .

Next, run the scripts. Generate files and build docs by running:

sh
include("make.jl")

Now go to your terminal in the same path docs> and run:

sh
npm run docs:dev

This should ouput http://localhost:5173/YAXArrays.jl/, copy/paste this into your browser and you are all set.

`,18)]))}const k=s(l,[["render",o]]);export{u as __pageData,k as default}; diff --git a/dev/assets/development_contribute.md.D93SjwYJ.lean.js b/dev/assets/development_contribute.md.ClrIjhyO.lean.js similarity index 97% rename from dev/assets/development_contribute.md.D93SjwYJ.lean.js rename to dev/assets/development_contribute.md.ClrIjhyO.lean.js index d2b1ecbd..eaa7f34c 100644 --- a/dev/assets/development_contribute.md.D93SjwYJ.lean.js +++ b/dev/assets/development_contribute.md.ClrIjhyO.lean.js @@ -1,3 +1,3 @@ -import{_ as s,c as t,a2 as a,o as i}from"./chunks/framework.BEF5B6Ex.js";const u=JSON.parse('{"title":"Contribute to YAXArrays.jl","description":"","frontmatter":{},"headers":[],"relativePath":"development/contribute.md","filePath":"development/contribute.md","lastUpdated":null}'),l={name:"development/contribute.md"};function o(n,e,r,p,d,h){return i(),t("div",null,e[0]||(e[0]=[a(`

Contribute to YAXArrays.jl

Pull requests and bug reports are always welcome at the YAXArrays.jl GitHub repository.

Contribute to Documentation

Contributing with examples can be done by first creating a new file example here

new file

  • your_new_file.md at docs/src/UserGuide/

Once this is done you need to add a new entry here at the appropriate level.

add entry to docs

Your new entry should look like:

  • { text: 'Your title example', link: '/UserGuide/your_new_file.md' }

Build docs locally

If you want to take a look at the docs locally before doing a PR follow the next steps:

Install the dependencies in your system, locate yourself at the docs level folder, then do

sh
npm i

Then simply go to your docs env and activate it, i.e.

sh
docs> julia
+import{_ as s,c as t,a2 as a,o as i}from"./chunks/framework.BgERvflD.js";const u=JSON.parse('{"title":"Contribute to YAXArrays.jl","description":"","frontmatter":{},"headers":[],"relativePath":"development/contribute.md","filePath":"development/contribute.md","lastUpdated":null}'),l={name:"development/contribute.md"};function o(n,e,r,p,d,h){return i(),t("div",null,e[0]||(e[0]=[a(`

Contribute to YAXArrays.jl

Pull requests and bug reports are always welcome at the YAXArrays.jl GitHub repository.

Contribute to Documentation

Contributing with examples can be done by first creating a new file example here

new file

  • your_new_file.md at docs/src/UserGuide/

Once this is done you need to add a new entry here at the appropriate level.

add entry to docs

Your new entry should look like:

  • { text: 'Your title example', link: '/UserGuide/your_new_file.md' }

Build docs locally

If you want to take a look at the docs locally before doing a PR follow the next steps:

Install the dependencies in your system, locate yourself at the docs level folder, then do

sh
npm i

Then simply go to your docs env and activate it, i.e.

sh
docs> julia
 julia> ]
 pkg> activate .

Next, run the scripts. Generate files and build docs by running:

sh
include("make.jl")

Now go to your terminal in the same path docs> and run:

sh
npm run docs:dev

This should ouput http://localhost:5173/YAXArrays.jl/, copy/paste this into your browser and you are all set.

`,18)]))}const k=s(l,[["render",o]]);export{u as __pageData,k as default}; diff --git a/dev/assets/development_contributors.md.B5lFKVw2.js b/dev/assets/development_contributors.md.B5lFKVw2.js deleted file mode 100644 index 88744f43..00000000 --- a/dev/assets/development_contributors.md.B5lFKVw2.js +++ /dev/null @@ -1 +0,0 @@ -import{V as u,a as l,b as m,c as g}from"./chunks/theme.CrY9T1lC.js";import{B as h,c,G as r,w as s,k as n,o as b,a as e,j as t}from"./chunks/framework.BEF5B6Ex.js";const p={align:"justify"},z=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(d,a)=>{const i=h("font");return b(),c("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{z as __pageData,j as default}; diff --git a/dev/assets/development_contributors.md.B5lFKVw2.lean.js b/dev/assets/development_contributors.md.B5lFKVw2.lean.js deleted file mode 100644 index 88744f43..00000000 --- a/dev/assets/development_contributors.md.B5lFKVw2.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{V as u,a as l,b as m,c as g}from"./chunks/theme.CrY9T1lC.js";import{B as h,c,G as r,w as s,k as n,o as b,a as e,j as t}from"./chunks/framework.BEF5B6Ex.js";const p={align:"justify"},z=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(d,a)=>{const i=h("font");return b(),c("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{z as __pageData,j as default}; diff --git a/dev/assets/development_contributors.md.CLIwhHUf.js b/dev/assets/development_contributors.md.CLIwhHUf.js new file mode 100644 index 00000000..af45f684 --- /dev/null +++ b/dev/assets/development_contributors.md.CLIwhHUf.js @@ -0,0 +1 @@ +import{V as u,a as l,b as m,c as g}from"./chunks/theme.Cr_eIWnh.js";import{c as h,G as r,w as s,k as n,B as c,o as b,a as e,j as t}from"./chunks/framework.BgERvflD.js";const p={align:"justify"},z=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(d,a)=>{const i=c("font");return b(),h("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{z as __pageData,j as default}; diff --git a/dev/assets/development_contributors.md.CLIwhHUf.lean.js b/dev/assets/development_contributors.md.CLIwhHUf.lean.js new file mode 100644 index 00000000..af45f684 --- /dev/null +++ b/dev/assets/development_contributors.md.CLIwhHUf.lean.js @@ -0,0 +1 @@ +import{V as u,a as l,b as m,c as g}from"./chunks/theme.Cr_eIWnh.js";import{c as h,G as r,w as s,k as n,B as c,o as b,a as e,j as t}from"./chunks/framework.BgERvflD.js";const p={align:"justify"},z=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(d,a)=>{const i=c("font");return b(),h("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{z as __pageData,j as default}; diff --git a/dev/assets/efsodgu.jxZi8ZiH.jpeg b/dev/assets/efsodgu.jxZi8ZiH.jpeg deleted file mode 100644 index 795ef8142a2ad3c92f11d27ea5be4246470bdc24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38989 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 diff --git a/dev/assets/get_started.md.uTuJfEQI.js b/dev/assets/get_started.md.QDrVCaRy.js similarity index 85% rename from dev/assets/get_started.md.uTuJfEQI.js rename to dev/assets/get_started.md.QDrVCaRy.js index aa42e995..b724d9b4 100644 --- a/dev/assets/get_started.md.uTuJfEQI.js +++ b/dev/assets/get_started.md.QDrVCaRy.js @@ -1,4 +1,4 @@ -import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"get_started.md","filePath":"get_started.md","lastUpdated":null}'),p={name:"get_started.md"};function l(e,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Getting Started

Installation

Install Julia v1.10 or above. YAXArrays.jl is available through the Julia package manager. You can enter it by pressing ] in the REPL and then typing

julia
pkg> add YAXArrays

Alternatively, you can also do

julia
import Pkg; Pkg.add("YAXArrays")

Quickstart

Create a simple array from random numbers given the size of each dimension or axis:

julia
using YAXArrays
+import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"get_started.md","filePath":"get_started.md","lastUpdated":null}'),p={name:"get_started.md"};function l(e,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Getting Started

Installation

Install Julia v1.10 or above. YAXArrays.jl is available through the Julia package manager. You can enter it by pressing ] in the REPL and then typing

julia
pkg> add YAXArrays

Alternatively, you can also do

julia
import Pkg; Pkg.add("YAXArrays")

Quickstart

Create a simple array from random numbers given the size of each dimension or axis:

julia
using YAXArrays
 
 a = YAXArray(rand(2,3))
╭─────────────────────────╮
 │ 2×3 YAXArray{Float64,2} │
@@ -44,13 +44,13 @@ import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
 ├─────────────────────────────────────────────────────────────────── file size ┤ 
   file size: 46.88 KB
 └──────────────────────────────────────────────────────────────────────────────┘

Get the temperature map at the first point in time:

julia
a2[variable=At("temperature"), time=1].data
10×15 view(::Array{Float64, 4}, 1, :, :, 1) with eltype Float64:
- 0.223565  0.0384967  0.0320741  …  0.4987      0.794938   0.691496
- 0.935566  0.782947   0.706604      0.938401    0.921743   0.308591
- 0.126334  0.577554   0.681419      0.427631    0.182168   0.703209
- 0.945316  0.458639   0.353072      0.00538829  0.215085   0.950853
- 0.849879  0.0536238  0.744735      0.550354    0.47603    0.458454
- 0.127101  0.146446   0.36855    …  0.0407253   0.907397   0.892194
- 0.395165  0.295574   0.229972      0.767487    0.440327   0.566444
- 0.723242  0.728315   0.0496509     0.311457    0.435237   0.179984
- 0.816066  0.843854   0.65768       0.379213    0.647377   0.139809
- 0.261949  0.99486    0.515162      0.0445932   0.0616085  0.742585

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const E=a(p,[["render",l]]);export{g as __pageData,E as default}; + 0.283062 0.335574 0.84576 0.00226881 … 0.437392 0.794276 0.155916 + 0.269069 0.986456 0.285493 0.703045 0.913638 0.519026 0.679047 + 0.74739 0.414422 0.0345087 0.589595 0.383664 0.0368185 0.600453 + 0.252273 0.595459 0.178107 0.846899 0.693244 0.428467 0.473834 + 0.325824 0.559687 0.714469 0.370229 0.168069 0.252106 0.590456 + 0.34699 0.600163 0.590449 0.86603 … 0.954538 0.0204375 0.99651 + 0.403281 0.190715 0.388749 0.555087 0.944345 0.586174 0.128577 + 0.647865 0.310074 0.405095 0.775146 0.744436 0.0191769 0.333272 + 0.311947 0.12766 0.883386 0.544461 0.810824 0.5773 0.633293 + 0.121612 0.130216 0.897246 0.643835 0.867361 0.945154 0.433286

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const E=a(p,[["render",l]]);export{g as __pageData,E as default}; diff --git a/dev/assets/get_started.md.uTuJfEQI.lean.js b/dev/assets/get_started.md.QDrVCaRy.lean.js similarity index 85% rename from dev/assets/get_started.md.uTuJfEQI.lean.js rename to dev/assets/get_started.md.QDrVCaRy.lean.js index aa42e995..b724d9b4 100644 --- a/dev/assets/get_started.md.uTuJfEQI.lean.js +++ b/dev/assets/get_started.md.QDrVCaRy.lean.js @@ -1,4 +1,4 @@ -import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"get_started.md","filePath":"get_started.md","lastUpdated":null}'),p={name:"get_started.md"};function l(e,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Getting Started

Installation

Install Julia v1.10 or above. YAXArrays.jl is available through the Julia package manager. You can enter it by pressing ] in the REPL and then typing

julia
pkg> add YAXArrays

Alternatively, you can also do

julia
import Pkg; Pkg.add("YAXArrays")

Quickstart

Create a simple array from random numbers given the size of each dimension or axis:

julia
using YAXArrays
+import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BgERvflD.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"get_started.md","filePath":"get_started.md","lastUpdated":null}'),p={name:"get_started.md"};function l(e,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Getting Started

Installation

Install Julia v1.10 or above. YAXArrays.jl is available through the Julia package manager. You can enter it by pressing ] in the REPL and then typing

julia
pkg> add YAXArrays

Alternatively, you can also do

julia
import Pkg; Pkg.add("YAXArrays")

Quickstart

Create a simple array from random numbers given the size of each dimension or axis:

julia
using YAXArrays
 
 a = YAXArray(rand(2,3))
╭─────────────────────────╮
 │ 2×3 YAXArray{Float64,2} │
@@ -44,13 +44,13 @@ import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BEF5B6Ex.js";const g
 ├─────────────────────────────────────────────────────────────────── file size ┤ 
   file size: 46.88 KB
 └──────────────────────────────────────────────────────────────────────────────┘

Get the temperature map at the first point in time:

julia
a2[variable=At("temperature"), time=1].data
10×15 view(::Array{Float64, 4}, 1, :, :, 1) with eltype Float64:
- 0.223565  0.0384967  0.0320741  …  0.4987      0.794938   0.691496
- 0.935566  0.782947   0.706604      0.938401    0.921743   0.308591
- 0.126334  0.577554   0.681419      0.427631    0.182168   0.703209
- 0.945316  0.458639   0.353072      0.00538829  0.215085   0.950853
- 0.849879  0.0536238  0.744735      0.550354    0.47603    0.458454
- 0.127101  0.146446   0.36855    …  0.0407253   0.907397   0.892194
- 0.395165  0.295574   0.229972      0.767487    0.440327   0.566444
- 0.723242  0.728315   0.0496509     0.311457    0.435237   0.179984
- 0.816066  0.843854   0.65768       0.379213    0.647377   0.139809
- 0.261949  0.99486    0.515162      0.0445932   0.0616085  0.742585

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const E=a(p,[["render",l]]);export{g as __pageData,E as default}; + 0.283062 0.335574 0.84576 0.00226881 … 0.437392 0.794276 0.155916 + 0.269069 0.986456 0.285493 0.703045 0.913638 0.519026 0.679047 + 0.74739 0.414422 0.0345087 0.589595 0.383664 0.0368185 0.600453 + 0.252273 0.595459 0.178107 0.846899 0.693244 0.428467 0.473834 + 0.325824 0.559687 0.714469 0.370229 0.168069 0.252106 0.590456 + 0.34699 0.600163 0.590449 0.86603 … 0.954538 0.0204375 0.99651 + 0.403281 0.190715 0.388749 0.555087 0.944345 0.586174 0.128577 + 0.647865 0.310074 0.405095 0.775146 0.744436 0.0191769 0.333272 + 0.311947 0.12766 0.883386 0.544461 0.810824 0.5773 0.633293 + 0.121612 0.130216 0.897246 0.643835 0.867361 0.945154 0.433286

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const E=a(p,[["render",l]]);export{g as __pageData,E as default}; diff --git a/dev/assets/qfkjmwc.CBBZcGwj.png b/dev/assets/gqwibql.CBBZcGwj.png similarity index 100% rename from dev/assets/qfkjmwc.CBBZcGwj.png rename to dev/assets/gqwibql.CBBZcGwj.png diff --git a/dev/assets/index.md.uTPfWlYl.js b/dev/assets/index.md.GdAm7ifr.js similarity index 96% rename from dev/assets/index.md.uTPfWlYl.js rename to dev/assets/index.md.GdAm7ifr.js index 46274336..d3042e05 100644 --- a/dev/assets/index.md.uTPfWlYl.js +++ b/dev/assets/index.md.GdAm7ifr.js @@ -1 +1 @@ -import{_ as e,c as t,o as a}from"./chunks/framework.BEF5B6Ex.js";const f=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"YAXArrays.jl","text":"Yet another xarray-like Julia package","tagline":"A package for operating on out-of-core labeled arrays, based on stores like NetCDF, Zarr or GDAL.","image":{"src":"/logo.png","alt":"VitePress"},"actions":[{"theme":"brand","text":"Get Started","link":"/get_started"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaDataCubes/YAXArrays.jl"},{"theme":"alt","text":"API reference","link":"/api"}]},"features":[{"title":"Flexible I/O capabilities","details":"Open and operate on NetCDF and Zarr datasets directly. Or bring in data from other sources with ArchGDAL.jl, GRIBDatasets.jl, GeoJSON.jl, HDF5.jl, Shapefile.jl, GeoParquet.jl, etc.","link":"/UserGuide/read"},{"title":"Interoperability","details":"Well integrated with Julia's ecosystem, i.e., distributed operations are native. And plotting with Makie.jl is well supported."},{"title":"Named dimensions and GroupBy(in memory)","details":"Apply operations over named dimensions, select values by labels and integers as well as efficient split-apply-combine operations with groupby via DimensionalData.jl.","link":"/UserGuide/group"},{"title":"Efficiency","details":"Efficient mapslices(x) and mapCube operations on huge multiple arrays, optimized for high-latency data access (object storage, compressed datasets).","link":"/UserGuide/compute"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}`),o={name:"index.md"};function i(r,n,l,s,d,c){return a(),t("div")}const m=e(o,[["render",i]]);export{f as __pageData,m as default}; +import{_ as e,c as t,o as a}from"./chunks/framework.BgERvflD.js";const f=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"YAXArrays.jl","text":"Yet another xarray-like Julia package","tagline":"A package for operating on out-of-core labeled arrays, based on stores like NetCDF, Zarr or GDAL.","image":{"src":"/logo.png","alt":"VitePress"},"actions":[{"theme":"brand","text":"Get Started","link":"/get_started"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaDataCubes/YAXArrays.jl"},{"theme":"alt","text":"API reference","link":"/api"}]},"features":[{"title":"Flexible I/O capabilities","details":"Open and operate on NetCDF and Zarr datasets directly. Or bring in data from other sources with ArchGDAL.jl, GRIBDatasets.jl, GeoJSON.jl, HDF5.jl, Shapefile.jl, GeoParquet.jl, etc.","link":"/UserGuide/read"},{"title":"Interoperability","details":"Well integrated with Julia's ecosystem, i.e., distributed operations are native. And plotting with Makie.jl is well supported."},{"title":"Named dimensions and GroupBy(in memory)","details":"Apply operations over named dimensions, select values by labels and integers as well as efficient split-apply-combine operations with groupby via DimensionalData.jl.","link":"/UserGuide/group"},{"title":"Efficiency","details":"Efficient mapslices(x) and mapCube operations on huge multiple arrays, optimized for high-latency data access (object storage, compressed datasets).","link":"/UserGuide/compute"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}`),o={name:"index.md"};function i(r,n,l,s,d,c){return a(),t("div")}const m=e(o,[["render",i]]);export{f as __pageData,m as default}; diff --git a/dev/assets/index.md.uTPfWlYl.lean.js b/dev/assets/index.md.GdAm7ifr.lean.js similarity index 96% rename from dev/assets/index.md.uTPfWlYl.lean.js rename to dev/assets/index.md.GdAm7ifr.lean.js index 46274336..d3042e05 100644 --- a/dev/assets/index.md.uTPfWlYl.lean.js +++ b/dev/assets/index.md.GdAm7ifr.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a}from"./chunks/framework.BEF5B6Ex.js";const f=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"YAXArrays.jl","text":"Yet another xarray-like Julia package","tagline":"A package for operating on out-of-core labeled arrays, based on stores like NetCDF, Zarr or GDAL.","image":{"src":"/logo.png","alt":"VitePress"},"actions":[{"theme":"brand","text":"Get Started","link":"/get_started"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaDataCubes/YAXArrays.jl"},{"theme":"alt","text":"API reference","link":"/api"}]},"features":[{"title":"Flexible I/O capabilities","details":"Open and operate on NetCDF and Zarr datasets directly. Or bring in data from other sources with ArchGDAL.jl, GRIBDatasets.jl, GeoJSON.jl, HDF5.jl, Shapefile.jl, GeoParquet.jl, etc.","link":"/UserGuide/read"},{"title":"Interoperability","details":"Well integrated with Julia's ecosystem, i.e., distributed operations are native. And plotting with Makie.jl is well supported."},{"title":"Named dimensions and GroupBy(in memory)","details":"Apply operations over named dimensions, select values by labels and integers as well as efficient split-apply-combine operations with groupby via DimensionalData.jl.","link":"/UserGuide/group"},{"title":"Efficiency","details":"Efficient mapslices(x) and mapCube operations on huge multiple arrays, optimized for high-latency data access (object storage, compressed datasets).","link":"/UserGuide/compute"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}`),o={name:"index.md"};function i(r,n,l,s,d,c){return a(),t("div")}const m=e(o,[["render",i]]);export{f as __pageData,m as default}; +import{_ as e,c as t,o as a}from"./chunks/framework.BgERvflD.js";const f=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"YAXArrays.jl","text":"Yet another xarray-like Julia package","tagline":"A package for operating on out-of-core labeled arrays, based on stores like NetCDF, Zarr or GDAL.","image":{"src":"/logo.png","alt":"VitePress"},"actions":[{"theme":"brand","text":"Get Started","link":"/get_started"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaDataCubes/YAXArrays.jl"},{"theme":"alt","text":"API reference","link":"/api"}]},"features":[{"title":"Flexible I/O capabilities","details":"Open and operate on NetCDF and Zarr datasets directly. Or bring in data from other sources with ArchGDAL.jl, GRIBDatasets.jl, GeoJSON.jl, HDF5.jl, Shapefile.jl, GeoParquet.jl, etc.","link":"/UserGuide/read"},{"title":"Interoperability","details":"Well integrated with Julia's ecosystem, i.e., distributed operations are native. And plotting with Makie.jl is well supported."},{"title":"Named dimensions and GroupBy(in memory)","details":"Apply operations over named dimensions, select values by labels and integers as well as efficient split-apply-combine operations with groupby via DimensionalData.jl.","link":"/UserGuide/group"},{"title":"Efficiency","details":"Efficient mapslices(x) and mapCube operations on huge multiple arrays, optimized for high-latency data access (object storage, compressed datasets).","link":"/UserGuide/compute"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}`),o={name:"index.md"};function i(r,n,l,s,d,c){return a(),t("div")}const m=e(o,[["render",i]]);export{f as __pageData,m as default}; diff --git a/dev/assets/lmtpexd.kQgSETCy.png b/dev/assets/lmtpexd.kQgSETCy.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae72880ce8506e5e603628018aa157e62cbaf88 GIT binary patch literal 80259 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�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�|JJ?l3Ply+0*tKH0Fk{=n?YcYxG5fF`s;o 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∨g`;TLeh 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%0AgyM5L!QUa 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 literal 0 HcmV?d00001 diff --git a/dev/assets/pdlvjuo.OibBte0v.png b/dev/assets/pdlvjuo.OibBte0v.png deleted file mode 100644 index 1015715fdcec140b6cf82d1323b7409253a05dbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109456 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 diff --git a/dev/assets/tutorials_mean_seasonal_cycle.md.C-JLJykP.js b/dev/assets/tutorials_mean_seasonal_cycle.md.gJhMR6dH.js similarity index 95% rename from dev/assets/tutorials_mean_seasonal_cycle.md.C-JLJykP.js rename to dev/assets/tutorials_mean_seasonal_cycle.md.gJhMR6dH.js index 6d330114..313c7a01 100644 --- a/dev/assets/tutorials_mean_seasonal_cycle.md.C-JLJykP.js +++ b/dev/assets/tutorials_mean_seasonal_cycle.md.gJhMR6dH.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.BEF5B6Ex.js";const l="/YAXArrays.jl/dev/assets/wxsstem.C5BSYN7j.png",k="/YAXArrays.jl/dev/assets/pdlvjuo.OibBte0v.png",c=JSON.parse('{"title":"Mean Seasonal Cycle for a single pixel","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/mean_seasonal_cycle.md","filePath":"tutorials/mean_seasonal_cycle.md","lastUpdated":null}'),p={name:"tutorials/mean_seasonal_cycle.md"};function t(e,s,E,d,r,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Mean Seasonal Cycle for a single pixel

julia
using CairoMakie
+import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.BgERvflD.js";const l="/YAXArrays.jl/dev/assets/lmtpexd.kQgSETCy.png",k="/YAXArrays.jl/dev/assets/lrwnyyz.DO8psrwy.png",c=JSON.parse('{"title":"Mean Seasonal Cycle for a single pixel","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/mean_seasonal_cycle.md","filePath":"tutorials/mean_seasonal_cycle.md","lastUpdated":null}'),p={name:"tutorials/mean_seasonal_cycle.md"};function t(e,s,E,d,r,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Mean Seasonal Cycle for a single pixel

julia
using CairoMakie
 CairoMakie.activate!()
 using Dates
 using Statistics

We define the data span. For simplicity, three non-leap years were selected.

julia
t =  Date("2021-01-01"):Day(1):Date("2023-12-31")
@@ -37,26 +37,26 @@ import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.BEF5B6Ex.js";const l
 end
 
 msc = mean_seasonal_cycle(c);
365×1 Matrix{Float64}:
- -0.03130398287109743
- -0.06059678887906461
-  0.08125105691657612
-  0.019357118933250848
- -0.03069412445788597
-  0.09901993559674853
-  0.2642946301720222
-  0.0724785553501333
-  0.21244822988355164
-  0.17115548211003082
+ -0.03950128816140833
+ -0.06543078292209109
+  0.06894364536016301
+ -0.003940775453868335
+  0.10226947160678594
+ -0.011679430378217809
+  0.029110414351034442
+  0.17108855806206869
+  0.14665533881137394
+  0.09710853712741103
 
- -0.21072435162838157
- -0.15326750862815794
- -0.12667116885178392
- -0.03650284859673286
- -0.06920309673015511
-  0.006977886140959999
- -0.10555520526290235
-  0.022285515523567546
- -0.005783221950539453

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
+ -0.15771433632463785
+ -0.1858403579779676
+ -0.015974661080283597
+ -0.019829128922060204
+ -0.14261633679073402
+ -0.08238381041801922
+  0.0042454457004389495
+  0.029577960933055997
+ -0.042256901873424846

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
     linewidth=2.0, linestyle=:dot,
     axis = (;  xlabel="Day of Year", ylabel="Variable"),
     figure=(; size = (600,400))
diff --git a/dev/assets/tutorials_mean_seasonal_cycle.md.C-JLJykP.lean.js b/dev/assets/tutorials_mean_seasonal_cycle.md.gJhMR6dH.lean.js
similarity index 95%
rename from dev/assets/tutorials_mean_seasonal_cycle.md.C-JLJykP.lean.js
rename to dev/assets/tutorials_mean_seasonal_cycle.md.gJhMR6dH.lean.js
index 6d330114..313c7a01 100644
--- a/dev/assets/tutorials_mean_seasonal_cycle.md.C-JLJykP.lean.js
+++ b/dev/assets/tutorials_mean_seasonal_cycle.md.gJhMR6dH.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.BEF5B6Ex.js";const l="/YAXArrays.jl/dev/assets/wxsstem.C5BSYN7j.png",k="/YAXArrays.jl/dev/assets/pdlvjuo.OibBte0v.png",c=JSON.parse('{"title":"Mean Seasonal Cycle for a single pixel","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/mean_seasonal_cycle.md","filePath":"tutorials/mean_seasonal_cycle.md","lastUpdated":null}'),p={name:"tutorials/mean_seasonal_cycle.md"};function t(e,s,E,d,r,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Mean Seasonal Cycle for a single pixel

julia
using CairoMakie
+import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.BgERvflD.js";const l="/YAXArrays.jl/dev/assets/lmtpexd.kQgSETCy.png",k="/YAXArrays.jl/dev/assets/lrwnyyz.DO8psrwy.png",c=JSON.parse('{"title":"Mean Seasonal Cycle for a single pixel","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/mean_seasonal_cycle.md","filePath":"tutorials/mean_seasonal_cycle.md","lastUpdated":null}'),p={name:"tutorials/mean_seasonal_cycle.md"};function t(e,s,E,d,r,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Mean Seasonal Cycle for a single pixel

julia
using CairoMakie
 CairoMakie.activate!()
 using Dates
 using Statistics

We define the data span. For simplicity, three non-leap years were selected.

julia
t =  Date("2021-01-01"):Day(1):Date("2023-12-31")
@@ -37,26 +37,26 @@ import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.BEF5B6Ex.js";const l
 end
 
 msc = mean_seasonal_cycle(c);
365×1 Matrix{Float64}:
- -0.03130398287109743
- -0.06059678887906461
-  0.08125105691657612
-  0.019357118933250848
- -0.03069412445788597
-  0.09901993559674853
-  0.2642946301720222
-  0.0724785553501333
-  0.21244822988355164
-  0.17115548211003082
+ -0.03950128816140833
+ -0.06543078292209109
+  0.06894364536016301
+ -0.003940775453868335
+  0.10226947160678594
+ -0.011679430378217809
+  0.029110414351034442
+  0.17108855806206869
+  0.14665533881137394
+  0.09710853712741103
 
- -0.21072435162838157
- -0.15326750862815794
- -0.12667116885178392
- -0.03650284859673286
- -0.06920309673015511
-  0.006977886140959999
- -0.10555520526290235
-  0.022285515523567546
- -0.005783221950539453

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
+ -0.15771433632463785
+ -0.1858403579779676
+ -0.015974661080283597
+ -0.019829128922060204
+ -0.14261633679073402
+ -0.08238381041801922
+  0.0042454457004389495
+  0.029577960933055997
+ -0.042256901873424846

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
     linewidth=2.0, linestyle=:dot,
     axis = (;  xlabel="Day of Year", ylabel="Variable"),
     figure=(; size = (600,400))
diff --git a/dev/assets/tutorials_other_tutorials.md.By_HW9oi.js b/dev/assets/tutorials_other_tutorials.md.CO_GVBJJ.js
similarity index 97%
rename from dev/assets/tutorials_other_tutorials.md.By_HW9oi.js
rename to dev/assets/tutorials_other_tutorials.md.CO_GVBJJ.js
index 21427780..33837df8 100644
--- a/dev/assets/tutorials_other_tutorials.md.By_HW9oi.js
+++ b/dev/assets/tutorials_other_tutorials.md.CO_GVBJJ.js
@@ -1 +1 @@
-import{_ as t,c as a,a2 as r,o}from"./chunks/framework.BEF5B6Ex.js";const c=JSON.parse('{"title":"Other tutorials","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/other_tutorials.md","filePath":"tutorials/other_tutorials.md","lastUpdated":null}'),i={name:"tutorials/other_tutorials.md"};function l(s,e,n,h,u,f){return o(),a("div",null,e[0]||(e[0]=[r('

Other tutorials

If you are interested in learning how to work with YAXArrays for different use cases you can follow along one of the following tutorials.

  • Currently the overview tutorial is located at ESDLTutorials Repository

  • You can find further tutorial videos at the EO College. Beware that the syntax in the video tutorials might be slightly changed.

  • the other tutorials are still work in progress.

General overview of the functionality of YAXArrays

This tutorial provides a broad overview about the features of YAXArrays.

Table-style iteration over YAXArrays

Work in progress

Sometimes you want to combine the data that is represented in the data cube with other datasets, which are best described as a data frame. In this tutorial you will learn how to use the Tables.jl interface to iterate over the data in the YAXArray.

Combining multiple tiff files into a zarr based datacube

',9)]))}const b=t(i,[["render",l]]);export{c as __pageData,b as default}; +import{_ as t,c as a,a2 as r,o}from"./chunks/framework.BgERvflD.js";const c=JSON.parse('{"title":"Other tutorials","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/other_tutorials.md","filePath":"tutorials/other_tutorials.md","lastUpdated":null}'),i={name:"tutorials/other_tutorials.md"};function l(s,e,n,h,u,f){return o(),a("div",null,e[0]||(e[0]=[r('

Other tutorials

If you are interested in learning how to work with YAXArrays for different use cases you can follow along one of the following tutorials.

  • Currently the overview tutorial is located at ESDLTutorials Repository

  • You can find further tutorial videos at the EO College. Beware that the syntax in the video tutorials might be slightly changed.

  • the other tutorials are still work in progress.

General overview of the functionality of YAXArrays

This tutorial provides a broad overview about the features of YAXArrays.

Table-style iteration over YAXArrays

Work in progress

Sometimes you want to combine the data that is represented in the data cube with other datasets, which are best described as a data frame. In this tutorial you will learn how to use the Tables.jl interface to iterate over the data in the YAXArray.

Combining multiple tiff files into a zarr based datacube

',9)]))}const b=t(i,[["render",l]]);export{c as __pageData,b as default}; diff --git a/dev/assets/tutorials_other_tutorials.md.By_HW9oi.lean.js b/dev/assets/tutorials_other_tutorials.md.CO_GVBJJ.lean.js similarity index 97% rename from dev/assets/tutorials_other_tutorials.md.By_HW9oi.lean.js rename to dev/assets/tutorials_other_tutorials.md.CO_GVBJJ.lean.js index 21427780..33837df8 100644 --- a/dev/assets/tutorials_other_tutorials.md.By_HW9oi.lean.js +++ b/dev/assets/tutorials_other_tutorials.md.CO_GVBJJ.lean.js @@ -1 +1 @@ -import{_ as t,c as a,a2 as r,o}from"./chunks/framework.BEF5B6Ex.js";const c=JSON.parse('{"title":"Other tutorials","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/other_tutorials.md","filePath":"tutorials/other_tutorials.md","lastUpdated":null}'),i={name:"tutorials/other_tutorials.md"};function l(s,e,n,h,u,f){return o(),a("div",null,e[0]||(e[0]=[r('

Other tutorials

If you are interested in learning how to work with YAXArrays for different use cases you can follow along one of the following tutorials.

  • Currently the overview tutorial is located at ESDLTutorials Repository

  • You can find further tutorial videos at the EO College. Beware that the syntax in the video tutorials might be slightly changed.

  • the other tutorials are still work in progress.

General overview of the functionality of YAXArrays

This tutorial provides a broad overview about the features of YAXArrays.

Table-style iteration over YAXArrays

Work in progress

Sometimes you want to combine the data that is represented in the data cube with other datasets, which are best described as a data frame. In this tutorial you will learn how to use the Tables.jl interface to iterate over the data in the YAXArray.

Combining multiple tiff files into a zarr based datacube

',9)]))}const b=t(i,[["render",l]]);export{c as __pageData,b as default}; +import{_ as t,c as a,a2 as r,o}from"./chunks/framework.BgERvflD.js";const c=JSON.parse('{"title":"Other tutorials","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/other_tutorials.md","filePath":"tutorials/other_tutorials.md","lastUpdated":null}'),i={name:"tutorials/other_tutorials.md"};function l(s,e,n,h,u,f){return o(),a("div",null,e[0]||(e[0]=[r('

Other tutorials

If you are interested in learning how to work with YAXArrays for different use cases you can follow along one of the following tutorials.

  • Currently the overview tutorial is located at ESDLTutorials Repository

  • You can find further tutorial videos at the EO College. Beware that the syntax in the video tutorials might be slightly changed.

  • the other tutorials are still work in progress.

General overview of the functionality of YAXArrays

This tutorial provides a broad overview about the features of YAXArrays.

Table-style iteration over YAXArrays

Work in progress

Sometimes you want to combine the data that is represented in the data cube with other datasets, which are best described as a data frame. In this tutorial you will learn how to use the Tables.jl interface to iterate over the data in the YAXArray.

Combining multiple tiff files into a zarr based datacube

',9)]))}const b=t(i,[["render",l]]);export{c as __pageData,b as default}; diff --git a/dev/assets/tutorials_plottingmaps.md.DQHCoagw.js b/dev/assets/tutorials_plottingmaps.md.BxZGI0zc.js similarity index 99% rename from dev/assets/tutorials_plottingmaps.md.DQHCoagw.js rename to dev/assets/tutorials_plottingmaps.md.BxZGI0zc.js index 454e9f96..c48e1281 100644 --- a/dev/assets/tutorials_plottingmaps.md.DQHCoagw.js +++ b/dev/assets/tutorials_plottingmaps.md.BxZGI0zc.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a2 as h,o as n}from"./chunks/framework.BEF5B6Ex.js";const t="/YAXArrays.jl/dev/assets/repxpch.xrZxBsPv.jpeg",k="/YAXArrays.jl/dev/assets/ubqzrxd.B7KFIfDV.jpeg",l="/YAXArrays.jl/dev/assets/jvfserh.96k_BqPR.jpeg",F=JSON.parse('{"title":"Plotting maps","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/plottingmaps.md","filePath":"tutorials/plottingmaps.md","lastUpdated":null}'),p={name:"tutorials/plottingmaps.md"};function e(E,s,r,d,g,y){return n(),a("div",null,s[0]||(s[0]=[h(`

Plotting maps

As test data we use the CMIP6 Scenarios.

julia
using Zarr, YAXArrays, Dates
+import{_ as i,c as a,a2 as h,o as n}from"./chunks/framework.BgERvflD.js";const t="/YAXArrays.jl/dev/assets/uhhydvj.xrZxBsPv.jpeg",k="/YAXArrays.jl/dev/assets/zreiqqa.B7KFIfDV.jpeg",l="/YAXArrays.jl/dev/assets/buxplhm.96k_BqPR.jpeg",F=JSON.parse('{"title":"Plotting maps","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/plottingmaps.md","filePath":"tutorials/plottingmaps.md","lastUpdated":null}'),p={name:"tutorials/plottingmaps.md"};function e(E,s,r,d,g,y){return n(),a("div",null,s[0]||(s[0]=[h(`

Plotting maps

As test data we use the CMIP6 Scenarios.

julia
using Zarr, YAXArrays, Dates
 using DimensionalData
 using GLMakie, GeoMakie
 using GLMakie.GeometryBasics
diff --git a/dev/assets/tutorials_plottingmaps.md.DQHCoagw.lean.js b/dev/assets/tutorials_plottingmaps.md.BxZGI0zc.lean.js
similarity index 99%
rename from dev/assets/tutorials_plottingmaps.md.DQHCoagw.lean.js
rename to dev/assets/tutorials_plottingmaps.md.BxZGI0zc.lean.js
index 454e9f96..c48e1281 100644
--- a/dev/assets/tutorials_plottingmaps.md.DQHCoagw.lean.js
+++ b/dev/assets/tutorials_plottingmaps.md.BxZGI0zc.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as h,o as n}from"./chunks/framework.BEF5B6Ex.js";const t="/YAXArrays.jl/dev/assets/repxpch.xrZxBsPv.jpeg",k="/YAXArrays.jl/dev/assets/ubqzrxd.B7KFIfDV.jpeg",l="/YAXArrays.jl/dev/assets/jvfserh.96k_BqPR.jpeg",F=JSON.parse('{"title":"Plotting maps","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/plottingmaps.md","filePath":"tutorials/plottingmaps.md","lastUpdated":null}'),p={name:"tutorials/plottingmaps.md"};function e(E,s,r,d,g,y){return n(),a("div",null,s[0]||(s[0]=[h(`

Plotting maps

As test data we use the CMIP6 Scenarios.

julia
using Zarr, YAXArrays, Dates
+import{_ as i,c as a,a2 as h,o as n}from"./chunks/framework.BgERvflD.js";const t="/YAXArrays.jl/dev/assets/uhhydvj.xrZxBsPv.jpeg",k="/YAXArrays.jl/dev/assets/zreiqqa.B7KFIfDV.jpeg",l="/YAXArrays.jl/dev/assets/buxplhm.96k_BqPR.jpeg",F=JSON.parse('{"title":"Plotting maps","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/plottingmaps.md","filePath":"tutorials/plottingmaps.md","lastUpdated":null}'),p={name:"tutorials/plottingmaps.md"};function e(E,s,r,d,g,y){return n(),a("div",null,s[0]||(s[0]=[h(`

Plotting maps

As test data we use the CMIP6 Scenarios.

julia
using Zarr, YAXArrays, Dates
 using DimensionalData
 using GLMakie, GeoMakie
 using GLMakie.GeometryBasics
diff --git a/dev/assets/repxpch.xrZxBsPv.jpeg b/dev/assets/uhhydvj.xrZxBsPv.jpeg
similarity index 100%
rename from dev/assets/repxpch.xrZxBsPv.jpeg
rename to dev/assets/uhhydvj.xrZxBsPv.jpeg
diff --git a/dev/assets/wxsstem.C5BSYN7j.png b/dev/assets/wxsstem.C5BSYN7j.png
deleted file mode 100644
index b14a15273915306f8b1dc62ce9c012e9b6dd679e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 82520
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

L6-X?&~M-CKVPn^t~I-}|qd)A4To2Q%1l?64j+ z9L;E#joCBeaX59!Y0@uCtdmXsw&}+2R~Nrd4TiNDYA>6(Y%Z7>a4W5_2LA(I);!TX zm<+cfQYy3>0UZ}BvEQtXN2oK#_ir%nKi#@*HvoB3u9uC{V|w6T)-)pph?b=_E`EY22!Pbd6=eryyJQdyiZz+lpy@&jNxU9ejwP6u2)}H%cuH%4Q2Ax3|6E zm`6D$R!~s?$5KQs+PWWpH0Im4+aIqz-sc`XSZk#X1RZ4LE|a+Xt->*GIFjddbjGDV z7^WKjVx8eoC_BR75{ozX?}89GjX>Ow&4$t8PkvkI)3aA?$?hX@KnKPZv=QiUAVJ7s z~{V6vId}u=0F_bVj1(u>iy#9fLkYT-_7a3 zrFZ** z6GvvJ?tAxnSa0$ z#fXc;NhSQ-doO?Gr#VZ+FlUpR-GNDSJjMB_*h;ShUSVDxN$jDlwu(@af%rhyYBm`Hk5 zOLr&qe)!(W+KWGw(0ibfVwS%az6L>;C!$GWN+zq19xJb2x6Xu#eBt4q%0&=A|Mf8% z^n?}c*|UYnB_tky4UA6D3RgC#+4zeq`f}$pK%~a!%Q+`p@`QBv-vc!NeG|b6Lq603 zIp|MeQ6t&M4_|Qk1;~_TNiz)9!KoXPAb=}>p#d=!qaVMPug)b37hQJuO0=&Q4!!mHsmw-Vb4pMB);_~&6NHb36>>M0bhNyY9yec z-?2!UE4K5+^_E!iK_2HomQh|$@jUNE=v5umWc;rw&fpvZ*Mm(2GIbQ7l7 zFe!=9{}FVYh#fO{_)RVtm{D$3$pIe4n0!lCK+?<4p9Q*-(1e#`zljXoFVLkW=gPKc ze+PC^B9F{kvCH^CflXAqFlspwek2mssr4R|&Lf~Zx9ozk?Ai-G+1gl$0^HKacYyhL z1_~L2_f<+QY-!y9A_XBq?$|exOBz~0%Z^E}StMr2thtc@F3q7y66~a+`!Ct!mZ+tP zfj-Aw>1+yrIU)&tPXx1e`h!|#g&3wZIPq8uCh8W^2Xd#w-QyL5L1<1DmkH%1yWj0f zXbwxlt==d5KUx5^p$*Pc(DJ{HOHY-0p&O2F=c%f?nOsjnp8?d(_TR~F*H;CBQj5Di zONo3uqCT+@A#8jr`PcY!J1AX50T8s=6LZ~~1TtET(g0kH7RU2$d){kRBndP(DZN<) zrSTSwoLw!5KuTFeT%jd`%JP;U5?C@ogLN(>sY4qICJ=+Z=tpq&E}V=D7ID|Yc)G4F z@3QY&ntEtrX{o136}e$OW_&W;!+F^iv`7dT8uMkLkmw|IqK{OvN%9+wXaL}L zFCTM_2OZoURpi9o0ps+cw%cxCD4@UR+`*~i1Az@*e*g_sCdwin&z6(Q{wby*#Gz{F zc&l$|f@y|XTEtJ>{+18=8nkUr zw!_vhmXqMUhKO!YAh!v}P=6id+ftj?R!6Z|PD<)#wxp_uP?9!<0k@f!q;301dOr{w zRjW=fD&AAn&PEW>8p=vfgfp3MTZ9DCr$9pBX6`_HQcz|4`!~dQ3!J6XLh^4*dV6&jH2dakPE#LjVW8!J_)ebl6)IH1Z$8f^!1dd@ME&BINrGkams<82ad`^lX0OV6Ai{fc$5cF0i!& zvw7`c)X4pSXksV{^C#RpC~k}qloIGkQ0hGvka^+$BZ^DtFp-zpAlB+pLvJucMe4IO z{DtNp82tIQmz)90DMu>7VLu9`JeEJo9)&1h57yOH?|+t?v)5X6qmp1%j2&Ih?FA&f zL5<){?Z<>c?R)gtpk3drf2UK=d91J2e0~MLuFgPhE3G?vGWxuJH!}&%O4R7?yh-WauNh zSD+oOE~=v{crBApxY0^*(^`DED9|2$_lIbuUeFhTPfO!^l`9&x#m@c&2CRYz6zbWxFd^dl5$cqkx9ch>_%LP`*j z?nY8tIwVC}8YQJWrIhYQy1To+dB3$j|8fb=ojZ5toPGA$=Zv`|=GBM^WI8ne&o~gp zd!~bGwm-z`U1Q>^5%jz~Y5($OFAv@DfK>Xv{^9BlmH+u?L)AJxsOAfTP-g9FazU4( zpFd6a|J4E2cc4htu`wZ($1_L#>vIvS;#(k{3i%ah97nS%xg8Y66*7Bur^r);?SdNB z2u@?Xx5*YCC6ihyK*r6+Y7oc^DMTjpr{%ru6Ltlb?EJpNdZIFY`5I4#*dA!s4)&^S zAJkGd;!J;(*?qd9X7aM_4K4%$0SQ?JjzGaQ0WYQd*-)ki9%>}IX_{z-5;~fa5aR__ z+kA=lS>dc*OA{yox!bhoE3RD*^EhbYy(m505Pi6c^0_rCG~4J;xoE>;4R7_07fJbC zdek9Js_Pl$>cGlb4x^8iEo8|Ssv5C3loso9#J4sd2!8yB2lodVmgQxeQ(R?~(7o!a9h(ZWB$P3s{>S)~y4!agX(TLlEvJtJrXLfeKufuO* zZ5gw>ZjXY-$xJ=1|H!nQDVP1GxpNN2ra>(1@hq36#2OW2xjB#e5)w_z7Xjz)G1`>K zA^X=MXY`K}!|wgq&Q@dJmYW~$Rt)M^nD#fiozyop95fs>Kim#J2-z?GPG~;;0oHS{ zu5oaGt|8R?>UeD<%>z^Y^!dGelx7S=g^|LGm46R}P2y2` z-yK?Lq|@=p^Du`z>OvhvDUf~Fs9-dssip?r;bBAL?JwJ;$&n)<*{(1Dte3PpgqWDwz@x6kay>1ce)}tL8%A8vWLY1w%r*>d*F z4%BCRCI9@T*CJvi#>dCkwN91hG$Om=T4^HI$e&9_cJ$ePDD)}+SS`E_ARP8(5R?Q-r;6l3Jf(BSn#R9lj)TH~ zDT_YTsa&XOYtQyW{x(W6ZWt_p%Csc=pl{06x(heg z{oc|NqO! zGgEebHNGqJv0mfVGp0$55jIMWbts*K(1`N$8^nH< zzB%8c&Dt8xO%V|^`hyMI-rL(dI4CJBtZ<`>rzt8fZeH}mO7ppQJIV)jze1-&k|*o^ zWEK7_CL}MiC45|R2Q}k`rT#{5&DdJ1%v}fn5^it@=O1M1pGj_g=&&zw%moE(Qwu zF!5u?Yw9LdExL@?gn+Hu6TJ;Zu$ZV(TotbF%%W(RQrwS4qZ8i(V0rOeOPWIqa`0j7`u8sjG$7cN?u*NCD#kiMF$1%P%^8SDCsRs?Uo#qp%By7go^mOA6%EUEO%4j|S9Yv4rFL?|RHBZp?Jh^H!3CC-##KxZYY|qR^sno*zDer?ZPt`n z(PtmAgx)oKK1(YrAOga4#%8NV^F*#^9#^=I(lar9Zv_?U&vc zm6hR>NIYXl2_U)k7RA>bCq3HJ3?}8V!t-8Z(yQC6p1r=gsj;3me4qnGb>$1bA)X@X z!1okL!|+Qctt#HO%7!|br()->9Bxl+8;a~2D$N>>xR2%YO`qn#pD#V9*Q+=3>s&c{ z|4Mx|UAQzM{6!~*FRrFf+2Q!k!-l}WNWTZFC^)R!cx2;5;Wp;7K(%Ff=dI6iA>9ww zr=j|OHmWie|PA4Y1e$U4mx7U+|rrQ8ckyW0f)t3B4`p% zmQpO^fjQMa&H<=R0xGe6%M1Pm5i`Rm+&A-coClNwJWkgeZ(D$z@wpSpT6p^JH~S2d z@P5bSgoXNlOD0gU)EXr2q6_EQPsMQ zy?sSpboi4)+LHpe`CBBZ#ueZ5k*K65CCx+B7++?xPnU;FpM>_Ewkw!!E)M9kEJlAu z9P^NUq5tA$xe!pc%@OvQjp^;LZuv=Lu5R@GrTN21(Y>iM@8H}4z{WUSjM%X5dD!Ze zGQBqKm*UqEy9`bDF+2~fpkIf4Q9ZHf2Mk)~Y%NF*nEBl8{w?;}1$oeV7ni%^RXtn^ zitEb@kpb7=GpEtSWxWid!dH*oo9WWosdwk*viH`#@yv1wEaSor7Nc}9txEHlyOhSmHmoR->%3RJ z2#lv7C*!g=BL#Qd7@$Z&c$*z4CX&IsUijd{Oa5ZZgy(Xe3XIa&rR_~iN*W6K)VnX+B2oM^)=`m0nx;x z*fe++jS<&0=q(LlKfIhTzhP1;(yxF90wCO^^xD~Mj<}gBXMbb@8tViBmp-_27Sz7v zyfd-&xGh!C)poWzB7~*sRON;@iNmDl?qcCB9K4x!lY7x1c{@xi*u z(KO`jvhg3@vFPr!Z9bNWUuA!KgYzAVk{lhS$5cYF60qxa-WIpR zMe&at^YimN#SMz@#*;YByzfuasWyBRFn*J_4ckv{7e=0uwCzKao`5Nn2yk?mlCyha zIO_x**7KGWrlt)~gs@&-^922gN-MCDC&(d`B{Tm+=p zK}F{SkN~XQ0Ct=s2s?A$wfQ6!H2-<4qoV`x{QhL~c@+Xawd09;UM>ZvdmhWeu7{(% zbFA3iXKiZ!D-dRBxpmN`c0Xvk0RN#bH8u5QWANcPp{4QD(Xuf|9aww4hwDl3@9;{~ ze$vyMtiDG<3oC$Gt6L(z93L#XPycdHPofa!->c*bm_M#}qhFJAETSbR#}mbX+10*ZeMEWtG>=1I-{;{E5mOGgQ+LxA$Tm z)c?qI@B7#Cu?+}7nu-}Ez#VkFnJzVGUrW&Q21i%hwl2^v;rZ4q@HNhpItjfg-<>Bk zTdw-;Y#WdMfaXC|_lLpt7kU+@5w>1!VK2}EU|`CNUM4dGma5<1a3m8wq=7aEmwSE2 zLft8G$WxoM3-tG0g#MsrtoLB#j7X|G4`=Q%8^HVcAeZ|msR@XIB|{+CqD)umY6&!e zU@@k0qG%Et2VE8ESkv0zMCYkdy00M6ow}HD+@s zKT~YW-3vgpg)Vy8nnfWbs1eD1XRrIE9AP{>k&G1{1N+Z zp-PfF`Lde;53*5`<^u#@3RC#;Fr7+kZdX$3LQo$aqZ%|+i~3BLqvyrSmIX1QAQqV& z6kcno#F7J&2%CmFK!SruE$^`E*9pf)4?hr*Ai5$vXS&8-T8t6Df5!AyEV3iN5kBUV z@ep{>JoHJ$sFqb{txLq=R?P(X$V{N^29(or8)pFERLMC4>JW54kWLVD3p`T@AT<1i zLTWCq3G~!~#(hv2b>G}~rj5Qj2V9TuJy6Uf^pBwuT%>{Ip>qC+wmG-|br76RmuD3y z!Ga8zFfgUKYZ*gmScN3>UT~kVWD~?l!=2jd=wH=YV5~#6Vp5OK>~tOgNpSwPF+r#6Y zCoHQ zT@>{m80OL&SPYSGKJ5i$;?Iqhp<$Z;mbnhFA(-8lYdiKUocsh|U&WkxKL0m{Lbkio zx=*+HMw&#V_4!(H8kS+!#aYhJXXn6Uf=j3f2 z%Aw)z+Ks=)e~mn8d6buN{O%>$J883ZD+sUYV~8L1nX8$CFxiG2X{% zVyDJruofHK=X8V-eVBtxXX#9Ty)>nX9DAO}N@kw57^np664h$cS8KSuA*o{yonNW<0A zOU1;&C_E_hUCAFKYZ=O6xMlyyIIqZH=c5bW*FF(3D4ieI`yHEe#_c8-D@fV>V`B!y zK%c4QVcR>ki_phUE+^X$jw`x0GkVb@9$Hprb)J*Z?@drb zwDCET9~*v7p<2$c(o1G~B{ei-k&y7mbBjh9X&dLKT<)ZJyaXr)X3DM*#N?s{0{RNd zS2bU`u`4j|L;X zlC;#N80Ct&A_w|EIAVV0rj0`WAv{gxTiFewnCV}?@xqOXo`-}%XpM4oU#%RkEHi>ji~HsA1x!3F(KO(dKtrMFQafyXG}l`%TCB}uHl4gs5|j2# z*oK+^DPMpNeCA^I%dT}nBG@``Lg8|2Vv=_b5cZB;m`ZTzV1NkWhJx{5u=!C!*PvP_ zMSkMcaB0EUr~bv}_Ax!$!C4&Cs;wuFomd4E_W#xDuSB}Kynfq*k~u~bK)p*o(v>%D zurFAqlZO|ZOr5+L6H(Itmo_^LH#6%EN+|7<0FyYASgPc{$R+UE!2^zE#lYzB)9CCB zJ>O~kidSp`s?qt2ZbJk%iNM&ymb-%asfd?H%-kv6rGkT= zuHl$eLMjeI@K@J(qoyFc!=O6&Z|ZwV2*LAsNfV~ZGUWfB!1=3GFSDD{aSJo7=d(QO zPL;yibY^at>=KoRES?5(MiLg{vD4kzv;&BfVYR)Q}0ybAnsw zx~0uCqrQCeO1$k&I2efHx%+ydy%-I-M0B7S)NemfDsvS#6Aq31&OM^fbIRB7*9(20 zb6S4n^^@1%UoWsmcbhukItZZiYrm~7ceICya}BHeH;BA~JfY3zH{s{WRrnHb!WBt? zP8mYU7m*AKYizN};|D3D| zOh6uW5NoI@fTHa@N=@Bl%$z+kMR32dVZi9`fbT%#u@GNCD(zQECYOJ8`-(1o8zOJ_ z_^KSc2a;{Lueoq@o`cC0&UfMx(PkF~(QLx_fAH^q#*lcbhy@nG?viH9>a6oxCwe;I zHZxVuW&cBYg}0qokrilg3Ql#%W)kbhBlK^y{XDFfK~`+>5p8LSLJ@K);GPp;?(+n4Hu89VmDL&jhJjd8^0dcW<{G>Z<* z;}3X4HtLA=*eTFp64&t?Umw4zI5Z>#NBEA*p{Mx&S^!(04jOBJ$;2Oro%3M@C8kyi z4A5hqmv%9K?FN@=IxC(Imh;<~WcSqPrzQpLiYJWH{{3#W?#I>w({mC2Z?F16ooL1F z*ltgWUT)$f@6uV2Vg^YPEXB5}h%=bvr%@2wTj0iPEoEP@%$G+V3+h#W@`*R)&8sLWAIiQ z>kvqrc^yQ2isG<~fn4Hu`nX}<++59l;2G869p8jqs_TYZtT%tYhjx5j<(F_wuIpe> zkWT|wCW+1jyWJMP4P}H#fJX!)9uaPu?L^r2hc*Hl@EM=^>QbZAnDb+WpFdf(V2B#Y znLds|b-SIwbW^^FjK1qkLzzMnZdAD9-P{;b0=7La!f@tsU?MgRG$4a4W?yD7608$O zXBUGMb9D3@r|7jjdFPa(kZ?;lAIG*dFj^DP>lx29G(7yWRM8)rDdweu<{FDJ$}*wZ z7pP6sAEPQfu)p&}qx9^>F*Q&EH-PXw_4v-g(Qn&)ivcKzyN8HF_!w!)V*81hiNV8= z*P(A}QpJq9td?+>5a#~kuQUAAe$k+np^N7@4k@^l>98xWvP9@$;AEiTL z*) zKpbkylIV6?m<{%~uE>E&8>vKe9rzBbqYjNGOD0&M=2KPem$EIhtSMKK^H-!!$?vTo z*|gaQx(~K{12bQjUR>OIHP;ixKAN=F;Q&c8GpQsw5VWVl*F1?P+LONgq;_2i*GbxaF2HfU zw``|V#X<+cq4VF(^y)5Q&2Rjr(r|79!ziX%B_Tgep;q;!M(GZgk^T`i@R@$m#zLbL z#R?Mp+An4}e*3BStDw@Su)i*c7%sl zQ?b7`%1Yeob1>|OP}3H?D1&7SaHDU^Isu!}*sr?|6$qm!PoRc0;QHWQNPrjZfN}&g98O|P>DRan~^Ee zQ#A=fpO7$qee6z|k)UA}xp58OLn0BKfjkP^Ew5=Yu5cL03V<_Htb_Ztcgd0VmS zP>Fs=5k7pCA%?7!V~WUy;hDhsS(%ArJihY5$0izx_@B>_RL`lV&HtFQqj|N06?X+l zRR?^=8=Zf4dz@BJd{C`u%D*SRlm4|yTsI282|O?*xGz03RE9*hFx`Y-Medo38*Q5NchjkG3-sN zqrg@QDu;)M(Zq}!ac(3=sAr!x_?i%FwMoA+RQk4GxodM=d_QLi6W9r=aF5#gWp?vu zlXUY^{5VF@j*MBly4}G_!Rn;!+z*`u7x<1eR6TEsWaYT59Z}b ziE#egD}(7cd$8AE1xL3V*AXFxpcHX$?x2-&6W*}ffGd8 zL`@P(f=Z5v zJvZzFzXwh0aLIUflg!el8{Hh)ruHMR0Xyij^&?>(G!)b=;hiY)SCbUx5V%IqzG5er zVBX@)9PCI}AQy1lbQ2Ydat;ASHpHB@^c|ddwNAy=r7U%}^YVHI2t6mj!E&7hB`dXBDfqCPXr5 zfZ zcZNN|din~AvIHpfhwZ|WQ%m|yX!&A*JXFhp`Sw|ia?@u?2!w1j7fmJju!w8`1oE5V zs%kAY-oT*~>sB9jCCE5gQ4K}&;bv0s{!A+kRofB?PyrtwJeT(Pt;p5tVynMt#Z{{7 zJc)o)-ZHoAob#jt?;IRn(sZ6&{R=r24qm;QIKYiSJftg6@o@9YJPwl9$(gF2D4h_` z0{_Ch4FbuK@a-sl=;c`Aw1KIeh$Eyfu&|g=><`p+7NcM5ahAc|&yxP!Poix!DB!V! z2^4}Z(BY{vBPJ%McPtI(GgidRT9qCbw!daj>*32W$`FYr1d2N1@d)i2-8^czEi*;w zbGgEOk)aKck4Q^YB6VdD>XM^>+R6_TYDfi&vod~@Gjxa`z6fz%n|Dfx{@X>W&@>^p zuOUI$Bw5}`qg&6jK(}>^VY(p`HCVQvaJ6Y72xr-Cu23O>zurX3=-&;AVE4TGB(5)uib^8CNbT`In4OIu*$tJVlCF z^cy-jXBu!MlMnK1MxEhdoL$n!2LTK~47!iR6JK++2BAr!bL1ba>|VUqCNIav8}fNVuxYk%Bre4pfdpzVk3=kT<;rh4$R1gzx`T8 z7~n!k-lhgnq2?>*O{_53a<-=Uhv3o-J0w#}t{^=2I!Oj(KQ_5&=L`)YFRAWBf_qx< z`_vNzR{woCN1V)Ib5C&j0qBJ9wfNijAS_GwB%r*DVFJ31dP4++j=e`uVXzp#dFnS)Cdign5L8&qcYo-> zB&mh*w}wC!#P*p+w_zizWiqdP#vYiAnYc@5sm6yF49yV~z(YdEes&1@-risS6`ikh z-1zS@19U3r@X^X&pVMrrGORw+legZ-vB6Z{?V=NYQXu zM$`o`z*Ctb$8 z`7+YT`(kp=SomvaJ?%VeNx?U0n#tgT=N<1y0E@M9cLY&v8S!zO*)Orqu$k}m5UDHG7}B3sw>z44eaCx#z@ z_rlfZQ`)Kvu&h~)c@h2XN6cgxTwh&yId zFp2`83BzXvw8M7ZLth47od7IfGX6L6inMKW8YzQa9;IAZYn(Rw7U_$pmNe|i6F+fi z_+zl85d7UwzsyIk>28zWbG-UM#;mSPqQ)_X-%6cs51bOtrIx1?9UZwndSc$(41&1Bg7p6eMBf5)`4{Cnh&(zTp8IQlWd2&-^442~Hbo(}ykl zcH(5dKIT-Z^&ND@6c=HpjS0i#F|+K(A@l!0^4Lq%2&v7sM% zJfD6vFIUYjj87sTl))MzOz-r3h6s3AvS`dUR>~_sir+M2sYeg4LZXUX9ATbXbYL-x zzO1Si0?-9P(CAXC;-7%Pk%ybxdEa$V@St&(2h9onHmS>_#3e>KIB5U^$QWl7DU))- zeCpNTH1aPm(*jgrG0H_Wedak?uwCdecR(F9;H7vGBI=LcH)n(Zt(FDzgR7Va__cSz z(MoF48c>pc#Y?&Xl||@JA`F3mXI`e1hDxhs?JD0SL%PhvpiGEhJxB1_H-Fohm=ps`X|PY&cG?@wa?tlU;)FUUyb zx2fRhknQd5`>*u*uh+Vkx6ZDkjxW&FPUg#?QWvFH=xy-fLI~G?`_5cPlU`7!-}AX z6mXWG#vSnl#$I*JeLj`g$P{yQJOLgv{nIkWPc$4f$#fB~AY2N|viBjN&3%8msLxcX zK`<`GNKGoW_$8-u=Ob(^38J{+s7)`(u(JsdBZj1We-2UL9agrm_Wg&5VishMAin<= z6b-!Fr(~fePLb0B>eL}O2Kz}J*S*=AsE|JqWEaCSRCOPUf#KbsuK2s>g2;-3OLW*t zBS2b*_n*Cg@7hRBJ~jR&o0QZ+E6o@Mz{EID?x4bgkDNNp+1E8zdlk_dk?bmJ+>M-# zacE%KB*Dw1ZH>BaqiNrH0Fmy+x?QN+ASMW27mz0Lyfv>8JA9EqAyP_71!p z&DY7G5aO_ON&HdG-14GM@{`lqa0C{Q;XYapmOC!0$iuB8tf#m41^`hyNKeHW;O zi>3qo;c}B+E*tXKi3!q8r?po{cn7!90z@R8Y-*xPCS0>hj=-AJb#C(3>6NfI<$S^L zpVuEEBl2I)eA`|~4?=>IXs@5|-^C=`2Oox+71wU1^B$etuB_nF&=Lhuqip%6z5TA5 ztB5~*d9*@-8{A`(pyNVq^ZLHm@j3^dD(5oQM5JNsVs2 z_A=(n!My#&CRMn49U3@EnVV2QHUAPCupg!6Ryo7q(kZhT5|k%s)Sbf>J?7%#Ncd~( z>jiqIHM4|u*qf-aF1r?qpNxrcGb7O_GbQ!Oc+8xqM&{5u8PnDHK9TA+r27NHV@{{eMWX{RMU$o0@yNu%l7bm5I_uHlG z5l>5V-I6{szRk@n4@_X=+%cyFWG9nPg=#iH7K1kHUs_%NyZ(^`zj^)BF-8FDbcWQR zib)(lii;IpMpllX!)EDTf3h-#-B0cL$bqcSSM0Kxl*@c*AXQNG_ORWmxK6rv!Ve{; zbF-bEy&#}Vre&{ubx#I6ZQYXB*lMIcBfz?T`u_OUQHi1t*OPz-*Ms8x zeC3v)ILbH&gjGk!RZ~+F1C}`K?x`uSDoOrJjAD<5(QR#@81DfnHTvsNV1X!dktV4yrJa|+*NES>HHgsPu~C9n3jMqzyb*| z{5Dg~67;7?c`M$+S6xgnvfSt}9gJ~PJHu6yOTtP#Z|wosT=Eo7H>Mv32C-Ho^Vr6J z(`(GY!TYi?=&L#$@)PJnb}n4AcC}n^|ADZqj*pd0Vd5Q-B^t^y4zz+xvcVINRs4ohp)ad}-~S)nxJA4$%4l zB}n~;;%2X#f$#i|0H>%IRte4&5f391%iH|qQ|YvIow;I1F_4B42jFr7a`4xJ+lHV( z6{JI^7#-y+%iA{6w$n8bMdEt94=FE)=-Sbt&Y5r1HpqgUS7L*#>aC5pYg06tm}ywMs-K^7>8iB4oDna8WIV8?8*^VZ z>G+DSow!MdtiT5VDXz3zIdTIkARxp1E6wnN7pUjEUbC7c^_1{9>)w<`pZc7 zyHr%lfqYX8gFpavXABAA*yi{tohNx8Z4!GV?Dg*@dGwZRb6HYt5*aG}Yw`4fX@Fzn zg-z$L5B>DfxjAUanDc0WC}x-o)lbRl{%X(%!G2h8U_5bfaM%acD>lie2sOW;OL&Mb zxCBCQzt%tXJFne5D)9$|wME1$z}AHqt|_JpoJ|=;;SU3#a(6bVx3RW{KMXA5;bwM} z$oZ5JxCc+KRKFFF9+UkKL=hn_km1-LeE(>;1ZNOXqMOLCd2!yvgQ7DMWCF6Ln)AXb z{Mc|7M=kH@E>ey+zqRX;i=0l=+!ws!n6b~u1pZ$4Ku944BB0n`O&Txx1&h3`^0z+E zp>cof6ZC1{ehaH#xWr1pwkvc?i05q((nBGAse+R$N2}}W^Y-mHybGQc?Mu`MB`1QR zX#`uHiIFjcK~&V|ZzRRcs+5<=0-~&86X200%jgjIi~T#mkPs+4JD-jGkXyM=oz(T{ zUvt3lI|P=OoxAH3xUGS;@lXQh4kG5*1^3jDc%RK~6>^b@ZwO{l<)7iT9SJOJAnTID*pZTT3fs6KJ=5cYlB~iKj$F(BZ#S zKI9h%ue7VfL+BL0^I1=^P0Il+hK#?r(BiYu>?Lbau@CPRJvDwAsUN}@FcQVO+1{3e zy)-rXcgnY+m08;^h#MHM^eO|_yjLNauORq}a&E>c!-W~8>4dL^-6Qv>?Y=fX4^V>| zCe!Vi3yf4+50vZ3xt38?nBjZ_Hx}RBTo4ZD$i@zU!U31{g2G}LtlB&}1V#MQdXgCe zHTLS=AA=Vf&yWS0d3sp(FrWABr)fFBGlek~Q)dA=vGiS3fJ7#unkFWzkRKFSxIixs zaut9prUT%NKBHGTeWr(nuAcbIk*V}wJ3+GJ_ea@UqyYgX74SbdPfK3VLs zhey;wpSk}O2_@c_7^2f**wteY937wmJ8Lewf5v!Fy~$nVBUmSKI545>W&pooVPb+R zRpzE$urbcun^>DpzoIG3G`OiuI8EGzK!a*7DV&UEGpUsm~ni3d^_!yoAxfwj_#b5A5f;a%IV!^9%jIa;8A}G35bH?#C@W@z9H#-4(Z59 zY)!Y`Zg25mlp3C6#(4LQCW{*N$l@o~mDjOORq-L-a0kaFe!`V|pE zv?nf*t$$^*?elzpLHU6e?gVaU$=4H;p;C_hzZL+VtC*@{A+4$!JG-a;Z;&>$*6Wy3 z(H_ExgIqs4H1-=;;!iX$)NRUbwlU%_+4Rw$8lE&gZ|{wJZ@{(7$$c5z=uM-yC}@oc znW&$*p1JPAdhGTp4ZB$wl-htB^r)fsbsqqnF(6H8cg9O4A=J}nou&g|l;Ks~qn%0(yb=&sbB$oHRFx7PF!eQd$BPudQ-qr8h z=LOHfD|)vqfScy}yUd*9u47{;RoP63&DGzEcWvA3PnE4)ZKStc%zI3C_w@7t#cB(% zGasO~Q>DHk*QZbn7qiaj=l{Qi;jgw&iSg>MhhuBz-+3m<2#_Ib}~*MqJw+Vp|DZz08+?h4)0FM^b^cAScEg+xb#+U^5oHX(vM(+VTH z-MNF6BeyuaNLEqPy- zWw+1_?s)at%nSxn`wyC$Zh+?o_VR(agHZ%jl;53`!4TTX8E4tOjH8S zq+X=t78j`Ee!7Xj<2Ny(o;{qHlA^7qmUAz<4MSDDqGOh7`l3dP<|Ok9=P&#u?D#k} z=7|Z7UDqtZ{m8^Y0c+{g_gDh4SCv}7o__g}k@5M-I_eB9S{qea$+SiyRleKe?m^$K z$EY#Kv~_h>R@T3NADU)IUc9ndVmDFLRRqT8g9&C(E;Z)vC>M!598Ob3iR8rVM_oI& zKQf|XvEkkGsb_ZcMV8-pKT2Wuss4}GUXc}i?RMkxh8?H)_W}=Tco!&5;#S4)W(wEW zR=Y)H)UkR%W}bXgUL9E?GkS1?iJ7_Ty%J|pAvrt6(qHLVb`M+0)ZX_^K)ehp25GaJ zJT3s#Bpe3tvIGR;N(`sKygPJ+;7@*V><2XHFZCS|%W#?F&2mOpJty_nt*_EA5+%4e z$a{$4g4OrrS@*t*wtRg-^KGKsk+-(4;yIdBvoq3bRtaAyE8mvQ`5P>DN~w|JKk zB*h#Bl^94R8m(bHAg2;mx#BUkihz>|p@w;=o{K7!M!`t;PJ zzQ^SvF3ugOMX^}5Yk}BG`@UXkN8Jy_Tx8HHA(`ph|doe^!(4UpRs)o0d1* z-AB&ufeO~j({d;J`h{|0N$5|mvVw4xo1@jTs=sJ@+=*iK!?vQbF(1wh9ADOG*iQ4O zz9K^5qATAE&@`CEKqC&=ee_ORHQ*<$!Z=ysw9FqnX`acag*|!w7LJn*pdvdI zLi3jWFe8$&z6NBEeRO}YNTU9>cTHGlc2}#d8pBK1GW@AF=AjE+Zu;}R^Hh=g4!F|{ z2-A6wIj^p+sJu>x0op&`o7GTO{y3p&W)UAIvQtzMl2=?@TwgCxFTDwFyA3f1qI*W} zj*zY`r}((I@v*Ve9TV$?W}WMYo<~`QMu3g|c$t$>wDYwUje&a4oE{ST>8jzN@g&td zcFlvqe+*u|7f>$w$yA;s-VYX^1xNSlu- zMXMEiFIj3d^{VR&R`U=P$JhwAhA(fPP)i;1)M#(Vy=$<{-4}K4ilzaFw4|tL%pqcT zEMIlH6_kN8dUUTG6=_xkEswh!d~o0T0Y3#0R;s1rzI@smBzPQ%wNqg5C^hoVqz_dv zWPo^ZD|&1-rgB9TVldjOXY9pSineD*C^U`Ls_|$f*P$TnL~`=oa%6uVM#J9P#jwzY zJB#;|RaoYNoXk z8RiPvX~U&KF(5VIBC}CU>9?p@*L*ooD&ak(K3WYFeL$aAJ>D@r0db=8WH)1ge&r9a z7B6X z_VCn3iGk6dJ0M@dcJN;V@4r2Z({I?U{MX~k(}nRLO#rPW&c1);>Q-jHmz`?DDx&izl3Jhe?V1Gk@;$$0G8b3d7i<9=Iq1i`xp=) zHFu;EZ$F1v2lB*@k2%1~Yo5D8KE|3pvcxrbgln+9Y<1KqlzmrreNVR3anYZtnC zdooC$1@7;>I@zGVY~V>zAQQh#J@DKBKlA~7c-p7sP+~pLkH@Rs2s*#YiWomGA)y6) z$MPLe!(nM@8N%=^{NKDE^(|l?)7d~{<7}B=kc>0!OB@*)0oM!GR96!W(?$ukSr(e2 z2`wA;*9g2Jha0;}03(4`kvW;Dd;9*pz%e@Z%uGdm%D&V9p}E?;4xH2&C>|^Lk-^!8 zLZe6ITV{IwHAAw?DqcVEYoxswi!eH>!2jCN@ zyL(w0cE>gJ6dFmgr6aV!j-YV;R|cXj@J^+%in%9%UFZib8dhvAY836IhV2|$Qbg-D z7l1Z}KzQgCrOH38(KmajG*sq29cZt`sUe(EKrg2Ggk)a={x~d;uYig%M){nYds<$j z#lEVf-_@`^bnSxG%&h22-L;7NEaMU#NCI$vLV_x zxHKTLWELaO3#&KdA|DCdn8qP&zl%~j{B?HXOpJojVc7{n1zJnkS0m>#P!c~+KI zY$!(5C-FSkWj$NQnS^4=vN4tV8(dm}hj8{0-6F225fGU~2bpDD30`h%p+Z>lsT*GDnRb6x%YIA|a>juY1K+uzA|&>V0U zGRA&G=G^hAs!y3AK++Zw?Iqn9+gs2*(AN&Mf(u^Oo+M2{&=_S3WnIb5gd!TD3YePZ zlL0Mq9~q`-mcw9XSoTZYgiY@n(O%kY_ei{Ez^j)jY&?L|wljr2Bn61EUol>m?WVXD zPiCgrejM4a+-6+`i;BvF-Sfmjd1xbaT5$L|#Jf^G z`2qw8K0@x;t5f-CArvnnE#6v|r9T~d#sV>E!vg>yqN{zBqRSx|;8mdADFJ;^0A{xX z6dkQ}c^d(jf>)cjtHJzTfY^>%G@`X3lfY-utY**4iXYlIVuk^nLP94s!S# z@TJba*zs1G9&D;l3Nn|$5*D^k8?LV&Lfgl}1C;@-fglv5J7nC)ijQkaV9^Z~d{*j3hvOz@oSv^@3HeH+@l*`Lz1f-0z=DTAm>xhJq_|`w1X6TM#KL2+(#)qwbL0 z23?iz(aHOj&!xFbHSG$6P!{=xe2vFMh1)HI=rP01zG{DlI@h-r|1I_PW6%M}ieR~m zVi{nd#96FqalKqh;6ID=FL6J6I9u{+SQGZ@H-NcAEhA$9Q4VZLk$7d$h6hZ{=hgy6 zRwA#YQK7#!$Acn=SULU(kPD`>RdCf5|})f2}9MxiV9-5qbhjNPs|1IU$Q(=RMyRgE-Rha zR5pe#p7tfED!#26pIf;oDvPvR2rRGi9C@%bfq(TcBlF8kURkci5bX_E;Uf!P62Y$Q z9?q`wu?NFp*Zrr=7f11Bzwcjnt%txe`(rqul};5xhuV~=hMRKr3pQ*^9+>k?WIVqj zE9eJo1!=S*kZF&xuiHcpCtwLIP)j-5m@h=Ku0Q1GW_kB-=_Puy!_ee&KxKe z`S`n+d?1OBK5@o(BDM-xV!WPndzbN{k^Rd7Bi4G*LHce1o`#zg%&Qz9%S|8;ub80- z)il+<%R_O5cmA`Kn!B1Y)5L%)pt~uF_NRmj0m_IlqJq z{_38>ry6uux-#d>N#O2~mrDehlY7h{FTDf$qJoV=&f?RZS_eZtMiwhvm4(**DhIp= zc#jyhpIN@?6Oml+3{of{ERX8j6D;7M>E}gedDsZUSaSiP;&N>#?#Y!)S0pjlBR?7l0$wPlS>Co|JDLji*0 zB4|G2FAaDftW@lKYZ9uZU1&=}uM1*Huu4?lnH%=W!^(bwbrxe?G%+JK#){bTC15D6{^<)9lWO-%R%dLd*wiZabsCI3=K7zgEG)Nq zj`zRqNDS(^yU<0L9TuRSyoB1$#6#Zd7%KG0ur-YSZ0IlExPN^0rPQ>+8(c9JkKVOh zfi~1mXCwuP!7OBRfD8vz{GhGT39d4nkKPYYPp7?m_r+QQqsL_uCe+qbP}^nP^wnq; z8*n*e_Vz;l4gd7AOE+I=TuW1uc(-Na6c6eV%40@Cn@d;}f=n58(piWE3>9j5n4R>1 ztyLw~EMl1jSx87gVmWr#dt6!hn1R)0s^U$Aax8|tyz&z?B3Wb+H|t?DM#TXY)Xl@=Awh6CgJgH3TU1yWu{P^Dv|^7-%H&cx z<-Hx{QfyN@!|d}Xn1V}F5`f0y!el{rEzVwaJRG1Kv6p8K;M@^41iv-;25fCR6iyC* zz)p{YU}~0mz~Ze5H!XGu%K#4xu<}H9wk(x>!a1cUxk0sI-3Q@T?YW`l@dB6CXXZOC)Gn~a* z_2v|5Wit40BF^t!@jbX{Jfj23(dFoR?rNW)=8r&;owyL~aZiEE41Ng97}gCf5Mp_) zM)okuhxS_h6zm2%BtcYkANDj=%3_2Z+1%%oJ*Lr_B_Q?tQ}{xO*E4;T+EC%W#&v$? z?bv*iA22w=!u!M(P6U@%Oc!-svIlUCoc)#}BnbEEbH1h@M-?b#KaAptQ2pTshsg%&3zj-14jhlS5(NDHu7dZO*{fAu(2DX2tvZer{T z&K>Xk!<9PKi~HhVB0VLt4ag{C?i=S?jDl9!WF-J(1*pN*a!&$V?qRP~kvl5VY+x18>eblOiLC za63SwVXnx4pH&9DP1*P@38|ny?s1R^hdD#5 z<#%8g3W~`KTrJyr^b%RRsiWX3wKzdsyKH22O%^}i!? z2%Y$gJq|A6u$`t8#fA!G_&1xU_^L5&#ZfUE{7|ai!9m;fF)YYYE(MyJ^@#e5_s5Ha z33Kw1lp1;pWXB~zy(oVz7y%-J z`~xJNADWvpP4SW#5gqf~8Z5@n5@?QG18~4!+V`yiM3w+)a}jSCZBKQ?r|qvV2H0By zs#PByroP+!`^h0;Txk61AJqhmZXm32-giqfrY+_n9bCjv<8g<;1ulwZjOn;LJ8v?_ zP(3IXl$oG(!%h)Fy_0^n9`nvVSwA&F7@4L)l9PWs2F$botSACFb&bI5LgxBt)B<)N z3-UGEGuso0Cd6zHjva~C?>;y|JQ61xt$vM{Ul#^shTjHpBcXm~_L7fr9IEJk7vagl zoZ>F5hjlRJ-cx}m0?r0&0kj>TRFf9aztl6|0NJmLkwU?`j6Mwezf%LQ$oU%SPXK6k zdwp8TnhOaUV}IfZFGg%VIeTCxTBqj?wloe0D7rOnFcZFTw4**_!<8JO1Y9OM8Gfpp)w#D&;la6cpgV*cENiZ z4n^f-79&`_RzqY2HaQX5cKB;(1EU>&saaEfVd2J5;LRb&I}+P9FKTcrOXHJ3vgQb>tVYHmX2LMcgHgnjQftD(Gka1GJu^ z(o!?fPNp(2u@p^@bO3Z+fHmz6=O_TTu`7V;fiJ1{ZWROaAk`##(2;^Dq>UlKWHQ5> zl>kS6hT1LNTsSabPOLl94}R_Soa8K_fHxneya-_H)yAhmHu}VV`Ggs z7n=s=udBPP5V>#Z@1w~dfcUoCMPq&iIVp}6`*nj7{&{;7lVfjV{S#RV&fJ6nEl2UJRhJ8F@@gwmoyXe zyJ|OPJDH}mXiQ0B&nZ5Va{ybak_VZ_a|sjA_z61qe?fWS;O2I-*FpO3o@u@R`SZAL zG-(20)@Y^08yd5^%bkW}H%`cude;7HJHAYguujw6UGeI_dfc$3mG3_IB8tjMN)L-- zPX0&x5i*JqlS(dX4~fY!wGp1DYtPR^1J8g;H63m7=mkxZA~2omCJGgf#KS$4C% zf%A`lvcbjuw3gQ|QsgxS@mAYbn}sk@omWsXZ936Z=~{Nfx(Awk)+{U{(sX-s8BNXC zZuSQ9iDj|+fLyMpsGtqRKE^_1n*Jt(Y&dHk5%$A|l+FdSWZFTdd%jnRjR%eV%$El} zg=||f97C+e=6$D6Z(NNS2 z2oPhCx2Q;esc!L7URwvpfzVaVw!1i z)2fqRiZEoW;hR-X{7o%OPkxstDdQ5h!3kB!83wzJ8ptuc)_+}Gyb73K_xhP8vRO0Z zmj2*bE{jcqFdmDkwg(#FnF3)I5$G`W(NeNq4L`)dg(iPeprf*+Jtz5sE2h435(rOymjaG&4}K`T?H*^a?xuCK z69Qy=!5#3-4OdisWh#I{0MYzsY;ALO3ZtHhb{h!{{+pIEMMq9o?ks)bY85n30C5;1 z!v<|vqA?W);O}n0X~Ua0Z;V87A;V&4d7~3_)F?@0lnAO<-pDq&A;ct@VgxW@eAiW= z?Jl@Vwq9I2bnOhQ@lz$&wI3IpxD|^W#5&D7dt?IXeN9-WAy)McR*#oWFvaeq) zyX`Yxi~~eP96T!Edd%qn6Y}`2gB&foGI~S~icb3rft#@Yodfz@ganpAn!f(v2C z!I4}0LD$X>q(>CcXAAmt@RX26J5iyli^YyI<{RhHGW{KCpsiKA5&>0nh!Aawva}~b zxVAMp9~$&~c?jx&x6Cs04vOBGLBe7Eq@`LgxQ2Lw2&(Oj1cB+;Y9S2Dd_uYRCZd3W z2z0!1Ss~@8F`s?h%Pc6d6{ydNSner1pGCgq$up|BUAWY86Z?8b&LGeFOYhRmYeY#q z6!J*|WRf6ZFts^Mn}9(+`<|GEBKx~-z-6(!Nz*8Evy$N{MF3!C3sTD!kD$f2qhmuB zayZ}CoebNDQ<^8zr1bWQpbU?+aKO)%wx<>>{@DYpERsN_`n4Lq>%a;9WWEnP@q+S+ExuY8*pn0HEQ%D+&Evb0 zu3k2}ca=r>nZGx>&&Jk9IQr%*B zNFge^XL&-e%ou>a7Kbz^QZAvT2vCx%Xf;lHM(M$aKU4+-1otv{!C*ifPwKZmiEkdk zK#e|t$vT@U8;Q->{`o$C$(-SgpULirvVpNrrXPq}w1_zsientkx{JM_2q*@GQNh+9 zA;uz^=i%8>V#0WGm9cSdd z3#VEu!bNiSX=TZeMCXxDI`G&u7GW!N{Rjyn$wk@&a#6259eib%=OsJfu}vY!P_(1= zQX4{3815EB;eOutrhGxkzz(PFn$uzA{v{X=tL2Ia8KmhfLH0Epm5ZuF80GIlIXoSZ zi}n>CT+sb7AtT_Aj7NfiWLpD$Ly$^}PHzoGqfcC$jjRo&N@Q#dUCED#H!Fm%=%f^v z3tw(uPBf!Shr?(0hq0o1qWU@w6(VLR6ca3LgzrMjsoCHvI0!O$4DNhwpWClC1LDk= zuQGoOjxs{!A+p`t@P+IJHR>qfCjo?V$XvEOyKq3rY0@xbExfKd*@n9xI{yLQB;I~e za)QgG3E7flKhTK0oG?Chie(fTiRI&XLU~<95Zm{`bORVBL>!kvp7>8@C@p2)Lo5$y zaEwFv@Roodo#fVoKO{g;KGO0g*zVt-T6-WudvRK>WQBGk%2gmij9YoV(VfvMx$5f6 zzQ0!ZqFl%XcHlf5PL2(hBCh~n{>WHWzFzS4QGuxd0r=o#pf&!bpYK}j`pFCU*i4Jn z{f6z~#vp950P>zK9|ArR=AE#xdXwrt(HYF5haCcg3=95&p-&$jU*#eU6E1ns>8b5+ z?Zx_hqJb)qFk$2;85ycPIs_Q*}$D39Dj7V7EYk|5&S?dupnlX$aGp~_ojD=AQzh?{J} zSE1!ZvM!HE^;&BvrsJ~}z&!?A4hmW0c3LDzP}E^()oSXVSa$yEHd1Q%0jHMHiYg^R z9M$s)V+XdHy!tIv5gY8+3|S|9+{WOi5-I5KCJ)3bI+Qwk`MeRi1$8lRKAb!zi%3rf zTL9ukd5oP*3p)=aQ`rF;ftZ_6eMDgG=S4exuS?@J{}MI zV?EC0=p#&{sylxpI6h5%s?h^j75f7eBq%obp3EeQfu6lBa7}naAHXO$$VphYh3F)K z%N7wsyPG`lr#Js^zXGm)z|G!2P_e0py)(HvT4Cqo3+p=1V9jT7VTLyyXc?TOk7+g7 zedh7e!~n12mDIiQ7v-v6XQUbVb3cwoLWaS*WHa7HIsumNyS9&5;opqod0MmY({4&B zrs!mcSm}JoGiRJT-EVHXo$e1vKEb5B&o2~l+*}^c{t_pAkYU`@OADA96t*I;Azm?c zB$hqQR_Q>+vc_PgvaFj9tYXN6iQNFHnRz9<;L-h&pNM2VI3L{;N`g1jv9*8!-~QuB zHpN2+?k-EIBnMrnoVVjw&3CK|j1U24HmQ|7o*DW1Qxh366M;0`X@Y)MDO{N%F#=lP8o`**>`MWO#awp4+3 zeMn$->p_1&)z`1x8CV%&QqNU3 zU{-x$5&u0`>3SVb5XMS{6aHZ=?<|sxoJaS^H7rBvBLvwLN)+T*ib6j)}xzz%rOx$eXR`;$QtcNfSwOA zg3PjR>W&SM5m6M#JX66e&~JFbtVlTrK5dowcHcE@fCPfi3`+sc*RXV!w51#}0G9!+ z6~^C8{Vod3Y#5zFTHSABE-Ae-+}bCNQL5d@^eucG5RpP@BShz@?Xw?S@WX z21F#L500Z=#p|12n(ctqk*0SLj4pzZ`SiW#0Ql3*NsXRWwDxUlLjIolKK`esq8 zdn7oxZtvO9A70#rmw%+)_|@AOr}3?*Q_5*oL5jP=%f?oJn>intcD?3!fHH@59B9?M zN}(f#j#581g2*~xM!TpKcwL3wV;1&W)#jte`b8tXli(W8f}<;%!7>ht%`WalZc~K^&*l|bH(oxI z*`~*T%naHqzz}0zo5e-|{wXB>MFtFI%AU}}z3Th`h7LP94=SpbjV3V)W4y_zsNNbO zS)SSG-=lIjel+EUX_zw7Q$xY25Fheua4=s=Oe6dxSh#Jcih?Y1+3^S<6D}0;xSQf^ z`pO_c{_h2{ffuMCKtRdy=u-$xU%4S9Dk_Wx_=8!q^s2w865i%;0D&4S{|GewNkf_xSNk%N+R zAa?}28BYI@Y-9hr546M;pR(Fq1l|)bza5z7=J9|$5VfyUnH;~5Zf!iAU|8WVSH*MW zivFIinY{x$fiG~a5ds^f^QIZRf-wqA$ai{=J zc$vytb35X!eY``~1o2$MEYM)_S%k^;%x^{Z!MSg{v|y_O10atrDeLZep(iucpM}vY zOF|)4w;ZBfzm0tr9-I4XlPwq*)ME&}0s6n_Z*6%ItVQxI6o{_3f@J8)_HZ{)6R_v( zLczNxx3Rr;6`&=EMwzfT0N4Qk-{`K{#6xwadqOpdKuA0sLu^&Y@e_IxdZ5+)=FuQaV1=6*%Qp}KCQwE(Pn&s#!BTv zXa{heGxh7Qvtzs^D8PLPqC*J=EVCk~G&s}m7%6oy>0zKt7R!6rgP(z#5zj>20{EfS zUcDexEsW`t{T)RT4BP-Y$Jp{rmW7$!$4fOF+go<8Pr*;2I^l1;9-X<9$|6}A=COCw zW^129rlT3h02Ii-$kInaBYet+7s%4d{0E!Ql@22v`to$|1uR>ARd}zPYTaADSIx&l zhprIA1tkV(W&<%)l|RfPlFLs%R0HXgzGT(Yh994WoDy`{hh=F%zjWSi7bv$r6z7kp zJ@Llvt#Y7?6BcD~fpzUkQ1C(h%!eCnd{pB@6qAiJjl~P}HaSC%I(Mq>GdeEGq%qpH z^q2W?jEaKxp;L)t_3~4m9|jI%omK4iR>({RVZ@AcC+xrqwY7$2tL5|o{VDDT?&wugZxV(4`E@ghwvws=Z8h2Y?8&&bo?bW_nsru5UkoX0j zuS#}5FSd#?Zb{40ryiVAQq763H*@ei{v5D)|adF78+#~(d^PF2{dzca#@ zC4d>g$jR%f#)mb2~Q2cD5D(3B?(vEZ-BdO6{1RLyHD zm!dPQp;&01Ms(FOaG8i1EMk5F{mba6~h}Apw_pcH4Ua@cBUJOKo{q zK+Xr4J8Fye$N=nkqg>T#O z?%AL3ml~6CjPwSruX`BA&x-O5%XRFe_0j4p!(LTR{q*=$r(BXWm+}D zf=eR%96&umGVI5RIiKfUY*Zb^h^D1hyaVTszxm8+U4&i8WyhIz<&gXhyiJ%Vr#ns zh^ah0--3yHgniiA00(DN^-V=?jx4aT`Z^GV>BJ1T4aMRl#P|G|?aWRK@?j6O4r|xs zG?tc}*WRGQ3*1xaYqDG1xyeOOUCKl8=nD-Z_Xsg&G8cSL@1!OM-v|{1bl!* ztKfcqK>@d0Cf--BR#9an$8Hqm;*(nbSm# z>3XL@;EmJ5QjfO?hM=~-{)*VPrOZWWK*}Yf03AL3%=GlE+e=N&*m+k~zBH!}W0J5= z@PDP46KQ?!-x&|$Z*8{YY8D^y|1_26&M4p+bW-x0(LkeaLGt@0yNvJFo*=7L=yT7^ zsflGaR;8Lq?jo8_!iT#axpJ3~%(q8ZU;i_bQTJux&l>)Nrb2O(m5PU9 z-qqFB(pg{}OT}Xv!~XT8FH}Pl9}67`dQVNzrNYdjHz1-r>5B@Uo!60rxt?GLUIB@r z@>{yDp&@YGe#F4TNttiD_ye8|icA1H>BE&cVPWA;R}XH=!+kP>H;Ot$Z{&F_g1(UtIUkU4)^1q9z#3|L|M3|%P97L@ z!g>4bpw$^qbjz(^&dASYMKBeGJY?aXl-BY#@!xD9u7!<=#^(dY{}Vr z=0Iy6V^H0nHLiAZC^9W}-QI38k2Y<5RdmBMU07XP<53;)xT)k-bcDnoHGP-?B?i8P zrMi4g@7B<6oDkT^Q%FP3$|mzbjZ9y==a`2Bp3?sg#r}1YTV3$d#Y8bz{yN|43Mqdo zVCOl#Ws94`f60~Tl9)F@CY@+R{6MbjmVY!53LX6x+@#X^V4Z=4OU8^Od_C2901)iR zNy0(?HZ?ZpWy+HDJ;(x$DPXfx+tlt8<0u^$12rMz`9Te}}e- zj@WBoR!f(=t4|81O;;L-u-Xe{e`mfsDK@Q3jcBesk(kfvS^Ts40ExSF~{4)Qn@CN(K zGCS)n^!A8Z!~FPA|LQCvfz5=fXXZ4!2df<|c(}RT-QBMO-KaotcojPfW5gvSh_(Jk zwlOu(0kZ@VKd1Rd-;Qw7g=}F#dHh6Iw9a+Fd2!t1UvQN>Q`gs?3YV8Ns;rND?P?c| zcF3Af2e@O$Za9`?Vn^SlR%vxoY)$!aYbuUdR4w0dj8fn)A*q~9-oEfA9oFN_lTK&z zwOp#iySA^KA;OXuDUBlRWpBsdw|>H!B_)zNkWsVaAabQXl`BC~*0H16&%CtrA(E98 z3b+Lsy*0sr*(~9wZD8-eOInYx2^Khr*TD2H1OybVB|Ztxs@If6fe(En{Gf_Gtx(%A>HDg{ny2Q ziE5YonL1rJky~aBoGhJmb04@5f;_;|gWmV#)x5=#y8|T!mw!ki}xM}Q|#YV-0K`e z+vG~WQ8#;k!{}u*LVOXX*u&3m>cNXd_c+Pa_xSH&qvDCF`)|RFY<15Wd?pyvR6yq* zwy4?PJ#k@kLt4#2#e~3qgC|c;oN(s=?=F%X4E!@~H~~}jsIwmHr)<-={Vd-b5E{DL zFlb4%J+GcH1IAYGZ?IG8KO$|_R*A8=?}m-27xPj}CKor5)V^WcPLSH&M&w#{6Z7t$ zqf9kScV|yyS6Ox)cI5vn0dSQSVqg#bpsp{@l@@x;dGJl#FYTx11dq_E*I+gPJ zMA!U!%Ah+-DpTram15!J?Z%aEfNx)REn!r+V{d^SiKRS9slS9!p}$)FEv3TaHOvxS z9#8Epe3@Rp zFoPiyb)c6C{?-=Y6@ZF46C{o*$I+$zGa!>*@ITbh*T)KO1+C}jd$kxu)LkWyzI&^k zdH8G|e$5yU4G(QxJr`-Vo$Mo0sutC$ z3;R5NT*VE4`|$5udb&u59u%Tf_BoXw`j<8zuD+~KYp7}dcDxc8D7GDWq-E=92en=t zGoNebuagRQrL(H&#YznkzHls1CP2YTQMumwrwe=Kg(6W`6`SKN({ zdIStI2!WD5l=@a9YR?->B40q`gLTvJJrOqbp-dP?fKqIuq2e|gq6Zd!6B zh(xize%xN{0nK(t4gkMB*3@{L$kQe@J_QF;WW9TbG-$4<@x@`0!P+4QdVZ3>Gsovj z!iHi$2-!`{G?14oekC3iunLRU4+opiMi?$%%$X52lowGk%i6 zVwn&&{XCxGh>`OmZ0~bcGbLfyhTWJ()4Z3#P;QQvnhF7~h$V|^1$%E|nzjf=&gkyg zM=-zjDfbT{^3SQ!-?-tfjt-XnR>WDNAGMN{WuaJ_f%@bLOHWD-Uk^&@pQ2(>XZqg{ z2QxD8#2Y@9ZosdnNlI8EFf9G7CCI9`-TY4K?N0-%%q0gGUvRtGK>dg@as*WqHPI|6 zEt#fnA>cUXw!bwC_;0|J#bXG@#)_Y>#)7(74xbcC*s;S>fi+qAd;!zo=g_4 zs-mhI1!?;St=!wP_Nr!01Mt`iEL(l+;mSDO1vq);za9sWLf#~J<)Rjf|4apEJZt=Va zc0!DP0j%jAcC=@2X4?I$h8`$9{l<~k|I;X+bL@`6qYtk#+P1ozcDIRZ!<&B3TXvJO z<${blbvbW#Q#@xKhnoi`A-PyEvVoD)()s@2fStufJ~av(ex>ulChS|Q(7BVz>s$U^ ziiD1TU|ZYXQm$C{t45#?XHXJ*@A}IyqsIybqF+jG241mR>1gkH#53BzGb`r(QA5h7 z*4EJ$d(D_EozD>0DM8{zn;A!Bxxm7L9dx%s%q1-JT}gwHOyH{L$)te7(`=4BC;7RP zK2g@f4@MoaSFZC5;-uc1bsp`-#`a_*QM;uN>h}NW9LClkob#%l;)!4XbP$M2)aeQ9 z&-{LuDf05+nMk)Gs)J)G(#!^Gjn6X>Oi#98omcd^sJrE}l?x8Oqd&SbkYp)lFo(Mk zj1LxgCW}S%=x!reYo_^L#Pt;5S4UioUwi%^7vKxo0TbrT%S<8l)fp*o)l?TvV@U=s z8>moN5DZe$Q&-EbBT4?xZ+tUPS|o>a*YnMjsC=z(Q8$Mz$w^<2zilsf0>kUw9UD7J zdSk`0eu9-iuQjcdbJgNLTqg6`?C)+@U$=hV+g&QF8BH6}aB%ZW)#9z&)MKOGAc3Yg zyt*>(>t<1a8g@^ld|w-hR{qJ*OX$@2+l-ZfiKMWQN0pqpg?lwfz>WcyR_?d0_^FPP z8pf*d9z;V(yi(NYA9cI-Hx$iJZ*XpP%#mpXMFf0@t?s5*H-k4Qp9eqPG>LYDoGS9T z=DZRI-A4a;Kq|T=#x@x@j(@YiOYN0Z=&}A1(x54Fc1-JpAK7IW*0<58@|1uU17U*& zrq<)d1P(k66JUybIL-PqD9JojN%C#{DU5ZS?7FfemfrhMQkCi%Nm*zF<-7Lra)mGf zg)@81pu5N|zVekyvDdxaEf|z0t8y(~g^S7TnZYC29mn=#fh&II@W7vEE;VGW5ax#y zc2FUFC}ByJaVY7ym&mCJvXAo_0<1_10W`yrS)e&l?O%>2`46ioF$IUm$i7E)KJ7T9 zU$)zNgiu=#AGP(skm#lOfw6d26{MYoc=UOKpd{}rKU^fnaS(~(b_+IH{JZwwhPTpz z&%^oZg43UJpX^&RQ|Qbc)u(+G`I`p_o=mIQS*V+u!GkdWPnXucc*~9grvn zUf?zTC&yyttS_+-Mu&?EP6*cd5Ay*EjLxSWK-`^8)JamZ6$W)=-3z(WPio4eLa3|CLW4TEJQFNzrX%_0{sH4W z(bPxL@S%j?H5l=}vOV2wfY+dXKCiHC#4?L+omqxyedjS5u{iqsnK`iW$U0!ys?J-jKRN|3h`@CBKICE_uO* z?o!o~2wgS^uC9~Lho|xbFeBGTS=?i;Ts~p(R5^zBI7%)`@F0fg26Z#1HO?f|&%(41 zkF7i>O;+yRn;d4~r2}s_!Dj$+#s7*M{8wz617Yc&G%8LmyEUAIyW$igB>I9(7^~iA;m}(jxlmN?0t!5_+e@(z(YoA z`)c#fgA1Y@-uNd-HN^_n%2A(*TyG;jzn})Eu>Us72ON}DuY-=OM1pUa0OjbzIP~s+ z&&QMG+v{*Sf07zTea(>-?h`glxBK!yRgJnb1OqqRGVEIfRy&grm=#nxlZavYa$o2C z{qvglVo22gepshpc$BeadOAEgW+S(`oew@JsX)6O<&^tSHI*G71F;-7m5cnatI%_A zdEnpQ740w#L{?$vrenWTf5mUkpaEKYsE`@$*FS4QAUt85Jgw>9nqD4-c9pNXx7@fk zOzhBy$$gCZ|9LqHBc}oRUBKwsyBNF7Ut{)A!C=_)h`7AK^Iz{C)-W%2Ququ3j^dkA>gk(S>0NzRnwhjXx@}j63f^w#avtDjhFx$T?ah z$fCpHGC|$b*M#PG8Voq{aNZ%d^m_|L6(U~g^f2D+``r%hI%h_`u_DP*xJ}dx6G)vS zvMlEHUOQA!)YCDyoTT3=nFoVCudvWNL&+RjzkVy~>gQ`*AaXRw)qJNnQCi`tr~g}< zq_Mib4jHpCK5xEk0|6Fdh@n?snWo`zqlMfd=0n2@h2G}6F3ZN$ZN6wNle^v{k1t`= z(+uqc>dG&hnl_tcnz@+T^zeER(b(07G2I}YU__Hvf|;i`OM6QcH2l)f_D@7+@Ro_s zrBUNPdmpa469mFx&xgL*RJ}){W(?dHzWH?62i_LDYSF`Oq1$GDzen`h?V#J>fUi+0 z{(=b5ezfgf;=N{Q_jxd1m$N_G@>+ajGw1w4JJ|ff zyE`~Gs+_7f6qJheH;WJpfxSc_ka{Z*!cwfY==}yaoC}1hQ}9J`L>_7*3B+vn_BZFJ zc{_+Kky`Jy|0bNZmWmV_Hs#;GGDQ~lpg5EfGDp57mUk(w)f?bp$>(gdbav<`{uqF> z&Ff43&fHM_tth+_b!SQau_sgtJe3Uh6NZHVNB}RQ`#c)oJ!u7%&g`Gk{Ck6B$uaUI z>oNf(?gwexf(qO}5mgUbh91M)72S}i73;p&)y?2Sg1cOcb@Z@nGRj?gUt_TC5%Lg# zD?i)&-VpNARD2U~e=}2$)$YodZ1&P~I^)aW)%l}qb#3HyU=Iwl)nW~dqLk-+SybJ#BIQOTuRzDl`sxqLy>|`^4sN3dX)rv^Gk5~ClA?3DlZ+TRgS3ZURW-Aqk)_w)g!Dh$yh>sCZC6u3BD|%%*w(igp!4H z9~R*}Jv;Vmn3d#<6QyErL1Cf4G){x2VI|eOrK0^0t_pn});7>fA`AqCDC`ju73mN% z2kHFAljUyu>Kfl%2kfx1@Wc_lCAVSf6nMmdG6*D%n&;V6p+tyfA&s#3h#T?0Wu)UW zK0c$CmG6koPWYx^+cEieY~j{pQnHeV|AcPy_GJdlQjGL)fwqC_f*G8nvo(p!CBOqa zWHwBMapXZli)G;Q*SScnnVR51SQ>`_R^H=HeFneZ<@VP%#W%P2g6@vkLq9kOIGrSh z^uP}AQJtL1KlHtSr(ZV_F>8XGXx1V#2?RIvm?y8 zxkt>xP8$HT$^4xxLJhkmczheV6-_yfg?t0VLE!{4|03pIP zXkB4mtQB*~0maxTegko4^C=l%+RL2v zJIk<)6nYp)l2cf?R7-$wj+9D{u}T>UPyks^jHUPScGYx8dXi_ne|0Z;-^mZ}!4JNE zn@F2fM6yk<3@aSg=RGCBqR347T)je-y;Chp_gS)-JYSBsx{4$p70f%o-p$Em(5!c@ z)ed^Rzp+OVK9Qx*fAT<39Lx8oxHWZLC#jp{S?}L0hO?vA#@kE-!P1ZeX@$DK$BbI$ zH^R(}c0RK2dvlQ$ra$zqr2qR;y7!yhcIG@I3s%qQygyk7hOaV28yoC-2+UG@8`POn zeV>&Vr;e)Lb>_;gm_}9-<+vpEZzP_Ifw|y2Hu1U@8nL=OPr;}>g;;pSzd0!&BVy0| zfz__p>+mW}VCWxgLtUB6L~=3NJX2n=(Se#HFaBS#klntD|37+(iTTRZ2WzhbpR zIgJb9dsCa4+mgdmzS+8xlK?GArQIe)*QY`N1o~+rkc8sDR`FBxj5X{nNYmaeX?_=B zcjLc0`^K|!YJh3WwDxplDvo?)Wys8J+^CmR%%8;IJFgcz3e>1tX$btTuXFj>KQM^{_p6(7OzOTCS1$R7@@NRS;LyVUaNMrLQ~GK%d@J~PVH3WzPqa_u zL#R&Bd;noNWjCzwdmAk!S~hvr9%uISML*9oPkHha9vcb$W!O--qC_5bbRUeYh)yXC zc9676QScxoCn>z58`Mp+SGGcAUGn9nsXIa1w9#an0_ioPBE?P)Pk*<1MqUfEz~uun z4s45nfpnCR*n^*yFmU1}C;l?XU$bhR*Ax)7uv3gEc5L8wc!I|dFg?9(8b+sXSu+oV zy5r+q#j5QT*M|9dB}MbgsR^Ih5LA%BKY067gO{?Cx?y`u-S<*mD}aOSO@;6D=@(Z& z+nEH$udMI^1Zwt|J+z3+pt9T5Z`$Z(bt*A`gME)wqp;pb1@71hR4hA94!mG`M9(gd znbB~bZ`HC;=+7r9#dWy+31t0MkLL$_=zoQ-1urgF-10+EHn9I4@p+i%eGVbsY@q?; zI1rF!9D_INvjOpc`v*`n?dNcqazoWIOw?iGCK^0Zm{Zhmf(pi{OGZWJ*X=Q#wbA>Br?#6K)wI{=Uo=HbqoYqSI0BMghN-I z59q@APpys+xSrFaAwt41{p4gOSXB2R7YijQW|>SRs!s}O%IZgbxn#P(1%929r+Ka2 zQ<5cmr6L@2L`w`y^CSol1>Uqg!fwDMrBqvYdR`zcNPs$as_DePA9le1 zR#CX^%Tl^rn7|DB-UQw@Egnj8p0L`<-KUo#hCl<4f_XZ|n^RrcR;htL(egyAQdtz7 zm0Ezot>~nrg?g9G=`Rvgqexx{s8rsfdIaFKgx&RN^{JUP$q|~j+w0~nE1R#KpO&pk z^WB~tfHM#9K8e#D&#w}MWNw6;n+B#U^+X6YOnGuT2WbZ^GJ1cvWy+_%56SB+B%wA<=hmcJ~WRpF=kL!MazW>4JmruuW--kn2 zyk5`onCIg>IZ1QR-$}atipTVvo0XL6(sian?RlN1N7e$(0tb!uR$*J}!^uFn-g|Gg zf?`HY5xMRubjI?eQzmjr9bDAy8}s$PB1bc#nT_k8bmdL&)9s7X>7T5hr#AmR;IR^U zSfLcbjDE`fdZbv|guqs4qApw6p0SaCV=v;f?7pyKzGw=af?61aVK)NaJ^c66BTdAL zIP)3Q&*PLSN^F>OzM4b*@gDCl`l;QisN~B{MtTb0LpOV6^6Pnv&Yd5<`N>H399w3_nU2JM5Z(rg(yDk@pEfuomiipwsK=0=$wk^`>JDZjZsPb zTz`f?;v_wZ>;LSpe8$s4zaiTHDl2x-0sEr`IRpOBZ~Mh$B`-DWciucCye-nVJq{jH zNA(-MWOtcLH!G?v&QZsTCqp8=@N)w@;7oLe#`;DBM(M&x@X=aeVX2u}LUq^y$4Q2% zams~cBE^z`Z@Ru?hxX=jyeIkZxM8ITnsL0UK|b zxN|<#-Sjb94i^xD&A?gjt;2=P@%GEDpAd(lWL&ed+!_+qe|>(%f3$$v#IUTVLM>@F#jC{X9gdHbF>)8 zw32#n>~&_+7XPK zj2OlVJa_8H>QZQMBEC|#XFHt~Hx2Lo@LySRTljeHf9X+BbbyMWd7Aa_$>OLI=!p+^O=X*W2L7b^cbgF6x zz8t6X%!9srxw4}42G3Ka*uQSqobI8^rud7>^sN38yTbh6vhs+b)2+)=99q>jS8f*e zWq7Pr=1);h9}MnMo7LU#Uo)7%SHQ#IhBV_T{+0PCs>>ULJ{c)St}l2Y{(CAlpq(~p@6yNjUb27? zG4fOyPCRE`jJx}{J}^y%b409TmdqSx!=Nj1B@)z zWe||yyA8rAHbtO<)f1J>@LPYg2MJTsOCH^nO=;I%c2TQyI}Q#9{Mb7>(rsQLC51ku zC12hk?Z}*&muB$A<4Xoy#K<4y8lWi-s|2jA!#LCv$azq;MtxOkHG#95N#h?RRozGt z$4+iATqkm{0(=SB+CQV_NU!( z&qK*2^mNE zZk-JZ^Bq-Op3fPZseY8YEB;sI#{H)<_~A2n&;$WL%@p+fJC_*^Sz`9SML@H*2~So1 zbJOcGl8anHI+g@<4`jOSGU%u;HJipi062%r43Vtg=r!wGMk4FJ2uUH*XJ-coM?^7d zVJ}UP1NqDZQqjkn(Se`G`Zo^iGs|b|W z#$Y~*;R{ESZ+6|yia*@cq5lK|GDQ#SFRO)USf-bks3a012*^-Lhdw)307TEtlFgT~ zK3q2t_>CV@``Ng(v2dH^0lDS8GE07dlfX&vi^jwf+cg zt^F=yR);d-Ls4^~U?ok}ppcCEy%dP=#^Q^CSIekOoqYLX-0d!PbjLs*x%RbyO5LA2 zpT3bxM0^)}v!j~N6%fa+eDtv$Q)2hWNJ0aiVo;1QSy|%~*^Zs?wYxja#_{hBiR3aKVcPW;)6WvVDn_8y=ky@sYzg$37;~+e#af=z3cge4noFj`H*NSL|eAlfvFJRUz}=;`|F|MZ+vW6XA`sFFuao z$^HB7cUBnXif(HR*YaWF5e%Tl#I2>@$@Q?{VnBtut^iM8>T|vgbAxZ*W|@uesrGY{ z;V}+@H4 zsZbFYCBA$gQs(!fT2D{_dk9Q*=i0nNmnMQE03JU@Rm_|;;vnCWr`kcmBS@*^=!MY$ z=SFKDU%kwI7E)Y$x%PhUfW;aT9S4DV5gUa;Fxv5li)XN(EiW_wgdCtwltf1S%}Lz_ zrrEtwQ~n{y5A^xNLmwlUK z;5gy-BO=kkqK2L)9cc1MdC37|c&N!$RQCEedbV4Swi$v~)&rntNSr)^~v~ zVh=+!rKXO>e?xWK_jD8k@@- zcm`dkI9mpNChE|#vyp~x_>p7rMbD4FU&s8x`jA#Zieypk5q|8(t7Pn9zGqGn5d16EmxaQ82i$Xu-BsL2@ zAc{7^$pKqfP}IvYrU%36yD#_;MIhsmBDLjR-Q#K=K++cz zo|I{jw<#5Weft2)o&%q%Z_9h{GIO|4trn!|x$X@xoBd$jH7(LI`E28wHp~{cK`n^U zMuln*pGfPoK@!gse^eld>Tib0hf0mG3gGV=-u&&Sgt+2ia|-WQCwInv4=tzU9czQ2 z@Ln|1Ya)>`CJ08k7w>PhQXiF07yE{q{`Zv7lx%sEe;Y}CdOj4?Ntx&En|jHZ%5d%w z6=<~ZbI1RH@Fjmsts~-L2zUi6z z8^hmMaR_~pxSfZ-pGDjKhM-MuMNo!`Za|QohJkhx2*AKK_C+7ODS-eNtr@xjNCxt& zWFG@A9&B3jlhnhWrJt-o#6Xx!0thNm6yb-o`N2ZEkjvPQwK z@5V*jo=YWPUi=6F)9?$BB-gVdN6m0{s6gk=)W_TP&6{MRf8C8D+nF zgk5+Yao}uq=S>Jb;mODyevuTLXKo*y4xms(=4JknaW=34p*on(|6Pc$mU*4p@@Pe0+5lA4!(*k}^xu#~5f z=blC4;=-d=OP)9Smi5&ke~Gz*HhJ!ocYfRVC(sW;o#FdmIVEpLcXZyo$MZYnRNCZt z=DNM;=@VHg5~QgnSL&(sUq{3zd6^1BI?^|Vmc+{KxrA|a74NsVw8Km1ooWckts*Y*HJaP$xcR~79HlEWR74JR+ zN{SenT6WKJLh)HpxtGF8KNffB6CH0-Y#da5jKj-31~7)B7$W;DwxTvw({4n#T4o5s zk5~bzBY1pywd~%*B~q4-6BxOeH-EF<)ml_3f}6tF22aN``)=ghlemtf>vwZ!sH2a% zjT4nyqz&a;Mh>a@fj9h??2m_>c|P_Rau>_CDw9U6($w_i-J$ z=Cg44T8LQm`0rO}NjF>Ozq=0Yi#Nk>>Rks1&hNZJql0Ajye$aNq_KZIPI)G5QT+va zwvwHx1NYaTHP2oP(H1AvV1T9e2;YZ zJ%9~+S`m;5j=FU)_7GEM5uLd+v^+MPKRfG?S7_V}kcP~kwl7YZ+Z26aRV%kMaSJ`{ zISqHfrzyX3Z@We}42~~y9mJ_`GM>mTfwPAy@cSMPz#na3XuJ<|JNwT0I*?r)<<KzHL?fo4%R3CMMNFK{JR>ti1Y!Wt14urrWq-gAO>N!nbYl1-+uC zEUIDLz|-g~HeL3(s^WEjgI+?&laIH2_S&)s2`V!2T!%lUzwDz1SX^hMtWIH~b0Axr z#(Mls0h?6Y=hKQiCQm&3k*N=H5$ItVkEj^f9D+_>Lu)*7<+*4nM;k z!0*3NMsL4J*1L>O)(V_%-8`;sUOyCZo>W<^+I`)$;uo_zv=V%5)Xq3;nfJ3C2f9l3 z@+OGJE|Cs4iTH2K-l($1J3X$)e&iBTHE$p z4Z4^qO_;{l|2v{vthJ53p9BD?qpuDqljY;5HSWzU6cH_FUm9^lM3f$uwsETd{+E7O zI?wh8J4N$R((u%z1kKoMIi77LJ1t$UvpE;=40XF9;iAYg#4~C?C&t`U8|Kg9z5Cpf zA^n&MaV?1vYZ~PE)gQ0|nv7Lj9TYw=7-~l3njKA?>;RO`9SfF<6b+j7dAC@*G}e-% zqg`auYWYZ%KXB*NXfKl;Hn&Ev(AVK{2hc-bnZCj8Z>OaMz=7t9U14fMh@j-Q_E+i< zjQ|lzmZXRx`|7SZWhfhRjSu22e2v5*^!6$6cu~zH`G}S=*QFMTd|VCT_#QzFBLd;+ zvhzzkxLsLq?&yK;UE=G35ic_pQCu#G^_%)CW?SC7 zK5)O^`mea8WP7PMBnm_YZ%MR%fP-k514a5e&VcEfnF*| zsRzWbp0o~FjNk-B(lBY{L_0~9NH#*_G>9>`c}gJ^f?>3eVl>E?X25A_@>$Ssu(V^2 zU+fGLMV&~_05mdsG8vTaGJ&mcMvnrlSEACvVOtS7mW zgx|qRfj+>4rkyrmxkd3@!Yfez%EKh(g|lZuys9H|RBVPW4+a4n%4P;Pi=W!m!4;g)LzHf${hFbi8$LkYB6P zIJBt9w$^iZvD5JWr29&`>sPE>?D{Q02uyP|yY0i=wNiq>G@JL<|X{z(kR$0#ES}?%sJL+u(O|zp@B!L7P%GwT9<@ zO11I0cH`*?-vCt`5JRWiZc^TMw5|oC-NZ{HO3HZa9>j7X;mT8lR6&!4PJAd2F9=wy22*b=G zy^S5f?6nfGyAq*qe-Q?tDh30@*v;3~+cx8^a)4OBkJHPMc|o(e?a0G2dDrEp)gL6Q z?J~4;_dahw_uT$^RBm90T4A6%08u5`lW35>`D-I~n;;kle-xyc)1BfjCxPlTP52n* zW1*pC{Qa-%cVG8QNZ1+9V#oa-dhNZSnGklV2xc`!6h{^QDE;}#KTa7f@-trctfi4h zbISmolSYFep;I13R<|?v8cdrU6iuQ@f8nIvCphp3_HZ}kghJUP{P_UFvK>Fp9|kc` z?&hq|*U#y%T)}jJh}*G$?ss9!nZLg?TFxy71V~yR?m~Zpc~&H#hwnJO%15~PmM@(# zI!4=@@u4APG!R2?X!_sp4kD!4a%pUAXehtBCT1saQK+4qXZ%?dJ-h7Zc;%5GmWwGj96p#&DCIK0rbx{#h&ULw@eRP9)Z9=7Pn0b(ii`ROj zCwqTR4gVuXn<6B!>c&@3uHIjzaeI2D({li7#{vr;#idBtvl zYXO*L_4O&jw;wwdEL?}7QBa<+v|KY71Z~gyk6rW5OCc_}yrorDRi8fHr;awtqsObP zLH*%_@{rZEuRU+|vD95^BGIeEZ0}4TCB7mBIIOzEH4Hr^uQ*8~zJ01Bmy)U+OGNk= z!t`@h)re_Tr=dC>jPkBv$L)7 z+>DD;xBK~Xm?;?NU~YVBisD8f6@l!dlJuL`W7I$|IQB`$vV#B>0ex6up{_Wpi zUn6V3gL!=Y%h`nq=br9^MX`^?2g9(p}PL`$%L_rKLS%+bc^u zJ3?%KzO=|h3$fA;Ned(XRKFn)0)v%>(SeFx|8J6+R9u28iK>%~B(aNXEEh84)Yddh zv*Od!)9nl8?F%7NC2hKX=;L#9)R8i?wzadi`TNjCy&hW2OdY|Pu*8@WLkvY)b_#Hn zF}sp5rK%BGNSz-ne3*PT-Rn_jBrrpuW8w~DfYQn!``N5#S33RTM~AbAH+p7!qPjFw zP`JnNPt`iNSKbZ;S9MigyiKE70wY_Wr@dY19k6r=T-P+7@D=9dZ1XO8lZ1ClWGm4k zUm3Na`7^=x=MIa}e&Gtp;3D+x)!({h_ng3Nk84-$F0Qz+PxOEV1yY?_MeE^*wym13 z$3~{fHd*vBE*yMCc&xYyyN<`T;#pjN+Gdw9EL;BZqX`Uj31_(UKkUN$#s6qK1oY9{ zNi>D!qAwDGU0qYC4?`lHpq9OF*nAWwy>nFvUWu!XNzp5-t0zScX0ZKwiXE^#HF!9H zW9M^LYgcx;Y#E+xl|*kG6me&<=yl-BxLejj#I6Eye=jPBRl2SS6bix)51%l%VBQWbxeuQ?DzKLwI7z_#~GKW^c*rZQ>ke6$}DTZ{8{gcLofYmg&PU!WVD3_0w+EEkObm}8=5 zvhk*|-^O*a-T3`Q@!8Y#`R&@q4c*aBvqQ_{zH0y0IChIt`%F>i)<5&u%WBJY&VQm| z_8HhlPC&8i$ZaZ^#>cJgIy2rV$1*0h7gsiRnsA6ck)Oyf?q9sc5ln;)p2v!gNdk?j z)!bC1`7gBed&qw0?W;lRx@E6%y#%Znj9o+5g8V+KQDpN|RbSI)Yi>6jtytM~t}tPr zm80#DF3(vVKSR0)KNs2MDZ}OTWQlj5U6Cf!mk#kkcgdyJd+dJkL^Krg3q7y%S8ci< zB&QjVz`Ta;iy0UC->ugxOS>`Kh!|wvLu??NL59GaATX6u)z{~ciz_M$>gj=~Au5W1 z{_$EtF7{3`MgoEwNiiqyF*Et|FaHgM?$c!`lNO-n3AIESrcJ`r)W;sG<n8a7}X{sM5NcO}wZF9hTc3Z8DyA2%L)Q`Oj;MOe+5 zD%r!pgV-QFtueWTy_HhuN1gpuX-MfGWYoNKx-JR5=8&SOqR0Cwf2S0oYa8yke}~fq4;%l42wA_R#KM{97GeqOI z75kZnaN+40D89j?luqrQ68MM|Kf2@GTL9f8gTr-bq@6NA8sK^SW1|en!+l}?SKn(l zu&(!ncU(tO>e;hr;kP)*p4(bmdqE5ly4uTDW?YPkDORRANVh>pn-KRqouY|4sFk^o zt8`RbU+eF^3rDW^Gn$jNp_^k^>4%Z5jDrokVs51P2xXzehsoW{nQI*(7b;B9+m(FX2 z`6)c5Ysb}Dg|`@UpkzpP{1H&$lEsjP!<-daa=CMlxwLm@UH$KlH`FdIcja%_^{~N; zCZQe%W{T%vUfLBT<0)^e3E>D_gKfYYjTa|e2g~g@=cZ~;h+0kT;8YqbTCXBYg+nBTDlW*925~Vhswwa9TQ%XXy{cjp7wV_9Dm6v~bYlAZ*~SSWL5k!>0&~-NbU_wb z9a`4{P968rvqdDIBqb+m1u3a7LD2noQ1qg7#BBa?8r}o*ZbnGIKrjZU!`>9{IBoREmP|O>0;l(S`!dP0;o$4JA zV|$X1b`@b*ZrQlga{9WHFnWIocOcijQd6x!gD#5X2nrah$-^f?VsHl43RF3ALGy5V zHGeWSCrHbi{>9AGXhH1uU+unfKYJ>5w6)XL)zL^p=}3a`QaC#{v?d?Gg@XxCVr3}L zL&m#U6(*?0#ai0@b0to>pY9rGe5&NT$r=*Cfk@r8ww#3=rG1Df%W0ogvY;${LDpFM zPi)%cfTFsw+z+e(z7$R#6>}7pO!*$A-Zu;hNUH&g)3|w>tup!GpCymIu~Yy1hZ&a9 z0|u1bX8ks6Hd6a5zc2f1ww7PFV{*pVY)XAY&*uJh9^HHev>CoSd(oT4wJMNRK+Oa_ zgbNoTJ4i9GW#w@$!qPHh{c3c_;WuM$O7*Qh3@Fa9u$r{@L5CzW1ZFQ_poT1y80Ov7 znaTP?$lHqb8(wldS;mM05*&>LDmQ-ssaIk7I%BnulNM%V{B2nh_3HG*gcm zmo~wEHoXt2IYX*%hbH%Al#)#B~o6p3|V?&;_P!&gDAeBuW z5%+i84=k+g|MhWuH(@d6N@F@A(6b8OyS0Zh&%LH6s`zLkW!O_-ooqv({h6CJ$o;&c zvF(%Z3W&H25TVXbyGP7M7&if8L|%?pgJj#U(l5qNj1@}dS>uC#F(H5?EMa3}x_z?z zcVDpm)554dJF5yi>IB*Esk)OU=hP*doAFSGLhP%U7%{cMM|NqFK__%}Sp{?qkfODC z{p|xVB>l_|T7QMr06j?aRxZfA?Jq~iC}PO{Qdm@&5J%P&9U3gs!Pz+P+%ut z#^fn=(D)$S#&^bOj0i`dj*nv8vs1P4vXIrkeVLaV+nLJHOR!D`DE=QuXs$-}CF?6n zS>IHFej%FU#@dshKpBlNQ(uX7zoDHt9z7FM?&Pe`0I2{&aIkXc`$@aNaH;u0hoz4c zmAvyY)k2MN+)z#uCF~C_>bE%<4!)S7yq`kH^U`FLQ}W$oe8CL#{SPpD5AMURIvJ`? z%?L!~1G(Mh_y;M*HDwfN`@Q!6qDQERwmqUMp(TF%Alvve5>=9>PhQh%P;rF%1*PYE zm~vagcYlBZJEhRyVsp4LZCcfpYZfhHH|(CBq;%GD=uLT8fiGbbrN_?to7FW|>Oui8Mq?r@!fq z5xC&k;q}jJj9sTYLy^C~4}GtUxqB~O>lm8Zt5r~AfU`*5sR-TP~8N>@*QnouO zZz!9HPGc)svVK$ZvYS1c_&qRa`=<*+ras+Ig4+0l=zb-{@-h&-ne%2>!bUP_a#x!w zQQ}~t>*vACgQL1gxn%yCepqFL_L2Rcv`KeC3?(|iIN+{9$$ z62XJwXffVXc-e2$UR9t9_tJ{*CA$d^%}z7xT%~;}u$2}&_9d7c5%FbljHq!}RbQEl zEFO}qQHvmPWv-WA|GhbhXObm-eeC3ye!7lkWEKsezLL%W0Cnv64eb0~Esx(({5k2v zkn)orMWFj_49^@KD-qbfmBvJslm+aSQ{3);rzU(7goNhyzU)g*Ci@gkFEzsg(^8X7H{oRqjK4{{PyEOul({nw{)2|XE*&>KBKIO;%)KBm2Cu|40dj_R!r(k!_0dM~4a|FE|92R_ z`;CwfDN3#pCPZN1A;P6i&}e-D$;m=~{{_4wnn(U#L9fMpri|2_!JJMlR+e9=vw2*E zDyCS*;&m^V^t}#Ru7Lj*Q4B~(lpN=B{yEIv@O#_k8UKV31BR+}Au{d6VLU@aLyN&o zeawRf(+~qmJXZZ;L|=UG!grU%SO@*^=)|by;jz?Y!bvX~(BV~a-0XBK|;=4=Dg z1g{_}5&t3*AWaB|5A`GA-AS+MarH`wXV7)9f|-W>{O^a-cDxKkb7xoM zvTV=c>b(AcJ`M=TELwoN<$z4lf4`<2O0?ob?5swv(<^hr$ssUG7~ih`6%EzXM1!fB z$-8kOsxRKJMxrfo01Bn151=mn7U8e_3=|090}c!VjMt%$B9zyIl-T`x#fJLj*l7^~ z0s&|z3h{ISi~d&{@V##QpRG_|jTv;K3h`zNy9sNL`ldQpm>-fh6Rg>)0R{hm|90Kn zkVeAK%k*f1?VB1hwy`aJy+%wOu%u{celsz~aL>A3-zdLHtC>w$R~I9L(}enq)pYPv+xK7E{1WP$woSX=M6XT;K}~#!(D%3cVT9t!8i*?L<(!wI7<8sBqhI{};8_O6?4-9pge;h_%y zjj$USZ4w8d+@|L`>zu6TanDfVwlRD;4xFH;lFs5D51M63nFrI;EFyzy4Cw&~*l(G#|*at>ZKvQR#g) zAFk-4ZUo^O)K9>H-^}Z}r4!t~3nXOpOaWh=KmhO(+7s$(2cSmp1>K!w4t*cc5{|n4 zP(p1C)ZV<7+4LtHoUKZy5uMkEX_tnY-2a7`e|?J;a@~OQVu@MQ9df;pRZkGMN#(WD z^V;qFHz=AJ;<7d44)3(w;H)GBB0K27C;SgY0o~~vcG_?=J=X3u&StEWiN{XEk4w0x zVpuT&LO;hq3Oi-Z=YpamOSLKm9eYM1H4Tl{RhjojMb}+9;GilhDCpM3%yy%d)cj&; zWi^Spblu?f`2wMDNT(qvcs7A_l{?Q9DWD*HE^@L2XCZVI#L&z#-2VVouEV$j3m@5V zR#8z|^WjvP@5MUJcuoPcK1kf#nBU?7C`-et-Hb$awK_mZ{k znw_UUTdY7;4mfBX$MskgQ5 z!uvvKW$parpK>h01+(0bI7WF*xpScO`W{`TUAqPC7avgV3w?sBLk>oP zSgQlDlma34pqy2ZdT3Pf7S6lW($N_x+ffh%tEt&oS~jc|6;Gs?GSr~`M4ek8 zY95FM>!dCi_6}KT48+19NgPsC45EU11JOACU)f6Q-i826DRd&#)O1^Yn%@ngueSdA zWBL#mu6xA@*WQ(_;p+q-d&3tIk z`1)*}eeR!rc)oYSjTR$$?|E+Cpr}djb_Ej6myIr;=C?(`#7OZ2J()m&v_Of(bJx&JA!}uQ>q+S z6x;MjWA4O0SpxMn?FOg6P`z1STO*(mnHe75MHy%Kui{TXa6eX*HNpxXpRSh;N*iUz zEI+2lQn713Q1|w3KF)OhMs5b2aU-W{h8bWRIixa>r(aI1jzG%&*h^%9KXiOux5=&I zmG}w+T<~Qv06orf{2KW4r+t?W*sOt$?q6*j!a;1&T_-XWfxh0zWpq z3GO`Z_>O8dSI%3qU~g`20;FKQ9k){mY$q;GlY!Dc*VP8_y!Q4!m5YOAGIzt!)?Gx= zEBo;wpJHIN2_1k6ThR7DCOP75m*m7mZ}2TY%cK<$7qLBN+rWO_ggPZf)VZ?JC^~fT z`9I!7`lEfuzyj6BcCY+fcr)7`L5o5nkU6%K7q? z@|0|tjw#@>`@E{wd0m~pa?(0m>B$wlwtI$xx>)MwOvgY(_3V<+kf+_t86&S#soB*P#~_uspNmK^`&?G8}9+#Ql6 zoOPMDX;RXP`vCo$4#S5ora&qUCiGT#t)aGI6pg5l5(Po$uWjEePha}S_L1Zr0Yhvl zzK0W|c=R6NVfP2;z)k_>lomN?K>ko-u|y#LegFAMJ6(~P=;9ZS=#Y@}(X4CL_FFJb z6Tt2kwex;ns;r_M{{L^ zpZR)sLNndTl}KQZ-vx1x=)Puo)?<#&pHbLYSQc~&L*mXo%>c3i z&4bgWo_N=-nG?|3gTCzK&Ca$qiA@}W$c*S{LZV0t-lxrM!otm9P^@csAS_E<^4eVt zEGx59RUHM(q4MH|dWq&&GNEV+-W#Ivl94RiqN?ku<-oT%c0PvZr*bg^{OgRAKeHu+ z!KoXYn$AJw0s-5GM!8%((=HkJ>TP)3sI)XnqLbre^9_?*7hsk21~fcZ7GIz#esbIf zsLh6+iwOY%!Sf8EVTbN41|1!p5Ef2OB_lf@pG%16H1#6y2qv9r_H}m;)rA(+*76g4 z380WuR8(&+NYp>yEJytK(DO6&Kh>Qeo;sJFZ zY;0`Xsn3OZW&Ybb1%(vL8Jg@O&TFGn)mEQMO6p{one+91FAgByS)=sBR81bbd9MJt z@)_viAz>>DkESLkiIm4ESMI647eD_M&^)tIswgS_ zT3hRFsaMPt8K~|vt_%nWC@3iCOXe_2VHs_+YrXg;athMeACI^17`|QlT8Ta+Pn18nOImAdUSi{7<8^ zd}S~bx)1L|9y_i24a8@+ychMI10DK-Zt~H9FN90fJV+JybqkK-jFK4A_b+tDE}KbwC&RHdyZKY>^_AcD~87W^I{5uRt) zstgF>;^M+4pz5}9`VgT@xiMAEHvjdFp2O?cb#A-#f0n<9E>Z7bV;SUTE3t%x2pVH^ zI}{WGE%?u^&~D*hBe37CSC^jjy*)j<`};Z#PKBzh%O3G@aT6u0;GdD~QbXL3Bh55< z4W#m_m6%}{=)*t5xzQ%mJ~Q(^1TKrRj!p!*!02co?k%c2ccN)T^}<)^kNnKo)JqW8 zuUAx7vT|_DSDJ)3H(x-s-~)j{XZWq7&1rsq{_(!PbpR2OJXRQDu-2OcZdVW?dHm=R z;ts(o5j?i|s*R#}6?sln)gsF zvcPxC;%hF)ZLtzhbXfL*775($)gK*ZCAHdRpn@!PVXQH>VTBqc{7TCeIjlj9Qw)0$+h3Ho=WuVqsIeyg>$EfdpaC17wKO~6Y&PzSLQX%SkoC8Kd!A9Li z7pc3%q2NED6>4B%(L-zp0s7i+e}8{ve2MlqZ(|693GNuu+}JL;KFO~ISpu)Rzk;Ub zJ2Jy-y16g#SxLi|mX>;3QXCu{in!S%w!|Y*J?fdkrNmEnKACQzt9C&Q7y5*qY#ZcE ztk~Jv&p|v~i<*@qR%}b$yRe|(Hm@Zq5fCbeO<&Nlv7yWe`!0a{a)mB`e3UQ1&W01$ z9h{IrYOAj5{OmU9UO>y9wMg7=O{om~<_&3g_xhBSl=SrUZ~5m?70Q)~Y%4*m4Z~)K zn8VMSnNp7ArE?%$>x6Fg{vGIp*U}Ca-P@>pU`=IgO6VL3(n;jgCqd@{Y3mF9wEFGp`RU@ES zDR7&>`;#ck$%Q_J%el4%#$4*dZp@d62)xrljemaVn5g>**GXbg9Mj)vv|)916%&U5 zsr>5ID?`IY$S$5pfj`*W-Mz=gM)LUa5HBIM(5o?&#EV*yIK3fdq`Ep1W0V7;H%v@_ z@VWGe!2Tv%Apd8XMprR+DA!f!`?wnz@#{T|yfbdv1%@Bdz0)NAz_@U_meQ+W0a$^x00 znOBRQxb*Nk$}NhIAXI^hhSr1R`DRZI)C0P?yI0_#EWvhUbTo4gEY?2?l2x3VQ>KRx zAJWqLrH!Wpl%lw-g+2$^_u&w6K6-QvPh_M~#6V9EX^K2LCbkmej&Ov>FEAmn7izZm z9y~DRr6Y3p^wjw0CE@4s5ONB7RHixf#!v6nt&h1mIdw_kwJU^8-$AT^-i~>v{Q~K- zHhORQ@ci71fq{WOEF=WU$~R=-P(L#;5V@=e8FK!!v_B9MU2cF;m65^b=Ym+v_v*4l z{x_30+S@NTB|ceA*L>>5-`aSbouALV@R)8V>P}jt=aFrRCN_2XG=hYLq@Ik1hGy%- zBO@cDLtHGe=3@w+0UHkY@@)Ta?u-w(l@tZI9^aO!S9%lKNSGA9oC+79vLFPjr6jlkbXC8VbInk}KJ5uFl$e1Je8+*U&WQQW+Bt1307$lg@gFAQ7< zIPyworHI(r*v!m%!NCeV1cEjvL)deVgn2b%ZDkHloSYPdYH*67C|G4WVE7vo6SKZL zH!=M=BC9kj>lK(lun_z(Q~GF zd#lX;{(cCkzIjW_-HpriIV}uZ5%D?Kyh}_p3^&jX_qLNvq{H@h>lG6{8yj1qWy}FM z-pbT+Fe)z!RYP1cBjIQ;3999s@*23i3$UFh5aP@7B6#=Ue%UUY!5$_I-n5>sv9Y!; z>2-54*a1tm#*vtrIhYi2Ie&FQ!%>0RM0uml<2Cr@2303k-fW!*<1#T>Mi`iwlP0K$ z0AO?fb5#%*Lt0y@vv+XtiJo$D@I6#LA<_|&!EeaQtM4M)wwK>ay04vgZV5M|s=OS$ zmFTe#<&e2Ipr6>2i?m28^%0YE_Sy2cB?>o>t1GX zq5bn=_?)@0?GPP!=-*sLk9p~8->4fJ=3tD`j-t5!HE)17diHT08UA0SjUsU2wKwi+2HBMKuxiYR2lSd6G4S*$)8$ z0kG=EnBalFmM#<+X;^m{+Dk~hP5O;Bs~kQP9v%(``9&)qLP-#1v@XA^UD-(7(f(Cy z)J34`uY~&_%C1zm(Q>2NafP5ZbQrFamXVK7OME-S92vVm9P`J)ex z78e)G&(YTc6_|{|cOlK3hTL-?HRcl+Ak(CI5!IYfe=l-iu7TJBK+s8%pxI{%Kv-cT z?LHQ(sn35QJUh8T_201{gB6^(qykUD%KTl!#RNMm3PP0j9}v!zR6cxBn9!(R1#cH= z1QpOIEuzsU-pkZto8?x#AW{fc#KOV?V#qSZX9Z0$IE~$6&ur#f(nBI5B8oKUFPC~q zYGUDvD|>kfStaxsqk06*&CTHL1ORCVy9UtO-J85(_*t|i#Q+V9`4Rb$m6xuR7)?IS~NS$As2C39eVT3FD^db9hcDQwgcg{gydv12Cg)s1eoTVpoC$!FvJjYTQq=9R#tbu&8_w;E`^~0gqU6EdJ%Ke#D#_o^5Cb0;UnI7 zYC!pB9i5CrvE7v+hZC#ulJ4&AsnK^%xI@mTSE835t_(ia#maIqJ$)Pn8A!dSr{{Jq zR1Od|9xg7diG-viB-_L_yw27RK$V=sTtIIB!;zEA^5jHCGtob>JoZ){kHDM1c)r?z z)e8QUaOTX*hK9nTqQJnwkDDx__V6nTaAvzU8_CMbqP1)c{IrssC~2Utp<(@VnP*gm zvZCTqX#1_Lt+IR#C~{EVltqPwgvt)I%Ao~8KTwnuUQW}k*YomfX>G+xT+s_Rr4lkO zh+M5RXIxD82Nv2Nz$<>i!D$U{78Vv5lH$_Rzc%j3rmYm)I0l^pjH3)pw#n$Xwv6az zmO;6ADxaWW?eUXnX6QxtcgXRdaB0(nLB5y;&{1esXyF|1sMpn)t1J`KrVdC#uo;%QI;G9N|$q>g(6X)9L%o?(BOM_U6^A zVaOgzu9Kthc2To*f} z!JI;OC*yXD9ccWRSv#o*-xjRiNQ=sNqIz{g%D~`VTU+s$2rAA567I;rK%Ij%gC{j` z6nmM*Cnk38+U4o^>C-1uQ&aF|ss={1$g>G^b<~qkGR>xP19?Muv{d zbB^Q2zv*RP3J;$eS;fK8J0jx)ckRFd#aZIksF=ZgYt5rFs#ia&!0v?~V`F3AzTKQz zFpQ_hc=LX_U_P=+Xr0vh_5Rf-S3&++L%C_4k(qfAwu;~TXDIkD>)&Vf1srv8adCEj zuWLqdh1G(Ba62IPkd+o&2e>o!*oh&W0 z)rsTHy?4)VX8iM)cuyanIhYrD$yHEca7OXV{v~Tr#&C3-yehp*T zL5!&y;gdcWchrhFJq&$6I@+YKNu|67=qmdLZ15cP-O|X2rPBOIwahguPL^$x%%(9CIWfuP-hg!UOWj{H~$k3+-4_);L!Pbmux!1VF#z(>E*#54N@ ze*azjKuatgYEoM`$_Z02NpSUQ|3uWXOPU95{r%S`JI8Q`O%4e=%#|FU4@)b6;1x&D z08Vd7A`WS%`vL&qFe)J7ZA0=4I}9jy>XezSE!=HD0^GXo;c^b05iAC*T16EV_s9&0 zAo>wusIbpW*>rZuox6y;)?T=97{Uacc%?_U9~UJBZ~#j+67E@`Y3)3RZ)zt1je0Yi8e)+Q!EG~!gx>{1()k~MeCJkLj{1b8cLxwKQqgCCqK0y`W=dYG1 zD=V{eaL_)~+1A}Xk2-Sf6o=F@f!JS@xR>Liqygx^@d?~bT(=>^7T|rDqUmp^4R6%c z)xqdbqGP5V86SKNi8M!U*&%FazL=XUOZLBIl7{xUJ=cozr6rf^T}pJpNAAFu^l+Rl z)y>_#=6Ebyp4o6`iF6L=4%CVM$*P5!gyDM=gRiA+mw{d2LQ=nY(>*%CP|Bokk$Z@S)=_aZI!5|yQgB}juiHc#G zKsYCF9IY&kjxtjbGOB9m$7tQ_=%^bsXh?t)m)$<8geENxfu;YHybp06@$ z9Ai`!6@_u$XdPHuxIdmSIJ&5)u4kiI%2vQejicZDAln#SWpCDx9(DFvhvwi28L6Jh zRKiAs(<#Uksm$&Q0jcSE#+r5Gal%W`x5i=JnZ_aolJ|SiA0J0AEC-t;F}GQtqhVqB z1_|ActhC?Zk~_b>u63BVb4i+s!K{BXdSX^K_P$G+#VSF^kKa z8zxk-S61#WtXb#a<$L&W({|W(`Hhd547u2fTRKyyy4Te&J4oiX)BvUD9us3T zbT>9JF_`XUE#2BwU+*>6`xJ=U(-F`XZO2MDa2mJA3>7zP>TC zjz)k@-(@Dk4So;EHa|S~MwyydaXv$dC@L@EjEsz&{490h1(2fs$NCg$E-o(3#};mG zGGwsIF;RUDm(iDxloZ~^+Uas?+9Y)0dFh-Z!<~xSO1n=$f_?a$JJAjp0G{6){-*Z! zY0RmcL-s5zEY$JOH?AmY2fSg#$2TBNmObB|?SIR0fDikCjdS#_q*2o-6h6$gs%2?)m_jG7Ww_JU*Y%UFGZQTCKAFf_ZM&jcvH2 zGd?lRDWAcJ+Ii;j{G`LacdQx~n#{!k1J>GeMkr{@oxtQn6}{+Y3sguKHCj6a1%jj!0}qe(=amC)Ull_4q6?;H|c0q*W&aB2 zQTsl9k~`O6T~QWzHuZ3PN`o8Joe$@Q(RHAmz>GAdQpbln&e3&_45epgz8KAnGQD}d zd^ejdzl$mN8|$x&CNnuvLT^vBH?MaAswN;kRe+b5(Nh`p*{YQNZeHHjM@IlqBgm{u zj@jASKzLRTaTai-w{6=-%oPW?rs@q14HF_#gSRXCdSJ!S>$|$`8#> z$Ii_o``;Nd8pQ;GzibfMIN3#^gon?rcdc#j=qNNmnNUbG z|H&z7xGv0pUBte961vAzBP#O%;C)uJgisah>gwcWW!(YJhUmr=Z_s#vyAK~fmT%)T zT_=Jwnc{fHS{1v)(@CI({H)&8?aW^gs`Ef)z)KG>EX z4q`wRkd!nyHa&(Y06+gZz-Y^>rUz8)niWf4Ji;;&$85sQQ>o){i0kX?aY~f$Q&Y(x zx6r74n@Ovp_6fv-xE2)`%TRpNQtyMH-Ly8RI#vW(j%sRaJ5>Z7fUmY~TLXc_9!FF{ z#Dyw+K-Z&rRd9n|R7KwQ5&J!R8X<(x`vNv)W9Fj-xbbLw+GlRgNrr|;BpV)up#6h| zN>R%9Hs%|Zeivrw;G99aaV5}$veeyA-?%XV_prdJ>Ui%HmdR@2s1g1dKG|LE$w`zH z$QBJ~BJt1$uN4T_BO8Z;)YZ7 zuI_H-@GwA>^72h1qOp7OTt`?2RUVZYZ>8R{z4PZ*8O}Ht>{B;RjB(t~n+5{5hD1%AyJ`MX{?f4&q_IF#k|jEu>_*RJp^yJ7-xkEgj! zne6_c&K*|YQO*=Y03CQlwayG*=M@*%11o#n!=hnJ*!BTDu>nZ7LFR^yhi^eWBK({~ zGrOn=tDrR^7D1Dc6cZa77#IM*eARdnC>US>L~D<|JzfKYeQZjC;cpBhQ$Aa{Wd@>; zR-xVPxsjDCSI*7PLvB+FH%F|34A5p#P9E?z+DTkDd^^?B@-;F&IqFyM-M>Ergap>9 z6mCmIVIp84GZQx+=Jj4yzMM81bVCXJTO9!`UEZJ|$tr^qB+RQGl z$btJ!AKbs+kc#quzQOJGH*j~Kb9xlMcq#~*W#k9gWc2!X@2TV-5+3;`kL zuN2bo;w2NAhiI7dxSEEdLD!^)x+}HGD*GPVxsC!sLs_i$*bKmIGeYoO^2N-|cjbZ0 zizs<)$b%q(5Yx+DvngVxxRwRlfTp@Sg-ES{UiYh_?opukRv!DQt}VUWK%U=Fx=$kN zJPf4v8@nVa8Jhw<+*vQ{M=+1P`D5QY22BB(7eXASSAJv1=fm7z{QR@#xoZzWKik`p z4yLE2_5jPbr~enK(NOu?DZdDI;vzF-b*y-gPj+}x-8?<(y0=~hNNo7)uk-V&3xKc% z5g6KWNpQq}CJ(3X9XHH(n=_k^3<*`%l|apfN^-j}CnpD|vG&_K=~H_Qmj)av=aA%2 z(7RhgM?Sa6PQGY{ZB}Obcinh-nsEe+TmT0fH@sa&FkuwRNX=HPpnDVO3y=($mY_V zEut*Pru``QA>LzRlub&TC1DPhKs;$aX==~Qbh}UZt^xuI+IVBi9bP|wf6LESwvZ(N zNGUJ|-W?Z^3s&!6A_ug?-bpWt%KA9 z()>8`m;Tp3U-aWokMiGzgzRb(&WLULlaAZNY}jYaE*{;*+WUvA5(i{nUl$i+Z!COe zB_#pQxV@@Vlan5aI7`UUZPPk%i_iU+QE~1U|`6aT`sJ>gW>#kFkUic&eL`MLDU{8A{0voti16SeA z%>N5qGsXqM*m0Ea9qI3{QAZ0t02l;Y9Kxnc#U{4YGU^+ zvafV6w28ULE4)%M4Pv~+*xsX}wHuH9Z|?tp1ZU#U=Y}7=`#!T+D;JLb2JTNpdDatzC*QJ{l3 zfCTbd8X880jY7nYuWxTJ%gdu5#9owshS3ST55l6N*yu6v`t@rbq;e}m)O6Wf>*`L` zg^&_gquMAWGNjfjD{s)ykjcTxa(>Axr2g&_Yxe_ESPKwIE6&(?~;;Dw!2uYS1m0&O!Icu#PT}L{5}lCdpLm5 z>eM3_=AeY#H#IY>gN6j6Yx;3JOCIV3$Chg}h1jI`;+V4~CBa5UPX}LL?JzycghAWk zSo7`MH#G5rp)KayxBvL@qx_W+DW7%en?MEnA&FA4mER*%Ly2p}ii=u@GSbp)e0^0b z>ujJO#~=fQnA&hHX9eo5RH`Y2Mj1ZjCwVOq%Oq$?OZdbW8wwQS&se#u)gWoc{I?!c zR#9<3QAg`gXDSE?&_>gnHzlWqH<1ClfTxL$$7?RFz!C2S=>^>?n|ANfiL^@0Rud}n zbg+4pnv@h2dex}SmVaM{Wo!82A>f!%VV3~}S$%dduRF5Y3Px^|NhqTl^V|4<7+W?n zae&02toWgV$eVNO&-JBas}77*+H@jvR8AN&V4nsHvg|0L{7;k^Am@l*r3MWZ#TAV((4yK3Ui=#wvzOP z8;#5+u~N$IU-EucE1YeYJtPK(sMcv+_{dPA%;(oS@d;Qrupg9XgcNrf-DL45drD>_3 zxc>vuU)D$Cu0nsmE*=TgyumZjgB@E=u z&dzTCeg;w>JxeE_3VaC;jJY~zf|eYwDzLPXjmDKYD?w~n#3N7hpZ^WxWFxj(V)xl) zW23(}+A(g>mbMlSD*nIuGCnSG;*2deL0*VvU7l~yQ(cXHf5M1Pz+;$+)E7NThM@#jmP;kC+zvC#sIBsw(>OKqn|;=Gn6} zE2|dBRPaBVnw#(4-yQnn(@wB5Yo%a6zfkaAnBYfOh>=Jls$#nM2C24K<# z^QIzM57Kn_4CHO6M`4&WNAT^CI_~{33jg%iROGJ^X!leiF@(BwGS^2J{xSXB^=q?yx#m@dEjC}BM`Gi>}f zKG$tZgu&;*^QkfGmj4(=hdv0^CYS>wE3$s^^mUY_rBCQ>H8;<95#qjr_c_j>a}C) zYs}=%LG#5nGnUFTzmW!2{{E`%GJJ(5TyUTfG01DF#DIW~nNg{byEw>L?HoLdi%1ph z(jJ%m1(P{5HChEJ1U>BHj!CGQu&zDuTbEP~R9YopHH=I5$?(PFy%-l)gN254+~iP4 z(cP+rJ-KgDFc5!=S;kHxtzsb-Bk9gpzzJvPY@|=zSrH-yGB&3&UBf26$O@pCIu5#W - + - - - + + + @@ -21,7 +21,7 @@

Skip to content

Contribute to YAXArrays.jl

Pull requests and bug reports are always welcome at the YAXArrays.jl GitHub repository.

Contribute to Documentation

Contributing with examples can be done by first creating a new file example here

new file

  • your_new_file.md at docs/src/UserGuide/

Once this is done you need to add a new entry here at the appropriate level.

add entry to docs

Your new entry should look like:

  • { text: 'Your title example', link: '/UserGuide/your_new_file.md' }

Build docs locally

If you want to take a look at the docs locally before doing a PR follow the next steps:

Install the dependencies in your system, locate yourself at the docs level folder, then do

sh
npm i

Then simply go to your docs env and activate it, i.e.

sh
docs> julia
 julia> ]
 pkg> activate .

Next, run the scripts. Generate files and build docs by running:

sh
include("make.jl")

Now go to your terminal in the same path docs> and run:

sh
npm run docs:dev

This should ouput http://localhost:5173/YAXArrays.jl/, copy/paste this into your browser and you are all set.

- + \ No newline at end of file diff --git a/dev/development/contributors.html b/dev/development/contributors.html index 99dcdf57..17f23d38 100644 --- a/dev/development/contributors.html +++ b/dev/development/contributors.html @@ -8,18 +8,18 @@ - + - - - + + +
Skip to content

Contributors

Current core contributors

They have taking the lead for the ongoing organizational maintenance and technical direction of , and .

Fabian Gans

Fabian Gans

Geoscientific Programmer

Felix Cremer

Felix Cremer

PhD Candidate in Remote Sensing

Rafael Schouten

Rafael Schouten

Spatial/ecological modelling

Lazaro Alonso

Lazaro Alonso

Scientist. Data Visualization

Our valuable contributors

We appreciate all contributions from the Julia community so that this ecosystem can thrive.

- + \ No newline at end of file diff --git a/dev/get_started.html b/dev/get_started.html index 53632187..1d1f6209 100644 --- a/dev/get_started.html +++ b/dev/get_started.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -64,17 +64,17 @@ ├─────────────────────────────────────────────────────────────────── file size ┤ file size: 46.88 KB └──────────────────────────────────────────────────────────────────────────────┘

Get the temperature map at the first point in time:

julia
a2[variable=At("temperature"), time=1].data
10×15 view(::Array{Float64, 4}, 1, :, :, 1) with eltype Float64:
- 0.223565  0.0384967  0.0320741  …  0.4987      0.794938   0.691496
- 0.935566  0.782947   0.706604      0.938401    0.921743   0.308591
- 0.126334  0.577554   0.681419      0.427631    0.182168   0.703209
- 0.945316  0.458639   0.353072      0.00538829  0.215085   0.950853
- 0.849879  0.0536238  0.744735      0.550354    0.47603    0.458454
- 0.127101  0.146446   0.36855    …  0.0407253   0.907397   0.892194
- 0.395165  0.295574   0.229972      0.767487    0.440327   0.566444
- 0.723242  0.728315   0.0496509     0.311457    0.435237   0.179984
- 0.816066  0.843854   0.65768       0.379213    0.647377   0.139809
- 0.261949  0.99486    0.515162      0.0445932   0.0616085  0.742585

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

- + 0.283062 0.335574 0.84576 0.00226881 … 0.437392 0.794276 0.155916 + 0.269069 0.986456 0.285493 0.703045 0.913638 0.519026 0.679047 + 0.74739 0.414422 0.0345087 0.589595 0.383664 0.0368185 0.600453 + 0.252273 0.595459 0.178107 0.846899 0.693244 0.428467 0.473834 + 0.325824 0.559687 0.714469 0.370229 0.168069 0.252106 0.590456 + 0.34699 0.600163 0.590449 0.86603 … 0.954538 0.0204375 0.99651 + 0.403281 0.190715 0.388749 0.555087 0.944345 0.586174 0.128577 + 0.647865 0.310074 0.405095 0.775146 0.744436 0.0191769 0.333272 + 0.311947 0.12766 0.883386 0.544461 0.810824 0.5773 0.633293 + 0.121612 0.130216 0.897246 0.643835 0.867361 0.945154 0.433286

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

+ \ No newline at end of file diff --git a/dev/hashmap.json b/dev/hashmap.json index 09e36226..2726bf1d 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"api.md":"CFKx0BAq","development_contribute.md":"D93SjwYJ","development_contributors.md":"B5lFKVw2","get_started.md":"uTuJfEQI","index.md":"uTPfWlYl","tutorials_mean_seasonal_cycle.md":"C-JLJykP","tutorials_other_tutorials.md":"By_HW9oi","tutorials_plottingmaps.md":"DQHCoagw","userguide_cache.md":"D4lc_VAX","userguide_chunk.md":"BA5tJboX","userguide_combine.md":"CAw7m9rm","userguide_compute.md":"DTZ8X-wl","userguide_convert.md":"DYAQ-3eU","userguide_create.md":"BL_P2KiQ","userguide_faq.md":"3ZSYUGcl","userguide_group.md":"CmN1GMIM","userguide_read.md":"3Sna00BO","userguide_select.md":"CoUJUkad","userguide_types.md":"on_E3BSH","userguide_write.md":"D_CbCNNM"} +{"api.md":"Czz2cpaE","development_contribute.md":"ClrIjhyO","development_contributors.md":"CLIwhHUf","get_started.md":"QDrVCaRy","index.md":"GdAm7ifr","tutorials_mean_seasonal_cycle.md":"gJhMR6dH","tutorials_other_tutorials.md":"CO_GVBJJ","tutorials_plottingmaps.md":"BxZGI0zc","userguide_cache.md":"ClYVtu-M","userguide_chunk.md":"QsQQbTJH","userguide_combine.md":"DYPIjlvr","userguide_compute.md":"l32-sEL-","userguide_convert.md":"CaREO6jR","userguide_create.md":"r5QE-6jo","userguide_faq.md":"D4xbU8uL","userguide_group.md":"DBOT3ZFU","userguide_read.md":"B25a96ai","userguide_select.md":"DwHkhEFI","userguide_types.md":"R6FLmeYW","userguide_write.md":"CxpbTqhY"} diff --git a/dev/index.html b/dev/index.html index 5bfef373..f485c849 100644 --- a/dev/index.html +++ b/dev/index.html @@ -8,18 +8,18 @@ - + - - - + + + - + \ No newline at end of file diff --git a/dev/tutorials/mean_seasonal_cycle.html b/dev/tutorials/mean_seasonal_cycle.html index 849955ef..61752ada 100644 --- a/dev/tutorials/mean_seasonal_cycle.html +++ b/dev/tutorials/mean_seasonal_cycle.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -29,7 +29,7 @@ ) ax.xticklabelrotation = π / 4 ax.xticklabelalign = (:right, :center) -fig

Define the cube

julia
julia> using YAXArrays, DimensionalData
+fig

Define the cube

julia
julia> using YAXArrays, DimensionalData
 
 julia> axes = (Dim{:Time}(t),)
(Time Date("2021-01-01"):Dates.Day(1):Date("2023-12-31"))
julia
julia> c = YAXArray(axes, var)
╭──────────────────────────────────╮
 1095-element YAXArray{Float64,1}
@@ -57,26 +57,26 @@
 end
 
 msc = mean_seasonal_cycle(c);
365×1 Matrix{Float64}:
- -0.03130398287109743
- -0.06059678887906461
-  0.08125105691657612
-  0.019357118933250848
- -0.03069412445788597
-  0.09901993559674853
-  0.2642946301720222
-  0.0724785553501333
-  0.21244822988355164
-  0.17115548211003082
+ -0.03950128816140833
+ -0.06543078292209109
+  0.06894364536016301
+ -0.003940775453868335
+  0.10226947160678594
+ -0.011679430378217809
+  0.029110414351034442
+  0.17108855806206869
+  0.14665533881137394
+  0.09710853712741103
 
- -0.21072435162838157
- -0.15326750862815794
- -0.12667116885178392
- -0.03650284859673286
- -0.06920309673015511
-  0.006977886140959999
- -0.10555520526290235
-  0.022285515523567546
- -0.005783221950539453

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
+ -0.15771433632463785
+ -0.1858403579779676
+ -0.015974661080283597
+ -0.019829128922060204
+ -0.14261633679073402
+ -0.08238381041801922
+  0.0042454457004389495
+  0.029577960933055997
+ -0.042256901873424846

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
     linewidth=2.0, linestyle=:dot,
     axis = (;  xlabel="Day of Year", ylabel="Variable"),
     figure=(; size = (600,400))
@@ -89,8 +89,8 @@
 ax.xticklabelrotation = π / 4
 ax.xticklabelalign = (:right, :center)
 fig
-current_figure()

- +current_figure()

+ \ No newline at end of file diff --git a/dev/tutorials/other_tutorials.html b/dev/tutorials/other_tutorials.html index 321d0762..acf95225 100644 --- a/dev/tutorials/other_tutorials.html +++ b/dev/tutorials/other_tutorials.html @@ -8,18 +8,18 @@ - + - - - + + +
Skip to content

Other tutorials

If you are interested in learning how to work with YAXArrays for different use cases you can follow along one of the following tutorials.

  • Currently the overview tutorial is located at ESDLTutorials Repository

  • You can find further tutorial videos at the EO College. Beware that the syntax in the video tutorials might be slightly changed.

  • the other tutorials are still work in progress.

General overview of the functionality of YAXArrays

This tutorial provides a broad overview about the features of YAXArrays.

Table-style iteration over YAXArrays

Work in progress

Sometimes you want to combine the data that is represented in the data cube with other datasets, which are best described as a data frame. In this tutorial you will learn how to use the Tables.jl interface to iterate over the data in the YAXArray.

Combining multiple tiff files into a zarr based datacube

- + \ No newline at end of file diff --git a/dev/tutorials/plottingmaps.html b/dev/tutorials/plottingmaps.html index db95006c..0799e395 100644 --- a/dev/tutorials/plottingmaps.html +++ b/dev/tutorials/plottingmaps.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -44,19 +44,19 @@ fig, ax, plt = heatmap(ct1_slice; colormap = :seaborn_icefire_gradient, axis = (; aspect=DataAspect()), figure = (; size = (1200,600), fontsize=24)) -fig

Wintri Projection

Some transformations

julia
δlon = (lon[2]-lon[1])/2
+fig

Wintri Projection

Some transformations

julia
δlon = (lon[2]-lon[1])/2
 nlon = lon .- 180 .+ δlon
 ndata = circshift(data, (192,1))

and add Coastlines with GeoMakie.coastlines(),

julia
fig = Figure(;size=(1200,600))
 ax = GeoAxis(fig[1,1])
 surface!(ax, nlon, lat, ndata; colormap = :seaborn_icefire_gradient, shading=false)
 cl=lines!(ax, GeoMakie.coastlines(), color = :white, linewidth=0.85)
 translate!(cl, 0, 0, 1000)
-fig

Moll projection

julia
fig = Figure(; size=(1200,600))
+fig

Moll projection

julia
fig = Figure(; size=(1200,600))
 ax = GeoAxis(fig[1,1]; dest = "+proj=moll")
 surface!(ax, nlon, lat, ndata; colormap = :seaborn_icefire_gradient, shading=false)
 cl=lines!(ax, GeoMakie.coastlines(), color = :white, linewidth=0.85)
 translate!(cl, 0, 0, 1000)
-fig

3D sphere plot

julia
using Bonito, WGLMakie
+fig

3D sphere plot

julia
using Bonito, WGLMakie
 Page(exportable=true, offline=true)
 
 WGLMakie.activate!()
@@ -72,7 +72,7 @@
 zoom!(ax.scene, cameracontrols(ax.scene), 0.5)
 rotate!(ax.scene, 2.5)
 fig
- + \ No newline at end of file